@vectoriox/iox-ui 4.43.0 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/vectoriox-iox-ui.mjs +9 -331
- package/fesm2022/vectoriox-iox-ui.mjs.map +1 -1
- package/index.d.ts +2 -89
- package/package.json +1 -1
- package/forms-core/package.json +0 -3
- package/seo-core/package.json +0 -3
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EventEmitter, HostListener, Output, Input, Directive, NgModule, Injectable, ViewChild, Component, Host, Optional, inject, NgZone,
|
|
2
|
+
import { EventEmitter, HostListener, Output, Input, Directive, NgModule, Injectable, ViewChild, Component, Host, Optional, inject, NgZone, InjectionToken, Inject, ChangeDetectionStrategy, ViewContainerRef, PLATFORM_ID, reflectComponentType, signal, computed } from '@angular/core';
|
|
3
3
|
import * as i2 from '@angular/animations';
|
|
4
4
|
import { style, animate } from '@angular/animations';
|
|
5
|
-
import { Subject, fromEvent
|
|
5
|
+
import { Subject, fromEvent } from 'rxjs';
|
|
6
6
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
7
|
-
import * as i1
|
|
7
|
+
import * as i1 from '@angular/common';
|
|
8
8
|
import { CommonModule, isPlatformBrowser } from '@angular/common';
|
|
9
9
|
import Lenis from 'lenis';
|
|
10
|
-
import * as i1 from 'ngx-cookie-service';
|
|
11
|
-
import { CookieService } from 'ngx-cookie-service';
|
|
12
|
-
import * as i1$1 from '@angular/common/http';
|
|
13
|
-
import { map } from 'rxjs/operators';
|
|
14
10
|
|
|
15
11
|
class ViewPositionDirective {
|
|
16
12
|
constructor(_elr) {
|
|
@@ -539,324 +535,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImpo
|
|
|
539
535
|
args: [{ providedIn: 'root' }]
|
|
540
536
|
}] });
|
|
541
537
|
|
|
542
|
-
var PrivacyModelEvent;
|
|
543
|
-
(function (PrivacyModelEvent) {
|
|
544
|
-
PrivacyModelEvent[PrivacyModelEvent["OPEN"] = 1] = "OPEN";
|
|
545
|
-
PrivacyModelEvent[PrivacyModelEvent["CLOSE"] = 2] = "CLOSE";
|
|
546
|
-
})(PrivacyModelEvent || (PrivacyModelEvent = {}));
|
|
547
|
-
class PrivacyModalService {
|
|
548
|
-
constructor() {
|
|
549
|
-
this.modalEvent = new Subject();
|
|
550
|
-
this.decisionSubject = null;
|
|
551
|
-
}
|
|
552
|
-
registerModalEvent(func) {
|
|
553
|
-
this.modalEvent.subscribe({
|
|
554
|
-
next: (val) => {
|
|
555
|
-
func(val);
|
|
556
|
-
}
|
|
557
|
-
});
|
|
558
|
-
}
|
|
559
|
-
openModal() {
|
|
560
|
-
this.modalEvent.next(PrivacyModelEvent.OPEN);
|
|
561
|
-
this.decisionSubject = new Subject();
|
|
562
|
-
return this.decisionSubject;
|
|
563
|
-
}
|
|
564
|
-
closeModal() {
|
|
565
|
-
this.modalEvent.next(PrivacyModelEvent.CLOSE);
|
|
566
|
-
}
|
|
567
|
-
notifyDecision(accepted) {
|
|
568
|
-
if (this.decisionSubject) {
|
|
569
|
-
this.decisionSubject.next(accepted);
|
|
570
|
-
this.decisionSubject.complete();
|
|
571
|
-
this.decisionSubject = null;
|
|
572
|
-
}
|
|
573
|
-
this.closeModal();
|
|
574
|
-
}
|
|
575
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: PrivacyModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
576
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: PrivacyModalService }); }
|
|
577
|
-
}
|
|
578
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: PrivacyModalService, decorators: [{
|
|
579
|
-
type: Injectable
|
|
580
|
-
}], ctorParameters: () => [] });
|
|
581
|
-
|
|
582
|
-
class ConsentService {
|
|
583
|
-
constructor(cookieService, httpClient, _privacyModalService, environment) {
|
|
584
|
-
this.cookieService = cookieService;
|
|
585
|
-
this.httpClient = httpClient;
|
|
586
|
-
this._privacyModalService = _privacyModalService;
|
|
587
|
-
this.environment = environment;
|
|
588
|
-
this.WEB_USER = "webUser";
|
|
589
|
-
}
|
|
590
|
-
hasAnalyticsConsent() {
|
|
591
|
-
const cookieValue = this.cookieService.get(this.WEB_USER);
|
|
592
|
-
if (!cookieValue) {
|
|
593
|
-
return false;
|
|
594
|
-
}
|
|
595
|
-
try {
|
|
596
|
-
const parsedCookieValue = JSON.parse(cookieValue);
|
|
597
|
-
return parsedCookieValue.user?.consent?.analyticsConsent === true;
|
|
598
|
-
}
|
|
599
|
-
catch {
|
|
600
|
-
// Invalid JSON or unexpected structure: treat as no consent
|
|
601
|
-
return false;
|
|
602
|
-
}
|
|
603
|
-
}
|
|
604
|
-
checkAnalyticsConsent() {
|
|
605
|
-
if (this.hasAnalyticsConsent()) {
|
|
606
|
-
// Consent already given, return true immediately as Observable
|
|
607
|
-
return of(true);
|
|
608
|
-
}
|
|
609
|
-
// No consent yet (or invalid/missing cookie) -> show modal
|
|
610
|
-
return this._privacyModalService.openModal();
|
|
611
|
-
}
|
|
612
|
-
checkMarketingConsent() {
|
|
613
|
-
let cookieValue = this.cookieService.get(this.WEB_USER);
|
|
614
|
-
if (!cookieValue) {
|
|
615
|
-
return false;
|
|
616
|
-
}
|
|
617
|
-
let parsedCookieValue = JSON.parse(cookieValue);
|
|
618
|
-
return parsedCookieValue.user?.consent?.marketingConsent;
|
|
619
|
-
}
|
|
620
|
-
setConsent(analytics, marketing) {
|
|
621
|
-
let cookieValue = this.cookieService.get(this.WEB_USER);
|
|
622
|
-
let parsedCookieValue = cookieValue ? JSON.parse(cookieValue) : { user: { consent: {
|
|
623
|
-
anonymousId: this.generateAnonymousId()
|
|
624
|
-
} } };
|
|
625
|
-
parsedCookieValue.user.consent.analyticsConsent = analytics;
|
|
626
|
-
parsedCookieValue.user.consent.marketingConsent = marketing;
|
|
627
|
-
this.cookieService.set(this.WEB_USER, JSON.stringify(parsedCookieValue));
|
|
628
|
-
this.httpClient.post(`${this.environment.HOST}consent`, parsedCookieValue.user.consent)
|
|
629
|
-
.subscribe({
|
|
630
|
-
next: (response) => {
|
|
631
|
-
console.log('Consent updated successfully:', response);
|
|
632
|
-
},
|
|
633
|
-
error: (error) => {
|
|
634
|
-
console.error('Error updating consent:', error);
|
|
635
|
-
}
|
|
636
|
-
});
|
|
637
|
-
}
|
|
638
|
-
generateAnonymousId() {
|
|
639
|
-
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
|
|
640
|
-
var r = Math.random() * 16 | 0, v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
641
|
-
return v.toString(16);
|
|
642
|
-
});
|
|
643
|
-
}
|
|
644
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ConsentService, deps: [{ token: i1.CookieService }, { token: i1$1.HttpClient }, { token: PrivacyModalService }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
645
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ConsentService }); }
|
|
646
|
-
}
|
|
647
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ConsentService, decorators: [{
|
|
648
|
-
type: Injectable
|
|
649
|
-
}], ctorParameters: () => [{ type: i1.CookieService }, { type: i1$1.HttpClient }, { type: PrivacyModalService }, { type: undefined, decorators: [{
|
|
650
|
-
type: Inject,
|
|
651
|
-
args: [ENVIRONMENT]
|
|
652
|
-
}] }] });
|
|
653
|
-
|
|
654
|
-
class PrivacyModalComponent {
|
|
655
|
-
constructor(_privacyModalService, _consentService) {
|
|
656
|
-
this._privacyModalService = _privacyModalService;
|
|
657
|
-
this._consentService = _consentService;
|
|
658
|
-
this.isOpen = false;
|
|
659
|
-
this._privacyModalService.registerModalEvent((event) => {
|
|
660
|
-
if (event == PrivacyModelEvent.CLOSE) {
|
|
661
|
-
this.isOpen = false;
|
|
662
|
-
}
|
|
663
|
-
else {
|
|
664
|
-
this.isOpen = true;
|
|
665
|
-
}
|
|
666
|
-
});
|
|
667
|
-
}
|
|
668
|
-
onAccept() {
|
|
669
|
-
this._consentService.setConsent(true, true);
|
|
670
|
-
this._privacyModalService.notifyDecision(true);
|
|
671
|
-
this.isOpen = false;
|
|
672
|
-
}
|
|
673
|
-
onDecline() {
|
|
674
|
-
this._privacyModalService.notifyDecision(false);
|
|
675
|
-
this.isOpen = false;
|
|
676
|
-
}
|
|
677
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: PrivacyModalComponent, deps: [{ token: PrivacyModalService }, { token: ConsentService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
678
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.31", type: PrivacyModalComponent, isStandalone: false, selector: "privacy-modal", ngImport: i0, template: "<div class=\"privacy-modal\" [ngClass]=\"{'open': isOpen, 'closed': !isOpen}\">\n <div class=\"modal-content\">\n <h2>\u05D0\u05E0\u05D7\u05E0\u05D5 \u05E9\u05D5\u05DE\u05E8\u05D9\u05DD \u05E2\u05DC \u05D4\u05E4\u05E8\u05D8\u05D9\u05D5\u05EA \u05E9\u05DC\u05DA</h2>\n <p dir=\"rtl\">\n <span>\n \u05D0\u05E0\u05D7\u05E0\u05D5 \u05DE\u05E9\u05DE\u05E9\u05D9\u05DD \u05D1\u05E7\u05D1\u05E6\u05D9 \n </span>\n <span>Cookies </span>\n <span>\u05DB\u05D3\u05D9 \u05DC\u05E9\u05E4\u05E8 \u05D0\u05EA \u05D7\u05D5\u05D5\u05D9\u05EA \u05D4\u05D2\u05DC\u05D9\u05E9\u05D4 \u05E9\u05DC\u05DA, \u05DC\u05E0\u05EA\u05D7 \u05E9\u05D9\u05DE\u05D5\u05E9 \u05D1\u05D0\u05EA\u05E8 \u05D5\u05DC\u05D4\u05E6\u05D9\u05E2 \u05EA\u05D5\u05DB\u05DF \u05DE\u05D5\u05EA\u05D0\u05DD \u05D0\u05D9\u05E9\u05D9\u05EA.</span>\n <span> \u05DC\u05DE\u05D9\u05D3\u05E2 \u05E0\u05D5\u05E1\u05E3 \u05E2\u05DC \u05D0\u05D9\u05DA \u05D0\u05E0\u05D7\u05E0\u05D5 \u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05D1\u05DE\u05D9\u05D3\u05E2 \u05E9\u05DC\u05DA, \u05E8\u05D0\u05D4 \u05D0\u05EA <a target=\"_blank\" href=\"/privacy\">\u05DE\u05D3\u05D9\u05E0\u05D9\u05D5\u05EA \u05D4\u05E4\u05E8\u05D8\u05D9\u05D5\u05EA </a> \u05E9\u05DC\u05E0\u05D5</span>\n </p>\n\n <div class=\"button-container\">\n <button class=\"accept-button\" (click)=\"onAccept()\">\u05D0\u05E0\u05D9 \u05DE\u05E1\u05DB\u05D9\u05DD</button>\n <button class=\"decline-button\" (click)=\"onDecline()\">\u05D0\u05E0\u05D9 \u05DC\u05D0 \u05DE\u05E1\u05DB\u05D9\u05DD</button>\n </div>\n </div>\n</div>\n", styles: [".privacy-modal{padding:2em;background:#fff;border-radius:8px;position:fixed;z-index:10000000000000;bottom:0;left:0;right:0;height:25vh;display:flex;align-items:center;justify-content:center;transform:translateY(100%);transition:transform .3s ease-in-out}.privacy-modal.open{transform:translateY(0);transition:transform .3s ease-in-out}.modal-content{width:40vw;text-align:right}.privacy-modal h2{margin-top:0;text-align:right;font-size:2.1vw;color:#6b4f3b}.privacy-modal p{font-size:1.3vw;color:#6b4f3b}.button-container{display:flex;justify-content:flex-end;margin-top:20px}.button-container button{border:0;margin-inline-start:15px;font-size:1vw}.button-container .accept-button{background:#6b4f3b;color:#fff;padding:.5em 1em;border-radius:4px;cursor:pointer}.button-container .accept-button:hover{background:#5b4332}.button-container .decline-button{background:transparent;color:#6b4f3b;padding:0;cursor:pointer;border-bottom:1px solid #fff}.button-container .decline-button:hover{border-bottom:1px solid #6b4f3b}@media(max-width:768px){.privacy-modal h2{font-size:8.2vw}.privacy-modal p{font-size:4.2vw}.privacy-modal .modal-content{width:80vw}.privacy-modal .button-container button{font-size:3.2vw}}\n"], dependencies: [{ kind: "directive", type: i1$2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
679
|
-
}
|
|
680
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: PrivacyModalComponent, decorators: [{
|
|
681
|
-
type: Component,
|
|
682
|
-
args: [{ selector: 'privacy-modal', standalone: false, template: "<div class=\"privacy-modal\" [ngClass]=\"{'open': isOpen, 'closed': !isOpen}\">\n <div class=\"modal-content\">\n <h2>\u05D0\u05E0\u05D7\u05E0\u05D5 \u05E9\u05D5\u05DE\u05E8\u05D9\u05DD \u05E2\u05DC \u05D4\u05E4\u05E8\u05D8\u05D9\u05D5\u05EA \u05E9\u05DC\u05DA</h2>\n <p dir=\"rtl\">\n <span>\n \u05D0\u05E0\u05D7\u05E0\u05D5 \u05DE\u05E9\u05DE\u05E9\u05D9\u05DD \u05D1\u05E7\u05D1\u05E6\u05D9 \n </span>\n <span>Cookies </span>\n <span>\u05DB\u05D3\u05D9 \u05DC\u05E9\u05E4\u05E8 \u05D0\u05EA \u05D7\u05D5\u05D5\u05D9\u05EA \u05D4\u05D2\u05DC\u05D9\u05E9\u05D4 \u05E9\u05DC\u05DA, \u05DC\u05E0\u05EA\u05D7 \u05E9\u05D9\u05DE\u05D5\u05E9 \u05D1\u05D0\u05EA\u05E8 \u05D5\u05DC\u05D4\u05E6\u05D9\u05E2 \u05EA\u05D5\u05DB\u05DF \u05DE\u05D5\u05EA\u05D0\u05DD \u05D0\u05D9\u05E9\u05D9\u05EA.</span>\n <span> \u05DC\u05DE\u05D9\u05D3\u05E2 \u05E0\u05D5\u05E1\u05E3 \u05E2\u05DC \u05D0\u05D9\u05DA \u05D0\u05E0\u05D7\u05E0\u05D5 \u05DE\u05E9\u05EA\u05DE\u05E9\u05D9\u05DD \u05D1\u05DE\u05D9\u05D3\u05E2 \u05E9\u05DC\u05DA, \u05E8\u05D0\u05D4 \u05D0\u05EA <a target=\"_blank\" href=\"/privacy\">\u05DE\u05D3\u05D9\u05E0\u05D9\u05D5\u05EA \u05D4\u05E4\u05E8\u05D8\u05D9\u05D5\u05EA </a> \u05E9\u05DC\u05E0\u05D5</span>\n </p>\n\n <div class=\"button-container\">\n <button class=\"accept-button\" (click)=\"onAccept()\">\u05D0\u05E0\u05D9 \u05DE\u05E1\u05DB\u05D9\u05DD</button>\n <button class=\"decline-button\" (click)=\"onDecline()\">\u05D0\u05E0\u05D9 \u05DC\u05D0 \u05DE\u05E1\u05DB\u05D9\u05DD</button>\n </div>\n </div>\n</div>\n", styles: [".privacy-modal{padding:2em;background:#fff;border-radius:8px;position:fixed;z-index:10000000000000;bottom:0;left:0;right:0;height:25vh;display:flex;align-items:center;justify-content:center;transform:translateY(100%);transition:transform .3s ease-in-out}.privacy-modal.open{transform:translateY(0);transition:transform .3s ease-in-out}.modal-content{width:40vw;text-align:right}.privacy-modal h2{margin-top:0;text-align:right;font-size:2.1vw;color:#6b4f3b}.privacy-modal p{font-size:1.3vw;color:#6b4f3b}.button-container{display:flex;justify-content:flex-end;margin-top:20px}.button-container button{border:0;margin-inline-start:15px;font-size:1vw}.button-container .accept-button{background:#6b4f3b;color:#fff;padding:.5em 1em;border-radius:4px;cursor:pointer}.button-container .accept-button:hover{background:#5b4332}.button-container .decline-button{background:transparent;color:#6b4f3b;padding:0;cursor:pointer;border-bottom:1px solid #fff}.button-container .decline-button:hover{border-bottom:1px solid #6b4f3b}@media(max-width:768px){.privacy-modal h2{font-size:8.2vw}.privacy-modal p{font-size:4.2vw}.privacy-modal .modal-content{width:80vw}.privacy-modal .button-container button{font-size:3.2vw}}\n"] }]
|
|
683
|
-
}], ctorParameters: () => [{ type: PrivacyModalService }, { type: ConsentService }] });
|
|
684
|
-
|
|
685
|
-
class WebSettingsService {
|
|
686
|
-
constructor(httpClient, environment) {
|
|
687
|
-
this.httpClient = httpClient;
|
|
688
|
-
this.environment = environment;
|
|
689
|
-
}
|
|
690
|
-
getSettings() {
|
|
691
|
-
// If the server injected a runtime config (window.__APP_CONFIG) use that first,
|
|
692
|
-
// otherwise fall back to the compile-time environment.HOST.
|
|
693
|
-
const runtimeHost = (typeof window !== 'undefined' && window.__APP_CONFIG && window.__APP_CONFIG.HOST) ? window.__APP_CONFIG.HOST : this.environment.HOST;
|
|
694
|
-
return this.httpClient.get(`${runtimeHost}web/settings`);
|
|
695
|
-
}
|
|
696
|
-
configArrayToObject(arr) {
|
|
697
|
-
return arr.reduce((acc, item) => {
|
|
698
|
-
acc[item.key] = item.value;
|
|
699
|
-
return acc;
|
|
700
|
-
}, {});
|
|
701
|
-
}
|
|
702
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: WebSettingsService, deps: [{ token: i1$1.HttpClient }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
703
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: WebSettingsService }); }
|
|
704
|
-
}
|
|
705
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: WebSettingsService, decorators: [{
|
|
706
|
-
type: Injectable
|
|
707
|
-
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
|
|
708
|
-
type: Inject,
|
|
709
|
-
args: [ENVIRONMENT]
|
|
710
|
-
}] }] });
|
|
711
|
-
|
|
712
|
-
class ContentService {
|
|
713
|
-
constructor(httpClient, environment) {
|
|
714
|
-
this.httpClient = httpClient;
|
|
715
|
-
this.environment = environment;
|
|
716
|
-
this.appContent = {};
|
|
717
|
-
}
|
|
718
|
-
getContent(contentName, id) {
|
|
719
|
-
if (this.appContent[contentName] && this.appContent[contentName].length) {
|
|
720
|
-
if (id) {
|
|
721
|
-
return of(this.findOne(this.appContent[contentName], id));
|
|
722
|
-
}
|
|
723
|
-
return of(this.appContent[contentName]);
|
|
724
|
-
}
|
|
725
|
-
return this.httpClient.get(`${this.environment.HOST}${contentName}`).pipe(map((content) => {
|
|
726
|
-
if (contentName == this.environment.contentResource.SERVICES || contentName == this.environment.contentResource.PROJECTS) {
|
|
727
|
-
content = content.map((item) => {
|
|
728
|
-
item.id = item.name.replace(/ /g, "_");
|
|
729
|
-
//item._id= item.name.replace(/ /g,"_");
|
|
730
|
-
return item;
|
|
731
|
-
});
|
|
732
|
-
}
|
|
733
|
-
this.appContent[contentName] = content;
|
|
734
|
-
if (id) {
|
|
735
|
-
return this.findOne(this.appContent[contentName], id);
|
|
736
|
-
}
|
|
737
|
-
return content;
|
|
738
|
-
}));
|
|
739
|
-
}
|
|
740
|
-
findOne(arr, id) {
|
|
741
|
-
for (let i = 0; i < arr.length; i++) {
|
|
742
|
-
if (arr[i].id == id) {
|
|
743
|
-
return arr[i];
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
}
|
|
747
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ContentService, deps: [{ token: i1$1.HttpClient }, { token: ENVIRONMENT }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
748
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ContentService }); }
|
|
749
|
-
}
|
|
750
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ContentService, decorators: [{
|
|
751
|
-
type: Injectable
|
|
752
|
-
}], ctorParameters: () => [{ type: i1$1.HttpClient }, { type: undefined, decorators: [{
|
|
753
|
-
type: Inject,
|
|
754
|
-
args: [ENVIRONMENT]
|
|
755
|
-
}] }] });
|
|
756
|
-
|
|
757
|
-
const ENVIRONMENT = new InjectionToken('environment');
|
|
758
|
-
class CMSClientInfraModule {
|
|
759
|
-
static forRoot(environment) {
|
|
760
|
-
return {
|
|
761
|
-
ngModule: CMSClientInfraModule,
|
|
762
|
-
providers: [
|
|
763
|
-
{ provide: ENVIRONMENT, useValue: environment },
|
|
764
|
-
ConsentService,
|
|
765
|
-
ContentService,
|
|
766
|
-
CookieService,
|
|
767
|
-
WebSettingsService,
|
|
768
|
-
PrivacyModalService
|
|
769
|
-
]
|
|
770
|
-
};
|
|
771
|
-
}
|
|
772
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CMSClientInfraModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
773
|
-
static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.31", ngImport: i0, type: CMSClientInfraModule, declarations: [PrivacyModalComponent], imports: [CommonModule], exports: [PrivacyModalComponent] }); }
|
|
774
|
-
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CMSClientInfraModule, imports: [CommonModule] }); }
|
|
775
|
-
}
|
|
776
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CMSClientInfraModule, decorators: [{
|
|
777
|
-
type: NgModule,
|
|
778
|
-
args: [{
|
|
779
|
-
declarations: [
|
|
780
|
-
PrivacyModalComponent
|
|
781
|
-
],
|
|
782
|
-
imports: [
|
|
783
|
-
CommonModule
|
|
784
|
-
],
|
|
785
|
-
exports: [PrivacyModalComponent]
|
|
786
|
-
}]
|
|
787
|
-
}] });
|
|
788
|
-
|
|
789
|
-
class AnalyticsService {
|
|
790
|
-
constructor(platformId) {
|
|
791
|
-
this.platformId = platformId;
|
|
792
|
-
this.gaScriptId = 'google-analytics-script';
|
|
793
|
-
}
|
|
794
|
-
applyGoogleAnalytics(appId) {
|
|
795
|
-
if (!isPlatformBrowser(this.platformId))
|
|
796
|
-
return;
|
|
797
|
-
// 1. Establish the dataLayer and the CORRECT gtag function stub
|
|
798
|
-
const win = window;
|
|
799
|
-
win.dataLayer = win.dataLayer || [];
|
|
800
|
-
// CRITICAL FIX: The Google library requires the special 'arguments' object,
|
|
801
|
-
// NOT a standard array spread [...args].
|
|
802
|
-
if (!win.gtag) {
|
|
803
|
-
win.gtag = function () {
|
|
804
|
-
win.dataLayer.push(arguments);
|
|
805
|
-
};
|
|
806
|
-
}
|
|
807
|
-
// 2. Queue initial commands immediately (even before script loads)
|
|
808
|
-
win.gtag('js', new Date());
|
|
809
|
-
win.gtag('config', appId);
|
|
810
|
-
// 3. Load the script if not already present
|
|
811
|
-
if (!document.getElementById(this.gaScriptId)) {
|
|
812
|
-
const script = document.createElement('script');
|
|
813
|
-
script.id = this.gaScriptId;
|
|
814
|
-
script.async = true;
|
|
815
|
-
script.src = `https://www.googletagmanager.com/gtag/js?id=${appId}`;
|
|
816
|
-
script.onload = () => {
|
|
817
|
-
console.log('[Analytics] gtag.js script loaded and ready');
|
|
818
|
-
};
|
|
819
|
-
script.onerror = (e) => console.error('[Analytics] gtag.js failed to load', e);
|
|
820
|
-
document.head.appendChild(script);
|
|
821
|
-
}
|
|
822
|
-
}
|
|
823
|
-
// Helper to send events from your components
|
|
824
|
-
sendEvent(eventName, params = {}) {
|
|
825
|
-
if (isPlatformBrowser(this.platformId) && window.gtag) {
|
|
826
|
-
window.gtag('event', eventName, params);
|
|
827
|
-
}
|
|
828
|
-
}
|
|
829
|
-
// Synchronous page view sender that won't rely on internal ready Promise
|
|
830
|
-
sendPageView(path) {
|
|
831
|
-
if (!isPlatformBrowser(this.platformId))
|
|
832
|
-
return;
|
|
833
|
-
const win = window;
|
|
834
|
-
try {
|
|
835
|
-
if (win && win.gtag) {
|
|
836
|
-
// Prefer gtag when available
|
|
837
|
-
win.gtag('event', 'page_view', { page_path: path });
|
|
838
|
-
return;
|
|
839
|
-
}
|
|
840
|
-
// Fallback: ensure dataLayer exists and push a native arguments-like object
|
|
841
|
-
win.dataLayer = win.dataLayer || [];
|
|
842
|
-
// Use a plain object that resembles gtag's usage if gtag not present
|
|
843
|
-
win.dataLayer.push({ event: 'page_view', page_path: path });
|
|
844
|
-
}
|
|
845
|
-
catch (err) {
|
|
846
|
-
console.warn('[Analytics] sendPageView failed', err);
|
|
847
|
-
}
|
|
848
|
-
}
|
|
849
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: AnalyticsService, deps: [{ token: PLATFORM_ID }], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
850
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: AnalyticsService, providedIn: 'root' }); }
|
|
851
|
-
}
|
|
852
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: AnalyticsService, decorators: [{
|
|
853
|
-
type: Injectable,
|
|
854
|
-
args: [{ providedIn: 'root' }]
|
|
855
|
-
}], ctorParameters: () => [{ type: Object, decorators: [{
|
|
856
|
-
type: Inject,
|
|
857
|
-
args: [PLATFORM_ID]
|
|
858
|
-
}] }] });
|
|
859
|
-
|
|
860
538
|
const IS_PREVIEW = new InjectionToken('IS_PREVIEW');
|
|
861
539
|
const IOX_BUILDER_EVENTS = new InjectionToken('IOX_BUILDER_EVENTS');
|
|
862
540
|
|
|
@@ -933,7 +611,7 @@ class CardComponent {
|
|
|
933
611
|
<h2>{{ title }}</h2>
|
|
934
612
|
<p>{{ description }}</p>
|
|
935
613
|
</div>
|
|
936
|
-
`, isInline: true, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:.75rem}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 .5rem;font-size:1.2rem}\n", "p{margin:0}\n"], dependencies: [{ kind: "directive", type: i1
|
|
614
|
+
`, isInline: true, styles: [".image-wrapper{width:100%;aspect-ratio:1/1;overflow:hidden;margin-bottom:.75rem}\n", ".card-img{width:100%;height:100%;object-fit:cover}\n", "h2{margin:0 0 .5rem;font-size:1.2rem}\n", "p{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
937
615
|
}
|
|
938
616
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: CardComponent, decorators: [{
|
|
939
617
|
type: Component,
|
|
@@ -1491,7 +1169,7 @@ class ClientRepeaterComponent {
|
|
|
1491
1169
|
<div class="repeater-root" [ngClass]="['iox-node-' + nodeId]">
|
|
1492
1170
|
<ng-container #childrenHost></ng-container>
|
|
1493
1171
|
</div>
|
|
1494
|
-
`, isInline: true, styles: [".repeater-root{position:relative;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1
|
|
1172
|
+
`, isInline: true, styles: [".repeater-root{position:relative;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] }); }
|
|
1495
1173
|
}
|
|
1496
1174
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ClientRepeaterComponent, decorators: [{
|
|
1497
1175
|
type: Component,
|
|
@@ -2347,7 +2025,7 @@ class ClientSliderContainerComponent {
|
|
|
2347
2025
|
<div *ngIf="enablePagination" class="swiper-pagination"></div>
|
|
2348
2026
|
<div *ngIf="enableScrollbar" class="swiper-scrollbar"></div>
|
|
2349
2027
|
</div>
|
|
2350
|
-
`, isInline: true, styles: [".swiper{width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1
|
|
2028
|
+
`, isInline: true, styles: [".swiper{width:100%;height:100%;box-sizing:border-box}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
2351
2029
|
}
|
|
2352
2030
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ClientSliderContainerComponent, decorators: [{
|
|
2353
2031
|
type: Component,
|
|
@@ -3134,7 +2812,7 @@ class ClientGalleryComponent {
|
|
|
3134
2812
|
[ngStyle]="slideStyle(i)"></div>
|
|
3135
2813
|
<div class="iox-gallery__overlay"></div>
|
|
3136
2814
|
</div>
|
|
3137
|
-
`, isInline: true, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:brightness(1.35);-webkit-mask-image:radial-gradient(circle at 50% 50%,rgba(0,0,0,1) 80%,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle at 50% 50%,#000 80%,#0000001a 95%,#0000)}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(to bottom,#00000080,#00000026 20% 80%,#00000080)}\n"], dependencies: [{ kind: "directive", type: i1
|
|
2815
|
+
`, isInline: true, styles: [":host{display:block}.iox-gallery{position:relative;overflow:hidden;box-sizing:border-box}.iox-gallery__img{position:absolute;inset:0;background-size:cover;background-position:center;pointer-events:none;opacity:0;filter:brightness(1.35);-webkit-mask-image:radial-gradient(circle at 50% 50%,rgba(0,0,0,1) 80%,rgba(0,0,0,.1) 95%,rgba(0,0,0,0) 100%);mask-image:radial-gradient(circle at 50% 50%,#000 80%,#0000001a 95%,#0000)}.iox-gallery__overlay{position:absolute;inset:0;pointer-events:none;z-index:3;background:linear-gradient(to bottom,#00000080,#00000026 20% 80%,#00000080)}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
|
|
3138
2816
|
}
|
|
3139
2817
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: ClientGalleryComponent, decorators: [{
|
|
3140
2818
|
type: Component,
|
|
@@ -4214,7 +3892,7 @@ class IoxFormComponent {
|
|
|
4214
3892
|
aria-live="assertive"
|
|
4215
3893
|
aria-atomic="true">{{ announcement }}</div>
|
|
4216
3894
|
<ng-container #childrenHost></ng-container>
|
|
4217
|
-
`, isInline: true, styles: [":host{box-sizing:border-box}.iox-form__hp{position:absolute;inset-inline-start:-9999px;width:1px;height:1px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1
|
|
3895
|
+
`, isInline: true, styles: [":host{box-sizing:border-box}.iox-form__hp{position:absolute;inset-inline-start:-9999px;width:1px;height:1px;overflow:hidden}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
4218
3896
|
}
|
|
4219
3897
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.31", ngImport: i0, type: IoxFormComponent, decorators: [{
|
|
4220
3898
|
type: Component,
|
|
@@ -7116,5 +6794,5 @@ function effectiveTransitionId(anim) {
|
|
|
7116
6794
|
* Generated bundle index. Do not edit.
|
|
7117
6795
|
*/
|
|
7118
6796
|
|
|
7119
|
-
export { AOSService,
|
|
6797
|
+
export { AOSService, BREAKPOINTS, Breakpoint, BreakpointQueryKind, BuilderButtonComponent, BuilderDividerComponent, BuilderHeadingComponent, BuilderIconComponent, BuilderImageComponent, BuilderLinkComponent, BuilderSpacerComponent, ButtonBlockComponent, CONTEXT_ACTION_TYPES, CardComponent, ClientGalleryComponent, ClientListComponent, ClientListItemComponent, ClientRepeaterComponent, ClientSliderContainerComponent, ClientSliderSlideComponent, ComponentInstanceRegistryService, ContainerComponent, ContextStore, DEFAULT_GALLERY_SCHEDULER, DEFAULT_PAGE_TRANSITION, DEFAULT_PAGE_TRANSITION_DURATION, DEFAULT_PAGE_TRANSITION_EASING, DEFAULT_PAGE_TRANSITION_PERSPECTIVE, DEFAULT_PHOSPHOR_WEIGHT, DEFAULT_WIDTH_BY_TYPE, DeclarationContext, FormRenderState, FormRuntimeService, GALLERY_EFFECTS, GALLERY_EFFECT_DESCRIPTORS, GalleryLoop, IOX_BUILDER_EVENTS, IOX_FORM_MESSAGES, IOX_FORM_NAVIGATOR, IOX_FORM_TRANSPORT, IS_PREVIEW, IoxAnimateContainer, IoxAosDirective, IoxAosModule, IoxBuilderComponentsModule, IoxComponentRegistryService, IoxFieldComponent, IoxFormComponent, IoxFormErrorComponent, IoxFormSuccessComponent, IoxPageComponent, IoxPageModule, IoxSubmitButtonComponent, IoxUiModule, LinkedContainerComponent, PAGE_TRANSITION_CATEGORIES, PAGE_TRANSITION_PRESETS, PART_CLASS_NAMES, PIPE_DESCRIPTORS, PIPE_REGISTRY, PageScrollProvider, RESERVED_ALIAS_PREFIX, SUPPRESSED_STYLE_PROPS_BY_TYPE, SWIPER_RESPONSIVE_TRAITS, SectionComponent, TRANSITION_FEELS, TextBlockComponent, VALIDATION_STATES, VALIDATION_STATE_CLASS, VIRTUAL_TRAIT_GROUPS, VIRTUAL_TRAIT_KEYS, ViewPositionDirective, ViewPositionModule, activeActions, applyBindingPipes, applyFeel, breakpointDef, breakpointForWidth, breakpointQueryFor, buildDataSourceFilter, buildPartSelector, buildRelatedFilter, buildSwiperBreakpoints, buildTargetedStateSelector, buildTransitionTimeline, cascadeChain, clearInputOverride, clearOverride, collectContextSlotKeys, collectReferencedAliases, compileDeclarations, compilePageStyle, composeVirtualTraits, computeRelative, contextActionEffect, contextSlotKeys, countOverrides, dataSourcePlanToRequest, declaredInputNames, defaultMessageResolver, deriveSeoFromContent, describeSeoFields, effectiveTransitionId, excludeSelf, feelFor, getByPath, getSeoValue, initialSlotValues, isActionEnabled, isContextAction, isInputOverriddenAt, isOverriddenAt, isReservedAlias, isValidSlotKey, legacyEnterToTransition, matchRouteParams, mediaQueryFor, mergeSwiperBreakpoints, nearestCommonAncestorId, nodeCssId, nodeUsesContext, normalizeCollectionResult, normalizeGalleryImage, normalizeIconClass, parentBreakpoint, parseUrlList, partClassName, planDataSource, planResponsiveRules, referencedDataSources, referencedDataSourcesDeep, renderDefaultDeclarations, resetSeoField, resolveBoundValue, resolveContextValue, resolveDerivedInto, resolveGalleryEffect, resolveGalleryUrls, resolveInputChain, resolveInputs, resolvePageTransition, resolvePath, resolveRelativeInto, resolveRepeaterItems, resolveSeo, resolveSiblings, resolveSingleItemId, resolveStateStyles, resolveStyleProps, resolveValueChain, rewriteViewportUnits, safeSetInput, setInputOverride, setOverride, setSeoAuto, setSeoBinding, setSeoOverride, setSeoValue, stateNamesIn, stripSuppressedProps, styleKeyToKebab, variableAliases, variableItemsFrom, withContextSlots, wrapInBreakpointQuery, wrapInMediaQuery };
|
|
7120
6798
|
//# sourceMappingURL=vectoriox-iox-ui.mjs.map
|