@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.
Files changed (42) hide show
  1. package/.github/workflows/docker-community-push-latest.yml +23 -13
  2. package/.github/workflows/docker-image-tag-community-tag-push.yml +22 -12
  3. package/CHANGELOG.md +33 -0
  4. package/Dockerfile +4 -5
  5. package/angular.json +2 -1
  6. package/deploy_amazon_prod.sh +5 -5
  7. package/package.json +1 -1
  8. package/src/app/app.component.html +3 -3
  9. package/src/app/app.component.scss +1 -1
  10. package/src/app/app.component.ts +23 -11
  11. package/src/app/app.module.ts +16 -10
  12. package/src/app/component/conversation-detail/conversation/conversation.component.scss +1 -1
  13. package/src/app/component/conversation-detail/conversation/conversation.component.ts +20 -5
  14. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.scss +1 -0
  15. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +8 -11
  16. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +25 -0
  17. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +57 -23
  18. package/src/app/component/{network-offline/network-offline.component.html → error-alert/error-alert.component.html} +4 -2
  19. package/src/app/component/{network-offline/network-offline.component.scss → error-alert/error-alert.component.scss} +3 -1
  20. package/src/app/component/{network-offline/network-offline.component.spec.ts → error-alert/error-alert.component.spec.ts} +8 -6
  21. package/src/app/component/error-alert/error-alert.component.ts +47 -0
  22. package/src/app/component/message/buttons/action-button/action-button.component.scss +6 -6
  23. package/src/app/component/message/buttons/action-button/action-button.component.ts +1 -1
  24. package/src/app/component/message/buttons/link-button/link-button.component.scss +5 -5
  25. package/src/app/component/message/buttons/link-button/link-button.component.ts +2 -2
  26. package/src/app/component/message/buttons/text-button/text-button.component.scss +9 -12
  27. package/src/app/component/message/buttons/text-button/text-button.component.ts +4 -4
  28. package/src/app/component/message-attachment/message-attachment.component.html +3 -7
  29. package/src/app/providers/translator.service.ts +8 -2
  30. package/src/app/sass/_variables.scss +1 -1
  31. package/src/app/utils/constants.ts +3 -0
  32. package/src/app/utils/utils.ts +8 -10
  33. package/src/assets/i18n/en.json +4 -1
  34. package/src/assets/i18n/es.json +6 -1
  35. package/src/assets/i18n/fr.json +6 -1
  36. package/src/assets/i18n/it.json +6 -3
  37. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +2 -2
  38. package/src/chat21-core/providers/mqtt/mqtt-conversation-handler.ts +22 -11
  39. package/src/chat21-core/providers/tiledesk/tiledesk-requests.service.ts +1 -1
  40. package/src/chat21-core/utils/utils.ts +15 -4
  41. package/src/iframe-style.css +1 -1
  42. 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
- - uses: actions/checkout@v2
16
- name: Check out the repo
17
- - uses: docker/build-push-action@v1
18
- with:
19
- username: ${{ secrets.DOCKERHUB_USERNAME }}
20
- password: ${{ secrets.DOCKERHUB_TOKEN }}
21
- repository: chat21/chat21-web-widget
22
- push: true
23
- tags: latest
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
- - '**' # Push events to every tag including hierarchical tags like
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
- - name: Check out the repo
14
- uses: actions/checkout@v2
15
- - name: Push to Docker Hub
16
- uses: docker/build-push-action@v1
17
- with:
18
- username: ${{ secrets.DOCKERHUB_USERNAME }}
19
- password: ${{ secrets.DOCKERHUB_TOKEN }}
20
- repository: chat21/chat21-web-widget
21
- push: true
22
- tag_with_ref: true
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", "-c", "envsubst < /usr/share/nginx/html/widget-config-template.json > /usr/share/nginx/html/widget-config.json && exec nginx -g 'daemon off;'"]
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"
@@ -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.pre.ts
36
+ git restore src/environments/environment.prod.ts
37
37
 
38
- echo new version deployed $version on s3://tiledesk-widget/v5
39
- echo available on https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v5/index.html
40
- echo https://widget.tiledesk.com/v5/index.html
41
- echo https://widget.tiledesk.com/v5/$version/index.html
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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-web-widget",
3
3
  "author": "Tiledesk SRL",
4
- "version": "5.1.6",
4
+ "version": "5.1.7-rc9",
5
5
  "license": "MIT",
6
6
  "homepage": "https://www.tiledesk.com",
7
7
  "repository": {
@@ -105,11 +105,11 @@
105
105
 
106
106
  <!--
107
107
  ****************************************
108
- ******* MODALE OFFLINE NETWORK *********
108
+ ********* MODALE ERROR ALERT ***********
109
109
  ****************************************
110
110
  -->
111
- <div *ngIf="g.isOpen && !isOnline" class="modal-page star-rating-widget active">
112
- <chat-network-offline></chat-network-offline>
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>
@@ -571,7 +571,7 @@ chat-root {
571
571
  /***************************
572
572
  ***** NETWORK OFFLINE ******
573
573
  ****************************/
574
- chat-network-offline {
574
+ chat-error-alert {
575
575
  position: absolute;
576
576
  width: 100%;
577
577
  height: 100%;
@@ -106,9 +106,12 @@ export class AppComponent implements OnInit, AfterViewInit, OnDestroy {
106
106
 
107
107
  forceDisconnect: boolean = false;
108
108
 
109
- //network status
110
- isOnline: boolean = true;
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', () => this.isOnline = true);
2225
- window.addEventListener('offline', () => this.isOnline = false);
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 ============//
@@ -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 { NetworkOfflineComponent } from './component/network-offline/network-offline.component';
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
- NetworkOfflineComponent,
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
- // loader: {
314
- // provide: TranslateLoader,
315
- // useFactory: (createTranslateLoader),
316
- // deps: [HttpClient]
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,
@@ -89,7 +89,7 @@
89
89
  left: 0px;
90
90
  right: 0px;
91
91
  margin: 0px;
92
- padding: 12px;
92
+ padding: 0 12px 12px 12px;
93
93
  // box-shadow: 0 -1px 0px 0px $trasp-light-gray;
94
94
  background: white;
95
95
  min-height: 40px;
@@ -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
- 'DOMAIN_NOT_ALLOWED'
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
- this.isConversationArchived = true;
478
- return null;
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) {
@@ -223,6 +223,7 @@
223
223
  .msg_receive {
224
224
  background-color: var(--light-white);
225
225
  color: var(--black);
226
+ min-height: 38px;
226
227
  // max-width: 260px;
227
228
  max-width: calc(100% - 70px);
228
229
  min-width: 14px;
@@ -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 & URLS -->
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 || showAlertUrl" [class.disabled] = "( isConversationArchived || hideTextReply)? true : null">
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 || showAlertUrl" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
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"/>
@@ -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
+ }