@chat21/chat21-web-widget 5.1.6 → 5.1.7-rc9
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/docker-community-push-latest.yml +23 -13
- package/.github/workflows/docker-image-tag-community-tag-push.yml +22 -12
- package/CHANGELOG.md +33 -0
- package/Dockerfile +4 -5
- package/angular.json +2 -1
- package/deploy_amazon_prod.sh +5 -5
- package/package.json +1 -1
- package/src/app/app.component.html +3 -3
- package/src/app/app.component.scss +1 -1
- package/src/app/app.component.ts +23 -11
- package/src/app/app.module.ts +16 -10
- package/src/app/component/conversation-detail/conversation/conversation.component.scss +1 -1
- package/src/app/component/conversation-detail/conversation/conversation.component.ts +20 -5
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.scss +1 -0
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +8 -11
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +25 -0
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +57 -23
- package/src/app/component/{network-offline/network-offline.component.html → error-alert/error-alert.component.html} +4 -2
- package/src/app/component/{network-offline/network-offline.component.scss → error-alert/error-alert.component.scss} +3 -1
- package/src/app/component/{network-offline/network-offline.component.spec.ts → error-alert/error-alert.component.spec.ts} +8 -6
- package/src/app/component/error-alert/error-alert.component.ts +47 -0
- package/src/app/component/message/buttons/action-button/action-button.component.scss +6 -6
- package/src/app/component/message/buttons/action-button/action-button.component.ts +1 -1
- package/src/app/component/message/buttons/link-button/link-button.component.scss +5 -5
- package/src/app/component/message/buttons/link-button/link-button.component.ts +2 -2
- package/src/app/component/message/buttons/text-button/text-button.component.scss +9 -12
- package/src/app/component/message/buttons/text-button/text-button.component.ts +4 -4
- package/src/app/component/message-attachment/message-attachment.component.html +3 -7
- package/src/app/providers/translator.service.ts +8 -2
- package/src/app/sass/_variables.scss +1 -1
- package/src/app/utils/constants.ts +3 -0
- package/src/app/utils/utils.ts +8 -10
- package/src/assets/i18n/en.json +4 -1
- package/src/assets/i18n/es.json +6 -1
- package/src/assets/i18n/fr.json +6 -1
- package/src/assets/i18n/it.json +6 -3
- package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +2 -2
- package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +22 -11
- package/src/chat21-core/providers/tiledesk/tiledesk-requests.service.ts +1 -1
- package/src/chat21-core/utils/utils.ts +15 -4
- package/src/iframe-style.css +1 -1
- package/src/app/component/network-offline/network-offline.component.ts +0 -24
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
name: Docker Image Community latest CI
|
|
2
2
|
|
|
3
|
-
on:
|
|
4
|
-
push:
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
5
|
branches: [ master ]
|
|
6
|
-
pull_request:
|
|
7
|
-
branches: [ master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ]
|
|
8
8
|
|
|
9
9
|
jobs:
|
|
10
10
|
push_to_registry:
|
|
@@ -12,12 +12,22 @@ jobs:
|
|
|
12
12
|
runs-on: ubuntu-latest
|
|
13
13
|
|
|
14
14
|
steps:
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
15
|
+
- name: Check out the repo
|
|
16
|
+
uses: actions/checkout@v2
|
|
17
|
+
|
|
18
|
+
- name: Set up Docker Buildx
|
|
19
|
+
uses: docker/setup-buildx-action@v2
|
|
20
|
+
|
|
21
|
+
- name: Log in to Docker Hub
|
|
22
|
+
uses: docker/login-action@v2
|
|
23
|
+
with:
|
|
24
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
25
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
26
|
+
|
|
27
|
+
- name: Build and push multiarch Docker image
|
|
28
|
+
uses: docker/build-push-action@v3
|
|
29
|
+
with:
|
|
30
|
+
context: .
|
|
31
|
+
push: true
|
|
32
|
+
platforms: linux/amd64,linux/arm64
|
|
33
|
+
tags: chat21/chat21-web-widget:latest
|
|
@@ -3,20 +3,30 @@ name: Publish Docker Community image tags
|
|
|
3
3
|
on:
|
|
4
4
|
push:
|
|
5
5
|
tags:
|
|
6
|
-
- '**'
|
|
7
|
-
jobs:
|
|
6
|
+
- '**' # Trigger su qualsiasi tag
|
|
8
7
|
|
|
8
|
+
jobs:
|
|
9
9
|
push_to_registry:
|
|
10
10
|
name: Push Docker image to Docker Hub
|
|
11
11
|
runs-on: ubuntu-latest
|
|
12
|
+
|
|
12
13
|
steps:
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
14
|
+
- name: Check out the repo
|
|
15
|
+
uses: actions/checkout@v2
|
|
16
|
+
|
|
17
|
+
- name: Set up Docker Buildx
|
|
18
|
+
uses: docker/setup-buildx-action@v2
|
|
19
|
+
|
|
20
|
+
- name: Log in to Docker Hub
|
|
21
|
+
uses: docker/login-action@v2
|
|
22
|
+
with:
|
|
23
|
+
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
|
24
|
+
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
|
25
|
+
|
|
26
|
+
- name: Build and push multiarch Docker image
|
|
27
|
+
uses: docker/build-push-action@v3
|
|
28
|
+
with:
|
|
29
|
+
context: .
|
|
30
|
+
push: true
|
|
31
|
+
platforms: linux/amd64,linux/arm64
|
|
32
|
+
tags: chat21/chat21-web-widget:${{ github.ref_name }}
|
package/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,39 @@
|
|
|
6
6
|
### **Copyrigth**:
|
|
7
7
|
*Tiledesk SRL*
|
|
8
8
|
|
|
9
|
+
# 5.1.7-rc9
|
|
10
|
+
- **removed**: 'DOMAIN_NOT_ALLOWED' in textarea footer component
|
|
11
|
+
|
|
12
|
+
# 5.1.7-rc8
|
|
13
|
+
- **changed**: Updated the translations of the tooltips in the footer-component
|
|
14
|
+
- **changed**: Refactored the network-offline component and made it generic for displaying errors (now error-alert.component)
|
|
15
|
+
|
|
16
|
+
# 5.1.7-rc7
|
|
17
|
+
- **bug-fixed**: button new_conversation always appear. added subscription to conversationAdded
|
|
18
|
+
|
|
19
|
+
# 5.1.7-rc6
|
|
20
|
+
- **added**: Added MAX_ATTACHMENT_ERROR error message when uploading a file larger than 10 MB
|
|
21
|
+
|
|
22
|
+
# 5.1.7-rc5
|
|
23
|
+
- **bug-fixed**: bug fixed BUTTON STYLES
|
|
24
|
+
|
|
25
|
+
# 5.1.7-rc4
|
|
26
|
+
- **bug-fixed**: bug fixed widget fullscreen style
|
|
27
|
+
|
|
28
|
+
# 5.1.7-rc3
|
|
29
|
+
- **changed**: replace extractUrls
|
|
30
|
+
|
|
31
|
+
# 5.1.7-rc2
|
|
32
|
+
- **bug-fixed**: translations completed
|
|
33
|
+
- **changed**: set wait to 0 if messages have already been read
|
|
34
|
+
|
|
35
|
+
# 5.1.7-rc1
|
|
36
|
+
- **changed**: replace fullname with firstname
|
|
37
|
+
- **added**: added tooltip on attachment an emoji
|
|
38
|
+
- **bug-fixed**: bug fixed button color
|
|
39
|
+
- **bug-fixed**: bug fixed min-height message-receive
|
|
40
|
+
- **bug-fixed**: bug-fixed css footer
|
|
41
|
+
|
|
9
42
|
# 5.1.6
|
|
10
43
|
|
|
11
44
|
# 5.1.5
|
package/Dockerfile
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
### STAGE 1: Build ###
|
|
2
2
|
|
|
3
3
|
# We label our stage as ‘builder’
|
|
4
|
-
FROM node:20.12.2-alpine3.19 as builder
|
|
4
|
+
FROM --platform=$BUILDPLATFORM node:20.12.2-alpine3.19 as builder
|
|
5
5
|
|
|
6
6
|
COPY package.json package-lock.json ./
|
|
7
7
|
|
|
@@ -15,12 +15,11 @@ COPY . .
|
|
|
15
15
|
|
|
16
16
|
## Build the angular app in production mode and store the artifacts in dist folder
|
|
17
17
|
|
|
18
|
-
RUN npx ng build --configuration="prod" --output-path=dist --base-href=./ --output-hashing=none
|
|
19
18
|
|
|
19
|
+
RUN npx ng build --configuration="prod" --output-path=dist --base-href=./ --output-hashing=none
|
|
20
20
|
|
|
21
21
|
### STAGE 2: Setup ###
|
|
22
|
-
|
|
23
|
-
FROM nginx:1.14.1-alpine
|
|
22
|
+
FROM --platform=$BUILDPLATFORM nginx:1.14.1-alpine
|
|
24
23
|
|
|
25
24
|
## Copy our default nginx config
|
|
26
25
|
COPY nginx.conf /etc/nginx/nginx.conf
|
|
@@ -33,4 +32,4 @@ COPY --from=builder /ng-app/dist/browser /usr/share/nginx/html
|
|
|
33
32
|
|
|
34
33
|
RUN echo "Chat21 Web Widget Started!!"
|
|
35
34
|
|
|
36
|
-
CMD ["/bin/sh",
|
|
35
|
+
CMD ["/bin/sh", "-c", "envsubst < /usr/share/nginx/html/widget-config-template.json > /usr/share/nginx/html/widget-config.json && exec nginx -g 'daemon off;'"]
|
package/angular.json
CHANGED
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"src/environments/real_data/widget-config-docker.json",
|
|
45
45
|
"src/environments/real_data/widget-config-native-mqtt.json",
|
|
46
46
|
"src/environments/real_data/widget-config-native-prod.json",
|
|
47
|
-
"src/environments/real_data/widget-config-aws-stage.json"
|
|
47
|
+
"src/environments/real_data/widget-config-aws-stage.json",
|
|
48
|
+
"src/environments/real_data/widget-config-aws-aruba.json"
|
|
48
49
|
],
|
|
49
50
|
"styles": [
|
|
50
51
|
"src/app/sass/styles.scss"
|
package/deploy_amazon_prod.sh
CHANGED
|
@@ -33,9 +33,9 @@ cd ../..
|
|
|
33
33
|
|
|
34
34
|
aws cloudfront create-invalidation --distribution-id E3EJDWEHY08CZZ --paths "/*"
|
|
35
35
|
|
|
36
|
-
git restore src/environments/environment.
|
|
36
|
+
git restore src/environments/environment.prod.ts
|
|
37
37
|
|
|
38
|
-
echo new version deployed $version on s3://tiledesk-widget/
|
|
39
|
-
echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-widget/
|
|
40
|
-
echo https://widget.tiledesk.com/
|
|
41
|
-
echo https://widget.tiledesk.com/
|
|
38
|
+
echo new version deployed $version on s3://tiledesk-widget/v6
|
|
39
|
+
echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v6/index.html
|
|
40
|
+
echo https://widget.tiledesk.com/v6/index.html
|
|
41
|
+
echo https://widget.tiledesk.com/v6/$version/index.html
|
package/package.json
CHANGED
|
@@ -105,11 +105,11 @@
|
|
|
105
105
|
|
|
106
106
|
<!--
|
|
107
107
|
****************************************
|
|
108
|
-
|
|
108
|
+
********* MODALE ERROR ALERT ***********
|
|
109
109
|
****************************************
|
|
110
110
|
-->
|
|
111
|
-
<div *ngIf="g.isOpen &&
|
|
112
|
-
<chat-
|
|
111
|
+
<div *ngIf="g.isOpen && isShowErrorMessage" class="modal-page star-rating-widget active">
|
|
112
|
+
<chat-error-alert [errorMessage]="errorMessage" [errorKeyMessage]="errorKeyMessage" [errorParams]="errorParams"></chat-error-alert>
|
|
113
113
|
</div>
|
|
114
114
|
|
|
115
115
|
</div>
|
package/src/app/app.component.ts
CHANGED
|
@@ -106,9 +106,12 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
|
106
106
|
|
|
107
107
|
forceDisconnect: boolean = false;
|
|
108
108
|
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
// alert error message
|
|
110
|
+
isShowErrorMessage: boolean = false;
|
|
111
|
+
errorMessage: string = '';
|
|
112
|
+
errorKeyMessage: string = null;
|
|
113
|
+
errorParams: Record<string, any> = {};
|
|
114
|
+
|
|
112
115
|
private logger: LoggerService = LoggerInstance.getInstance();
|
|
113
116
|
constructor(
|
|
114
117
|
private el: ElementRef,
|
|
@@ -2189,12 +2192,6 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
|
2189
2192
|
this.el.nativeElement.style.setProperty('--chat-header-height', this.g.hideHeaderConversation? '0px': null)
|
|
2190
2193
|
this.el.nativeElement.style.setProperty('--font-size-bubble-message', this.g.fontSize)
|
|
2191
2194
|
this.el.nativeElement.style.setProperty('--font-family-bubble-message', this.g.fontFamily)
|
|
2192
|
-
|
|
2193
|
-
|
|
2194
|
-
this.styleMapConversation.set('buttonBackgroundColor', this.g.bubbleReceivedBackground)
|
|
2195
|
-
this.styleMapConversation.set('buttonTextColor', this.g.bubbleReceivedTextColor)
|
|
2196
|
-
this.styleMapConversation.set('buttonHoverBackgroundColor',this.g.bubbleSentBackground)
|
|
2197
|
-
this.styleMapConversation.set('buttonHoverTextColor', this.g.bubbleSentTextColor)
|
|
2198
2195
|
|
|
2199
2196
|
}
|
|
2200
2197
|
|
|
@@ -2221,8 +2218,23 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
|
|
|
2221
2218
|
}
|
|
2222
2219
|
|
|
2223
2220
|
private listenToNetworkStatus(){
|
|
2224
|
-
window.addEventListener('online', () =>
|
|
2225
|
-
|
|
2221
|
+
window.addEventListener('online', () => {
|
|
2222
|
+
this.isShowErrorMessage = false;
|
|
2223
|
+
this.errorMessage = null;
|
|
2224
|
+
this.errorKeyMessage = null;
|
|
2225
|
+
});
|
|
2226
|
+
window.addEventListener('offline', () => {
|
|
2227
|
+
this.isShowErrorMessage = true;
|
|
2228
|
+
this.errorMessage = null;
|
|
2229
|
+
this.errorKeyMessage = 'CONNECTION_NETWORK_ERROR';
|
|
2230
|
+
});
|
|
2231
|
+
window.addEventListener('tooltipErrorMessage', (event: CustomEvent) => {
|
|
2232
|
+
// console.log('event-------------------> tooltipErrorMessage', event);
|
|
2233
|
+
this.isShowErrorMessage = event.detail?.error;
|
|
2234
|
+
this.errorKeyMessage = event.detail?.keyMessage || null;
|
|
2235
|
+
this.errorMessage = event.detail?.message || null;
|
|
2236
|
+
this.errorParams = event.detail?.params || {};
|
|
2237
|
+
});
|
|
2226
2238
|
}
|
|
2227
2239
|
|
|
2228
2240
|
// ========= begin:: DESTROY ALL SUBSCRIPTIONS ============//
|
package/src/app/app.module.ts
CHANGED
|
@@ -59,7 +59,8 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
|
|
|
59
59
|
import { environment } from 'src/environments/environment';
|
|
60
60
|
|
|
61
61
|
//THIRD-PART MODULES
|
|
62
|
-
import { TranslateModule } from '@ngx-translate/core';
|
|
62
|
+
import { TranslateLoader, TranslateModule } from '@ngx-translate/core';
|
|
63
|
+
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
63
64
|
// import { MomentModule } from 'ngx-moment';
|
|
64
65
|
import { PickerModule } from '@ctrl/ngx-emoji-mart';
|
|
65
66
|
import { LoggerModule, NGXLogger, NgxLoggerLevel } from "ngx-logger";
|
|
@@ -134,7 +135,7 @@ import { Rules } from './utils/rules';
|
|
|
134
135
|
import { ScriptService } from 'src/chat21-core/providers/scripts/script.service';
|
|
135
136
|
import { CarouselComponent } from './component/message/carousel/carousel.component';
|
|
136
137
|
import { BrandService } from './providers/brand.service';
|
|
137
|
-
import {
|
|
138
|
+
import { ErrorAlertComponent } from './component/error-alert/error-alert.component';
|
|
138
139
|
import { ConfirmCloseComponent } from './modals/confirm-close/confirm-close.component';
|
|
139
140
|
|
|
140
141
|
|
|
@@ -204,6 +205,11 @@ export function conversationHandlerFactory(chat21Service: Chat21Service, appConf
|
|
|
204
205
|
}
|
|
205
206
|
}
|
|
206
207
|
|
|
208
|
+
// ngx-translate Http loader factory
|
|
209
|
+
export function createTranslateLoader(http: HttpClient) {
|
|
210
|
+
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
|
|
211
|
+
}
|
|
212
|
+
|
|
207
213
|
export function typingFactory(chat21Service: Chat21Service, appConfig: AppConfigService) {
|
|
208
214
|
const config = appConfig.getConfig()
|
|
209
215
|
if (config.chatEngine === CHAT_ENGINE_MQTT) {
|
|
@@ -300,7 +306,7 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
|
|
|
300
306
|
LikeUnlikeComponent,
|
|
301
307
|
TooltipDirective,
|
|
302
308
|
CarouselComponent,
|
|
303
|
-
|
|
309
|
+
ErrorAlertComponent,
|
|
304
310
|
ConfirmCloseComponent
|
|
305
311
|
],
|
|
306
312
|
imports: [BrowserModule,
|
|
@@ -308,13 +314,13 @@ export function uploadFactory(http: HttpClient, appConfig: AppConfigService, app
|
|
|
308
314
|
FormsModule,
|
|
309
315
|
ReactiveFormsModule,
|
|
310
316
|
PickerModule,
|
|
311
|
-
TranslateModule.forRoot(
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
317
|
+
TranslateModule.forRoot({
|
|
318
|
+
defaultLanguage: 'en',
|
|
319
|
+
loader: {
|
|
320
|
+
provide: TranslateLoader,
|
|
321
|
+
useFactory: (createTranslateLoader),
|
|
322
|
+
deps: [HttpClient]
|
|
323
|
+
}
|
|
318
324
|
}),
|
|
319
325
|
LoggerModule.forRoot({
|
|
320
326
|
level: NgxLoggerLevel.DEBUG,
|
|
@@ -234,7 +234,8 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
|
|
|
234
234
|
'LABEL_START_NW_CONV',
|
|
235
235
|
'CONTINUE',
|
|
236
236
|
'EMOJI_NOT_ELLOWED',
|
|
237
|
-
'
|
|
237
|
+
'ATTACHMENT',
|
|
238
|
+
'EMOJI'
|
|
238
239
|
];
|
|
239
240
|
|
|
240
241
|
const keysContent = [
|
|
@@ -456,7 +457,7 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
|
|
|
456
457
|
return this.isConversationArchived;
|
|
457
458
|
}
|
|
458
459
|
|
|
459
|
-
//FALLBACK TO TILEDESK
|
|
460
|
+
// //FALLBACK TO TILEDESK
|
|
460
461
|
const requests_list = await this.tiledeskRequestService.getMyRequests().catch(err => {
|
|
461
462
|
this.logger.error('[CONV-COMP] getConversationDetail: error getting request from Tiledesk', err);
|
|
462
463
|
this.isConversationArchived=true
|
|
@@ -474,9 +475,9 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
|
|
|
474
475
|
return this.isConversationArchived
|
|
475
476
|
}
|
|
476
477
|
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
478
|
+
this.isConversationArchived = false;
|
|
479
|
+
return null;
|
|
480
|
+
}
|
|
480
481
|
|
|
481
482
|
/**
|
|
482
483
|
* this.g.recipientId:
|
|
@@ -826,6 +827,20 @@ export class ConversationComponent implements OnInit, AfterViewInit, OnChanges {
|
|
|
826
827
|
this.subscriptions.push(subscribe);
|
|
827
828
|
}
|
|
828
829
|
|
|
830
|
+
subscribtionKey = 'conversationsAdded';
|
|
831
|
+
subscribtion = this.subscriptions.find(item => item.key === subscribtionKey);
|
|
832
|
+
if(!subscribtion){
|
|
833
|
+
|
|
834
|
+
subscribtion = this.chatManager.conversationsHandlerService.conversationChanged.pipe(takeUntil(this.unsubscribe$)).subscribe((conversation) => {
|
|
835
|
+
this.logger.debug('[CONV-COMP] ***** DATAIL conversationsChanged *****', conversation, this.conversationWith, this.isConversationArchived);
|
|
836
|
+
if(conversation && conversation.recipient === this.conversationId){
|
|
837
|
+
this.isConversationArchived = false
|
|
838
|
+
}
|
|
839
|
+
});
|
|
840
|
+
const subscribe = {key: subscribtionKey, value: subscribtion };
|
|
841
|
+
this.subscriptions.push(subscribe);
|
|
842
|
+
}
|
|
843
|
+
|
|
829
844
|
subscribtionKey = 'messageWait';
|
|
830
845
|
subscribtion = this.subscriptions.find(item => item.key === subscribtionKey);
|
|
831
846
|
if (!subscribtion) {
|
package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<div tabindex="-1" class="c21-powered-by" [innerHTML]="poweredBy" (click)="managePoweredBy($event)"></div>
|
|
5
5
|
</div>
|
|
6
6
|
|
|
7
|
-
<!-- ALERT EMOJI
|
|
7
|
+
<!-- ALERT EMOJI -->
|
|
8
8
|
<div id="textAlert" *ngIf="!hideTextAreaContent && showAlertEmoji" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
|
|
9
9
|
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" version="1.1" viewBox="0 0 110 135">
|
|
10
10
|
<path d="M55,25.8c-23,0-41.7,18.7-41.7,41.7s18.7,41.7,41.7,41.7,41.7-18.7,41.7-41.7-18.7-41.7-41.7-41.7ZM55,91.5c-3.4,0-6.2-2.8-6.2-6.2s2.8-6.2,6.2-6.2,6.2,2.8,6.2,6.2-2.8,6.2-6.2,6.2ZM60.3,70.1c-.2,2.8-2.5,4.9-5.3,4.9s-5.1-2.2-5.3-4.9l-1.6-22.3c-.3-4,2.9-7.4,6.9-7.4s7.2,3.4,6.9,7.4l-1.6,22.3Z"/>
|
|
@@ -12,12 +12,6 @@
|
|
|
12
12
|
<div tabindex="-1" class="alertText">{{translationMap.get('EMOJI_NOT_ELLOWED')}}</div>
|
|
13
13
|
</div>
|
|
14
14
|
|
|
15
|
-
<div id="textAlert" *ngIf="!hideTextAreaContent && showAlertUrl" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
|
|
16
|
-
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" version="1.1" viewBox="0 0 110 135">
|
|
17
|
-
<path d="M55,25.8c-23,0-41.7,18.7-41.7,41.7s18.7,41.7,41.7,41.7,41.7-18.7,41.7-41.7-18.7-41.7-41.7-41.7ZM55,91.5c-3.4,0-6.2-2.8-6.2-6.2s2.8-6.2,6.2-6.2,6.2,2.8,6.2,6.2-2.8,6.2-6.2,6.2ZM60.3,70.1c-.2,2.8-2.5,4.9-5.3,4.9s-5.1-2.2-5.3-4.9l-1.6-22.3c-.3-4,2.9-7.4,6.9-7.4s7.2,3.4,6.9,7.4l-1.6,22.3Z"/>
|
|
18
|
-
</svg>
|
|
19
|
-
<div tabindex="-1" class="alertText">{{translationMap.get('DOMAIN_NOT_ALLOWED')}}</div>
|
|
20
|
-
</div>
|
|
21
15
|
</div>
|
|
22
16
|
|
|
23
17
|
<!-- TEXTAREA + ICONS: conv active-->
|
|
@@ -27,9 +21,11 @@
|
|
|
27
21
|
<!-- ICON ATTACHMENT -->
|
|
28
22
|
<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
23
|
<span class="v-align-center">
|
|
30
|
-
<svg xmlns="http://www.w3.org/2000/svg" width="24px" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
24
|
+
<svg role="img" aria-labelledby="altIconTitle" xmlns="http://www.w3.org/2000/svg" width="24px" height="24" viewBox="0 0 24 24" fill="currentColor">
|
|
31
25
|
<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"/>
|
|
26
|
+
<title id="altIconTitle">{{ 'MAX_ATTACHMENT' | translate: { FILE_SIZE_LIMIT: file_size_limit } }}</title>
|
|
32
27
|
</svg>
|
|
28
|
+
|
|
33
29
|
</span>
|
|
34
30
|
<input
|
|
35
31
|
[attr.disabled] = "(isFilePendingToUpload || isConversationArchived || hideTextReply)? true : null"
|
|
@@ -47,11 +43,12 @@
|
|
|
47
43
|
<!-- ICON EMOJII -->
|
|
48
44
|
<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
45
|
<span class="v-align-center">
|
|
50
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
|
|
46
|
+
<svg role="img" aria-labelledby="altIconTitle" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
|
|
51
47
|
<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
48
|
<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
49
|
<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
50
|
<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"/>
|
|
51
|
+
<title id="altIconTitle">{{ translationMap?.get('EMOJI') }}</title>
|
|
55
52
|
|
|
56
53
|
<!-- <path d="M0,0H20.57V20.57H0V0Z" fill="none"/>
|
|
57
54
|
<circle cx="15.02" cy="9.86" r="1.29"/>
|
|
@@ -65,7 +62,7 @@
|
|
|
65
62
|
|
|
66
63
|
|
|
67
64
|
|
|
68
|
-
<div *ngIf="!isStopRec" class="visible-text-area" [class.hasError]="showAlertEmoji
|
|
65
|
+
<div *ngIf="!isStopRec" class="visible-text-area" [class.hasError]="showAlertEmoji" [class.disabled] = "( isConversationArchived || hideTextReply)? true : null">
|
|
69
66
|
<!-- isFilePendingToUpload || -->
|
|
70
67
|
<textarea
|
|
71
68
|
[attr.disabled] = "(hideTextReply)? true : null"
|
|
@@ -88,7 +85,7 @@
|
|
|
88
85
|
</div>
|
|
89
86
|
|
|
90
87
|
<!-- ICON SEND -->
|
|
91
|
-
<div *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton" tabindex="-1" class="chat21-textarea-button" [class.disabled]="showAlertEmoji
|
|
88
|
+
<div *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton" tabindex="-1" class="chat21-textarea-button" [class.disabled]="showAlertEmoji" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
|
|
92
89
|
<span class="v-align-center">
|
|
93
90
|
<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
91
|
<path 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"/>
|
package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss
CHANGED
|
@@ -418,3 +418,28 @@ textarea:active{
|
|
|
418
418
|
border: none;
|
|
419
419
|
// margin: -2px -2px 0px;
|
|
420
420
|
}
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
// aggiungi un'animazione di fade in e fade out quando .star-rating-widget è visibile con transition
|
|
424
|
+
.star-rating-widget {
|
|
425
|
+
transition: all 0.5s ease-in-out;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.star-rating-widget {
|
|
429
|
+
position: absolute;
|
|
430
|
+
left: 0;
|
|
431
|
+
right: 0;
|
|
432
|
+
bottom: -52px;
|
|
433
|
+
height: 100%;
|
|
434
|
+
width: 100%;
|
|
435
|
+
flex-direction: row;
|
|
436
|
+
justify-content: center;
|
|
437
|
+
background-color: rgb(255, 255, 255);
|
|
438
|
+
flex-wrap: nowrap;
|
|
439
|
+
&.active {
|
|
440
|
+
bottom: 0px;
|
|
441
|
+
}
|
|
442
|
+
&.inactive {
|
|
443
|
+
bottom: -52px;
|
|
444
|
+
}
|
|
445
|
+
}
|