@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,31 @@ 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
+ var _a, _b, _c;
568
+ const languages = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.i18n) === null || _b === void 0 ? void 0 : _b.i18nService) === null || _c === void 0 ? void 0 : _c.languages) || [];
569
+ return languages.map((code) => this.getLanguageByCode(code));
570
+ }
546
571
  getEULanguageCodes() {
547
572
  return [
548
573
  'bg', 'cs', 'da', 'de', 'et', 'el', 'en', 'es',
@@ -565,6 +590,9 @@ class EclDefaultLanguageService {
565
590
  isEuLanguage(code) {
566
591
  return this.getEULanguageCodes().includes(code);
567
592
  }
593
+ isRtlLanguage(code) {
594
+ return this.getLanguageByCode(code).isRtl;
595
+ }
568
596
  getAllLanguages() {
569
597
  return [
570
598
  { code: 'ab', label: 'аҧсуа' },
@@ -573,7 +601,7 @@ class EclDefaultLanguageService {
573
601
  { code: 'ak', label: 'Akan' },
574
602
  { code: 'sq', label: 'Shqip' },
575
603
  { code: 'am', label: 'አማርኛ' },
576
- { code: 'ar', label: 'العربية' },
604
+ { code: 'ar', label: 'العربية', isRtl: true },
577
605
  { code: 'an', label: 'Aragonés' },
578
606
  { code: 'hy', label: 'Հայերեն' },
579
607
  { code: 'as', label: 'অসমীয়া' },
@@ -623,7 +651,7 @@ class EclDefaultLanguageService {
623
651
  { code: 'gu', label: 'ગુજરાતી' },
624
652
  { code: 'ht', label: 'Kreyòl ayisyen' },
625
653
  { code: 'ha', label: 'Hausa, هَوُسَ' },
626
- { code: 'he', label: 'עברית' },
654
+ { code: 'he', label: 'עברית', isRtl: true },
627
655
  { code: 'hz', label: 'Otjiherero' },
628
656
  { code: 'hi', label: 'हिन्दी, हिंदी' },
629
657
  { code: 'ho', label: 'Hiri Motu' },
@@ -652,7 +680,7 @@ class EclDefaultLanguageService {
652
680
  { code: 'kv', label: 'коми кыв' },
653
681
  { code: 'kg', label: 'KiKongo' },
654
682
  { code: 'ko', label: '한국어 (韓國語), 조선말 (朝鮮語)' },
655
- { code: 'ku', label: 'Kurdî, كوردی‎' },
683
+ { code: 'ku', label: 'Kurdî, كوردی‎', isRtl: true },
656
684
  { code: 'kj', label: 'Kuanyama' },
657
685
  { code: 'la', label: 'latine' },
658
686
  { code: 'lb', label: 'Lëtzebuergesch' },
@@ -691,7 +719,7 @@ class EclDefaultLanguageService {
691
719
  { code: 'os', label: 'ирон æвзаг' },
692
720
  { code: 'pa', label: 'ਪੰਜਾਬੀ, پنجابی‎' },
693
721
  { code: 'pi', label: 'पाऴि' },
694
- { code: 'fa', label: 'فارسی' },
722
+ { code: 'fa', label: 'فارسی', isRtl: true },
695
723
  { code: 'pl', label: 'polski' },
696
724
  { code: 'ps', label: 'پښتو' },
697
725
  { code: 'pt', label: 'Português' },
@@ -736,7 +764,7 @@ class EclDefaultLanguageService {
736
764
  { code: 'ty', label: 'Reo Tahiti' },
737
765
  { code: 'ug', label: 'Uyƣurqə, ئۇيغۇرچە‎' },
738
766
  { code: 'uk', label: 'українська' },
739
- { code: 'ur', label: 'اردو' },
767
+ { code: 'ur', label: 'اردو', isRtl: true },
740
768
  { code: 'uz', label: 'zbek, Ўзбек, أۇزبېك‎' },
741
769
  { code: 've', label: 'Tshivenḓa' },
742
770
  { code: 'vi', label: 'Tiếng Việt' },
@@ -751,13 +779,26 @@ class EclDefaultLanguageService {
751
779
  { code: 'za', label: 'Saɯ cueŋƅ, Saw cuengh' }
752
780
  ];
753
781
  }
782
+ handleActiveLanguageChangeState() {
783
+ this.i18nService.getState().pipe(takeUntil(this.destroy$)).subscribe(state => {
784
+ this.currentLanguage = this.getLanguageByCode(state.activeLang) || this.FALLBACK_LANGUAGE;
785
+ this.currentLanguage$.next(this.currentLanguage);
786
+ });
787
+ }
754
788
  }
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 });
789
+ /** @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
790
  /** @nocollapse */ EclDefaultLanguageService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, providedIn: 'root' });
757
791
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDefaultLanguageService, decorators: [{
758
792
  type: Injectable,
759
793
  args: [{ providedIn: 'root' }]
760
- }] });
794
+ }], ctorParameters: function () {
795
+ return [{ type: undefined, decorators: [{
796
+ type: Optional
797
+ }, {
798
+ type: Inject,
799
+ args: [GLOBAL_CONFIG_TOKEN]
800
+ }] }, { type: i2$1.I18nService }];
801
+ } });
761
802
 
762
803
  class EclLanguageService {
763
804
  }
@@ -855,7 +896,7 @@ class EclLanguageListComponent extends ECLBaseDirective {
855
896
  item.isActive = true;
856
897
  }
857
898
  item.itemClick
858
- .pipe(takeUntil(this.destroy$))
899
+ .pipe(takeUntil$1(this.destroy$))
859
900
  .subscribe(() => {
860
901
  this.eclLanguageListItems.forEach(it => {
861
902
  it.isActive = false;
@@ -1389,13 +1430,13 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1389
1430
  if (this.eclLoginComponent && this.eclSearchComponent) {
1390
1431
  this.eclLoginComponent
1391
1432
  .loginBoxToggle
1392
- .pipe(takeUntil$1(this.destroy$))
1433
+ .pipe(takeUntil(this.destroy$))
1393
1434
  .subscribe(evt => {
1394
1435
  this.eclSearchComponent.isSearchBoxActive = false;
1395
1436
  });
1396
1437
  this.eclSearchComponent
1397
1438
  .searchToggle
1398
- .pipe(takeUntil$1(this.destroy$))
1439
+ .pipe(takeUntil(this.destroy$))
1399
1440
  .subscribe(evt => {
1400
1441
  this.eclLoginComponent.isLoginBoxActive = false;
1401
1442
  });
@@ -1403,7 +1444,7 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1403
1444
  if (this.eclLanguageComponent) {
1404
1445
  this.eclLanguageComponent
1405
1446
  .languageClick
1406
- .pipe(takeUntil$1(this.destroy$))
1447
+ .pipe(takeUntil(this.destroy$))
1407
1448
  .subscribe(evt => {
1408
1449
  this.languageClick.next(new EclSiteHeaderLanguageClickEvent());
1409
1450
  });
@@ -1423,7 +1464,7 @@ class EclSiteHeaderComponent extends ECLBaseDirective {
1423
1464
  handlei18nEvents() {
1424
1465
  this.languageCode = this.getEULanguageCode(this.translateService.currentLang);
1425
1466
  this.translateService.onLangChange
1426
- .pipe(takeUntil$1(this.destroy$))
1467
+ .pipe(takeUntil(this.destroy$))
1427
1468
  .subscribe((langChangeEvent) => {
1428
1469
  this.languageCode = this.getEULanguageCode(langChangeEvent.lang);
1429
1470
  });
@@ -1485,13 +1526,13 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1485
1526
  if (this.eclLoginComponent && this.eclSearchComponent) {
1486
1527
  this.eclLoginComponent
1487
1528
  .loginBoxToggle
1488
- .pipe(takeUntil$1(this.destroy$))
1529
+ .pipe(takeUntil(this.destroy$))
1489
1530
  .subscribe(evt => {
1490
1531
  this.eclSearchComponent.isSearchBoxActive = false;
1491
1532
  });
1492
1533
  this.eclSearchComponent
1493
1534
  .searchToggle
1494
- .pipe(takeUntil$1(this.destroy$))
1535
+ .pipe(takeUntil(this.destroy$))
1495
1536
  .subscribe(evt => {
1496
1537
  this.eclLoginComponent.isLoginBoxActive = false;
1497
1538
  });
@@ -1499,7 +1540,7 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1499
1540
  if (this.eclLanguageComponent) {
1500
1541
  this.eclLanguageComponent
1501
1542
  .languageClick
1502
- .pipe(takeUntil$1(this.destroy$))
1543
+ .pipe(takeUntil(this.destroy$))
1503
1544
  .subscribe(evt => {
1504
1545
  this.languageClick.next(new EclSiteHeaderLanguageClickEvent());
1505
1546
  });
@@ -1522,7 +1563,7 @@ class EclSiteHeaderComponentBase extends ECLBaseDirective {
1522
1563
  handlei18nEvents() {
1523
1564
  this.languageCode = this.getEULanguageCode(this.translateService.currentLang);
1524
1565
  this.translateService.onLangChange
1525
- .pipe(takeUntil$1(this.destroy$))
1566
+ .pipe(takeUntil(this.destroy$))
1526
1567
  .subscribe((langChangeEvent) => {
1527
1568
  this.languageCode = this.getEULanguageCode(langChangeEvent.lang);
1528
1569
  });
@@ -2653,16 +2694,14 @@ class EclAppLanguageDismissEvent extends EclBaseEvent {
2653
2694
  }
2654
2695
  }
2655
2696
  class EclAppComponent extends ECLBaseDirective {
2656
- constructor(config, eclLanguageService, i18nService, cd) {
2697
+ constructor(eclLanguageService, cd) {
2657
2698
  super();
2658
- this.config = config;
2659
2699
  this.eclLanguageService = eclLanguageService;
2660
- this.i18nService = i18nService;
2661
2700
  this.cd = cd;
2701
+ this.textDirection = 'ltr';
2662
2702
  this.languageDismiss = new EventEmitter();
2663
2703
  this.languages = [];
2664
2704
  this.destroy$ = new Subject();
2665
- this.FALLBACK_LANGUAGE = { code: 'en', label: 'English' };
2666
2705
  }
2667
2706
  ngAfterViewInit() {
2668
2707
  this.handleAppLanguagesState();
@@ -2675,36 +2714,30 @@ class EclAppComponent extends ECLBaseDirective {
2675
2714
  this.destroy$.unsubscribe();
2676
2715
  }
2677
2716
  handleAppLanguagesState() {
2678
- var _a, _b, _c;
2679
- const languages = ((_c = (_b = (_a = this.config) === null || _a === void 0 ? void 0 : _a.i18n) === null || _b === void 0 ? void 0 : _b.i18nService) === null || _c === void 0 ? void 0 : _c.languages) || [];
2680
- this.languages = languages.map((code) => this.eclLanguageService.getLanguageByCode(code));
2717
+ this.languages = this.eclLanguageService.getConfiguredLanguages();
2681
2718
  this.cd.detectChanges();
2682
2719
  }
2683
2720
  handleActiveLanguageChangeState() {
2684
- this.i18nService.getState().subscribe(state => {
2685
- const lang = this.eclLanguageService.getLanguageByCode(state.activeLang) || this.FALLBACK_LANGUAGE;
2721
+ this.eclLanguageService.currentLanguage$.pipe(takeUntil$1(this.destroy$)).subscribe(lang => {
2686
2722
  this.syncLanguageDataWithUI(lang);
2687
2723
  this.hideLanguageListUI();
2688
2724
  });
2689
2725
  }
2690
2726
  handleSiteHeaderUIEvents() {
2691
2727
  if (this.eclSiteHeader && this.eclSiteHeader.eclLanguageComponent) {
2692
- this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil(this.destroy$)).subscribe(() => {
2728
+ this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2693
2729
  this.showLanguageListUI();
2694
2730
  });
2695
2731
  }
2696
2732
  }
2697
2733
  handleLanguageListUIEvents() {
2698
- this.eclLanguageList.close.pipe(takeUntil(this.destroy$)).subscribe(() => {
2734
+ this.eclLanguageList.close.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2699
2735
  this.hideLanguageListUI();
2700
2736
  this.languageDismiss.next(new EclAppLanguageDismissEvent());
2701
2737
  });
2702
- this.eclLanguageList.languageSelected.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
2703
- const lang = evt.language;
2704
- this.i18nService.updateState({
2705
- activeLang: lang.code
2706
- });
2707
- this.languageDismiss.next(new EclAppLanguageDismissEvent(lang));
2738
+ this.eclLanguageList.languageSelected.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
2739
+ this.eclLanguageService.updateCurrentLanguage(evt.language);
2740
+ this.languageDismiss.next(new EclAppLanguageDismissEvent(evt.language));
2708
2741
  this.cd.detectChanges();
2709
2742
  });
2710
2743
  }
@@ -2724,21 +2757,18 @@ class EclAppComponent extends ECLBaseDirective {
2724
2757
  this.eclSiteHeader.eclLanguageComponent.languageLabel = lang.label;
2725
2758
  }
2726
2759
  this.eclLanguageList.selectedLanguageCode = lang.code;
2760
+ this.textDirection = lang.isRtl ? 'rtl' : 'ltr';
2727
2761
  }
2728
2762
  }
2729
- /** @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 });
2730
- /** @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"] }] });
2763
+ /** @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 });
2764
+ /** @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"] }] });
2731
2765
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclAppComponent, decorators: [{
2732
2766
  type: Component,
2733
2767
  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>" }]
2734
- }], ctorParameters: function () {
2735
- return [{ type: undefined, decorators: [{
2736
- type: Optional
2737
- }, {
2738
- type: Inject,
2739
- args: [GLOBAL_CONFIG_TOKEN]
2740
- }] }, { type: EclLanguageService }, { type: i2$1.I18nService }, { type: i0.ChangeDetectorRef }];
2741
- }, propDecorators: { eclSiteHeader: [{
2768
+ }], ctorParameters: function () { return [{ type: EclLanguageService }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { textDirection: [{
2769
+ type: HostBinding,
2770
+ args: ['attr.dir']
2771
+ }], eclSiteHeader: [{
2742
2772
  type: ContentChild,
2743
2773
  args: [EclSiteHeaderComponent]
2744
2774
  }], eclLanguageList: [{
@@ -2787,17 +2817,17 @@ class EclAppComponentBase {
2787
2817
  }
2788
2818
  handleSiteHeaderUIEvents() {
2789
2819
  if (this.eclSiteHeader && this.eclSiteHeader.eclLanguageComponent) {
2790
- this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil(this.destroy$)).subscribe(() => {
2820
+ this.eclSiteHeader.eclLanguageComponent.languageClick.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2791
2821
  this.showLanguageListUI();
2792
2822
  });
2793
2823
  }
2794
2824
  }
2795
2825
  handleLanguageListUIEvents() {
2796
- this.eclLanguageList.close.pipe(takeUntil(this.destroy$)).subscribe(() => {
2826
+ this.eclLanguageList.close.pipe(takeUntil$1(this.destroy$)).subscribe(() => {
2797
2827
  this.hideLanguageListUI();
2798
2828
  this.languageDismiss.next(new EclAppLanguageDismissEvent());
2799
2829
  });
2800
- this.eclLanguageList.languageSelected.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
2830
+ this.eclLanguageList.languageSelected.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
2801
2831
  const lang = evt.language;
2802
2832
  this.i18nService.updateState({
2803
2833
  activeLang: lang.code
@@ -3126,7 +3156,7 @@ class EclBreadcrumbComponentBase extends ECLBaseDirective {
3126
3156
  }
3127
3157
  ngOnInit() {
3128
3158
  this.translate.stream('ecl.breadcrumb.YOU-ARE-HERE')
3129
- .pipe(takeUntil$1(this.destroy$)).subscribe(text => {
3159
+ .pipe(takeUntil(this.destroy$)).subscribe(text => {
3130
3160
  this.ariaLabel = text;
3131
3161
  });
3132
3162
  }
@@ -3614,7 +3644,7 @@ class EclBreadcrumbComponent extends ECLBaseDirective {
3614
3644
  }
3615
3645
  ngOnInit() {
3616
3646
  this.translate.stream('ecl.breadcrumb.YOU-ARE-HERE')
3617
- .pipe(takeUntil$1(this.destroy$)).subscribe(text => {
3647
+ .pipe(takeUntil(this.destroy$)).subscribe(text => {
3618
3648
  this.ariaLabel = text;
3619
3649
  });
3620
3650
  }
@@ -4091,7 +4121,7 @@ class EclCategoryFilterComponent extends ECLBaseDirective {
4091
4121
  }
4092
4122
  connectCategoryfilterItemEvents(item) {
4093
4123
  item.itemSelect
4094
- .pipe(takeUntil$1(this.destroy$))
4124
+ .pipe(takeUntil(this.destroy$))
4095
4125
  .subscribe((evt) => { this.onItemSelected(evt); });
4096
4126
  }
4097
4127
  onItemSelected(evt) {
@@ -5035,11 +5065,12 @@ const ECL_DATE_PICKER_VALUE_ACCESSOR = {
5035
5065
  };
5036
5066
  const noop = () => { };
5037
5067
  class EclDatePickerDirective extends ECLBaseDirective {
5038
- constructor(el, viewContainerRef, translateService) {
5068
+ constructor(el, viewContainerRef, translateService, eclLanguageService) {
5039
5069
  super();
5040
5070
  this.el = el;
5041
5071
  this.viewContainerRef = viewContainerRef;
5042
5072
  this.translateService = translateService;
5073
+ this.eclLanguageService = eclLanguageService;
5043
5074
  this.yearRange = 40;
5044
5075
  this.format = 'DD-MM-YYYY';
5045
5076
  this.type = 'text';
@@ -5090,6 +5121,8 @@ class EclDatePickerDirective extends ECLBaseDirective {
5090
5121
  initPikaday() {
5091
5122
  const i18nKey = 'ecl.date-picker.PIKADAY';
5092
5123
  let i18nTranslation = this.translateService.instant(i18nKey);
5124
+ const isRtl = this.eclLanguageService.getCurrentLanguage().isRtl;
5125
+ const position = isRtl ? 'bottom right' : 'bottom left';
5093
5126
  if (!i18nTranslation || i18nTranslation === i18nKey) {
5094
5127
  i18nTranslation = pikadayDefaultI18n;
5095
5128
  }
@@ -5100,23 +5133,27 @@ class EclDatePickerDirective extends ECLBaseDirective {
5100
5133
  yearRange: this.yearRange,
5101
5134
  reposition: false,
5102
5135
  i18n: i18nTranslation,
5136
+ isRtl: isRtl,
5137
+ position: position,
5103
5138
  showDaysInNextAndPreviousMonths: true,
5104
5139
  enableSelectionDaysInNextAndPreviousMonths: true,
5105
5140
  onSelect: this.onSelectDate.bind(this),
5106
5141
  onOpen() {
5107
- // Fix picker size that exceeds vw on mobile
5142
+ // Extend picker size on mobile
5108
5143
  const vw = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
5109
5144
  const elRect = this.el.getBoundingClientRect();
5110
- if (elRect.width >= vw) {
5145
+ const pickerMargin = isRtl ? vw - elRect.right : elRect.left;
5146
+ if (vw < 768) {
5111
5147
  this.el.style.width = 'auto';
5112
- this.el.style.right = `${elRect.left}px`;
5148
+ this.el.style.left = `${pickerMargin}px`;
5149
+ this.el.style.right = `${pickerMargin}px`;
5113
5150
  }
5114
5151
  },
5115
5152
  });
5116
5153
  }
5117
5154
  handlei18nEvents() {
5118
5155
  this.translateService.onLangChange
5119
- .pipe(takeUntil$1(this.destroy$))
5156
+ .pipe(takeUntil(this.destroy$))
5120
5157
  .subscribe((langChangeEvent) => {
5121
5158
  this.initPikaday();
5122
5159
  });
@@ -5155,7 +5192,7 @@ class EclDatePickerDirective extends ECLBaseDirective {
5155
5192
  return eclIconComponent.location.nativeElement;
5156
5193
  }
5157
5194
  }
5158
- /** @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 });
5195
+ /** @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 });
5159
5196
  /** @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 });
5160
5197
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclDatePickerDirective, decorators: [{
5161
5198
  type: Directive,
@@ -5163,7 +5200,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
5163
5200
  selector: 'input[eclDatePicker]',
5164
5201
  providers: [ECL_DATE_PICKER_VALUE_ACCESSOR]
5165
5202
  }]
5166
- }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.TranslateService }]; }, propDecorators: { yearRange: [{
5203
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i2.TranslateService }, { type: EclLanguageService }]; }, propDecorators: { yearRange: [{
5167
5204
  type: Input
5168
5205
  }], format: [{
5169
5206
  type: Input
@@ -5748,7 +5785,7 @@ class EclFileUploadDirective extends ECLBaseDirective {
5748
5785
  let uploadButtonLabelKey = this.geti18nUploadButtonLabelKey();
5749
5786
  this.translate
5750
5787
  .stream(uploadButtonLabelKey)
5751
- .pipe(takeUntil(this.destroy$)).subscribe((translation) => {
5788
+ .pipe(takeUntil$1(this.destroy$)).subscribe((translation) => {
5752
5789
  if (this.buttonEl) {
5753
5790
  this.buttonEl.textContent = translation;
5754
5791
  }
@@ -6391,7 +6428,7 @@ class EclGalleryComponent extends ECLBaseDirective {
6391
6428
  this.itemsCount = this.galleryItems.length;
6392
6429
  this.galleryItems.forEach(item => {
6393
6430
  item.itemClick
6394
- .pipe(takeUntil(this.destroy$))
6431
+ .pipe(takeUntil$1(this.destroy$))
6395
6432
  .subscribe(_ => {
6396
6433
  this.isDialogVisible = true;
6397
6434
  this.item = item;
@@ -6485,7 +6522,7 @@ class EclGalleryComponent extends ECLBaseDirective {
6485
6522
  }
6486
6523
  observeBreakpointChanges() {
6487
6524
  this.cdkBreakpointObserver.observe([Breakpoints.Handset, Breakpoints.Tablet])
6488
- .pipe(takeUntil(this.destroy$), delay(this.BREAKPOINT_CHANGES_TIMEOUT))
6525
+ .pipe(takeUntil$1(this.destroy$), delay(this.BREAKPOINT_CHANGES_TIMEOUT))
6489
6526
  .subscribe(result => {
6490
6527
  this.isMobile = result.matches;
6491
6528
  this.hideItems();
@@ -6846,10 +6883,10 @@ class EclStickyContainerComponent extends ECLBaseDirective {
6846
6883
  !this.isEnabled ? 'ecl-sticky-container--disabled' : ''
6847
6884
  ].join(' ').trim();
6848
6885
  }
6849
- top() {
6886
+ get top() {
6850
6887
  return this.marginTop || null;
6851
6888
  }
6852
- bottom() {
6889
+ get bottom() {
6853
6890
  return this.marginBottom || null;
6854
6891
  }
6855
6892
  }
@@ -6926,14 +6963,14 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
6926
6963
  handleNavigationItemsScroll() {
6927
6964
  const scrollableContainer = window;
6928
6965
  const sectionElementIds = this.eclNavigationLinkItems.map(item => item.sectionId);
6929
- fromEvent(scrollableContainer, 'scroll').pipe(takeUntil(this.destroy$)).subscribe((event) => {
6966
+ fromEvent(scrollableContainer, 'scroll').pipe(takeUntil$1(this.destroy$)).subscribe((event) => {
6930
6967
  const sectionElements = sectionElementIds.map(id => document.querySelector(`#${id}`));
6931
6968
  this.handleNavigationLinksHighlight(sectionElements);
6932
6969
  });
6933
6970
  }
6934
6971
  handleNavigationItemsClick() {
6935
6972
  this.eclNavigationLinkItems.forEach(item => {
6936
- item.itemClick.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
6973
+ item.itemClick.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
6937
6974
  this.selectNavigationItem(this.eclNavigationLinkItems, item.sectionElement);
6938
6975
  if (item.sectionElement) {
6939
6976
  item.sectionElement.scrollIntoView();
@@ -6981,12 +7018,16 @@ class EclInpageNavigationComponent extends ECLBaseDirective {
6981
7018
  }
6982
7019
  }
6983
7020
  /** @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 });
6984
- /** @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" }] });
7021
+ /** @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" }] });
6985
7022
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclInpageNavigationComponent, decorators: [{
6986
7023
  type: Component,
6987
- 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"] }]
7024
+ 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"] }]
6988
7025
  }], propDecorators: { eclTitle: [{
6989
7026
  type: Input
7027
+ }], marginTop: [{
7028
+ type: Input
7029
+ }], marginBottom: [{
7030
+ type: Input
6990
7031
  }], sectionEnter: [{
6991
7032
  type: Output
6992
7033
  }], eclNavigationLinkItems: [{
@@ -7512,7 +7553,7 @@ class EclMenuMegaComponent extends ECLBaseDirective {
7512
7553
  this.destroy$.unsubscribe();
7513
7554
  }
7514
7555
  createContentChildrenMenuObservable() {
7515
- return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil(this.destroy$));
7556
+ return of(this.eclMenuMegaItems).pipe(mergeWith(this.eclMenuMegaItems.changes), takeUntil$1(this.destroy$));
7516
7557
  }
7517
7558
  onMenuItemChanges() {
7518
7559
  this.diff = this.differ.diff(this.eclMenuMegaItems);
@@ -7529,7 +7570,7 @@ class EclMenuMegaComponent extends ECLBaseDirective {
7529
7570
  }
7530
7571
  connectMenuItemEvents(item) {
7531
7572
  item.menuItemSelect
7532
- .pipe(takeUntil(this.destroy$))
7573
+ .pipe(takeUntil$1(this.destroy$))
7533
7574
  .subscribe((evt) => {
7534
7575
  this.onMenuItemSelected(item, evt);
7535
7576
  });
@@ -7632,7 +7673,7 @@ class EclMenuItemComponent extends ECLBaseDirective {
7632
7673
  ngAfterContentInit() {
7633
7674
  if (this.submenu) {
7634
7675
  this.submenu.menuItemSelect
7635
- .pipe(takeUntil(this.destroy$))
7676
+ .pipe(takeUntil$1(this.destroy$))
7636
7677
  .subscribe((it) => {
7637
7678
  this.menuMegaItemSelect.next(new EclMenuItemSelectEvent(it.menuItem, it.domEvent));
7638
7679
  });
@@ -7813,7 +7854,7 @@ class EclMenuComponent extends ECLBaseDirective {
7813
7854
  return this.eclRootMenuItems.some(item => item.isExpanded);
7814
7855
  }
7815
7856
  createRootMenuItemsChangesObservable() {
7816
- return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil(this.destroy$));
7857
+ return of(this.eclRootMenuItems).pipe(mergeWith(this.eclRootMenuItems.changes), takeUntil$1(this.destroy$));
7817
7858
  }
7818
7859
  onMenuItemChanges() {
7819
7860
  this.diff = this.differ.diff(this.eclRootMenuItems);
@@ -7830,19 +7871,19 @@ class EclMenuComponent extends ECLBaseDirective {
7830
7871
  }
7831
7872
  connectMenuItemEvents(item) {
7832
7873
  item.menuItemSelect
7833
- .pipe(takeUntil(this.destroy$))
7874
+ .pipe(takeUntil$1(this.destroy$))
7834
7875
  .subscribe((evt) => { this.onRootMenuItemSelected(evt); });
7835
7876
  item.menuItemHover
7836
- .pipe(takeUntil(this.destroy$))
7877
+ .pipe(takeUntil$1(this.destroy$))
7837
7878
  .subscribe((evt) => { this.onRootMenuItemHovered(evt); });
7838
7879
  item.menuItemHoverOut
7839
- .pipe(takeUntil(this.destroy$))
7880
+ .pipe(takeUntil$1(this.destroy$))
7840
7881
  .subscribe((evt) => { this.onRootMenuItemHoveredOut(evt); });
7841
7882
  item.menuMegaItemSelect
7842
- .pipe(takeUntil(this.destroy$))
7883
+ .pipe(takeUntil$1(this.destroy$))
7843
7884
  .subscribe((evt) => { this.onMenuMegaItemSelected(item, evt); });
7844
7885
  item.menuItemFocus
7845
- .pipe(takeUntil(this.destroy$))
7886
+ .pipe(takeUntil$1(this.destroy$))
7846
7887
  .subscribe((evt) => { this.onRootMenuItemFocused(item, evt); });
7847
7888
  }
7848
7889
  onRootMenuItemFocused(item, evt) {
@@ -7965,7 +8006,7 @@ class EclMenuComponent extends ECLBaseDirective {
7965
8006
  observeRootMenuItemsChanges() {
7966
8007
  this.diff = this.differ.diff(this.eclRootMenuItems);
7967
8008
  this.createRootMenuItemsChangesObservable()
7968
- .pipe(takeUntil(this.destroy$))
8009
+ .pipe(takeUntil$1(this.destroy$))
7969
8010
  .subscribe(this.onMenuItemChanges.bind(this));
7970
8011
  }
7971
8012
  observeSwipeGestures() {
@@ -7974,7 +8015,7 @@ class EclMenuComponent extends ECLBaseDirective {
7974
8015
  }
7975
8016
  observeBreakpointChanges() {
7976
8017
  this.cdkBreakpointObserver.observe([Breakpoints.Handset, Breakpoints.Tablet, Breakpoints.Small])
7977
- .pipe(takeUntil(this.destroy$))
8018
+ .pipe(takeUntil$1(this.destroy$))
7978
8019
  .subscribe(result => {
7979
8020
  this.isMobileBreakpoint = result.matches;
7980
8021
  });
@@ -8258,12 +8299,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8258
8299
  }] } });
8259
8300
 
8260
8301
  class EclMultiselectComponent extends ECLBaseDirective {
8261
- constructor(ngControl, el, viewContainerRef, differs) {
8302
+ constructor(ngControl, el, viewContainerRef, differs, translate) {
8262
8303
  super();
8263
8304
  this.ngControl = ngControl;
8264
8305
  this.el = el;
8265
8306
  this.viewContainerRef = viewContainerRef;
8266
8307
  this.differs = differs;
8308
+ this.translate = translate;
8267
8309
  this.isInvalid = false;
8268
8310
  this._disabled = false;
8269
8311
  this.eclSize = 'm';
@@ -8313,6 +8355,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
8313
8355
  this.createHtmlElements();
8314
8356
  this.buildMultiselectDropdown(false);
8315
8357
  }
8358
+ this.handleTranslations();
8316
8359
  }
8317
8360
  ngDoCheck() {
8318
8361
  this.multiselectContainer.classList.toggle('ecl-select__container--disabled', this.disabled);
@@ -8366,7 +8409,7 @@ class EclMultiselectComponent extends ECLBaseDirective {
8366
8409
  }
8367
8410
  }
8368
8411
  onOptionsChange() {
8369
- this.eclOptionItems.forEach(i => i.changes.pipe(takeUntil$1(this.destroy$)).subscribe(e => {
8412
+ this.eclOptionItems.forEach(i => i.changes.pipe(takeUntil(this.destroy$)).subscribe(e => {
8370
8413
  setTimeout(() => {
8371
8414
  this.multiselectWrapper.removeChild(this.multiDropdown);
8372
8415
  this.multiDropdown.remove();
@@ -8539,8 +8582,8 @@ class EclMultiselectComponent extends ECLBaseDirective {
8539
8582
  this.selectAll();
8540
8583
  };
8541
8584
  checkboxDiv.appendChild(this.checkboxSelectAll);
8542
- const checkboxLabel = this.createCheckboxLabel('Select all', 'select-multiple-all' + idStr.substring(idStr.lastIndexOf('.') + 1));
8543
- checkboxDiv.appendChild(checkboxLabel);
8585
+ this.checkboxLabel = this.createCheckboxLabel('Select all', 'select-multiple-all' + idStr.substring(idStr.lastIndexOf('.') + 1));
8586
+ checkboxDiv.appendChild(this.checkboxLabel);
8544
8587
  return checkboxDiv;
8545
8588
  }
8546
8589
  createOptionsWrapper() {
@@ -8582,14 +8625,14 @@ class EclMultiselectComponent extends ECLBaseDirective {
8582
8625
  selectIconContainer.classList.add('ecl-select__icon');
8583
8626
  return selectIconContainer;
8584
8627
  }
8585
- searchOptions(keyword) {
8628
+ searchOptions(keyword = '') {
8586
8629
  if (keyword === '') {
8587
8630
  this.multiSelectOptions.forEach(item => {
8588
8631
  item.style.display = 'flex';
8589
8632
  });
8590
8633
  }
8591
8634
  this.multiSelectOptions.forEach((item, cnt) => {
8592
- if (item.textContent.toLowerCase().indexOf(keyword) < 0) {
8635
+ if (item.textContent.toLowerCase().indexOf(keyword.toLowerCase()) < 0) {
8593
8636
  item.style.display = 'none';
8594
8637
  }
8595
8638
  });
@@ -8605,8 +8648,17 @@ class EclMultiselectComponent extends ECLBaseDirective {
8605
8648
  this.selectedValues = [];
8606
8649
  this.multiSelectInput.value = null;
8607
8650
  }
8651
+ handleTranslations() {
8652
+ this.translate
8653
+ .stream('ecl.multiselect.SELECT-ALL')
8654
+ .pipe(takeUntil(this.destroy$)).subscribe((translation) => {
8655
+ if (this.checkboxLabel) {
8656
+ this.checkboxLabel.textContent = translation;
8657
+ }
8658
+ });
8659
+ }
8608
8660
  }
8609
- /** @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 });
8661
+ /** @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 });
8610
8662
  /** @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>" });
8611
8663
  __decorate([
8612
8664
  coerceBoolean
@@ -8619,7 +8671,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8619
8671
  type: Optional
8620
8672
  }, {
8621
8673
  type: Self
8622
- }] }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }];
8674
+ }] }, { type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.IterableDiffers }, { type: i2.TranslateService }];
8623
8675
  }, propDecorators: { eclOptionItems: [{
8624
8676
  type: ContentChildren,
8625
8677
  args: [EclMultiselectOptionDirective]
@@ -8796,7 +8848,6 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
8796
8848
  super();
8797
8849
  this.el = el;
8798
8850
  this.ariaHidden = true;
8799
- this.tabindex = '-1';
8800
8851
  this.role = 'listitem';
8801
8852
  }
8802
8853
  get cssClasses() {
@@ -8811,7 +8862,7 @@ class EclNewsTickerItemComponent extends ECLBaseDirective {
8811
8862
  }
8812
8863
  }
8813
8864
  /** @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 });
8814
- /** @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" });
8865
+ /** @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" });
8815
8866
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerItemComponent, decorators: [{
8816
8867
  type: Component,
8817
8868
  args: [{ selector: 'ecl-news-ticker-item', template: "<ng-content></ng-content>\n" }]
@@ -8824,9 +8875,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4",
8824
8875
  }], ariaHidden: [{
8825
8876
  type: HostBinding,
8826
8877
  args: ['attr.aria-hidden']
8827
- }], tabindex: [{
8828
- type: HostBinding,
8829
- args: ['attr.tabindex']
8830
8878
  }], role: [{
8831
8879
  type: HostBinding,
8832
8880
  args: ['attr.role']
@@ -8926,6 +8974,7 @@ class EclNewsTickerComponent extends ECLBaseDirective {
8926
8974
  this._contentHeight = newHeight;
8927
8975
  this.transitionDuration = withTransition ? 0.4 : 0;
8928
8976
  this.slidesTransform = `translate3d(0px, -${newOffset}px, 0px)`;
8977
+ this.setCurrentSlide(item);
8929
8978
  }
8930
8979
  }
8931
8980
  initContainer() {
@@ -8977,15 +9026,23 @@ class EclNewsTickerComponent extends ECLBaseDirective {
8977
9026
  getAllItemsArray() {
8978
9027
  return [...[this.firstHiddenItem], ...this.newsTickerItems.toArray(), ...[this.lastHiddenItem]];
8979
9028
  }
9029
+ setCurrentSlide(currentItem) {
9030
+ this.newsTickerItems.forEach(item => {
9031
+ item.ariaHidden = true;
9032
+ if (item === currentItem) {
9033
+ item.ariaHidden = false;
9034
+ }
9035
+ });
9036
+ }
8980
9037
  }
8981
9038
  /** @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 });
8982
- /** @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" }] });
9039
+ /** @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" }] });
8983
9040
  __decorate([
8984
9041
  coerceElement
8985
9042
  ], EclNewsTickerComponent.prototype, "slidesContainer", void 0);
8986
9043
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclNewsTickerComponent, decorators: [{
8987
9044
  type: Component,
8988
- 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" }]
9045
+ 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" }]
8989
9046
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { itemSwitch: [{
8990
9047
  type: Output
8991
9048
  }], newsTickerItems: [{
@@ -10067,7 +10124,7 @@ class EclPaginationItemComponent extends ECLBaseDirective {
10067
10124
  }
10068
10125
  }
10069
10126
  /** @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 });
10070
- /** @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" }] });
10127
+ /** @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" }] });
10071
10128
  __decorate([
10072
10129
  coerceBoolean
10073
10130
  ], EclPaginationItemComponent.prototype, "isCurrent", void 0);
@@ -10079,7 +10136,7 @@ __decorate([
10079
10136
  ], EclPaginationItemComponent.prototype, "isPrevious", void 0);
10080
10137
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.0-next.4", ngImport: i0, type: EclPaginationItemComponent, decorators: [{
10081
10138
  type: Component,
10082
- 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" }]
10139
+ 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" }]
10083
10140
  }], propDecorators: { cssClasses: [{
10084
10141
  type: HostBinding,
10085
10142
  args: ['class']
@@ -12399,7 +12456,7 @@ class EclTableDirective extends ECLBaseDirective {
12399
12456
  const diff = this.differ.diff(this.eclTableHeaders);
12400
12457
  if (diff) {
12401
12458
  diff.forEachAddedItem(change => {
12402
- change.item.sort.pipe(takeUntil(this.destroy$))
12459
+ change.item.sort.pipe(takeUntil$1(this.destroy$))
12403
12460
  .subscribe((evt) => {
12404
12461
  this.sort.emit(evt);
12405
12462
  });
@@ -12451,7 +12508,7 @@ class EclTableHeadDirective extends ECLBaseDirective {
12451
12508
  const diff = this.differ.diff(this.eclTableHeaders);
12452
12509
  if (diff) {
12453
12510
  diff.forEachAddedItem(change => {
12454
- change.item.sort.pipe(takeUntil(this.destroy$))
12511
+ change.item.sort.pipe(takeUntil$1(this.destroy$))
12455
12512
  .subscribe((evt) => {
12456
12513
  this.eclTableHeaders.forEach(th => {
12457
12514
  th.removeAriaSort();
@@ -12821,11 +12878,11 @@ class EclTabsComponent extends ECLBaseDirective {
12821
12878
  observeTabsChanges() {
12822
12879
  this.diff = this.differ.diff(this.tabs);
12823
12880
  this.createTabsChangesObservable()
12824
- .pipe(takeUntil(this.destroy$))
12881
+ .pipe(takeUntil$1(this.destroy$))
12825
12882
  .subscribe(this.onTabsChanges.bind(this));
12826
12883
  }
12827
12884
  createTabsChangesObservable() {
12828
- return of(this.tabs).pipe(mergeWith(this.tabs.changes), takeUntil(this.destroy$));
12885
+ return of(this.tabs).pipe(mergeWith(this.tabs.changes), takeUntil$1(this.destroy$));
12829
12886
  }
12830
12887
  onTabsChanges() {
12831
12888
  this.diff = this.differ.diff(this.tabs);
@@ -12842,7 +12899,7 @@ class EclTabsComponent extends ECLBaseDirective {
12842
12899
  }
12843
12900
  connectTabEvents(tab) {
12844
12901
  tab.select
12845
- .pipe(takeUntil(this.destroy$))
12902
+ .pipe(takeUntil$1(this.destroy$))
12846
12903
  .subscribe(() => {
12847
12904
  this.deactivateAllTabs(this.tabs.toArray());
12848
12905
  this.activateTab(tab);
@@ -13150,7 +13207,7 @@ class EclTimelineItemComponent extends ECLBaseDirective {
13150
13207
  ngAfterContentInit() {
13151
13208
  if (this.timelineItemToggler) {
13152
13209
  this.timelineItemToggler.toggle
13153
- .pipe(takeUntil(this.destroy$))
13210
+ .pipe(takeUntil$1(this.destroy$))
13154
13211
  .subscribe(() => {
13155
13212
  this.handleToggler();
13156
13213
  });
@@ -13229,7 +13286,7 @@ class EclTimelineComponent extends ECLBaseDirective {
13229
13286
  this.timelineItems
13230
13287
  .filter(item => item.isToggler)
13231
13288
  .forEach(it => {
13232
- it.toggle.pipe(takeUntil(this.destroy$)).subscribe((evt) => {
13289
+ it.toggle.pipe(takeUntil$1(this.destroy$)).subscribe((evt) => {
13233
13290
  if (this.timelineItems && !evt.defaultPrevented) {
13234
13291
  this.timelineItems
13235
13292
  .filter(item => item.toggleGroup === evt.toggleGroup)