@eui/ecl 15.0.0-next.18 → 15.0.0-next.20

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 (73) hide show
  1. package/assets/i18n-ecl/bg.json +4 -0
  2. package/assets/i18n-ecl/cs.json +4 -0
  3. package/assets/i18n-ecl/da.json +4 -0
  4. package/assets/i18n-ecl/de.json +4 -0
  5. package/assets/i18n-ecl/el.json +4 -0
  6. package/assets/i18n-ecl/en.json +4 -0
  7. package/assets/i18n-ecl/es.json +4 -0
  8. package/assets/i18n-ecl/et.json +4 -0
  9. package/assets/i18n-ecl/fi.json +4 -0
  10. package/assets/i18n-ecl/fr.json +4 -0
  11. package/assets/i18n-ecl/ga.json +4 -0
  12. package/assets/i18n-ecl/hr.json +4 -0
  13. package/assets/i18n-ecl/hu.json +4 -0
  14. package/assets/i18n-ecl/it.json +4 -0
  15. package/assets/i18n-ecl/lt.json +4 -0
  16. package/assets/i18n-ecl/lv.json +4 -0
  17. package/assets/i18n-ecl/mt.json +4 -0
  18. package/assets/i18n-ecl/nl.json +4 -0
  19. package/assets/i18n-ecl/pl.json +4 -0
  20. package/assets/i18n-ecl/pt.json +4 -0
  21. package/assets/i18n-ecl/ro.json +4 -0
  22. package/assets/i18n-ecl/sk.json +4 -0
  23. package/assets/i18n-ecl/sl.json +4 -0
  24. package/assets/i18n-ecl/sv.json +4 -0
  25. package/docs/classes/EclLanguageService.html +255 -0
  26. package/docs/components/EclAppComponent.html +81 -25
  27. package/docs/components/EclInpageNavigationComponent.html +39 -1
  28. package/docs/components/EclMultiselectComponent.html +13 -1
  29. package/docs/components/EclNewsTickerComponent.html +1 -1
  30. package/docs/components/EclNewsTickerItemComponent.html +0 -67
  31. package/docs/components/EclPaginationItemComponent.html +1 -1
  32. package/docs/components/EclStickyContainerComponent.html +40 -82
  33. package/docs/dependencies.html +2 -2
  34. package/docs/directives/EclDatePickerDirective.html +13 -1
  35. package/docs/injectables/EclDefaultLanguageService.html +337 -0
  36. package/docs/interfaces/EclLanguage.html +45 -0
  37. package/docs/js/search/search_index.js +2 -2
  38. package/esm2020/lib/components/ecl-app/ecl-app.component.mjs +18 -28
  39. package/esm2020/lib/components/ecl-date-picker/ecl-date-picker.directive.mjs +15 -7
  40. package/esm2020/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.mjs +7 -3
  41. package/esm2020/lib/components/ecl-multiselect/ecl-multiselect.component.mjs +20 -8
  42. package/esm2020/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.mjs +2 -6
  43. package/esm2020/lib/components/ecl-news-ticker/ecl-news-ticker.component.mjs +13 -3
  44. package/esm2020/lib/components/ecl-pagination/ecl-pagination-item.component.mjs +3 -3
  45. package/esm2020/lib/components/ecl-sticky-container/ecl-sticky-container.component.mjs +3 -3
  46. package/esm2020/lib/model/ecl-language.model.mjs +1 -1
  47. package/esm2020/lib/services/ecl-default-language.service.mjs +50 -9
  48. package/esm2020/lib/services/ecl-language.service.mjs +1 -1
  49. package/fesm2015/eui-ecl.mjs +160 -103
  50. package/fesm2015/eui-ecl.mjs.map +1 -1
  51. package/fesm2020/eui-ecl.mjs +157 -100
  52. package/fesm2020/eui-ecl.mjs.map +1 -1
  53. package/lib/components/ecl-app/ecl-app.component.d.ts +3 -6
  54. package/lib/components/ecl-app/ecl-app.component.d.ts.map +1 -1
  55. package/lib/components/ecl-date-picker/ecl-date-picker.directive.d.ts +3 -1
  56. package/lib/components/ecl-date-picker/ecl-date-picker.directive.d.ts.map +1 -1
  57. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts +3 -1
  58. package/lib/components/ecl-inpage-navigation/ecl-inpage-navigation.component.d.ts.map +1 -1
  59. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts +6 -2
  60. package/lib/components/ecl-multiselect/ecl-multiselect.component.d.ts.map +1 -1
  61. package/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.d.ts +0 -1
  62. package/lib/components/ecl-news-ticker/ecl-news-ticker-item.component.d.ts.map +1 -1
  63. package/lib/components/ecl-news-ticker/ecl-news-ticker.component.d.ts +1 -0
  64. package/lib/components/ecl-news-ticker/ecl-news-ticker.component.d.ts.map +1 -1
  65. package/lib/components/ecl-sticky-container/ecl-sticky-container.component.d.ts +2 -2
  66. package/lib/components/ecl-sticky-container/ecl-sticky-container.component.d.ts.map +1 -1
  67. package/lib/model/ecl-language.model.d.ts +1 -0
  68. package/lib/model/ecl-language.model.d.ts.map +1 -1
  69. package/lib/services/ecl-default-language.service.d.ts +18 -2
  70. package/lib/services/ecl-default-language.service.d.ts.map +1 -1
  71. package/lib/services/ecl-language.service.d.ts +6 -0
  72. package/lib/services/ecl-language.service.d.ts.map +1 -1
  73. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Directive, Input, HostBinding, Component, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, NgModule, ContentChildren, forwardRef, HostListener, Injectable, Optional, Self, ContentChild, Inject, ViewEncapsulation, ElementRef } from '@angular/core';
2
+ import { Directive, Input, HostBinding, Component, ViewChild, EventEmitter, ChangeDetectionStrategy, Output, NgModule, ContentChildren, forwardRef, HostListener, Injectable, Optional, Inject, Self, ContentChild, ViewEncapsulation, ElementRef } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule, formatDate } from '@angular/common';
5
5
  import * as i2 from '@ngx-translate/core';
@@ -8,8 +8,8 @@ import { __decorate } from 'tslib';
8
8
  import { coerceBoolean, coerceElement, coerceArray, coerceNumber, DefaultConfig, EuiPagination } from '@eui/base';
9
9
  import * as i2$1 from '@eui/core';
10
10
  import { GLOBAL_CONFIG_TOKEN } from '@eui/core';
11
- import { Subject, takeUntil as takeUntil$1, delay, fromEvent, of } from 'rxjs';
12
- import { takeUntil, mergeWith } from 'rxjs/operators';
11
+ import { Subject, takeUntil, delay, fromEvent, of } from 'rxjs';
12
+ import { takeUntil as takeUntil$1, mergeWith } from 'rxjs/operators';
13
13
  import * as i1$1 from '@angular/forms';
14
14
  import { NG_VALUE_ACCESSOR, ReactiveFormsModule, FormsModule } from '@angular/forms';
15
15
  import * as i2$2 from '@angular/router';
@@ -543,6 +543,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
543
543
  }] } });
544
544
 
545
545
  class EclDefaultLanguageService {
546
+ constructor(config, i18nService) {
547
+ this.config = config;
548
+ this.i18nService = i18nService;
549
+ this.currentLanguage$ = new Subject();
550
+ this.FALLBACK_LANGUAGE = { code: 'en', label: 'English' };
551
+ this.destroy$ = new Subject();
552
+ this.handleActiveLanguageChangeState();
553
+ }
554
+ ngOnDestroy() {
555
+ this.destroy$.next(true);
556
+ this.destroy$.unsubscribe();
557
+ }
558
+ getCurrentLanguage() {
559
+ return this.currentLanguage;
560
+ }
561
+ updateCurrentLanguage(lang) {
562
+ this.i18nService.updateState({
563
+ activeLang: lang.code
564
+ });
565
+ }
566
+ getConfiguredLanguages() {
567
+ const languages = this.config?.i18n?.i18nService?.languages || [];
568
+ return languages.map((code) => this.getLanguageByCode(code));
569
+ }
546
570
  getEULanguageCodes() {
547
571
  return [
548
572
  'bg', 'cs', 'da', 'de', 'et', 'el', 'en', 'es',
@@ -565,6 +589,9 @@ class EclDefaultLanguageService {
565
589
  isEuLanguage(code) {
566
590
  return this.getEULanguageCodes().includes(code);
567
591
  }
592
+ isRtlLanguage(code) {
593
+ return this.getLanguageByCode(code).isRtl;
594
+ }
568
595
  getAllLanguages() {
569
596
  return [
570
597
  { code: 'ab', label: 'аҧсуа' },
@@ -573,7 +600,7 @@ class EclDefaultLanguageService {
573
600
  { code: 'ak', label: 'Akan' },
574
601
  { code: 'sq', label: 'Shqip' },
575
602
  { code: 'am', label: 'አማርኛ' },
576
- { code: 'ar', label: 'العربية' },
603
+ { code: 'ar', label: 'العربية', isRtl: true },
577
604
  { code: 'an', label: 'Aragonés' },
578
605
  { code: 'hy', label: 'Հայերեն' },
579
606
  { code: 'as', label: 'অসমীয়া' },
@@ -623,7 +650,7 @@ class EclDefaultLanguageService {
623
650
  { code: 'gu', label: 'ગુજરાતી' },
624
651
  { code: 'ht', label: 'Kreyòl ayisyen' },
625
652
  { code: 'ha', label: 'Hausa, هَوُسَ' },
626
- { code: 'he', label: 'עברית' },
653
+ { code: 'he', label: 'עברית', isRtl: true },
627
654
  { code: 'hz', label: 'Otjiherero' },
628
655
  { code: 'hi', label: 'हिन्दी, हिंदी' },
629
656
  { code: 'ho', label: 'Hiri Motu' },
@@ -652,7 +679,7 @@ class EclDefaultLanguageService {
652
679
  { code: 'kv', label: 'коми кыв' },
653
680
  { code: 'kg', label: 'KiKongo' },
654
681
  { code: 'ko', label: '한국어 (韓國語), 조선말 (朝鮮語)' },
655
- { code: 'ku', label: 'Kurdî, كوردی‎' },
682
+ { code: 'ku', label: 'Kurdî, كوردی‎', isRtl: true },
656
683
  { code: 'kj', label: 'Kuanyama' },
657
684
  { code: 'la', label: 'latine' },
658
685
  { code: 'lb', label: 'Lëtzebuergesch' },
@@ -691,7 +718,7 @@ class EclDefaultLanguageService {
691
718
  { code: 'os', label: 'ирон æвзаг' },
692
719
  { code: 'pa', label: 'ਪੰਜਾਬੀ, پنجابی‎' },
693
720
  { code: 'pi', label: 'पाऴि' },
694
- { code: 'fa', label: 'فارسی' },
721
+ { code: 'fa', label: 'فارسی', isRtl: true },
695
722
  { code: 'pl', label: 'polski' },
696
723
  { code: 'ps', label: 'پښتو' },
697
724
  { code: 'pt', label: 'Português' },
@@ -736,7 +763,7 @@ class EclDefaultLanguageService {
736
763
  { code: 'ty', label: 'Reo Tahiti' },
737
764
  { code: 'ug', label: 'Uyƣurqə, ئۇيغۇرچە‎' },
738
765
  { code: 'uk', label: 'українська' },
739
- { code: 'ur', label: 'اردو' },
766
+ { code: 'ur', label: 'اردو', isRtl: true },
740
767
  { code: 'uz', label: 'zbek, Ўзбек, أۇزبېك‎' },
741
768
  { code: 've', label: 'Tshivenḓa' },
742
769
  { code: 'vi', label: 'Tiếng Việt' },
@@ -751,13 +778,24 @@ class EclDefaultLanguageService {
751
778
  { code: 'za', label: 'Saɯ cueŋƅ, Saw cuengh' }
752
779
  ];
753
780
  }
781
+ handleActiveLanguageChangeState() {
782
+ this.i18nService.getState().pipe(takeUntil(this.destroy$)).subscribe(state => {
783
+ this.currentLanguage = this.getLanguageByCode(state.activeLang) || this.FALLBACK_LANGUAGE;
784
+ this.currentLanguage$.next(this.currentLanguage);
785
+ });
786
+ }
754
787
  }
755
- /** @nocollapse */ EclDefaultLanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
788
+ /** @nocollapse */ EclDefaultLanguageService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, deps: [{ token: GLOBAL_CONFIG_TOKEN, optional: true }, { token: i2$1.I18nService }], target: i0.ɵɵFactoryTarget.Injectable });
756
789
  /** @nocollapse */ EclDefaultLanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, providedIn: 'root' });
757
790
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, decorators: [{
758
791
  type: Injectable,
759
792
  args: [{ providedIn: 'root' }]
760
- }] });
793
+ }], ctorParameters: function () { return [{ type: undefined, decorators: [{
794
+ type: Optional
795
+ }, {
796
+ type: Inject,
797
+ args: [GLOBAL_CONFIG_TOKEN]
798
+ }] }, { type: i2$1.I18nService }]; } });
761
799
 
762
800
  class EclLanguageService {
763
801
  }
@@ -855,7 +893,7 @@ class EclLanguageListComponent extends ECLBaseDirective {
855
893
  item.isActive = true;
856
894
  }
857
895
  item.itemClick
858
- .pipe(takeUntil(this.destroy$))
896
+ .pipe(takeUntil$1(this.destroy$))
859
897
  .subscribe(() => {
860
898
  this.eclLanguageListItems.forEach(it => {
861
899
  it.isActive = false;
@@ -1387,13 +1425,13 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1387
1425
  if (this.eclLoginComponent && this.eclSearchComponent) {
1388
1426
  this.eclLoginComponent
1389
1427
  .loginBoxToggle
1390
- .pipe(takeUntil$1(this.destroy$))
1428
+ .pipe(takeUntil(this.destroy$))
1391
1429
  .subscribe(evt => {
1392
1430
  this.eclSearchComponent.isSearchBoxActive = false;
1393
1431
  });
1394
1432
  this.eclSearchComponent
1395
1433
  .searchToggle
1396
- .pipe(takeUntil$1(this.destroy$))
1434
+ .pipe(takeUntil(this.destroy$))
1397
1435
  .subscribe(evt => {
1398
1436
  this.eclLoginComponent.isLoginBoxActive = false;
1399
1437
  });
@@ -1401,7 +1439,7 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1401
1439
  if (this.eclLanguageComponent) {
1402
1440
  this.eclLanguageComponent
1403
1441
  .languageClick
1404
- .pipe(takeUntil$1(this.destroy$))
1442
+ .pipe(takeUntil(this.destroy$))
1405
1443
  .subscribe(evt => {
1406
1444
  this.languageClick.next(new EclSiteHeaderLanguageClickEvent());
1407
1445
  });
@@ -1421,7 +1459,7 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1421
1459
  handlei18nEvents() {
1422
1460
  this.languageCode = this.getEULanguageCode(this.translateService.currentLang);
1423
1461
  this.translateService.onLangChange
1424
- .pipe(takeUntil$1(this.destroy$))
1462
+ .pipe(takeUntil(this.destroy$))
1425
1463
  .subscribe((langChangeEvent) => {
1426
1464
  this.languageCode = this.getEULanguageCode(langChangeEvent.lang);
1427
1465
  });
@@ -1483,13 +1521,13 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1483
1521
  if (this.eclLoginComponent && this.eclSearchComponent) {
1484
1522
  this.eclLoginComponent
1485
1523
  .loginBoxToggle
1486
- .pipe(takeUntil$1(this.destroy$))
1524
+ .pipe(takeUntil(this.destroy$))
1487
1525
  .subscribe(evt => {
1488
1526
  this.eclSearchComponent.isSearchBoxActive = false;
1489
1527
  });
1490
1528
  this.eclSearchComponent
1491
1529
  .searchToggle
1492
- .pipe(takeUntil$1(this.destroy$))
1530
+ .pipe(takeUntil(this.destroy$))
1493
1531
  .subscribe(evt => {
1494
1532
  this.eclLoginComponent.isLoginBoxActive = false;
1495
1533
  });
@@ -1497,7 +1535,7 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1497
1535
  if (this.eclLanguageComponent) {
1498
1536
  this.eclLanguageComponent
1499
1537
  .languageClick
1500
- .pipe(takeUntil$1(this.destroy$))
1538
+ .pipe(takeUntil(this.destroy$))
1501
1539
  .subscribe(evt => {
1502
1540
  this.languageClick.next(new EclSiteHeaderLanguageClickEvent());
1503
1541
  });
@@ -1520,7 +1558,7 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1520
1558
  handlei18nEvents() {
1521
1559
  this.languageCode = this.getEULanguageCode(this.translateService.currentLang);
1522
1560
  this.translateService.onLangChange
1523
- .pipe(takeUntil$1(this.destroy$))
1561
+ .pipe(takeUntil(this.destroy$))
1524
1562
  .subscribe((langChangeEvent) => {
1525
1563
  this.languageCode = this.getEULanguageCode(langChangeEvent.lang);
1526
1564
  });
@@ -2651,16 +2689,14 @@ class EclAppLanguageDismissEvent extends EclBaseEvent {
2651
2689
  }
2652
2690
  }
2653
2691
  class EclAppComponent extends ECLBaseDirective {
2654
- constructor(config, eclLanguageService, i18nService, cd) {
2692
+ constructor(eclLanguageService, cd) {
2655
2693
  super();
2656
- this.config = config;
2657
2694
  this.eclLanguageService = eclLanguageService;
2658
- this.i18nService = i18nService;
2659
2695
  this.cd = cd;
2696
+ this.textDirection = 'ltr';
2660
2697
  this.languageDismiss = new EventEmitter();
2661
2698
  this.languages = [];
2662
2699
  this.destroy$ = new Subject();
2663
- this.FALLBACK_LANGUAGE = { code: 'en', label: 'English' };
2664
2700
  }
2665
2701
  ngAfterViewInit() {
2666
2702
  this.handleAppLanguagesState();
@@ -2673,35 +2709,30 @@ class EclAppComponent extends ECLBaseDirective {
2673
2709
  this.destroy$.unsubscribe();
2674
2710
  }
2675
2711
  handleAppLanguagesState() {
2676
- const languages = this.config?.i18n?.i18nService?.languages || [];
2677
- this.languages = languages.map((code) => this.eclLanguageService.getLanguageByCode(code));
2712
+ this.languages = this.eclLanguageService.getConfiguredLanguages();
2678
2713
  this.cd.detectChanges();
2679
2714
  }
2680
2715
  handleActiveLanguageChangeState() {
2681
- this.i18nService.getState().subscribe(state => {
2682
- const lang = this.eclLanguageService.getLanguageByCode(state.activeLang) || this.FALLBACK_LANGUAGE;
2716
+ this.eclLanguageService.currentLanguage$.pipe(takeUntil$1(this.destroy$)).subscribe(lang => {
2683
2717
  this.syncLanguageDataWithUI(lang);
2684
2718
  this.hideLanguageListUI();
2685
2719
  });
2686
2720
  }
2687
2721
  handleSiteHeaderUIEvents() {
2688
2722
  if (this.eclSiteHeader && this.eclSiteHeader.eclLanguageComponent) {
2689
- this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil(this.destroy$)).subscribe(() => {
2723
+ this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2690
2724
  this.showLanguageListUI();
2691
2725
  });
2692
2726
  }
2693
2727
  }
2694
2728
  handleLanguageListUIEvents() {
2695
- this.eclLanguageList.close.pipe(takeUntil(this.destroy$)).subscribe(() => {
2729
+ this.eclLanguageList.close.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2696
2730
  this.hideLanguageListUI();
2697
2731
  this.languageDismiss.next(new EclAppLanguageDismissEvent());
2698
2732
  });
2699
- this.eclLanguageList.languageSelected.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
2700
- const lang = evt.language;
2701
- this.i18nService.updateState({
2702
- activeLang: lang.code
2703
- });
2704
- this.languageDismiss.next(new EclAppLanguageDismissEvent(lang));
2733
+ this.eclLanguageList.languageSelected.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
2734
+ this.eclLanguageService.updateCurrentLanguage(evt.language);
2735
+ this.languageDismiss.next(new EclAppLanguageDismissEvent(evt.language));
2705
2736
  this.cd.detectChanges();
2706
2737
  });
2707
2738
  }
@@ -2721,19 +2752,18 @@ class EclAppComponent extends ECLBaseDirective {
2721
2752
  this.eclSiteHeader.eclLanguageComponent.languageLabel = lang.label;
2722
2753
  }
2723
2754
  this.eclLanguageList.selectedLanguageCode = lang.code;
2755
+ this.textDirection = lang.isRtl ? 'rtl' : 'ltr';
2724
2756
  }
2725
2757
  }
2726
- /** @nocollapse */ EclAppComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclAppComponent, deps: [{ token: GLOBAL_CONFIG_TOKEN, optional: true }, { token: EclLanguageService }, { token: i2$1.I18nService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2727
- /** @nocollapse */ EclAppComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclAppComponent, selector: "ecl-app", outputs: { languageDismiss: "languageDismiss" }, queries: [{ propertyName: "eclSiteHeader", first: true, predicate: EclSiteHeaderComponent, descendants: true }], viewQueries: [{ propertyName: "eclLanguageList", first: true, predicate: EclLanguageListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<ecl-language-list \n [isHidden]=\"true\"\n [isOverlay]=\"true\">\n <ecl-language-list-item \n *ngFor=\"let lang of languages\" \n [languageCode]=\"lang.code\" \n [languageLabel]=\"lang.label\">\n </ecl-language-list-item>\n</ecl-language-list>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EclLanguageListComponent, selector: "ecl-language-list", inputs: ["isOverlay", "selectedLanguageCode", "isHidden"], outputs: ["languageSelected", "close"] }, { kind: "component", type: EclLanguageListItemComponent, selector: "ecl-language-list-item", inputs: ["isActive", "languageCode", "languageLabel"], outputs: ["itemClick"] }] });
2758
+ /** @nocollapse */ EclAppComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclAppComponent, deps: [{ token: EclLanguageService }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
2759
+ /** @nocollapse */ EclAppComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclAppComponent, selector: "ecl-app", outputs: { languageDismiss: "languageDismiss" }, host: { properties: { "attr.dir": "this.textDirection" } }, queries: [{ propertyName: "eclSiteHeader", first: true, predicate: EclSiteHeaderComponent, descendants: true }], viewQueries: [{ propertyName: "eclLanguageList", first: true, predicate: EclLanguageListComponent, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n\n<ecl-language-list \n [isHidden]=\"true\"\n [isOverlay]=\"true\">\n <ecl-language-list-item \n *ngFor=\"let lang of languages\" \n [languageCode]=\"lang.code\" \n [languageLabel]=\"lang.label\">\n </ecl-language-list-item>\n</ecl-language-list>", dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: EclLanguageListComponent, selector: "ecl-language-list", inputs: ["isOverlay", "selectedLanguageCode", "isHidden"], outputs: ["languageSelected", "close"] }, { kind: "component", type: EclLanguageListItemComponent, selector: "ecl-language-list-item", inputs: ["isActive", "languageCode", "languageLabel"], outputs: ["itemClick"] }] });
2728
2760
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclAppComponent, decorators: [{
2729
2761
  type: Component,
2730
2762
  args: [{ selector: 'ecl-app', template: "<ng-content></ng-content>\n\n<ecl-language-list \n [isHidden]=\"true\"\n [isOverlay]=\"true\">\n <ecl-language-list-item \n *ngFor=\"let lang of languages\" \n [languageCode]=\"lang.code\" \n [languageLabel]=\"lang.label\">\n </ecl-language-list-item>\n</ecl-language-list>" }]
2731
- }], ctorParameters: function () { return [{ type: undefined, decorators: [{
2732
- type: Optional
2733
- }, {
2734
- type: Inject,
2735
- args: [GLOBAL_CONFIG_TOKEN]
2736
- }] }, { type: EclLanguageService }, { type: i2$1.I18nService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { eclSiteHeader: [{
2763
+ }], ctorParameters: function () { return [{ type: EclLanguageService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textDirection: [{
2764
+ type: HostBinding,
2765
+ args: ['attr.dir']
2766
+ }], eclSiteHeader: [{
2737
2767
  type: ContentChild,
2738
2768
  args: [EclSiteHeaderComponent]
2739
2769
  }], eclLanguageList: [{
@@ -2781,17 +2811,17 @@ class EclAppComponentBase {
2781
2811
  }
2782
2812
  handleSiteHeaderUIEvents() {
2783
2813
  if (this.eclSiteHeader && this.eclSiteHeader.eclLanguageComponent) {
2784
- this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil(this.destroy$)).subscribe(() => {
2814
+ this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2785
2815
  this.showLanguageListUI();
2786
2816
  });
2787
2817
  }
2788
2818
  }
2789
2819
  handleLanguageListUIEvents() {
2790
- this.eclLanguageList.close.pipe(takeUntil(this.destroy$)).subscribe(() => {
2820
+ this.eclLanguageList.close.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2791
2821
  this.hideLanguageListUI();
2792
2822
  this.languageDismiss.next(new EclAppLanguageDismissEvent());
2793
2823
  });
2794
- this.eclLanguageList.languageSelected.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
2824
+ this.eclLanguageList.languageSelected.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
2795
2825
  const lang = evt.language;
2796
2826
  this.i18nService.updateState({
2797
2827
  activeLang: lang.code
@@ -3112,7 +3142,7 @@ class EclBreadcrumbComponentBase extends ECLBaseDirective {
3112
3142
  }
3113
3143
  ngOnInit() {
3114
3144
  this.translate.stream('ecl.breadcrumb.YOU-ARE-HERE')
3115
- .pipe(takeUntil$1(this.destroy$)).subscribe(text => {
3145
+ .pipe(takeUntil(this.destroy$)).subscribe(text => {
3116
3146
  this.ariaLabel = text;
3117
3147
  });
3118
3148
  }
@@ -3600,7 +3630,7 @@ class EclBreadcrumbComponent extends ECLBaseDirective {
3600
3630
  }
3601
3631
  ngOnInit() {
3602
3632
  this.translate.stream('ecl.breadcrumb.YOU-ARE-HERE')
3603
- .pipe(takeUntil$1(this.destroy$)).subscribe(text => {
3633
+ .pipe(takeUntil(this.destroy$)).subscribe(text => {
3604
3634
  this.ariaLabel = text;
3605
3635
  });
3606
3636
  }
@@ -4077,7 +4107,7 @@ class EclCategoryFilterComponent extends ECLBaseDirective {
4077
4107
  }
4078
4108
  connectCategoryfilterItemEvents(item) {
4079
4109
  item.itemSelect
4080
- .pipe(takeUntil$1(this.destroy$))
4110
+ .pipe(takeUntil(this.destroy$))
4081
4111
  .subscribe((evt) => { this.onItemSelected(evt); });
4082
4112
  }
4083
4113
  onItemSelected(evt) {
@@ -5019,11 +5049,12 @@ const ECL_DATE_PICKER_VALUE_ACCESSOR = {
5019
5049
  };
5020
5050
  const noop = () => { };
5021
5051
  class EclDatePickerDirective extends ECLBaseDirective {
5022
- constructor(el, viewContainerRef, translateService) {
5052
+ constructor(el, viewContainerRef, translateService, eclLanguageService) {
5023
5053
  super();
5024
5054
  this.el = el;
5025
5055
  this.viewContainerRef = viewContainerRef;
5026
5056
  this.translateService = translateService;
5057
+ this.eclLanguageService = eclLanguageService;
5027
5058
  this.yearRange = 40;
5028
5059
  this.format = 'DD-MM-YYYY';
5029
5060
  this.type = 'text';
@@ -5074,6 +5105,8 @@ class EclDatePickerDirective extends ECLBaseDirective {
5074
5105
  initPikaday() {
5075
5106
  const i18nKey = 'ecl.date-picker.PIKADAY';
5076
5107
  let i18nTranslation = this.translateService.instant(i18nKey);
5108
+ const isRtl = this.eclLanguageService.getCurrentLanguage().isRtl;
5109
+ const position = isRtl ? 'bottom right' : 'bottom left';
5077
5110
  if (!i18nTranslation || i18nTranslation === i18nKey) {
5078
5111
  i18nTranslation = pikadayDefaultI18n;
5079
5112
  }
@@ -5084,23 +5117,27 @@ class EclDatePickerDirective extends ECLBaseDirective {
5084
5117
  yearRange: this.yearRange,
5085
5118
  reposition: false,
5086
5119
  i18n: i18nTranslation,
5120
+ isRtl: isRtl,
5121
+ position: position,
5087
5122
  showDaysInNextAndPreviousMonths: true,
5088
5123
  enableSelectionDaysInNextAndPreviousMonths: true,
5089
5124
  onSelect: this.onSelectDate.bind(this),
5090
5125
  onOpen() {
5091
- // Fix picker size that exceeds vw on mobile
5126
+ // Extend picker size on mobile
5092
5127
  const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
5093
5128
  const elRect = this.el.getBoundingClientRect();
5094
- if (elRect.width >= vw) {
5129
+ const pickerMargin = isRtl ? vw - elRect.right : elRect.left;
5130
+ if (vw < 768) {
5095
5131
  this.el.style.width = 'auto';
5096
- this.el.style.right = `${elRect.left}px`;
5132
+ this.el.style.left = `${pickerMargin}px`;
5133
+ this.el.style.right = `${pickerMargin}px`;
5097
5134
  }
5098
5135
  },
5099
5136
  });
5100
5137
  }
5101
5138
  handlei18nEvents() {
5102
5139
  this.translateService.onLangChange
5103
- .pipe(takeUntil$1(this.destroy$))
5140
+ .pipe(takeUntil(this.destroy$))
5104
5141
  .subscribe((langChangeEvent) => {
5105
5142
  this.initPikaday();
5106
5143
  });
@@ -5139,7 +5176,7 @@ class EclDatePickerDirective extends ECLBaseDirective {
5139
5176
  return eclIconComponent.location.nativeElement;
5140
5177
  }
5141
5178
  }
5142
- /** @nocollapse */ EclDatePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDatePickerDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Directive });
5179
+ /** @nocollapse */ EclDatePickerDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDatePickerDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i2.TranslateService }, { token: EclLanguageService }], target: i0.ɵɵFactoryTarget.Directive });
5143
5180
  /** @nocollapse */ EclDatePickerDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclDatePickerDirective, selector: "input[eclDatePicker]", inputs: { yearRange: "yearRange", format: "format" }, outputs: { datePicked: "datePicked" }, host: { listeners: { "click": "onClick()", "blur": "onBlur()" }, properties: { "attr.type": "this.type", "class": "this.cssClasses", "attr.disabled": "this.isDisabled" } }, providers: [ECL_DATE_PICKER_VALUE_ACCESSOR], usesInheritance: true, ngImport: i0 });
5144
5181
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDatePickerDirective, decorators: [{
5145
5182
  type: Directive,
@@ -5147,7 +5184,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
5147
5184
  selector: 'input[eclDatePicker]',
5148
5185
  providers: [ECL_DATE_PICKER_VALUE_ACCESSOR]
5149
5186
  }]
5150
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.TranslateService }]; }, propDecorators: { yearRange: [{
5187
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.TranslateService }, { type: EclLanguageService }]; }, propDecorators: { yearRange: [{
5151
5188
  type: Input
5152
5189
  }], format: [{
5153
5190
  type: Input
@@ -5732,7 +5769,7 @@ class EclFileUploadDirective extends ECLBaseDirective {
5732
5769
  let uploadButtonLabelKey = this.geti18nUploadButtonLabelKey();
5733
5770
  this.translate
5734
5771
  .stream(uploadButtonLabelKey)
5735
- .pipe(takeUntil(this.destroy$)).subscribe((translation) => {
5772
+ .pipe(takeUntil$1(this.destroy$)).subscribe((translation) => {
5736
5773
  if (this.buttonEl) {
5737
5774
  this.buttonEl.textContent = translation;
5738
5775
  }
@@ -6373,7 +6410,7 @@ class EclGalleryComponent extends ECLBaseDirective {
6373
6410
  this.itemsCount = this.galleryItems.length;
6374
6411
  this.galleryItems.forEach(item => {
6375
6412
  item.itemClick
6376
- .pipe(takeUntil(this.destroy$))
6413
+ .pipe(takeUntil$1(this.destroy$))
6377
6414
  .subscribe(_ => {
6378
6415
  this.isDialogVisible = true;
6379
6416
  this.item = item;
@@ -6465,7 +6502,7 @@ class EclGalleryComponent extends ECLBaseDirective {
6465
6502
  }
6466
6503
  observeBreakpointChanges() {
6467
6504
  this.cdkBreakpointObserver.observe([Breakpoints.Handset, Breakpoints.Tablet])
6468
- .pipe(takeUntil(this.destroy$), delay(this.BREAKPOINT_CHANGES_TIMEOUT))
6505
+ .pipe(takeUntil$1(this.destroy$), delay(this.BREAKPOINT_CHANGES_TIMEOUT))
6469
6506
  .subscribe(result => {
6470
6507
  this.isMobile = result.matches;
6471
6508
  this.hideItems();
@@ -6826,10 +6863,10 @@ class EclStickyContainerComponent extends ECLBaseDirective {
6826
6863
  !this.isEnabled ? 'ecl-sticky-container--disabled' : ''
6827
6864
  ].join(' ').trim();
6828
6865
  }
6829
- top() {
6866
+ get top() {
6830
6867
  return this.marginTop || null;
6831
6868
  }
6832
- bottom() {
6869
+ get bottom() {
6833
6870
  return this.marginBottom || null;
6834
6871
  }
6835
6872
  }
@@ -6906,14 +6943,14 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
6906
6943
  handleNavigationItemsScroll() {
6907
6944
  const scrollableContainer = window;
6908
6945
  const sectionElementIds = this.eclNavigationLinkItems.map(item => item.sectionId);
6909
- fromEvent(scrollableContainer, 'scroll').pipe(takeUntil(this.destroy$)).subscribe((event) => {
6946
+ fromEvent(scrollableContainer, 'scroll').pipe(takeUntil$1(this.destroy$)).subscribe((event) => {
6910
6947
  const sectionElements = sectionElementIds.map(id => document.querySelector(`#${id}`));
6911
6948
  this.handleNavigationLinksHighlight(sectionElements);
6912
6949
  });
6913
6950
  }
6914
6951
  handleNavigationItemsClick() {
6915
6952
  this.eclNavigationLinkItems.forEach(item => {
6916
- item.itemClick.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
6953
+ item.itemClick.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
6917
6954
  this.selectNavigationItem(this.eclNavigationLinkItems, item.sectionElement);
6918
6955
  if (item.sectionElement) {
6919
6956
  item.sectionElement.scrollIntoView();
@@ -6960,12 +6997,16 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
6960
6997
  }
6961
6998
  }
6962
6999
  /** @nocollapse */ EclInpageNavigationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclInpageNavigationComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
6963
- /** @nocollapse */ EclInpageNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclInpageNavigationComponent, selector: "ecl-inpage-navigation", inputs: { eclTitle: "eclTitle" }, outputs: { sectionEnter: "sectionEnter" }, queries: [{ propertyName: "eclNavigationLinkItems", predicate: EclInpageNavigationItemComponent }], usesInheritance: true, ngImport: i0, template: "<ecl-sticky-container>\n <nav class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"currentSectionElement\">\n <div class=\"ecl-inpage-navigation__title\">\n {{ eclTitle || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <button\n type=\"button\"\n class=\"ecl-inpage-navigation__trigger\"\n aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n (click)=\"onExpandButtonClick($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label }}\n </span>\n <ecl-icon \n icon=\"corner-arrow\" \n size=\"s\" \n transform=\"rotate-180\" \n class=\"ecl-inpage-navigation__trigger-icon\">\n </ecl-icon>\n </button>\n <ul class=\"ecl-inpage-navigation__list\"\n [class.ecl-inpage-navigation__list--visible]=\"isButtonExpanded\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n aria-labelledby=\"ecl-inpage-navigation-trigger\">\n <ng-content></ng-content>\n </ul>\n </div>\n </nav>\n</ecl-sticky-container>\n", styles: ["@media (min-width: 996px){.ecl-inpage-navigation__list{display:block!important}}\n"], dependencies: [{ kind: "component", type: EclStickyContainerComponent, selector: "ecl-sticky-container", inputs: ["isEnabled", "marginTop", "marginBottom"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
7000
+ /** @nocollapse */ EclInpageNavigationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclInpageNavigationComponent, selector: "ecl-inpage-navigation", inputs: { eclTitle: "eclTitle", marginTop: "marginTop", marginBottom: "marginBottom" }, outputs: { sectionEnter: "sectionEnter" }, queries: [{ propertyName: "eclNavigationLinkItems", predicate: EclInpageNavigationItemComponent }], usesInheritance: true, ngImport: i0, template: "<ecl-sticky-container [marginTop]=\"marginTop\" [marginBottom]=\"marginBottom\">\n <nav class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"currentSectionElement\">\n <div class=\"ecl-inpage-navigation__title\">\n {{ eclTitle || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <button\n type=\"button\"\n class=\"ecl-inpage-navigation__trigger\"\n aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n (click)=\"onExpandButtonClick($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label }}\n </span>\n <ecl-icon \n icon=\"corner-arrow\" \n size=\"s\" \n transform=\"rotate-180\" \n class=\"ecl-inpage-navigation__trigger-icon\">\n </ecl-icon>\n </button>\n <ul class=\"ecl-inpage-navigation__list\"\n [class.ecl-inpage-navigation__list--visible]=\"isButtonExpanded\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n aria-labelledby=\"ecl-inpage-navigation-trigger\">\n <ng-content></ng-content>\n </ul>\n </div>\n </nav>\n</ecl-sticky-container>\n", styles: ["@media (min-width: 996px){.ecl-inpage-navigation__list{display:block!important}}\n"], dependencies: [{ kind: "component", type: EclStickyContainerComponent, selector: "ecl-sticky-container", inputs: ["isEnabled", "marginTop", "marginBottom"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
6964
7001
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclInpageNavigationComponent, decorators: [{
6965
7002
  type: Component,
6966
- args: [{ selector: 'ecl-inpage-navigation', template: "<ecl-sticky-container>\n <nav class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"currentSectionElement\">\n <div class=\"ecl-inpage-navigation__title\">\n {{ eclTitle || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <button\n type=\"button\"\n class=\"ecl-inpage-navigation__trigger\"\n aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n (click)=\"onExpandButtonClick($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label }}\n </span>\n <ecl-icon \n icon=\"corner-arrow\" \n size=\"s\" \n transform=\"rotate-180\" \n class=\"ecl-inpage-navigation__trigger-icon\">\n </ecl-icon>\n </button>\n <ul class=\"ecl-inpage-navigation__list\"\n [class.ecl-inpage-navigation__list--visible]=\"isButtonExpanded\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n aria-labelledby=\"ecl-inpage-navigation-trigger\">\n <ng-content></ng-content>\n </ul>\n </div>\n </nav>\n</ecl-sticky-container>\n", styles: ["@media (min-width: 996px){.ecl-inpage-navigation__list{display:block!important}}\n"] }]
7003
+ args: [{ selector: 'ecl-inpage-navigation', template: "<ecl-sticky-container [marginTop]=\"marginTop\" [marginBottom]=\"marginBottom\">\n <nav class=\"ecl-inpage-navigation\"\n [class.ecl-inpage-navigation--visible]=\"currentSectionElement\">\n <div class=\"ecl-inpage-navigation__title\">\n {{ eclTitle || 'ecl.inpage-navigation.PAGE-CONTENTS' | translate }}\n </div>\n <div class=\"ecl-inpage-navigation__body\">\n <button\n type=\"button\"\n class=\"ecl-inpage-navigation__trigger\"\n aria-controls=\"ecl-inpage-navigation-list\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n (click)=\"onExpandButtonClick($event)\">\n <span class=\"ecl-inpage-navigation__trigger-current\">\n {{ currentNavigationLinkItem?.label }}\n </span>\n <ecl-icon \n icon=\"corner-arrow\" \n size=\"s\" \n transform=\"rotate-180\" \n class=\"ecl-inpage-navigation__trigger-icon\">\n </ecl-icon>\n </button>\n <ul class=\"ecl-inpage-navigation__list\"\n [class.ecl-inpage-navigation__list--visible]=\"isButtonExpanded\"\n [attr.aria-expanded]=\"isButtonExpanded\"\n aria-labelledby=\"ecl-inpage-navigation-trigger\">\n <ng-content></ng-content>\n </ul>\n </div>\n </nav>\n</ecl-sticky-container>\n", styles: ["@media (min-width: 996px){.ecl-inpage-navigation__list{display:block!important}}\n"] }]
6967
7004
  }], propDecorators: { eclTitle: [{
6968
7005
  type: Input
7006
+ }], marginTop: [{
7007
+ type: Input
7008
+ }], marginBottom: [{
7009
+ type: Input
6969
7010
  }], sectionEnter: [{
6970
7011
  type: Output
6971
7012
  }], eclNavigationLinkItems: [{
@@ -7491,7 +7532,7 @@ class EclMenuMegaComponent extends ECLBaseDirective {
7491
7532
  this.destroy$.unsubscribe();
7492
7533
  }
7493
7534
  createContentChildrenMenuObservable() {
7494
- return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil(this.destroy$));
7535
+ return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil$1(this.destroy$));
7495
7536
  }
7496
7537
  onMenuItemChanges() {
7497
7538
  this.diff = this.differ.diff(this.eclMenuMegaItems);
@@ -7508,7 +7549,7 @@ class EclMenuMegaComponent extends ECLBaseDirective {
7508
7549
  }
7509
7550
  connectMenuItemEvents(item) {
7510
7551
  item.menuItemSelect
7511
- .pipe(takeUntil(this.destroy$))
7552
+ .pipe(takeUntil$1(this.destroy$))
7512
7553
  .subscribe((evt) => {
7513
7554
  this.onMenuItemSelected(item, evt);
7514
7555
  });
@@ -7611,7 +7652,7 @@ class EclMenuItemComponent extends ECLBaseDirective {
7611
7652
  ngAfterContentInit() {
7612
7653
  if (this.submenu) {
7613
7654
  this.submenu.menuItemSelect
7614
- .pipe(takeUntil(this.destroy$))
7655
+ .pipe(takeUntil$1(this.destroy$))
7615
7656
  .subscribe((it) => {
7616
7657
  this.menuMegaItemSelect.next(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));
7617
7658
  });
@@ -7792,7 +7833,7 @@ class EclMenuComponent extends ECLBaseDirective {
7792
7833
  return this.eclRootMenuItems.some(item => item.isExpanded);
7793
7834
  }
7794
7835
  createRootMenuItemsChangesObservable() {
7795
- return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil(this.destroy$));
7836
+ return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil$1(this.destroy$));
7796
7837
  }
7797
7838
  onMenuItemChanges() {
7798
7839
  this.diff = this.differ.diff(this.eclRootMenuItems);
@@ -7809,19 +7850,19 @@ class EclMenuComponent extends ECLBaseDirective {
7809
7850
  }
7810
7851
  connectMenuItemEvents(item) {
7811
7852
  item.menuItemSelect
7812
- .pipe(takeUntil(this.destroy$))
7853
+ .pipe(takeUntil$1(this.destroy$))
7813
7854
  .subscribe((evt) => { this.onRootMenuItemSelected(evt); });
7814
7855
  item.menuItemHover
7815
- .pipe(takeUntil(this.destroy$))
7856
+ .pipe(takeUntil$1(this.destroy$))
7816
7857
  .subscribe((evt) => { this.onRootMenuItemHovered(evt); });
7817
7858
  item.menuItemHoverOut
7818
- .pipe(takeUntil(this.destroy$))
7859
+ .pipe(takeUntil$1(this.destroy$))
7819
7860
  .subscribe((evt) => { this.onRootMenuItemHoveredOut(evt); });
7820
7861
  item.menuMegaItemSelect
7821
- .pipe(takeUntil(this.destroy$))
7862
+ .pipe(takeUntil$1(this.destroy$))
7822
7863
  .subscribe((evt) => { this.onMenuMegaItemSelected(item, evt); });
7823
7864
  item.menuItemFocus
7824
- .pipe(takeUntil(this.destroy$))
7865
+ .pipe(takeUntil$1(this.destroy$))
7825
7866
  .subscribe((evt) => { this.onRootMenuItemFocused(item, evt); });
7826
7867
  }
7827
7868
  onRootMenuItemFocused(item, evt) {
@@ -7944,7 +7985,7 @@ class EclMenuComponent extends ECLBaseDirective {
7944
7985
  observeRootMenuItemsChanges() {
7945
7986
  this.diff = this.differ.diff(this.eclRootMenuItems);
7946
7987
  this.createRootMenuItemsChangesObservable()
7947
- .pipe(takeUntil(this.destroy$))
7988
+ .pipe(takeUntil$1(this.destroy$))
7948
7989
  .subscribe(this.onMenuItemChanges.bind(this));
7949
7990
  }
7950
7991
  observeSwipeGestures() {
@@ -7953,7 +7994,7 @@ class EclMenuComponent extends ECLBaseDirective {
7953
7994
  }
7954
7995
  observeBreakpointChanges() {
7955
7996
  this.cdkBreakpointObserver.observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
7956
- .pipe(takeUntil(this.destroy$))
7997
+ .pipe(takeUntil$1(this.destroy$))
7957
7998
  .subscribe(result => {
7958
7999
  this.isMobileBreakpoint = result.matches;
7959
8000
  });
@@ -8237,12 +8278,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8237
8278
  }] } });
8238
8279
 
8239
8280
  class EclMultiselectComponent extends ECLBaseDirective {
8240
- constructor(ngControl, el, viewContainerRef, differs) {
8281
+ constructor(ngControl, el, viewContainerRef, differs, translate) {
8241
8282
  super();
8242
8283
  this.ngControl = ngControl;
8243
8284
  this.el = el;
8244
8285
  this.viewContainerRef = viewContainerRef;
8245
8286
  this.differs = differs;
8287
+ this.translate = translate;
8246
8288
  this.isInvalid = false;
8247
8289
  this._disabled = false;
8248
8290
  this.eclSize = 'm';
@@ -8292,6 +8334,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
8292
8334
  this.createHtmlElements();
8293
8335
  this.buildMultiselectDropdown(false);
8294
8336
  }
8337
+ this.handleTranslations();
8295
8338
  }
8296
8339
  ngDoCheck() {
8297
8340
  this.multiselectContainer.classList.toggle('ecl-select__container--disabled', this.disabled);
@@ -8345,7 +8388,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
8345
8388
  }
8346
8389
  }
8347
8390
  onOptionsChange() {
8348
- this.eclOptionItems.forEach(i => i.changes.pipe(takeUntil$1(this.destroy$)).subscribe(e => {
8391
+ this.eclOptionItems.forEach(i => i.changes.pipe(takeUntil(this.destroy$)).subscribe(e => {
8349
8392
  setTimeout(() => {
8350
8393
  this.multiselectWrapper.removeChild(this.multiDropdown);
8351
8394
  this.multiDropdown.remove();
@@ -8518,8 +8561,8 @@ class EclMultiselectComponent extends ECLBaseDirective {
8518
8561
  this.selectAll();
8519
8562
  };
8520
8563
  checkboxDiv.appendChild(this.checkboxSelectAll);
8521
- const checkboxLabel = this.createCheckboxLabel('Select all', 'select-multiple-all' + idStr.substring(idStr.lastIndexOf('.') + 1));
8522
- checkboxDiv.appendChild(checkboxLabel);
8564
+ this.checkboxLabel = this.createCheckboxLabel('Select all', 'select-multiple-all' + idStr.substring(idStr.lastIndexOf('.') + 1));
8565
+ checkboxDiv.appendChild(this.checkboxLabel);
8523
8566
  return checkboxDiv;
8524
8567
  }
8525
8568
  createOptionsWrapper() {
@@ -8561,14 +8604,14 @@ class EclMultiselectComponent extends ECLBaseDirective {
8561
8604
  selectIconContainer.classList.add('ecl-select__icon');
8562
8605
  return selectIconContainer;
8563
8606
  }
8564
- searchOptions(keyword) {
8607
+ searchOptions(keyword = '') {
8565
8608
  if (keyword === '') {
8566
8609
  this.multiSelectOptions.forEach(item => {
8567
8610
  item.style.display = 'flex';
8568
8611
  });
8569
8612
  }
8570
8613
  this.multiSelectOptions.forEach((item, cnt) => {
8571
- if (item.textContent.toLowerCase().indexOf(keyword) < 0) {
8614
+ if (item.textContent.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {
8572
8615
  item.style.display = 'none';
8573
8616
  }
8574
8617
  });
@@ -8584,8 +8627,17 @@ class EclMultiselectComponent extends ECLBaseDirective {
8584
8627
  this.selectedValues = [];
8585
8628
  this.multiSelectInput.value = null;
8586
8629
  }
8630
+ handleTranslations() {
8631
+ this.translate
8632
+ .stream('ecl.multiselect.SELECT-ALL')
8633
+ .pipe(takeUntil(this.destroy$)).subscribe((translation) => {
8634
+ if (this.checkboxLabel) {
8635
+ this.checkboxLabel.textContent = translation;
8636
+ }
8637
+ });
8638
+ }
8587
8639
  }
8588
- /** @nocollapse */ EclMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclMultiselectComponent, deps: [{ token: i1$1.NgControl, optional: true, self: true }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }], target: i0.ɵɵFactoryTarget.Component });
8640
+ /** @nocollapse */ EclMultiselectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclMultiselectComponent, deps: [{ token: i1$1.NgControl, optional: true, self: true }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.IterableDiffers }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component });
8589
8641
  /** @nocollapse */ EclMultiselectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclMultiselectComponent, selector: "select[eclMultiselect]", inputs: { isInvalid: "isInvalid", eclPlaceholder: "eclPlaceholder", disabled: "disabled", eclSize: "eclSize" }, outputs: { eclChange: "eclChange" }, host: { listeners: { "document:click": "onKeyUp($event)" }, properties: { "attr.disabled": "this.disabled", "class": "this.cssClasses" } }, queries: [{ propertyName: "eclOptionItems", predicate: EclMultiselectOptionDirective }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>" });
8590
8642
  __decorate([
8591
8643
  coerceBoolean
@@ -8597,7 +8649,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8597
8649
  type: Optional
8598
8650
  }, {
8599
8651
  type: Self
8600
- }] }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }]; }, propDecorators: { eclOptionItems: [{
8652
+ }] }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }, { type: i2.TranslateService }]; }, propDecorators: { eclOptionItems: [{
8601
8653
  type: ContentChildren,
8602
8654
  args: [EclMultiselectOptionDirective]
8603
8655
  }], isInvalid: [{
@@ -8773,7 +8825,6 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
8773
8825
  super();
8774
8826
  this.el = el;
8775
8827
  this.ariaHidden = true;
8776
- this.tabindex = '-1';
8777
8828
  this.role = 'listitem';
8778
8829
  }
8779
8830
  get cssClasses() {
@@ -8788,7 +8839,7 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
8788
8839
  }
8789
8840
  }
8790
8841
  /** @nocollapse */ EclNewsTickerItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
8791
- /** @nocollapse */ EclNewsTickerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item", host: { properties: { "class": "this.cssClasses", "attr.aria-hidden": "this.ariaHidden", "attr.tabindex": "this.tabindex", "attr.role": "this.role" } }, queries: [{ propertyName: "eclLink", first: true, predicate: EclLinkDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" });
8842
+ /** @nocollapse */ EclNewsTickerItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item", host: { properties: { "class": "this.cssClasses", "attr.aria-hidden": "this.ariaHidden", "attr.role": "this.role" } }, queries: [{ propertyName: "eclLink", first: true, predicate: EclLinkDirective, descendants: true }], usesInheritance: true, ngImport: i0, template: "<ng-content></ng-content>\n" });
8792
8843
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerItemComponent, decorators: [{
8793
8844
  type: Component,
8794
8845
  args: [{ selector: 'ecl-news-ticker-item', template: "<ng-content></ng-content>\n" }]
@@ -8801,9 +8852,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8801
8852
  }], ariaHidden: [{
8802
8853
  type: HostBinding,
8803
8854
  args: ['attr.aria-hidden']
8804
- }], tabindex: [{
8805
- type: HostBinding,
8806
- args: ['attr.tabindex']
8807
8855
  }], role: [{
8808
8856
  type: HostBinding,
8809
8857
  args: ['attr.role']
@@ -8903,6 +8951,7 @@ class EclNewsTickerComponent extends ECLBaseDirective {
8903
8951
  this._contentHeight = newHeight;
8904
8952
  this.transitionDuration = withTransition ? 0.4 : 0;
8905
8953
  this.slidesTransform = `translate3d(0px, -${newOffset}px, 0px)`;
8954
+ this.setCurrentSlide(item);
8906
8955
  }
8907
8956
  }
8908
8957
  initContainer() {
@@ -8954,15 +9003,23 @@ class EclNewsTickerComponent extends ECLBaseDirective {
8954
9003
  getAllItemsArray() {
8955
9004
  return [...[this.firstHiddenItem], ...this.newsTickerItems.toArray(), ...[this.lastHiddenItem]];
8956
9005
  }
9006
+ setCurrentSlide(currentItem) {
9007
+ this.newsTickerItems.forEach(item => {
9008
+ item.ariaHidden = true;
9009
+ if (item === currentItem) {
9010
+ item.ariaHidden = false;
9011
+ }
9012
+ });
9013
+ }
8957
9014
  }
8958
9015
  /** @nocollapse */ EclNewsTickerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
8959
- /** @nocollapse */ EclNewsTickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclNewsTickerComponent, selector: "ecl-news-ticker", outputs: { itemSwitch: "itemSwitch" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "newsTickerItems", predicate: EclNewsTickerItemComponent }], viewQueries: [{ propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-news-ticker__container\"\n [style.height.px]=\"containerHeight\">\n <div class=\"ecl-news-ticker__content\"\n [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\"\n [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\"\n #slidesContainer >\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n <ng-content></ng-content>\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n </ul>\n </div>\n</div>\n<ecl-icon icon=\"information\"\n size=\"m\"\n class=\"ecl-news-ticker__icon\"></ecl-icon>\n<div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\">{{ itemIndex }}</span> of {{ itemsCount }}\n</div>\n<div class=\"ecl-news-ticker__controls\">\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__prev\"\n (click)=\"onPrevious()\">\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-270\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__toggle\"\n (click)=\"togglePlay()\">\n <ecl-icon [icon]=\"playing ? 'pause' : 'play'\"\n size=\"m\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__next\"\n (click)=\"onNext()\">\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-90\">\n </ecl-icon>\n </button>\n</div>\n", dependencies: [{ kind: "component", type: EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "component", type: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item" }] });
9016
+ /** @nocollapse */ EclNewsTickerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclNewsTickerComponent, selector: "ecl-news-ticker", outputs: { itemSwitch: "itemSwitch" }, host: { listeners: { "window:resize": "onResize($event)" }, properties: { "class": "this.cssClasses" } }, queries: [{ propertyName: "newsTickerItems", predicate: EclNewsTickerItemComponent }], viewQueries: [{ propertyName: "firstHiddenItem", first: true, predicate: ["firstHiddenItem"], descendants: true }, { propertyName: "lastHiddenItem", first: true, predicate: ["lastHiddenItem"], descendants: true }, { propertyName: "slidesContainer", first: true, predicate: ["slidesContainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"ecl-news-ticker__container\"\n [style.height.px]=\"containerHeight\">\n <div class=\"ecl-news-ticker__content\"\n [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\"\n [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\"\n #slidesContainer >\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n <ng-content></ng-content>\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n </ul>\n </div>\n</div>\n<ecl-icon icon=\"information\"\n size=\"m\"\n class=\"ecl-news-ticker__icon\"></ecl-icon>\n<div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span> \n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n</div>\n<div class=\"ecl-news-ticker__controls\">\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__prev\"\n (click)=\"onPrevious()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PREV-NEWS' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-270\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__toggle\"\n (click)=\"togglePlay()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon [icon]=\"playing ? 'pause' : 'play'\" size=\"m\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__next\"\n (click)=\"onNext()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.NEXT-NEWS' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-90\">\n </ecl-icon>\n </button>\n</div>\n", dependencies: [{ kind: "component", type: EclButtonComponent, selector: "button[eclButton], button[ecl-button], a[eclButton]", inputs: ["variant", "containerStyleClass"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "component", type: EclNewsTickerItemComponent, selector: "ecl-news-ticker-item" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
8960
9017
  __decorate([
8961
9018
  coerceElement
8962
9019
  ], EclNewsTickerComponent.prototype, "slidesContainer", void 0);
8963
9020
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerComponent, decorators: [{
8964
9021
  type: Component,
8965
- args: [{ selector: 'ecl-news-ticker', template: "<div class=\"ecl-news-ticker__container\"\n [style.height.px]=\"containerHeight\">\n <div class=\"ecl-news-ticker__content\"\n [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\"\n [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\"\n #slidesContainer >\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n <ng-content></ng-content>\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n </ul>\n </div>\n</div>\n<ecl-icon icon=\"information\"\n size=\"m\"\n class=\"ecl-news-ticker__icon\"></ecl-icon>\n<div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\">{{ itemIndex }}</span> of {{ itemsCount }}\n</div>\n<div class=\"ecl-news-ticker__controls\">\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__prev\"\n (click)=\"onPrevious()\">\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-270\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__toggle\"\n (click)=\"togglePlay()\">\n <ecl-icon [icon]=\"playing ? 'pause' : 'play'\"\n size=\"m\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n tabindex=\"-1\"\n class=\"ecl-news-ticker__next\"\n (click)=\"onNext()\">\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-90\">\n </ecl-icon>\n </button>\n</div>\n" }]
9022
+ args: [{ selector: 'ecl-news-ticker', template: "<div class=\"ecl-news-ticker__container\"\n [style.height.px]=\"containerHeight\">\n <div class=\"ecl-news-ticker__content\"\n [style.height.px]=\"contentHeight\">\n <ul class=\"ecl-news-ticker__slides\"\n [style.transition-duration.s]=\"transitionDuration\"\n [style.transform]=\"slidesTransform\"\n #slidesContainer >\n <ecl-news-ticker-item #firstHiddenItem></ecl-news-ticker-item>\n <ng-content></ng-content>\n <ecl-news-ticker-item #lastHiddenItem></ecl-news-ticker-item>\n </ul>\n </div>\n</div>\n<ecl-icon icon=\"information\"\n size=\"m\"\n class=\"ecl-news-ticker__icon\"></ecl-icon>\n<div class=\"ecl-news-ticker__counter\">\n <span class=\"ecl-news-ticker__counter--current\"> {{ itemIndex }}</span> \n {{ 'ecl.common.OF' | translate }}\n <span class=\"ecl-news-ticker__counter--max\">{{ itemsCount }}</span>\n</div>\n<div class=\"ecl-news-ticker__controls\">\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__prev\"\n (click)=\"onPrevious()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.PREV-NEWS' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-270\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__toggle\"\n (click)=\"togglePlay()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.AUTO-PLAY' | translate }}\n </span>\n <ecl-icon [icon]=\"playing ? 'pause' : 'play'\" size=\"m\"></ecl-icon>\n </button>\n <button eclButton\n variant=\"primary\"\n class=\"ecl-news-ticker__next\"\n (click)=\"onNext()\">\n <span class=\"ecl-u-sr-only\">\n {{ 'ecl.news-ticker.NEXT-NEWS' | translate }}\n </span>\n <ecl-icon icon=\"corner-arrow\"\n size=\"m\"\n transform=\"rotate-90\">\n </ecl-icon>\n </button>\n</div>\n" }]
8966
9023
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { itemSwitch: [{
8967
9024
  type: Output
8968
9025
  }], newsTickerItems: [{
@@ -10044,7 +10101,7 @@ class EclPaginationItemComponent extends ECLBaseDirective {
10044
10101
  }
10045
10102
  }
10046
10103
  /** @nocollapse */ EclPaginationItemComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclPaginationItemComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
10047
- /** @nocollapse */ EclPaginationItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclPaginationItemComponent, selector: "ecl-pagination-item", inputs: { label: "label", ariaLabel: "ariaLabel", isCurrent: "isCurrent", isNext: "isNext", isPrevious: "isPrevious", href: "href" }, outputs: { pageClick: "pageClick" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"!isCurrent\"\n eclLink\n (click)=\"onPageClick($event)\"\n variant=\"standalone\"\n attr.aria-label=\"{{ ariaLabel || geti18nPageAriaLabelKey() | translate:{ pageNumber: label} }}\"\n [href]=\"href\"\n class=\"ecl-pagination__link\">\n <ng-container *ngIf=\"isPrevious\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n </ng-container>\n <span eclLinkLabel>{{ label || geti18nPageLabelKey() | translate }}</span>\n <ng-container *ngIf=\"isNext\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </ng-container>\n</a>\n\n<ng-container *ngIf=\"isCurrent\">\n <span class=\"ecl-pagination__text ecl-pagination__text--summary\"\n attr.aria-label=\"{{ ariaLabel || 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\"\n aria-current=\"true\">\n {{ label }}\n </span>\n <span class=\"ecl-pagination__text ecl-pagination__text--full\"\n aria-current=\"true\">\n {{ 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "directive", type: EclLinkLabelDirective, selector: "[eclLinkLabel]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
10104
+ /** @nocollapse */ EclPaginationItemComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.0-next.4", type: EclPaginationItemComponent, selector: "ecl-pagination-item", inputs: { label: "label", ariaLabel: "ariaLabel", isCurrent: "isCurrent", isNext: "isNext", isPrevious: "isPrevious", href: "href" }, outputs: { pageClick: "pageClick" }, host: { properties: { "class": "this.cssClasses" } }, usesInheritance: true, ngImport: i0, template: "<a *ngIf=\"!isCurrent\"\n eclLink\n (click)=\"onPageClick($event)\"\n variant=\"standalone\"\n attr.aria-label=\"{{ ariaLabel || geti18nPageAriaLabelKey() | translate:{ pageNumber: label} }}\"\n [href]=\"href\"\n class=\"ecl-pagination__link\">\n <ng-container *ngIf=\"isPrevious\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n </ng-container>\n <span eclLinkLabel>{{ label || geti18nPageLabelKey() | translate }}</span>\n <ng-container *ngIf=\"isNext\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </ng-container>\n</a>\n\n<ng-container *ngIf=\"isCurrent\">\n <span class=\"ecl-pagination__text ecl-pagination__text--summary\"\n aria-current=\"true\">\n {{ label }}\n </span>\n <span class=\"ecl-pagination__text ecl-pagination__text--full\"\n aria-current=\"true\">\n {{ 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\n </span>\n</ng-container>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: EclIconComponent, selector: "ecl-icon", inputs: ["iconSet", "icon", "size", "color", "transform", "ariaLabelledby", "role", "isInverted", "ariaHidden", "focusable"] }, { kind: "directive", type: EclLinkDirective, selector: "[eclLink]", inputs: ["variant", "isNegative", "isNoVisited"] }, { kind: "directive", type: EclLinkLabelDirective, selector: "[eclLinkLabel]" }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] });
10048
10105
  __decorate([
10049
10106
  coerceBoolean
10050
10107
  ], EclPaginationItemComponent.prototype, "isCurrent", void 0);
@@ -10056,7 +10113,7 @@ __decorate([
10056
10113
  ], EclPaginationItemComponent.prototype, "isPrevious", void 0);
10057
10114
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclPaginationItemComponent, decorators: [{
10058
10115
  type: Component,
10059
- args: [{ selector: 'ecl-pagination-item', template: "<a *ngIf=\"!isCurrent\"\n eclLink\n (click)=\"onPageClick($event)\"\n variant=\"standalone\"\n attr.aria-label=\"{{ ariaLabel || geti18nPageAriaLabelKey() | translate:{ pageNumber: label} }}\"\n [href]=\"href\"\n class=\"ecl-pagination__link\">\n <ng-container *ngIf=\"isPrevious\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n </ng-container>\n <span eclLinkLabel>{{ label || geti18nPageLabelKey() | translate }}</span>\n <ng-container *ngIf=\"isNext\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </ng-container>\n</a>\n\n<ng-container *ngIf=\"isCurrent\">\n <span class=\"ecl-pagination__text ecl-pagination__text--summary\"\n attr.aria-label=\"{{ ariaLabel || 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\"\n aria-current=\"true\">\n {{ label }}\n </span>\n <span class=\"ecl-pagination__text ecl-pagination__text--full\"\n aria-current=\"true\">\n {{ 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\n </span>\n</ng-container>\n" }]
10116
+ args: [{ selector: 'ecl-pagination-item', template: "<a *ngIf=\"!isCurrent\"\n eclLink\n (click)=\"onPageClick($event)\"\n variant=\"standalone\"\n attr.aria-label=\"{{ ariaLabel || geti18nPageAriaLabelKey() | translate:{ pageNumber: label} }}\"\n [href]=\"href\"\n class=\"ecl-pagination__link\">\n <ng-container *ngIf=\"isPrevious\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-270\"></ecl-icon>\n </ng-container>\n <span eclLinkLabel>{{ label || geti18nPageLabelKey() | translate }}</span>\n <ng-container *ngIf=\"isNext\">\n <ecl-icon icon=\"corner-arrow\" size=\"xs\" transform=\"rotate-90\"></ecl-icon>\n </ng-container>\n</a>\n\n<ng-container *ngIf=\"isCurrent\">\n <span class=\"ecl-pagination__text ecl-pagination__text--summary\"\n aria-current=\"true\">\n {{ label }}\n </span>\n <span class=\"ecl-pagination__text ecl-pagination__text--full\"\n aria-current=\"true\">\n {{ 'ecl.pagination.PAGE' | translate:{ pageNumber: label} }}\n </span>\n</ng-container>\n" }]
10060
10117
  }], propDecorators: { cssClasses: [{
10061
10118
  type: HostBinding,
10062
10119
  args: ['class']
@@ -12372,7 +12429,7 @@ class EclTableDirective extends ECLBaseDirective {
12372
12429
  const diff = this.differ.diff(this.eclTableHeaders);
12373
12430
  if (diff) {
12374
12431
  diff.forEachAddedItem(change => {
12375
- change.item.sort.pipe(takeUntil(this.destroy$))
12432
+ change.item.sort.pipe(takeUntil$1(this.destroy$))
12376
12433
  .subscribe((evt) => {
12377
12434
  this.sort.emit(evt);
12378
12435
  });
@@ -12424,7 +12481,7 @@ class EclTableHeadDirective extends ECLBaseDirective {
12424
12481
  const diff = this.differ.diff(this.eclTableHeaders);
12425
12482
  if (diff) {
12426
12483
  diff.forEachAddedItem(change => {
12427
- change.item.sort.pipe(takeUntil(this.destroy$))
12484
+ change.item.sort.pipe(takeUntil$1(this.destroy$))
12428
12485
  .subscribe((evt) => {
12429
12486
  this.eclTableHeaders.forEach(th => {
12430
12487
  th.removeAriaSort();
@@ -12794,11 +12851,11 @@ class EclTabsComponent extends ECLBaseDirective {
12794
12851
  observeTabsChanges() {
12795
12852
  this.diff = this.differ.diff(this.tabs);
12796
12853
  this.createTabsChangesObservable()
12797
- .pipe(takeUntil(this.destroy$))
12854
+ .pipe(takeUntil$1(this.destroy$))
12798
12855
  .subscribe(this.onTabsChanges.bind(this));
12799
12856
  }
12800
12857
  createTabsChangesObservable() {
12801
- return of(this.tabs).pipe(mergeWith(this.tabs.changes), takeUntil(this.destroy$));
12858
+ return of(this.tabs).pipe(mergeWith(this.tabs.changes), takeUntil$1(this.destroy$));
12802
12859
  }
12803
12860
  onTabsChanges() {
12804
12861
  this.diff = this.differ.diff(this.tabs);
@@ -12815,7 +12872,7 @@ class EclTabsComponent extends ECLBaseDirective {
12815
12872
  }
12816
12873
  connectTabEvents(tab) {
12817
12874
  tab.select
12818
- .pipe(takeUntil(this.destroy$))
12875
+ .pipe(takeUntil$1(this.destroy$))
12819
12876
  .subscribe(() => {
12820
12877
  this.deactivateAllTabs(this.tabs.toArray());
12821
12878
  this.activateTab(tab);
@@ -13121,7 +13178,7 @@ class EclTimelineItemComponent extends ECLBaseDirective {
13121
13178
  ngAfterContentInit() {
13122
13179
  if (this.timelineItemToggler) {
13123
13180
  this.timelineItemToggler.toggle
13124
- .pipe(takeUntil(this.destroy$))
13181
+ .pipe(takeUntil$1(this.destroy$))
13125
13182
  .subscribe(() => {
13126
13183
  this.handleToggler();
13127
13184
  });
@@ -13200,7 +13257,7 @@ class EclTimelineComponent extends ECLBaseDirective {
13200
13257
  this.timelineItems
13201
13258
  .filter(item => item.isToggler)
13202
13259
  .forEach(it => {
13203
- it.toggle.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
13260
+ it.toggle.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
13204
13261
  if (this.timelineItems && !evt.defaultPrevented) {
13205
13262
  this.timelineItems
13206
13263
  .filter(item => item.toggleGroup === evt.toggleGroup)