ngx-payvent-shared 0.0.0 → 0.0.2
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/ngx-payvent-shared.mjs +741 -469
- package/fesm2022/ngx-payvent-shared.mjs.map +1 -1
- package/index.d.ts +175 -81
- package/package.json +2 -1
- package/src/assets/flags/ad.png +0 -0
- package/src/assets/flags/ae.png +0 -0
- package/src/assets/flags/af.png +0 -0
- package/src/assets/flags/ag.png +0 -0
- package/src/assets/flags/ai.png +0 -0
- package/src/assets/flags/al.png +0 -0
- package/src/assets/flags/am.png +0 -0
- package/src/assets/flags/ao.png +0 -0
- package/src/assets/flags/aq.png +0 -0
- package/src/assets/flags/ar.png +0 -0
- package/src/assets/flags/as.png +0 -0
- package/src/assets/flags/at.png +0 -0
- package/src/assets/flags/au.png +0 -0
- package/src/assets/flags/aw.png +0 -0
- package/src/assets/flags/ax.png +0 -0
- package/src/assets/flags/az.png +0 -0
- package/src/assets/flags/ba.png +0 -0
- package/src/assets/flags/bb.png +0 -0
- package/src/assets/flags/bd.png +0 -0
- package/src/assets/flags/be.png +0 -0
- package/src/assets/flags/bf.png +0 -0
- package/src/assets/flags/bg.png +0 -0
- package/src/assets/flags/bh.png +0 -0
- package/src/assets/flags/bi.png +0 -0
- package/src/assets/flags/bj.png +0 -0
- package/src/assets/flags/bl.png +0 -0
- package/src/assets/flags/bm.png +0 -0
- package/src/assets/flags/bn.png +0 -0
- package/src/assets/flags/bo.png +0 -0
- package/src/assets/flags/bq.png +0 -0
- package/src/assets/flags/br.png +0 -0
- package/src/assets/flags/bs.png +0 -0
- package/src/assets/flags/bt.png +0 -0
- package/src/assets/flags/bv.png +0 -0
- package/src/assets/flags/bw.png +0 -0
- package/src/assets/flags/by.png +0 -0
- package/src/assets/flags/bz.png +0 -0
- package/src/assets/flags/ca.png +0 -0
- package/src/assets/flags/cc.png +0 -0
- package/src/assets/flags/cd.png +0 -0
- package/src/assets/flags/cf.png +0 -0
- package/src/assets/flags/cg.png +0 -0
- package/src/assets/flags/ch.png +0 -0
- package/src/assets/flags/ci.png +0 -0
- package/src/assets/flags/ck.png +0 -0
- package/src/assets/flags/cl.png +0 -0
- package/src/assets/flags/cm.png +0 -0
- package/src/assets/flags/cn.png +0 -0
- package/src/assets/flags/co.png +0 -0
- package/src/assets/flags/cr.png +0 -0
- package/src/assets/flags/cu.png +0 -0
- package/src/assets/flags/cv.png +0 -0
- package/src/assets/flags/cw.png +0 -0
- package/src/assets/flags/cx.png +0 -0
- package/src/assets/flags/cy.png +0 -0
- package/src/assets/flags/cz.png +0 -0
- package/src/assets/flags/de.png +0 -0
- package/src/assets/flags/dj.png +0 -0
- package/src/assets/flags/dk.png +0 -0
- package/src/assets/flags/dm.png +0 -0
- package/src/assets/flags/do.png +0 -0
- package/src/assets/flags/dz.png +0 -0
- package/src/assets/flags/ec.png +0 -0
- package/src/assets/flags/ee.png +0 -0
- package/src/assets/flags/eg.png +0 -0
- package/src/assets/flags/eh.png +0 -0
- package/src/assets/flags/er.png +0 -0
- package/src/assets/flags/es.png +0 -0
- package/src/assets/flags/et.png +0 -0
- package/src/assets/flags/fi.png +0 -0
- package/src/assets/flags/fj.png +0 -0
- package/src/assets/flags/fk.png +0 -0
- package/src/assets/flags/fm.png +0 -0
- package/src/assets/flags/fo.png +0 -0
- package/src/assets/flags/fr.png +0 -0
- package/src/assets/flags/ga.png +0 -0
- package/src/assets/flags/gb-eng.png +0 -0
- package/src/assets/flags/gb-nir.png +0 -0
- package/src/assets/flags/gb-sct.png +0 -0
- package/src/assets/flags/gb-wls.png +0 -0
- package/src/assets/flags/gb.png +0 -0
- package/src/assets/flags/gd.png +0 -0
- package/src/assets/flags/ge.png +0 -0
- package/src/assets/flags/gf.png +0 -0
- package/src/assets/flags/gg.png +0 -0
- package/src/assets/flags/gh.png +0 -0
- package/src/assets/flags/gi.png +0 -0
- package/src/assets/flags/gl.png +0 -0
- package/src/assets/flags/gm.png +0 -0
- package/src/assets/flags/gn.png +0 -0
- package/src/assets/flags/gp.png +0 -0
- package/src/assets/flags/gq.png +0 -0
- package/src/assets/flags/gr.png +0 -0
- package/src/assets/flags/gs.png +0 -0
- package/src/assets/flags/gt.png +0 -0
- package/src/assets/flags/gu.png +0 -0
- package/src/assets/flags/gw.png +0 -0
- package/src/assets/flags/gy.png +0 -0
- package/src/assets/flags/hk.png +0 -0
- package/src/assets/flags/hm.png +0 -0
- package/src/assets/flags/hn.png +0 -0
- package/src/assets/flags/hr.png +0 -0
- package/src/assets/flags/ht.png +0 -0
- package/src/assets/flags/hu.png +0 -0
- package/src/assets/flags/id.png +0 -0
- package/src/assets/flags/ie.png +0 -0
- package/src/assets/flags/il.png +0 -0
- package/src/assets/flags/im.png +0 -0
- package/src/assets/flags/in.png +0 -0
- package/src/assets/flags/io.png +0 -0
- package/src/assets/flags/iq.png +0 -0
- package/src/assets/flags/ir.png +0 -0
- package/src/assets/flags/is.png +0 -0
- package/src/assets/flags/it.png +0 -0
- package/src/assets/flags/je.png +0 -0
- package/src/assets/flags/jm.png +0 -0
- package/src/assets/flags/jo.png +0 -0
- package/src/assets/flags/jp.png +0 -0
- package/src/assets/flags/ke.png +0 -0
- package/src/assets/flags/kg.png +0 -0
- package/src/assets/flags/kh.png +0 -0
- package/src/assets/flags/ki.png +0 -0
- package/src/assets/flags/km.png +0 -0
- package/src/assets/flags/kn.png +0 -0
- package/src/assets/flags/kp.png +0 -0
- package/src/assets/flags/kr.png +0 -0
- package/src/assets/flags/kw.png +0 -0
- package/src/assets/flags/ky.png +0 -0
- package/src/assets/flags/kz.png +0 -0
- package/src/assets/flags/la.png +0 -0
- package/src/assets/flags/lb.png +0 -0
- package/src/assets/flags/lc.png +0 -0
- package/src/assets/flags/li.png +0 -0
- package/src/assets/flags/lk.png +0 -0
- package/src/assets/flags/lr.png +0 -0
- package/src/assets/flags/ls.png +0 -0
- package/src/assets/flags/lt.png +0 -0
- package/src/assets/flags/lu.png +0 -0
- package/src/assets/flags/lv.png +0 -0
- package/src/assets/flags/ly.png +0 -0
- package/src/assets/flags/ma.png +0 -0
- package/src/assets/flags/mc.png +0 -0
- package/src/assets/flags/md.png +0 -0
- package/src/assets/flags/me.png +0 -0
- package/src/assets/flags/mf.png +0 -0
- package/src/assets/flags/mg.png +0 -0
- package/src/assets/flags/mh.png +0 -0
- package/src/assets/flags/mk.png +0 -0
- package/src/assets/flags/ml.png +0 -0
- package/src/assets/flags/mm.png +0 -0
- package/src/assets/flags/mn.png +0 -0
- package/src/assets/flags/mo.png +0 -0
- package/src/assets/flags/mp.png +0 -0
- package/src/assets/flags/mq.png +0 -0
- package/src/assets/flags/mr.png +0 -0
- package/src/assets/flags/ms.png +0 -0
- package/src/assets/flags/mt.png +0 -0
- package/src/assets/flags/mu.png +0 -0
- package/src/assets/flags/mv.png +0 -0
- package/src/assets/flags/mw.png +0 -0
- package/src/assets/flags/mx.png +0 -0
- package/src/assets/flags/my.png +0 -0
- package/src/assets/flags/mz.png +0 -0
- package/src/assets/flags/na.png +0 -0
- package/src/assets/flags/nc.png +0 -0
- package/src/assets/flags/ne.png +0 -0
- package/src/assets/flags/nf.png +0 -0
- package/src/assets/flags/ng.png +0 -0
- package/src/assets/flags/ni.png +0 -0
- package/src/assets/flags/nl.png +0 -0
- package/src/assets/flags/no.png +0 -0
- package/src/assets/flags/np.png +0 -0
- package/src/assets/flags/nr.png +0 -0
- package/src/assets/flags/nu.png +0 -0
- package/src/assets/flags/nz.png +0 -0
- package/src/assets/flags/om.png +0 -0
- package/src/assets/flags/pa.png +0 -0
- package/src/assets/flags/pe.png +0 -0
- package/src/assets/flags/pf.png +0 -0
- package/src/assets/flags/pg.png +0 -0
- package/src/assets/flags/ph.png +0 -0
- package/src/assets/flags/pk.png +0 -0
- package/src/assets/flags/pl.png +0 -0
- package/src/assets/flags/pm.png +0 -0
- package/src/assets/flags/pn.png +0 -0
- package/src/assets/flags/pr.png +0 -0
- package/src/assets/flags/ps.png +0 -0
- package/src/assets/flags/pt.png +0 -0
- package/src/assets/flags/pw.png +0 -0
- package/src/assets/flags/py.png +0 -0
- package/src/assets/flags/qa.png +0 -0
- package/src/assets/flags/re.png +0 -0
- package/src/assets/flags/ro.png +0 -0
- package/src/assets/flags/rs.png +0 -0
- package/src/assets/flags/ru.png +0 -0
- package/src/assets/flags/rw.png +0 -0
- package/src/assets/flags/sa.png +0 -0
- package/src/assets/flags/sb.png +0 -0
- package/src/assets/flags/sc.png +0 -0
- package/src/assets/flags/sd.png +0 -0
- package/src/assets/flags/se.png +0 -0
- package/src/assets/flags/sg.png +0 -0
- package/src/assets/flags/sh.png +0 -0
- package/src/assets/flags/si.png +0 -0
- package/src/assets/flags/sj.png +0 -0
- package/src/assets/flags/sk.png +0 -0
- package/src/assets/flags/sl.png +0 -0
- package/src/assets/flags/sm.png +0 -0
- package/src/assets/flags/sn.png +0 -0
- package/src/assets/flags/so.png +0 -0
- package/src/assets/flags/sr.png +0 -0
- package/src/assets/flags/ss.png +0 -0
- package/src/assets/flags/st.png +0 -0
- package/src/assets/flags/sv.png +0 -0
- package/src/assets/flags/sx.png +0 -0
- package/src/assets/flags/sy.png +0 -0
- package/src/assets/flags/sz.png +0 -0
- package/src/assets/flags/tc.png +0 -0
- package/src/assets/flags/td.png +0 -0
- package/src/assets/flags/tf.png +0 -0
- package/src/assets/flags/tg.png +0 -0
- package/src/assets/flags/th.png +0 -0
- package/src/assets/flags/tj.png +0 -0
- package/src/assets/flags/tk.png +0 -0
- package/src/assets/flags/tl.png +0 -0
- package/src/assets/flags/tm.png +0 -0
- package/src/assets/flags/tn.png +0 -0
- package/src/assets/flags/to.png +0 -0
- package/src/assets/flags/tr.png +0 -0
- package/src/assets/flags/tt.png +0 -0
- package/src/assets/flags/tv.png +0 -0
- package/src/assets/flags/tw.png +0 -0
- package/src/assets/flags/tz.png +0 -0
- package/src/assets/flags/ua.png +0 -0
- package/src/assets/flags/ug.png +0 -0
- package/src/assets/flags/um.png +0 -0
- package/src/assets/flags/us.png +0 -0
- package/src/assets/flags/uy.png +0 -0
- package/src/assets/flags/uz.png +0 -0
- package/src/assets/flags/va.png +0 -0
- package/src/assets/flags/vc.png +0 -0
- package/src/assets/flags/ve.png +0 -0
- package/src/assets/flags/vg.png +0 -0
- package/src/assets/flags/vi.png +0 -0
- package/src/assets/flags/vn.png +0 -0
- package/src/assets/flags/vu.png +0 -0
- package/src/assets/flags/wf.png +0 -0
- package/src/assets/flags/ws.png +0 -0
- package/src/assets/flags/xk.png +0 -0
- package/src/assets/flags/ye.png +0 -0
- package/src/assets/flags/yt.png +0 -0
- package/src/assets/flags/za.png +0 -0
- package/src/assets/flags/zm.png +0 -0
- package/src/assets/flags/zw.png +0 -0
|
@@ -1,37 +1,49 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import {
|
|
2
|
+
import { signal, Input, Component, Injectable, EventEmitter, inject, DOCUMENT, computed, effect, Pipe, HostListener, input, model, output, ViewChild, ViewEncapsulation, ElementRef, HostBinding, Renderer2, Output, untracked, afterEveryRender, afterNextRender, Directive } from '@angular/core';
|
|
3
|
+
import { EdgeToEdge } from '@capawesome/capacitor-android-edge-to-edge-support';
|
|
4
|
+
import { Capacitor } from '@capacitor/core';
|
|
3
5
|
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
|
|
4
|
-
import { timer, shareReplay, ReplaySubject, of, tap, share } from 'rxjs';
|
|
5
|
-
import * as
|
|
6
|
+
import { timer, shareReplay, ReplaySubject, of, tap, firstValueFrom, from, share } from 'rxjs';
|
|
7
|
+
import * as i2$4 from '@angular/router';
|
|
6
8
|
import { ActivatedRoute, Router, NavigationStart, NavigationEnd, NavigationCancel } from '@angular/router';
|
|
7
|
-
import { catchError, shareReplay as shareReplay$1
|
|
9
|
+
import { catchError, pairwise, map, shareReplay as shareReplay$1 } from 'rxjs/operators';
|
|
8
10
|
import * as uuid from 'uuid';
|
|
9
11
|
import * as signalR from '@microsoft/signalr';
|
|
10
|
-
import * as
|
|
11
|
-
import {
|
|
12
|
-
import * as
|
|
13
|
-
import
|
|
14
|
-
import
|
|
12
|
+
import * as i2$3 from 'primeng/api';
|
|
13
|
+
import { MessageService, ConfirmationService } from 'primeng/api';
|
|
14
|
+
import * as i1$3 from '@angular/common';
|
|
15
|
+
import { Location, CommonModule, NgComponentOutlet, NgTemplateOutlet } from '@angular/common';
|
|
16
|
+
import bowser from 'bowser';
|
|
17
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
15
18
|
import { DomSanitizer, HammerModule } from '@angular/platform-browser';
|
|
16
|
-
import * as i1
|
|
19
|
+
import * as i1 from '@angular/forms';
|
|
17
20
|
import { FormsModule } from '@angular/forms';
|
|
18
21
|
import * as i2 from 'primeng/skeleton';
|
|
19
22
|
import { SkeletonModule } from 'primeng/skeleton';
|
|
20
|
-
import * as
|
|
23
|
+
import * as i2$1 from 'primeng/button';
|
|
24
|
+
import { ButtonModule } from 'primeng/button';
|
|
25
|
+
import * as i4 from 'primeng/textarea';
|
|
26
|
+
import { TextareaModule } from 'primeng/textarea';
|
|
27
|
+
import * as i5 from 'primeng/autofocus';
|
|
28
|
+
import { AutoFocusModule } from 'primeng/autofocus';
|
|
29
|
+
import * as i2$2 from 'primeng/select';
|
|
30
|
+
import { SelectModule } from 'primeng/select';
|
|
31
|
+
import * as i3 from 'primeng/inputgroup';
|
|
32
|
+
import { InputGroupModule } from 'primeng/inputgroup';
|
|
33
|
+
import * as i4$1 from 'primeng/inputtext';
|
|
34
|
+
import { InputTextModule, InputText } from 'primeng/inputtext';
|
|
35
|
+
import * as i3$1 from 'ngx-order-pipe';
|
|
21
36
|
import { OrderModule } from 'ngx-order-pipe';
|
|
22
|
-
import { InputText, InputTextModule } from 'primeng/inputtext';
|
|
23
37
|
import { InputOtp } from 'primeng/inputotp';
|
|
24
|
-
import * as i3$
|
|
25
|
-
import {
|
|
38
|
+
import * as i3$2 from 'primeng/checkbox';
|
|
39
|
+
import { CheckboxModule } from 'primeng/checkbox';
|
|
26
40
|
import { CardModule } from 'primeng/card';
|
|
27
41
|
import { StyleClassModule } from 'primeng/styleclass';
|
|
28
|
-
import * as i1$
|
|
42
|
+
import * as i1$1 from 'primeng/toast';
|
|
29
43
|
import { ToastModule } from 'primeng/toast';
|
|
30
|
-
import * as i1$
|
|
44
|
+
import * as i1$2 from 'primeng/drawer';
|
|
31
45
|
import { DrawerModule } from 'primeng/drawer';
|
|
32
46
|
import { RippleModule } from 'primeng/ripple';
|
|
33
|
-
import * as i2$2 from 'primeng/checkbox';
|
|
34
|
-
import { CheckboxModule } from 'primeng/checkbox';
|
|
35
47
|
|
|
36
48
|
class FlowAppConfig {
|
|
37
49
|
production;
|
|
@@ -49,6 +61,158 @@ class FlowAppConfig {
|
|
|
49
61
|
fbPixel;
|
|
50
62
|
}
|
|
51
63
|
|
|
64
|
+
class SidebarContext {
|
|
65
|
+
close;
|
|
66
|
+
setSize;
|
|
67
|
+
_context = signal({}, ...(ngDevMode ? [{ debugName: "_context" }] : []));
|
|
68
|
+
set context(value) {
|
|
69
|
+
this._context.set(value);
|
|
70
|
+
}
|
|
71
|
+
get context() {
|
|
72
|
+
return this._context;
|
|
73
|
+
}
|
|
74
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarContext, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
75
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: SidebarContext, isStandalone: true, selector: "ng-component", inputs: { close: "close", setSize: "setSize", context: "context" }, ngImport: i0, template: ``, isInline: true });
|
|
76
|
+
}
|
|
77
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarContext, decorators: [{
|
|
78
|
+
type: Component,
|
|
79
|
+
args: [{
|
|
80
|
+
template: ``
|
|
81
|
+
}]
|
|
82
|
+
}], propDecorators: { close: [{
|
|
83
|
+
type: Input
|
|
84
|
+
}], setSize: [{
|
|
85
|
+
type: Input
|
|
86
|
+
}], context: [{
|
|
87
|
+
type: Input
|
|
88
|
+
}] } });
|
|
89
|
+
|
|
90
|
+
class Misc {
|
|
91
|
+
static hexToRgbA(hex, opacity) {
|
|
92
|
+
var c;
|
|
93
|
+
if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
|
|
94
|
+
c = hex.substring(1).split('');
|
|
95
|
+
if (c.length == 3) {
|
|
96
|
+
c = [c[0], c[0], c[1], c[1], c[2], c[2]];
|
|
97
|
+
}
|
|
98
|
+
c = '0x' + c.join('');
|
|
99
|
+
return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + opacity + ')';
|
|
100
|
+
}
|
|
101
|
+
throw new Error('Bad Hex');
|
|
102
|
+
}
|
|
103
|
+
static formatString(str, ...val) {
|
|
104
|
+
for (let index = 0; index < val.length; index++) {
|
|
105
|
+
str = str.replace(`{${index}}`, val[index]);
|
|
106
|
+
}
|
|
107
|
+
return str;
|
|
108
|
+
}
|
|
109
|
+
hexToRgbA(hex, a) {
|
|
110
|
+
var c;
|
|
111
|
+
if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
|
|
112
|
+
c = hex.substring(1).split('');
|
|
113
|
+
if (c.length == 3) {
|
|
114
|
+
c = [c[0], c[0], c[1], c[1], c[2], c[2]];
|
|
115
|
+
}
|
|
116
|
+
c = '0x' + c.join('');
|
|
117
|
+
return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + a + ')';
|
|
118
|
+
}
|
|
119
|
+
throw new Error('Bad Hex');
|
|
120
|
+
}
|
|
121
|
+
static replacer(key, value) {
|
|
122
|
+
// Filtering out properties
|
|
123
|
+
if (typeof value === 'string') {
|
|
124
|
+
return encodeURIComponent(value);
|
|
125
|
+
}
|
|
126
|
+
return value;
|
|
127
|
+
}
|
|
128
|
+
static reviver(key, value) {
|
|
129
|
+
// Filtering out properties
|
|
130
|
+
if (typeof value === 'string') {
|
|
131
|
+
return decodeURIComponent(value);
|
|
132
|
+
}
|
|
133
|
+
return value;
|
|
134
|
+
}
|
|
135
|
+
static stripHtml(originalString) {
|
|
136
|
+
let strippedString = originalString ? originalString.replace(/(<([^>]+)>)/gi, '') : '';
|
|
137
|
+
return strippedString;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
class SortingPagingCriteria {
|
|
142
|
+
numberOfRecords = 30;
|
|
143
|
+
pageNumber = 1;
|
|
144
|
+
totalResults;
|
|
145
|
+
columnSortOrdersDefinition;
|
|
146
|
+
applySort(columnName) {
|
|
147
|
+
if (this.columnSortOrdersDefinition.columnName == columnName) {
|
|
148
|
+
this.columnSortOrdersDefinition.columnSortOrder = this.columnSortOrdersDefinition.columnSortOrder === 'Ascending' ? 'Descending' : 'Ascending';
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
this.columnSortOrdersDefinition.columnName = columnName;
|
|
152
|
+
this.columnSortOrdersDefinition.columnSortOrder = 'Ascending';
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
class ColumnSortOrdersDefinition {
|
|
157
|
+
columnName;
|
|
158
|
+
columnSortOrder;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
class StoryContext {
|
|
162
|
+
id;
|
|
163
|
+
type;
|
|
164
|
+
src;
|
|
165
|
+
completion = signal(0, ...(ngDevMode ? [{ debugName: "completion" }] : []));
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
class FlowCookieService {
|
|
169
|
+
instanceId;
|
|
170
|
+
_gdprConsent;
|
|
171
|
+
get gdprConsent() {
|
|
172
|
+
if (!this._gdprConsent)
|
|
173
|
+
this._gdprConsent = this.get('GdprConsent');
|
|
174
|
+
return this._gdprConsent;
|
|
175
|
+
}
|
|
176
|
+
set gdprConsent(value) {
|
|
177
|
+
this._gdprConsent = value;
|
|
178
|
+
this.put('GdprConsent', value, null);
|
|
179
|
+
}
|
|
180
|
+
constructor() {
|
|
181
|
+
}
|
|
182
|
+
get(name) {
|
|
183
|
+
if (!localStorage.getItem(name))
|
|
184
|
+
return null;
|
|
185
|
+
let obj = null;
|
|
186
|
+
try {
|
|
187
|
+
obj = JSON.parse(localStorage.getItem(name), Misc.reviver);
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
this.put(name, localStorage.getItem(name));
|
|
191
|
+
return localStorage.getItem(name);
|
|
192
|
+
}
|
|
193
|
+
if (obj.expires && Date.parse(obj.expires) < Date.parse(new Date().toISOString())) {
|
|
194
|
+
localStorage.removeItem(name);
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
else
|
|
198
|
+
return obj.value;
|
|
199
|
+
}
|
|
200
|
+
remove(name) {
|
|
201
|
+
localStorage.removeItem(name);
|
|
202
|
+
}
|
|
203
|
+
put(name, value, exp = null) {
|
|
204
|
+
localStorage[name] = JSON.stringify({ value: value, expires: exp ? exp.toISOString() : null }, Misc.replacer);
|
|
205
|
+
}
|
|
206
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowCookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
207
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowCookieService, providedIn: 'root' });
|
|
208
|
+
}
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowCookieService, decorators: [{
|
|
210
|
+
type: Injectable,
|
|
211
|
+
args: [{
|
|
212
|
+
providedIn: 'root'
|
|
213
|
+
}]
|
|
214
|
+
}], ctorParameters: () => [] });
|
|
215
|
+
|
|
52
216
|
class GlobalService {
|
|
53
217
|
onSuccess = new EventEmitter(false);
|
|
54
218
|
onError = new EventEmitter(false);
|
|
@@ -103,6 +267,8 @@ class GlobalService {
|
|
|
103
267
|
};
|
|
104
268
|
loading = true;
|
|
105
269
|
sidebarOpen = false;
|
|
270
|
+
loaded;
|
|
271
|
+
insets = signal(null, ...(ngDevMode ? [{ debugName: "insets" }] : []));
|
|
106
272
|
constructor() {
|
|
107
273
|
if (typeof CKEDITOR !== 'undefined')
|
|
108
274
|
this.ckEditorOptions = {
|
|
@@ -129,6 +295,8 @@ class GlobalService {
|
|
|
129
295
|
height: 350,
|
|
130
296
|
ProcessHTMLEntities: false
|
|
131
297
|
};
|
|
298
|
+
if (Capacitor.isNativePlatform())
|
|
299
|
+
EdgeToEdge.getInsets().then(s => { console.log(s); this.insets.set(s); }).then(s => EdgeToEdge.disable());
|
|
132
300
|
}
|
|
133
301
|
checkPID2(pid) {
|
|
134
302
|
var pidLength = 13;
|
|
@@ -240,13 +408,13 @@ class GlobalService {
|
|
|
240
408
|
isValidIBAN2(iban) {
|
|
241
409
|
/*
|
|
242
410
|
Pasul 1: Se muta primele patru caractere (simbolizand codul de tara si caracterele de verificare) la dreapta codului IBAN.
|
|
243
|
-
|
|
411
|
+
Exemplu: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49.
|
|
244
412
|
|
|
245
|
-
|
|
246
|
-
|
|
413
|
+
Pasul 2: Se face conversia literelor in numere, conform tabelei de conversie cuprinsa in Anexa nr. 2.
|
|
414
|
+
Exemplu: AAAA1B31007593840000RO49 devine 1010101011131007593840000272449
|
|
247
415
|
|
|
248
|
-
|
|
249
|
-
|
|
416
|
+
Pasul 3: Se aplica algoritmul MOD 97-10 (conform ISO 7064). Pentru ca cele 2 caractere de verificare sa fie corecte (codul IBAN sa fie corect), restul impartirii numarului astfel obtinut la 97 trebuie sa fie 1.
|
|
417
|
+
Exemplu: Restul impartirii lui 1010101011131007593840000272449 la 97 este 1.
|
|
250
418
|
*/
|
|
251
419
|
if (!iban)
|
|
252
420
|
return false;
|
|
@@ -304,95 +472,10 @@ class GlobalService {
|
|
|
304
472
|
}
|
|
305
473
|
return remainder;
|
|
306
474
|
}
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
|
|
310
|
-
c = hex.substring(1).split('');
|
|
311
|
-
if (c.length == 3) {
|
|
312
|
-
c = [c[0], c[0], c[1], c[1], c[2], c[2]];
|
|
313
|
-
}
|
|
314
|
-
c = '0x' + c.join('');
|
|
315
|
-
return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + a + ')';
|
|
316
|
-
}
|
|
317
|
-
throw new Error('Bad Hex');
|
|
318
|
-
}
|
|
319
|
-
formatString(str, ...val) {
|
|
320
|
-
for (let index = 0; index < val.length; index++) {
|
|
321
|
-
str = str.replace(`{${index}}`, val[index]);
|
|
322
|
-
}
|
|
323
|
-
return str;
|
|
324
|
-
}
|
|
325
|
-
replacer(key, value) {
|
|
326
|
-
// Filtering out properties
|
|
327
|
-
if (typeof value === 'string') {
|
|
328
|
-
return encodeURIComponent(value);
|
|
329
|
-
}
|
|
330
|
-
return value;
|
|
331
|
-
}
|
|
332
|
-
reviver(key, value) {
|
|
333
|
-
// Filtering out properties
|
|
334
|
-
if (typeof value === 'string') {
|
|
335
|
-
return decodeURIComponent(value);
|
|
336
|
-
}
|
|
337
|
-
return value;
|
|
338
|
-
}
|
|
339
|
-
stripHtml(originalString) {
|
|
340
|
-
let strippedString = originalString ? originalString.replace(/(<([^>]+)>)/gi, '') : '';
|
|
341
|
-
return strippedString;
|
|
342
|
-
}
|
|
343
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: GlobalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
344
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: GlobalService, providedIn: 'root' });
|
|
345
|
-
}
|
|
346
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: GlobalService, decorators: [{
|
|
347
|
-
type: Injectable,
|
|
348
|
-
args: [{
|
|
349
|
-
providedIn: 'root'
|
|
350
|
-
}]
|
|
351
|
-
}], ctorParameters: () => [] });
|
|
352
|
-
|
|
353
|
-
class FlowCookieService {
|
|
354
|
-
instanceId;
|
|
355
|
-
globalService = inject(GlobalService);
|
|
356
|
-
_gdprConsent;
|
|
357
|
-
get gdprConsent() {
|
|
358
|
-
if (!this._gdprConsent)
|
|
359
|
-
this._gdprConsent = this.get('GdprConsent');
|
|
360
|
-
return this._gdprConsent;
|
|
361
|
-
}
|
|
362
|
-
set gdprConsent(value) {
|
|
363
|
-
this._gdprConsent = value;
|
|
364
|
-
this.put('GdprConsent', value, null);
|
|
365
|
-
}
|
|
366
|
-
constructor() {
|
|
367
|
-
}
|
|
368
|
-
get(name) {
|
|
369
|
-
if (!localStorage.getItem(name))
|
|
370
|
-
return null;
|
|
371
|
-
let obj = null;
|
|
372
|
-
try {
|
|
373
|
-
obj = JSON.parse(localStorage.getItem(name), this.globalService.reviver);
|
|
374
|
-
}
|
|
375
|
-
catch {
|
|
376
|
-
this.put(name, localStorage.getItem(name));
|
|
377
|
-
return localStorage.getItem(name);
|
|
378
|
-
}
|
|
379
|
-
if (obj.expires && Date.parse(obj.expires) < Date.parse(new Date().toISOString())) {
|
|
380
|
-
localStorage.removeItem(name);
|
|
381
|
-
return null;
|
|
382
|
-
}
|
|
383
|
-
else
|
|
384
|
-
return obj.value;
|
|
385
|
-
}
|
|
386
|
-
remove(name) {
|
|
387
|
-
localStorage.removeItem(name);
|
|
388
|
-
}
|
|
389
|
-
put(name, value, exp = null) {
|
|
390
|
-
localStorage[name] = JSON.stringify({ value: value, expires: exp ? exp.toISOString() : null }, this.globalService.replacer);
|
|
391
|
-
}
|
|
392
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FlowCookieService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
393
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FlowCookieService, providedIn: 'root' });
|
|
475
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: GlobalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
476
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: GlobalService, providedIn: 'root' });
|
|
394
477
|
}
|
|
395
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
478
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: GlobalService, decorators: [{
|
|
396
479
|
type: Injectable,
|
|
397
480
|
args: [{
|
|
398
481
|
providedIn: 'root'
|
|
@@ -401,11 +484,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
401
484
|
|
|
402
485
|
class FlowHttpClient {
|
|
403
486
|
http = inject(HttpClient);
|
|
487
|
+
document = inject(DOCUMENT);
|
|
404
488
|
cookieService = inject(FlowCookieService);
|
|
405
489
|
globalService = inject(GlobalService);
|
|
406
490
|
route = inject(ActivatedRoute);
|
|
407
491
|
router = inject(Router);
|
|
408
|
-
loading = 0;
|
|
409
492
|
environment = inject(FlowAppConfig);
|
|
410
493
|
pageLoadingComplete = new EventEmitter(false);
|
|
411
494
|
loadingSuccess = new EventEmitter(false);
|
|
@@ -413,27 +496,9 @@ class FlowHttpClient {
|
|
|
413
496
|
loadingFailure = new EventEmitter(false);
|
|
414
497
|
_pageLoading = 0;
|
|
415
498
|
_spinLoading = 0;
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
if ((this.recordPageLoading && value > this._pageLoading) || value < this._pageLoading) {
|
|
420
|
-
if (this._pageLoading == 0)
|
|
421
|
-
this.pageLoadingStart.emit();
|
|
422
|
-
this._pageLoading = value;
|
|
423
|
-
}
|
|
424
|
-
if (value <= 0) {
|
|
425
|
-
this.recordPageLoading = false;
|
|
426
|
-
this._pageLoading = 0;
|
|
427
|
-
this.pageLoadingComplete.emit();
|
|
428
|
-
}
|
|
429
|
-
if (this.loading <= 0 && changed)
|
|
430
|
-
this.loadingSuccess.emit();
|
|
431
|
-
}
|
|
432
|
-
get pageLoading() {
|
|
433
|
-
// if (this.globalService.browser.name=='Safari' && this.globalService.browser.version && parseInt(this.globalService.browser.version.substring(0,1)) < 9)
|
|
434
|
-
// return 0;
|
|
435
|
-
return this._pageLoading;
|
|
436
|
-
}
|
|
499
|
+
pageLoading = signal(0, ...(ngDevMode ? [{ debugName: "pageLoading" }] : []));
|
|
500
|
+
_loading = true;
|
|
501
|
+
loading = computed(() => this.pageLoading() > 0 ? true : false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
437
502
|
recordPageLoading = true;
|
|
438
503
|
onError = new EventEmitter(false);
|
|
439
504
|
_token;
|
|
@@ -460,81 +525,95 @@ class FlowHttpClient {
|
|
|
460
525
|
this.router.events.subscribe(event => {
|
|
461
526
|
if (event instanceof NavigationStart) {
|
|
462
527
|
this.recordPageLoading = true;
|
|
463
|
-
this.pageLoading
|
|
528
|
+
this.pageLoading.update(x => x + 1);
|
|
464
529
|
// jQuery("html, body").animate({ scrollTop: 0 }, 50);
|
|
465
530
|
}
|
|
466
531
|
if (event instanceof NavigationEnd || event instanceof NavigationCancel) {
|
|
467
|
-
timer(100).subscribe(r => this.pageLoading--);
|
|
532
|
+
timer(100).subscribe(r => this.pageLoading.update(x => Math.max(0, x--)));
|
|
533
|
+
}
|
|
534
|
+
});
|
|
535
|
+
effect(() => {
|
|
536
|
+
if (this.pageLoading() > 0 && this._loading) {
|
|
537
|
+
if (!this.document.body.classList.contains('loading'))
|
|
538
|
+
this.document.body.classList.add('loading');
|
|
539
|
+
}
|
|
540
|
+
if (this.pageLoading() == 0 && this._loading) {
|
|
541
|
+
if (this.document.body.classList.contains('loading'))
|
|
542
|
+
this.document.body.classList.remove('loading');
|
|
543
|
+
this._loading = false;
|
|
544
|
+
this.pageLoadingComplete.emit();
|
|
468
545
|
}
|
|
469
546
|
});
|
|
470
547
|
}
|
|
471
548
|
get(endpoint, url, options, showLoader = true) {
|
|
472
|
-
if (showLoader)
|
|
473
|
-
this.pageLoading
|
|
549
|
+
if (showLoader && this.recordPageLoading)
|
|
550
|
+
this.pageLoading.update(x => x + 1);
|
|
474
551
|
options = this.createAuthHeader(options);
|
|
475
552
|
let retValue = this.http.get(endpoint + url, options)
|
|
476
553
|
.pipe(catchError((err, caught) => {
|
|
477
554
|
this.recordPageLoading = false;
|
|
478
|
-
this.pageLoading
|
|
555
|
+
this.pageLoading.set(0);
|
|
479
556
|
this.onError.emit(err);
|
|
480
557
|
throw err;
|
|
481
558
|
}), shareReplay());
|
|
482
559
|
retValue
|
|
483
560
|
.subscribe(res => {
|
|
484
|
-
if (showLoader)
|
|
485
|
-
this.pageLoading
|
|
561
|
+
if (showLoader && this.recordPageLoading)
|
|
562
|
+
this.pageLoading.update(x => Math.max(0, x - 1));
|
|
486
563
|
});
|
|
487
564
|
return retValue;
|
|
488
565
|
}
|
|
489
566
|
delete(endpoint, url, options, showLoader = false) {
|
|
490
|
-
this.
|
|
567
|
+
if (showLoader && this.recordPageLoading)
|
|
568
|
+
this.pageLoading.update(x => x + 1);
|
|
491
569
|
options = this.createAuthHeader(options);
|
|
492
570
|
let retValue = this.http.delete(endpoint + url, options)
|
|
493
571
|
.pipe(catchError((err, caught) => {
|
|
494
572
|
this.recordPageLoading = false;
|
|
495
|
-
this.pageLoading
|
|
573
|
+
this.pageLoading.set(0);
|
|
496
574
|
this.onError.emit(err);
|
|
497
575
|
throw err;
|
|
498
576
|
}), shareReplay());
|
|
499
577
|
retValue
|
|
500
578
|
.subscribe(res => {
|
|
501
|
-
this.
|
|
579
|
+
if (showLoader && this.recordPageLoading)
|
|
580
|
+
this.pageLoading.update(x => Math.max(0, x - 1));
|
|
502
581
|
});
|
|
503
582
|
return retValue;
|
|
504
583
|
}
|
|
505
584
|
post(endpoint, url, data, options, showLoader = true) {
|
|
506
|
-
this.
|
|
585
|
+
if (showLoader && this.recordPageLoading)
|
|
586
|
+
this.pageLoading.update(x => x + 1);
|
|
507
587
|
options = this.createAuthHeader(options);
|
|
508
|
-
if (data !== null && !options.headers.get('Content-Type'))
|
|
509
|
-
options.headers = options.headers.set('Content-Type', 'application/json');
|
|
510
588
|
let retValue = this.http.post(endpoint + url, data, options)
|
|
511
589
|
.pipe(catchError((err, caught) => {
|
|
512
590
|
this.recordPageLoading = false;
|
|
513
|
-
this.pageLoading
|
|
591
|
+
this.pageLoading.set(0);
|
|
514
592
|
this.onError.emit(err);
|
|
515
593
|
throw err;
|
|
516
594
|
}), shareReplay());
|
|
517
595
|
retValue
|
|
518
596
|
.subscribe(res => {
|
|
519
|
-
this.
|
|
597
|
+
if (showLoader && this.recordPageLoading)
|
|
598
|
+
this.pageLoading.update(x => Math.max(0, x - 1));
|
|
520
599
|
});
|
|
521
600
|
return retValue;
|
|
522
601
|
}
|
|
523
602
|
put(endpoint, url, data, options, showLoader = false) {
|
|
524
|
-
this.
|
|
603
|
+
if (showLoader && this.recordPageLoading)
|
|
604
|
+
this.pageLoading.update(x => x + 1);
|
|
525
605
|
options = this.createAuthHeader(options);
|
|
526
|
-
if (data !== null && !options.headers.get('Content-Type'))
|
|
527
|
-
options.headers = options.headers.set('Content-Type', 'application/json');
|
|
528
606
|
let retValue = this.http.put(endpoint + url, data, options)
|
|
529
607
|
.pipe(catchError((err, caught) => {
|
|
530
608
|
this.recordPageLoading = false;
|
|
531
|
-
this.pageLoading
|
|
609
|
+
this.pageLoading.set(0);
|
|
532
610
|
this.onError.emit(err);
|
|
533
611
|
throw err;
|
|
534
612
|
}), shareReplay());
|
|
535
613
|
retValue
|
|
536
614
|
.subscribe(res => {
|
|
537
|
-
this.
|
|
615
|
+
if (showLoader && this.recordPageLoading)
|
|
616
|
+
this.pageLoading.update(x => Math.max(0, x - 1));
|
|
538
617
|
});
|
|
539
618
|
return retValue;
|
|
540
619
|
}
|
|
@@ -544,14 +623,16 @@ class FlowHttpClient {
|
|
|
544
623
|
if (!options.headers) {
|
|
545
624
|
options.headers = new HttpHeaders({
|
|
546
625
|
'Accept': 'application/json',
|
|
547
|
-
'flow-language-code': this.globalService.currentLanguage(),
|
|
548
|
-
'flow-edit-language-code': this.globalService.currentEditLanguage(),
|
|
549
626
|
});
|
|
627
|
+
if (this.globalService.currentLanguage())
|
|
628
|
+
options.headers.set('flow-language-code', this.globalService.currentLanguage());
|
|
629
|
+
if (this.globalService.currentEditLanguage())
|
|
630
|
+
options.headers.set('flow-edit-language-code', this.globalService.currentEditLanguage());
|
|
550
631
|
}
|
|
551
632
|
else {
|
|
552
633
|
if (!options.headers.get('Accept'))
|
|
553
634
|
options.headers = options.headers.set('Accept', 'application/json');
|
|
554
|
-
if (!options.headers.get('flow-language-code') && !options.excludeExtraHeaders)
|
|
635
|
+
if (!options.headers.get('flow-language-code') && !options.excludeExtraHeaders && this.globalService.currentLanguage())
|
|
555
636
|
options.headers = options.headers.set('flow-language-code', this.globalService.currentLanguage());
|
|
556
637
|
}
|
|
557
638
|
if (this.token && !options.excludeExtraHeaders) {
|
|
@@ -589,43 +670,20 @@ class FlowHttpClient {
|
|
|
589
670
|
jsUcfirst(string) {
|
|
590
671
|
return string.charAt(0).toUpperCase() + string.slice(1);
|
|
591
672
|
}
|
|
592
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
593
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
673
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowHttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
674
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowHttpClient, providedIn: 'root' });
|
|
594
675
|
}
|
|
595
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: FlowHttpClient, decorators: [{
|
|
596
677
|
type: Injectable,
|
|
597
678
|
args: [{
|
|
598
679
|
providedIn: 'root'
|
|
599
680
|
}]
|
|
600
681
|
}], ctorParameters: () => [] });
|
|
601
682
|
|
|
602
|
-
class SidebarContext {
|
|
603
|
-
close;
|
|
604
|
-
_context = signal({}, ...(ngDevMode ? [{ debugName: "_context" }] : []));
|
|
605
|
-
set context(value) {
|
|
606
|
-
this._context.set(value);
|
|
607
|
-
}
|
|
608
|
-
get context() {
|
|
609
|
-
return this._context;
|
|
610
|
-
}
|
|
611
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SidebarContext, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
612
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: SidebarContext, isStandalone: true, selector: "ng-component", inputs: { context: "context" }, ngImport: i0, template: ``, isInline: true });
|
|
613
|
-
}
|
|
614
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SidebarContext, decorators: [{
|
|
615
|
-
type: Component,
|
|
616
|
-
args: [{
|
|
617
|
-
template: ``
|
|
618
|
-
}]
|
|
619
|
-
}], propDecorators: { context: [{
|
|
620
|
-
type: Input
|
|
621
|
-
}] } });
|
|
622
|
-
|
|
623
683
|
class SidebarService {
|
|
624
|
-
router;
|
|
625
|
-
// public readonly router = inject(Router);
|
|
684
|
+
router = inject(Router);
|
|
626
685
|
sidebars = signal([], ...(ngDevMode ? [{ debugName: "sidebars" }] : []));
|
|
627
|
-
constructor(
|
|
628
|
-
this.router = router;
|
|
686
|
+
constructor() {
|
|
629
687
|
this.router.events.subscribe(event => {
|
|
630
688
|
if (event instanceof NavigationStart) {
|
|
631
689
|
this.closeSidebars();
|
|
@@ -642,7 +700,7 @@ class SidebarService {
|
|
|
642
700
|
options.position = options.position || defaultPosition;
|
|
643
701
|
options.ngStyle = options.ngStyle || {};
|
|
644
702
|
if (options.position == 'right' || options.position == 'left') {
|
|
645
|
-
options.ngStyle.width = options.ngStyle.width || '
|
|
703
|
+
options.ngStyle.width = options.ngStyle.width || '500px';
|
|
646
704
|
options.ngStyle.height = null;
|
|
647
705
|
options.ngStyle['max-width'] = '95%';
|
|
648
706
|
options.contentScrollable = signal(true, ...(ngDevMode ? [{ debugName: "contentScrollable" }] : []));
|
|
@@ -671,22 +729,26 @@ class SidebarService {
|
|
|
671
729
|
};
|
|
672
730
|
let pr = new Promise((resolve, reject) => {
|
|
673
731
|
if (component.prototype instanceof SidebarContext) {
|
|
674
|
-
obj.inputs =
|
|
675
|
-
obj.inputs.
|
|
732
|
+
obj.inputs = data || {};
|
|
733
|
+
obj.inputs.close = (value) => {
|
|
676
734
|
resolve(value);
|
|
677
735
|
this.closeSidebar(obj.id);
|
|
678
736
|
};
|
|
679
|
-
obj.inputs.
|
|
737
|
+
obj.inputs.setSize = (value) => {
|
|
680
738
|
this.setSize(value, options);
|
|
681
739
|
};
|
|
682
740
|
}
|
|
683
741
|
});
|
|
742
|
+
console.log(obj);
|
|
684
743
|
this.sidebars.update(s => [...this.sidebars(), obj]);
|
|
685
744
|
return pr;
|
|
686
745
|
}
|
|
687
746
|
openIframeSidebar(url, width = '400px') {
|
|
688
747
|
}
|
|
689
748
|
closeSidebars() {
|
|
749
|
+
this.sidebars().forEach(el => {
|
|
750
|
+
this.closeSidebar(el.id);
|
|
751
|
+
});
|
|
690
752
|
}
|
|
691
753
|
setSize(size, options) {
|
|
692
754
|
if (options.position == 'bottom' && size.height) {
|
|
@@ -702,48 +764,48 @@ class SidebarService {
|
|
|
702
764
|
options.ngStyle.width = size.width;
|
|
703
765
|
}
|
|
704
766
|
}
|
|
705
|
-
closeSidebar(id) {
|
|
767
|
+
closeSidebar(id = null) {
|
|
706
768
|
this.sidebars.update(s => {
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
769
|
+
let closee = id ? s.find(a => a.id == id) : s[0];
|
|
770
|
+
if (!closee)
|
|
771
|
+
return s;
|
|
710
772
|
closee.visible = false;
|
|
711
773
|
if (s.findIndex(a => a.visible) < 0) {
|
|
712
774
|
document.getElementsByTagName("html")[0].style['overscroll-behavior'] = 'initial';
|
|
713
775
|
document.getElementsByTagName("body")[0].style['overscroll-behavior'] = 'initial';
|
|
714
776
|
}
|
|
777
|
+
if (s.findIndex(a => !a.visible) >= 0)
|
|
778
|
+
s.splice(s.findIndex(a => !a.visible), 1);
|
|
715
779
|
return s;
|
|
716
780
|
});
|
|
717
781
|
}
|
|
718
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
719
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
782
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
783
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarService, providedIn: 'root' });
|
|
720
784
|
}
|
|
721
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
785
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarService, decorators: [{
|
|
722
786
|
type: Injectable,
|
|
723
787
|
args: [{
|
|
724
788
|
providedIn: 'root'
|
|
725
789
|
}]
|
|
726
|
-
}], ctorParameters: () => [
|
|
790
|
+
}], ctorParameters: () => [] });
|
|
727
791
|
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
if (this.columnSortOrdersDefinition.columnName == columnName) {
|
|
735
|
-
this.columnSortOrdersDefinition.columnSortOrder = this.columnSortOrdersDefinition.columnSortOrder === 'Ascending' ? 'Descending' : 'Ascending';
|
|
736
|
-
}
|
|
737
|
-
else {
|
|
738
|
-
this.columnSortOrdersDefinition.columnName = columnName;
|
|
739
|
-
this.columnSortOrdersDefinition.columnSortOrder = 'Ascending';
|
|
740
|
-
}
|
|
792
|
+
// The work of the pipe is handled in the tranform method with our pipe's class
|
|
793
|
+
class TranslationPipe {
|
|
794
|
+
constructor() { }
|
|
795
|
+
transform(value, htmlContentList, replacements = null) {
|
|
796
|
+
let signal = computed(() => Misc.formatString((htmlContentList() && htmlContentList()[value] ? htmlContentList()[value] : value), ...(replacements && Array.isArray(replacements()) ? replacements() : [])), ...(ngDevMode ? [{ debugName: "signal" }] : []));
|
|
797
|
+
return signal();
|
|
741
798
|
}
|
|
799
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
800
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.2", ngImport: i0, type: TranslationPipe, isStandalone: true, name: "translation" });
|
|
742
801
|
}
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
802
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationPipe, decorators: [{
|
|
803
|
+
type: Pipe,
|
|
804
|
+
args: [{
|
|
805
|
+
name: 'translation',
|
|
806
|
+
standalone: true,
|
|
807
|
+
}]
|
|
808
|
+
}], ctorParameters: () => [] });
|
|
747
809
|
|
|
748
810
|
class SignalrNotificationService {
|
|
749
811
|
cookieService = inject(FlowCookieService);
|
|
@@ -754,13 +816,14 @@ class SignalrNotificationService {
|
|
|
754
816
|
http = inject(FlowHttpClient);
|
|
755
817
|
translationService = inject(TranslationSharedService);
|
|
756
818
|
globalService = inject(GlobalService);
|
|
819
|
+
messageService = inject(MessageService);
|
|
757
820
|
connection;
|
|
758
|
-
messages = [];
|
|
821
|
+
messages = signal([], ...(ngDevMode ? [{ debugName: "messages" }] : []));
|
|
759
822
|
newMessage;
|
|
760
823
|
subscribedChannels = [];
|
|
761
824
|
onNotification = new EventEmitter(true);
|
|
762
825
|
connectionPromise;
|
|
763
|
-
unreadMessageCount = 0;
|
|
826
|
+
unreadMessageCount = signal(0, ...(ngDevMode ? [{ debugName: "unreadMessageCount" }] : []));
|
|
764
827
|
hasMorePages = false;
|
|
765
828
|
subscription;
|
|
766
829
|
environment = inject(FlowAppConfig);
|
|
@@ -823,8 +886,8 @@ class SignalrNotificationService {
|
|
|
823
886
|
window.FirebasePlugin.createChannel(channel);
|
|
824
887
|
}
|
|
825
888
|
subscribePushChannels() {
|
|
826
|
-
if (this.userService.currentUser.id && window.cordova && window.FirebasePlugin)
|
|
827
|
-
window.FirebasePlugin.subscribe(`${this.environment.application_id}${this.environment.production ? '' : '--debug'}--${this.environment.client_id.replace('::', '~')}--${this.userService.currentUser.id}`);
|
|
889
|
+
if (this.userService.currentUser().id && window.cordova && window.FirebasePlugin)
|
|
890
|
+
window.FirebasePlugin.subscribe(`${this.environment.application_id}${this.environment.production ? '' : '--debug'}--${this.environment.client_id.replace('::', '~')}--${this.userService.currentUser().id}`);
|
|
828
891
|
}
|
|
829
892
|
unsubscribePushChannels(user) {
|
|
830
893
|
if (user.id && window.cordova && window.FirebasePlugin)
|
|
@@ -837,8 +900,8 @@ class SignalrNotificationService {
|
|
|
837
900
|
this.interval.unsubscribe();
|
|
838
901
|
if (this.onlineStatus == 'ONLINE')
|
|
839
902
|
return;
|
|
840
|
-
// let options =
|
|
841
|
-
// {
|
|
903
|
+
// let options =
|
|
904
|
+
// {
|
|
842
905
|
// headers: {
|
|
843
906
|
// 'Authorization': `Bearer ${this.httpClient.token}`
|
|
844
907
|
// }
|
|
@@ -884,8 +947,12 @@ class SignalrNotificationService {
|
|
|
884
947
|
if (m.hideInToaster || this.mute)
|
|
885
948
|
return;
|
|
886
949
|
//here
|
|
887
|
-
this.messages.
|
|
888
|
-
|
|
950
|
+
this.messages.update(ctx => {
|
|
951
|
+
ctx.push(m);
|
|
952
|
+
return ctx;
|
|
953
|
+
});
|
|
954
|
+
this.messageService.add({ severity: m.class, detail: this.processReplacements(new TranslationPipe().transform(m.body, this.translationService.translations()), m.model) });
|
|
955
|
+
this.unreadMessageCount.update(c => c + 1);
|
|
889
956
|
this.playSound(m.sound);
|
|
890
957
|
});
|
|
891
958
|
}
|
|
@@ -949,7 +1016,7 @@ class SignalrNotificationService {
|
|
|
949
1016
|
// BrowserVersion: this.browser.getBrowser().version, //114.0.1823.79
|
|
950
1017
|
Route: window.location.pathname + window.location.search, // /access
|
|
951
1018
|
Host: window.location.host,
|
|
952
|
-
User: this.userService.currentUser.id ? this.userService.currentUser : null, //{roles: Array(0)}
|
|
1019
|
+
User: this.userService.currentUser().id ? this.userService.currentUser() : null, //{roles: Array(0)}
|
|
953
1020
|
//Id: this.instanceId, //"372d46d4-a48a-2ca9-c29a-acdeee6798ef"
|
|
954
1021
|
Language: this.globalService.currentLanguage(), // desktop
|
|
955
1022
|
// Lat: this.coordinates ? this.coordinates.coords.latitude : null, //null
|
|
@@ -958,7 +1025,7 @@ class SignalrNotificationService {
|
|
|
958
1025
|
// OsName: this.browser.getOS().name, //Windows
|
|
959
1026
|
// OsVersion: this.browser.getOS().version, //NT 10.0
|
|
960
1027
|
// PlatformType: this.browser.getPlatformType(),
|
|
961
|
-
// ScreenH: this.platform.height(), //721
|
|
1028
|
+
// ScreenH: this.platform.height(), //721
|
|
962
1029
|
// ScreenW: this.platform.width(), //1026
|
|
963
1030
|
// Version: packageInfo.version,
|
|
964
1031
|
};
|
|
@@ -972,23 +1039,23 @@ class SignalrNotificationService {
|
|
|
972
1039
|
obs.subscribe(res => {
|
|
973
1040
|
if (res.result.type !== 'error') {
|
|
974
1041
|
if (this.messagePageNo == 1) {
|
|
975
|
-
this.messages
|
|
1042
|
+
this.messages.update(c => c.filter(m => !m.saveToDb));
|
|
976
1043
|
}
|
|
977
|
-
this.messages
|
|
978
|
-
this.unreadMessageCount
|
|
1044
|
+
this.messages.update(c => c.concat(res.result.notifications));
|
|
1045
|
+
this.unreadMessageCount.set(res.result.unreadMessageCount);
|
|
979
1046
|
this.hasMorePages = res.result.hasMorePages;
|
|
980
1047
|
}
|
|
981
1048
|
});
|
|
982
1049
|
return obs;
|
|
983
1050
|
}
|
|
984
1051
|
setReadReceipt() {
|
|
985
|
-
this.unreadMessageCount
|
|
1052
|
+
this.unreadMessageCount.set(0);
|
|
986
1053
|
return this.httpClient.get(this.environment.endpoints['NotificationServer'], '/api/services/app/NotificationService/SetReadReceipt');
|
|
987
1054
|
}
|
|
988
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
989
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
1055
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SignalrNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1056
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SignalrNotificationService, providedIn: 'root' });
|
|
990
1057
|
}
|
|
991
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1058
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SignalrNotificationService, decorators: [{
|
|
992
1059
|
type: Injectable,
|
|
993
1060
|
args: [{
|
|
994
1061
|
providedIn: 'root'
|
|
@@ -1014,10 +1081,10 @@ class ApplicationSharedService {
|
|
|
1014
1081
|
getAdminClients() {
|
|
1015
1082
|
return this.http.get(this.endpoints['IdentityServer'], `/clients/getadminclients`);
|
|
1016
1083
|
}
|
|
1017
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1018
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
1084
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ApplicationSharedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1085
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ApplicationSharedService, providedIn: 'root' });
|
|
1019
1086
|
}
|
|
1020
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ApplicationSharedService, decorators: [{
|
|
1021
1088
|
type: Injectable,
|
|
1022
1089
|
args: [{
|
|
1023
1090
|
providedIn: 'root'
|
|
@@ -1036,52 +1103,15 @@ class TranslationSharedService {
|
|
|
1036
1103
|
globalService = inject(GlobalService);
|
|
1037
1104
|
cookieService = inject(FlowCookieService);
|
|
1038
1105
|
translations = signal({}, ...(ngDevMode ? [{ debugName: "translations" }] : []));
|
|
1106
|
+
userService = inject(UserAccountService);
|
|
1039
1107
|
languages = signal([], ...(ngDevMode ? [{ debugName: "languages" }] : []));
|
|
1040
1108
|
countries = signal([], ...(ngDevMode ? [{ debugName: "countries" }] : []));
|
|
1041
1109
|
editContent = signal(false, ...(ngDevMode ? [{ debugName: "editContent" }] : []));
|
|
1042
1110
|
translationObs;
|
|
1043
|
-
countryProvinceCityPlaceholder = [];
|
|
1111
|
+
countryProvinceCityPlaceholder = signal([], ...(ngDevMode ? [{ debugName: "countryProvinceCityPlaceholder" }] : []));
|
|
1044
1112
|
get endpoint() {
|
|
1045
1113
|
return this.environment.endpoints['TranslationServer'];
|
|
1046
1114
|
}
|
|
1047
|
-
get currentLanguage() {
|
|
1048
|
-
let value = this.cookieService.get('language');
|
|
1049
|
-
if (value)
|
|
1050
|
-
this.globalService.currentLanguage = value;
|
|
1051
|
-
return this.globalService.currentLanguage;
|
|
1052
|
-
}
|
|
1053
|
-
set currentLanguage(value) {
|
|
1054
|
-
if (!value)
|
|
1055
|
-
return;
|
|
1056
|
-
let languageChanged = false;
|
|
1057
|
-
if (this.globalService.currentLanguage != value)
|
|
1058
|
-
languageChanged = true;
|
|
1059
|
-
this.globalService.currentLanguage = value;
|
|
1060
|
-
this.cookieService.put('language', value);
|
|
1061
|
-
if (languageChanged) {
|
|
1062
|
-
this.onLanguageChanged.emit(value);
|
|
1063
|
-
this.getTranslations(true).subscribe(() => { });
|
|
1064
|
-
}
|
|
1065
|
-
}
|
|
1066
|
-
// public get currentEditLanguage() {
|
|
1067
|
-
// let value = this.cookieService.get('edit-language');
|
|
1068
|
-
// if (value)
|
|
1069
|
-
// this.globalService._currentEditLanguage = value;
|
|
1070
|
-
// return this.globalService._currentEditLanguage;
|
|
1071
|
-
// }
|
|
1072
|
-
// public set currentEditLanguage(value) {
|
|
1073
|
-
// if (!value)
|
|
1074
|
-
// return;
|
|
1075
|
-
// this.http.recordPageLoading = true;
|
|
1076
|
-
// let languageChanged = false;
|
|
1077
|
-
// if (this.globalService._currentEditLanguage != value)
|
|
1078
|
-
// languageChanged = true;
|
|
1079
|
-
// this.globalService._currentEditLanguage = value;
|
|
1080
|
-
// this.cookieService.put('edit-language', value);
|
|
1081
|
-
// if (languageChanged) {
|
|
1082
|
-
// this.onEditLanguageChanged.emit(value);
|
|
1083
|
-
// }
|
|
1084
|
-
// }
|
|
1085
1115
|
get currentLanguageObj() {
|
|
1086
1116
|
if (this.languages && this.languages[this.globalService.currentLanguage()])
|
|
1087
1117
|
return this.languages[this.globalService.currentLanguage()];
|
|
@@ -1090,14 +1120,15 @@ class TranslationSharedService {
|
|
|
1090
1120
|
}
|
|
1091
1121
|
constructor() {
|
|
1092
1122
|
console.log('constructing translations');
|
|
1093
|
-
this.
|
|
1094
|
-
|
|
1095
|
-
|
|
1096
|
-
|
|
1123
|
+
toObservable(this.globalService.currentLanguage).pipe(pairwise()).subscribe(([oldValue, newValue]) => {
|
|
1124
|
+
console.log(oldValue, newValue);
|
|
1125
|
+
if (oldValue != newValue)
|
|
1126
|
+
this.getTranslations(true);
|
|
1127
|
+
});
|
|
1097
1128
|
}
|
|
1098
1129
|
getTranslations(force = true) {
|
|
1099
1130
|
if (this.translationsLoaded() && !force)
|
|
1100
|
-
return of(this.translations);
|
|
1131
|
+
return of(this.translations());
|
|
1101
1132
|
if (this.translationObs && !force)
|
|
1102
1133
|
return this.translationObs;
|
|
1103
1134
|
if (localStorage['translations']) {
|
|
@@ -1111,13 +1142,15 @@ class TranslationSharedService {
|
|
|
1111
1142
|
.pipe(catchError(err => {
|
|
1112
1143
|
console.log('Error loading translations');
|
|
1113
1144
|
return of([]);
|
|
1114
|
-
}),
|
|
1145
|
+
}), shareReplay());
|
|
1146
|
+
this.translationObs.subscribe(res => {
|
|
1147
|
+
console.log('Translationsloaded and complete');
|
|
1115
1148
|
this.translations.set(res.result);
|
|
1116
1149
|
this.translationsLoaded.set(true);
|
|
1117
1150
|
this.onTranslationsLoaded.emit();
|
|
1118
1151
|
localStorage['translations'] = JSON.stringify(this.translations());
|
|
1119
1152
|
this.translationObs = null;
|
|
1120
|
-
})
|
|
1153
|
+
});
|
|
1121
1154
|
return this.translationObs;
|
|
1122
1155
|
}
|
|
1123
1156
|
getLanguages() {
|
|
@@ -1150,41 +1183,56 @@ class TranslationSharedService {
|
|
|
1150
1183
|
getHtmlContentByUrl(url) {
|
|
1151
1184
|
return this.http.get(this.endpoint, `/api/services/app/TranslationClientService/GetContentPage?applicationId=${encodeURIComponent(this.environment.application_id)}&url=${encodeURIComponent(url)}&languageCode=${this.globalService.currentLanguage()}`);
|
|
1152
1185
|
}
|
|
1153
|
-
getLocalization() {
|
|
1186
|
+
async getLocalization() {
|
|
1187
|
+
let loc = {};
|
|
1154
1188
|
if (this.cookieService.get('localization'))
|
|
1155
|
-
|
|
1189
|
+
loc = JSON.parse(this.cookieService.get('localization'));
|
|
1156
1190
|
else {
|
|
1157
|
-
|
|
1158
|
-
|
|
1191
|
+
loc = await firstValueFrom(this.http.get(this.endpoint, `/api/services/app/LocalizationService/GetWithClientIp`).pipe(map(t => t.result)));
|
|
1192
|
+
let coordsValue = await this.getNavigatorPosition().catch(e => null);
|
|
1193
|
+
if (coordsValue)
|
|
1194
|
+
loc.coords = { lat: coordsValue.coords.latitude, lng: coordsValue.coords.longitude };
|
|
1195
|
+
this.cookieService.put('localization', JSON.stringify(loc));
|
|
1159
1196
|
}
|
|
1197
|
+
this.globalService.currentLanguage.set(loc.language);
|
|
1198
|
+
return loc;
|
|
1199
|
+
}
|
|
1200
|
+
getNavigatorPosition(options) {
|
|
1201
|
+
return new Promise((resolve, reject) => navigator.geolocation.getCurrentPosition(resolve, reject, options));
|
|
1160
1202
|
}
|
|
1161
1203
|
getCountryCityPlaceholder(correlation) {
|
|
1162
|
-
|
|
1204
|
+
console.log(this.countryProvinceCityPlaceholder()[correlation]);
|
|
1205
|
+
return this.countryProvinceCityPlaceholder()[correlation];
|
|
1163
1206
|
}
|
|
1164
1207
|
setCountryCityPlaceholder(correlation, value) {
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
...ctx,
|
|
1208
|
+
console.log(value);
|
|
1209
|
+
this.countryProvinceCityPlaceholder.update(ctx => {
|
|
1210
|
+
ctx[correlation] = {
|
|
1211
|
+
...ctx[correlation],
|
|
1169
1212
|
countryCode: value.countryCode,
|
|
1170
1213
|
currentCountry: this.countries().find(c => c.code == value.countryCode),
|
|
1171
1214
|
city: value.city
|
|
1172
1215
|
};
|
|
1173
1216
|
if (value.provinceCode) {
|
|
1174
|
-
ctx.currentProvince = this.countryProvinceCityPlaceholder[correlation].currentCountry.provinces.find(p => p.code == value.provinceCode);
|
|
1175
|
-
ctx.provinceCode = ctx.currentProvince.code;
|
|
1176
|
-
ctx.provinceName = ctx.currentProvince.name;
|
|
1217
|
+
ctx[correlation].currentProvince = this.countryProvinceCityPlaceholder()[correlation].currentCountry.provinces.find(p => p.code == value.provinceCode);
|
|
1218
|
+
ctx[correlation].provinceCode = ctx[correlation].currentProvince.code;
|
|
1219
|
+
ctx[correlation].provinceName = ctx[correlation].currentProvince.name;
|
|
1177
1220
|
}
|
|
1178
1221
|
else {
|
|
1179
|
-
ctx.currentProvince = null;
|
|
1180
|
-
ctx.provinceCode = null;
|
|
1181
|
-
ctx.provinceName = value.provinceName;
|
|
1222
|
+
ctx[correlation].currentProvince = null;
|
|
1223
|
+
ctx[correlation].provinceCode = null;
|
|
1224
|
+
ctx[correlation].provinceName = value.provinceName;
|
|
1182
1225
|
}
|
|
1226
|
+
return ctx;
|
|
1183
1227
|
});
|
|
1228
|
+
console.log(this.countryProvinceCityPlaceholder()[correlation]);
|
|
1184
1229
|
}
|
|
1185
1230
|
validateCountryProvinceCity(correlation) {
|
|
1186
|
-
this.countryProvinceCityPlaceholder
|
|
1187
|
-
|
|
1231
|
+
this.countryProvinceCityPlaceholder.update(ctx => {
|
|
1232
|
+
ctx[correlation] = this.countryProvinceCityPlaceholder()[correlation] || {};
|
|
1233
|
+
return ctx;
|
|
1234
|
+
});
|
|
1235
|
+
let countryProvinceCity = this.countryProvinceCityPlaceholder()[correlation];
|
|
1188
1236
|
countryProvinceCity.countryError = false;
|
|
1189
1237
|
countryProvinceCity.provinceError = false;
|
|
1190
1238
|
countryProvinceCity.cityError = false;
|
|
@@ -1197,11 +1245,15 @@ class TranslationSharedService {
|
|
|
1197
1245
|
if (!countryProvinceCity.city) {
|
|
1198
1246
|
countryProvinceCity.cityError = true;
|
|
1199
1247
|
}
|
|
1248
|
+
this.countryProvinceCityPlaceholder.update(ctx => {
|
|
1249
|
+
ctx[correlation] = countryProvinceCity;
|
|
1250
|
+
return ctx;
|
|
1251
|
+
});
|
|
1200
1252
|
}
|
|
1201
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1202
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
1253
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationSharedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1254
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationSharedService, providedIn: 'root' });
|
|
1203
1255
|
}
|
|
1204
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationSharedService, decorators: [{
|
|
1205
1257
|
type: Injectable,
|
|
1206
1258
|
args: [{
|
|
1207
1259
|
providedIn: 'root'
|
|
@@ -1217,12 +1269,12 @@ class UserAccountService {
|
|
|
1217
1269
|
sidebarService = inject(SidebarService);
|
|
1218
1270
|
globalService = inject(GlobalService);
|
|
1219
1271
|
environment = inject(FlowAppConfig);
|
|
1220
|
-
currentUser = { claims: [] };
|
|
1272
|
+
currentUser = signal({ claims: [] }, ...(ngDevMode ? [{ debugName: "currentUser" }] : []));
|
|
1221
1273
|
_redirectTo;
|
|
1222
1274
|
source;
|
|
1223
1275
|
logoutTimer;
|
|
1224
1276
|
get browser() {
|
|
1225
|
-
return bowser.
|
|
1277
|
+
return bowser.getParser(window.navigator.userAgent);
|
|
1226
1278
|
}
|
|
1227
1279
|
get redirectTo() {
|
|
1228
1280
|
if (!this._redirectTo)
|
|
@@ -1267,16 +1319,16 @@ class UserAccountService {
|
|
|
1267
1319
|
getCurrentUser(force = false) {
|
|
1268
1320
|
if (this.currentUserObs)
|
|
1269
1321
|
return this.currentUserObs;
|
|
1270
|
-
if ((this.http.token && !this.currentUser.id) || force) {
|
|
1322
|
+
if ((this.http.token && !this.currentUser().id) || force) {
|
|
1271
1323
|
this.currentUserObs = this.getCurrentUserDetails(force).pipe(shareReplay$1());
|
|
1272
1324
|
;
|
|
1273
1325
|
this.currentUserObs.subscribe(res => {
|
|
1274
1326
|
if (res.result.status == 'valid')
|
|
1275
|
-
this.currentUser
|
|
1327
|
+
this.currentUser.set(res.result.user);
|
|
1276
1328
|
else
|
|
1277
1329
|
this.logout();
|
|
1278
1330
|
this.currentUserObs = null;
|
|
1279
|
-
if (this.currentUser.id)
|
|
1331
|
+
if (this.currentUser().id)
|
|
1280
1332
|
this.setLogOutTimer();
|
|
1281
1333
|
});
|
|
1282
1334
|
return this.currentUserObs;
|
|
@@ -1292,7 +1344,7 @@ class UserAccountService {
|
|
|
1292
1344
|
if (res.response == 'logged_in') {
|
|
1293
1345
|
console.log(res);
|
|
1294
1346
|
this.http.token = res.token;
|
|
1295
|
-
this.currentUser
|
|
1347
|
+
this.currentUser.set(res.userAccount);
|
|
1296
1348
|
this.cookieService.put('userAccount', JSON.stringify({ firstName: res.userAccount.firstName, lastName: res.userAccount.lastName, email: res.userAccount.email }));
|
|
1297
1349
|
this.onUserLoggedIn.emit(res.userAccount);
|
|
1298
1350
|
this.setLogOutTimer();
|
|
@@ -1307,7 +1359,7 @@ class UserAccountService {
|
|
|
1307
1359
|
}
|
|
1308
1360
|
processOtpToken(result) {
|
|
1309
1361
|
this.http.token = result.authToken;
|
|
1310
|
-
this.currentUser
|
|
1362
|
+
this.currentUser.set(result.user);
|
|
1311
1363
|
this.onUserLoggedIn.emit({ action: result.action, user: this.currentUser });
|
|
1312
1364
|
this.setLogOutTimer();
|
|
1313
1365
|
}
|
|
@@ -1331,7 +1383,7 @@ class UserAccountService {
|
|
|
1331
1383
|
`, model);
|
|
1332
1384
|
}
|
|
1333
1385
|
getCurrentUserDetails(force = false) {
|
|
1334
|
-
if (!this.currentUser.id || force) {
|
|
1386
|
+
if (!this.currentUser().id || force) {
|
|
1335
1387
|
let obs2;
|
|
1336
1388
|
let obs = this.http
|
|
1337
1389
|
.get(this.environment.endpoints['IdentityServer'], '/api/services/app/IdentityService/GetTokenModel')
|
|
@@ -1350,7 +1402,7 @@ class UserAccountService {
|
|
|
1350
1402
|
let postObj = { token: this.token, client_id: this.environment.client_id };
|
|
1351
1403
|
this.cookieService.remove('auth_token');
|
|
1352
1404
|
// this.http.post(this.environment.endpoints['IdentityServer'], '/connect/revocation', this.http.serializeToQueryString(postObj), { headers: headers } );
|
|
1353
|
-
this.currentUser
|
|
1405
|
+
this.currentUser.set({ claims: [] });
|
|
1354
1406
|
this.currentUserObs = null;
|
|
1355
1407
|
this.http.token = null;
|
|
1356
1408
|
this.onUserLoggedOut.emit(loggedOutUser);
|
|
@@ -1377,15 +1429,15 @@ class UserAccountService {
|
|
|
1377
1429
|
});
|
|
1378
1430
|
}
|
|
1379
1431
|
userHasPermission(perm) {
|
|
1380
|
-
return this.currentUser.permissions && this.currentUser.permissions.includes(perm);
|
|
1432
|
+
return this.currentUser().permissions && this.currentUser().permissions.includes(perm);
|
|
1381
1433
|
}
|
|
1382
1434
|
checkCurentUserClaims(route) {
|
|
1383
|
-
let obs = this.getCurrentUser(!this.currentUser.id);
|
|
1435
|
+
let obs = this.getCurrentUser(!this.currentUser().id);
|
|
1384
1436
|
return obs.pipe(map((result) => {
|
|
1385
1437
|
let retValue = !route.data.permissions; //currentRouteConfig.canActivate.length > 0;
|
|
1386
|
-
if (!route.data.permissions || !this.currentUser.id)
|
|
1438
|
+
if (!route.data.permissions || !this.currentUser().id)
|
|
1387
1439
|
return retValue;
|
|
1388
|
-
if (route.data.permissions && route.data.permissions.length == 0 && this.currentUser.id)
|
|
1440
|
+
if (route.data.permissions && route.data.permissions.length == 0 && this.currentUser().id)
|
|
1389
1441
|
return true;
|
|
1390
1442
|
console.log(result);
|
|
1391
1443
|
route.data.permissions.forEach(x => {
|
|
@@ -1405,10 +1457,10 @@ class UserAccountService {
|
|
|
1405
1457
|
requestLoginNameChange(model) {
|
|
1406
1458
|
return this.http.post(this.environment.endpoints['IdentityServer'], '/api/services/app/IdentityService/RequestLoginNameChange', model);
|
|
1407
1459
|
}
|
|
1408
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1409
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
1460
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UserAccountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1461
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UserAccountService, providedIn: 'root' });
|
|
1410
1462
|
}
|
|
1411
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1463
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: UserAccountService, decorators: [{
|
|
1412
1464
|
type: Injectable,
|
|
1413
1465
|
args: [{
|
|
1414
1466
|
providedIn: 'root'
|
|
@@ -1418,22 +1470,43 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
1418
1470
|
args: ['window:focus', ['$event']]
|
|
1419
1471
|
}] } });
|
|
1420
1472
|
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1473
|
+
class AppSettingsLoader {
|
|
1474
|
+
application_id;
|
|
1475
|
+
environment = inject(FlowAppConfig);
|
|
1476
|
+
userService = inject(UserAccountService);
|
|
1477
|
+
applicationService = inject(ApplicationSharedService);
|
|
1478
|
+
http = inject(FlowHttpClient);
|
|
1479
|
+
translationService = inject(TranslationSharedService);
|
|
1480
|
+
globalService = inject(GlobalService);
|
|
1481
|
+
constructor() {
|
|
1482
|
+
}
|
|
1483
|
+
canActivate(route, state) {
|
|
1484
|
+
return from(this.loadSettings()).pipe(map(res => true));
|
|
1426
1485
|
}
|
|
1427
|
-
|
|
1428
|
-
|
|
1486
|
+
async loadSettings() {
|
|
1487
|
+
console.log('loadSettings');
|
|
1488
|
+
if (this.globalService.loaded)
|
|
1489
|
+
return;
|
|
1490
|
+
await this.translationService.getLocalization();
|
|
1491
|
+
await firstValueFrom(this.userService.getCurrentUser());
|
|
1492
|
+
await firstValueFrom(this.translationService.getTranslations());
|
|
1493
|
+
await firstValueFrom(this.translationService.getCountries());
|
|
1494
|
+
await firstValueFrom(this.translationService.getLanguages());
|
|
1495
|
+
//moment.locale(this.translationService.currentLanguage);
|
|
1496
|
+
this.globalService.loaded = true;
|
|
1497
|
+
}
|
|
1498
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppSettingsLoader, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1499
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppSettingsLoader, providedIn: 'root' });
|
|
1429
1500
|
}
|
|
1430
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1431
|
-
type:
|
|
1501
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppSettingsLoader, decorators: [{
|
|
1502
|
+
type: Injectable,
|
|
1432
1503
|
args: [{
|
|
1433
|
-
|
|
1434
|
-
standalone: true
|
|
1504
|
+
providedIn: 'root'
|
|
1435
1505
|
}]
|
|
1436
1506
|
}], ctorParameters: () => [] });
|
|
1507
|
+
const AppSettingsLoaderService = (next, state) => {
|
|
1508
|
+
return inject(AppSettingsLoader).canActivate(next, state);
|
|
1509
|
+
};
|
|
1437
1510
|
|
|
1438
1511
|
// The work of the pipe is handled in the tranform method with our pipe's class
|
|
1439
1512
|
class SumPipe {
|
|
@@ -1443,10 +1516,10 @@ class SumPipe {
|
|
|
1443
1516
|
value.forEach(t => result += parseFloat(t[member]));
|
|
1444
1517
|
return result;
|
|
1445
1518
|
}
|
|
1446
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1447
|
-
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.
|
|
1519
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
|
|
1520
|
+
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.3.2", ngImport: i0, type: SumPipe, isStandalone: true, name: "sum" });
|
|
1448
1521
|
}
|
|
1449
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1522
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SumPipe, decorators: [{
|
|
1450
1523
|
type: Pipe,
|
|
1451
1524
|
args: [{
|
|
1452
1525
|
name: 'sum'
|
|
@@ -1461,6 +1534,7 @@ class ModalService {
|
|
|
1461
1534
|
// modal = inject(DialogModule);
|
|
1462
1535
|
confirmationService = inject(ConfirmationService);
|
|
1463
1536
|
messageService = inject(MessageService);
|
|
1537
|
+
globalService = inject(GlobalService);
|
|
1464
1538
|
constructor() { }
|
|
1465
1539
|
openConfirm(trans) {
|
|
1466
1540
|
this.confirmationService.confirm({
|
|
@@ -1506,16 +1580,28 @@ class ModalService {
|
|
|
1506
1580
|
acceptLabel: new TranslationPipe().transform(`ok`, this.translationService.translations)
|
|
1507
1581
|
});
|
|
1508
1582
|
}
|
|
1509
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1510
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.
|
|
1583
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1584
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ModalService, providedIn: 'root' });
|
|
1511
1585
|
}
|
|
1512
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1586
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ModalService, decorators: [{
|
|
1513
1587
|
type: Injectable,
|
|
1514
1588
|
args: [{
|
|
1515
1589
|
providedIn: 'root'
|
|
1516
1590
|
}]
|
|
1517
1591
|
}], ctorParameters: () => [] });
|
|
1518
1592
|
|
|
1593
|
+
class ViewTransitionService {
|
|
1594
|
+
currentTransition = signal(null, ...(ngDevMode ? [{ debugName: "currentTransition" }] : []));
|
|
1595
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ViewTransitionService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1596
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ViewTransitionService, providedIn: 'root' });
|
|
1597
|
+
}
|
|
1598
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ViewTransitionService, decorators: [{
|
|
1599
|
+
type: Injectable,
|
|
1600
|
+
args: [{
|
|
1601
|
+
providedIn: 'root'
|
|
1602
|
+
}]
|
|
1603
|
+
}] });
|
|
1604
|
+
|
|
1519
1605
|
class TranslationComponent {
|
|
1520
1606
|
_name = signal(null, ...(ngDevMode ? [{ debugName: "_name" }] : []));
|
|
1521
1607
|
name = input('name', ...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
@@ -1530,16 +1616,15 @@ class TranslationComponent {
|
|
|
1530
1616
|
// public _replacements: string[] = [];
|
|
1531
1617
|
_replacements = signal(null, ...(ngDevMode ? [{ debugName: "_replacements" }] : []));
|
|
1532
1618
|
replacements = input(null, ...(ngDevMode ? [{ debugName: "replacements" }] : []));
|
|
1619
|
+
translationService = inject(TranslationSharedService);
|
|
1620
|
+
sanitizer = inject(DomSanitizer);
|
|
1533
1621
|
editorOpen = signal(false, ...(ngDevMode ? [{ debugName: "editorOpen" }] : []));
|
|
1534
1622
|
saveSuccess = signal(false, ...(ngDevMode ? [{ debugName: "saveSuccess" }] : []));
|
|
1535
1623
|
editContent = signal(false, ...(ngDevMode ? [{ debugName: "editContent" }] : []));
|
|
1536
|
-
content = computed(() => {
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
editableContent = computed(() => this.sanitizer.bypassSecurityTrustHtml(new TranslationPipe().transform(this._name(), this.translationService.translations())), ...(ngDevMode ? [{ debugName: "editableContent" }] : []));
|
|
1540
|
-
translationService = inject(TranslationSharedService);
|
|
1624
|
+
content = computed(() => this.sanitizer.bypassSecurityTrustHtml(new TranslationPipe().transform(this.name(), this.translationService.translations, this.replacements)), ...(ngDevMode ? [{ debugName: "content" }] : []));
|
|
1625
|
+
editableContentView = computed(() => this.sanitizer.bypassSecurityTrustHtml(this.editableContent() || this.name()), ...(ngDevMode ? [{ debugName: "editableContentView" }] : []));
|
|
1626
|
+
editableContent = signal(null, ...(ngDevMode ? [{ debugName: "editableContent" }] : []));
|
|
1541
1627
|
router = inject(Router);
|
|
1542
|
-
sanitizer = inject(DomSanitizer);
|
|
1543
1628
|
userService = inject(UserAccountService);
|
|
1544
1629
|
route = inject(ActivatedRoute);
|
|
1545
1630
|
globalService = inject(GlobalService);
|
|
@@ -1550,8 +1635,11 @@ class TranslationComponent {
|
|
|
1550
1635
|
}
|
|
1551
1636
|
changeEdit() {
|
|
1552
1637
|
this.userService.getCurrentUser().subscribe((res) => {
|
|
1553
|
-
this.
|
|
1554
|
-
|
|
1638
|
+
this.editContent.set(this.userService.currentUser().permissions &&
|
|
1639
|
+
this.userService.currentUser().permissions.indexOf('manageTranslations') >= 0);
|
|
1640
|
+
if (this.editContent())
|
|
1641
|
+
this.editableContent.set(this.translationService.translations()[this.name()] || '');
|
|
1642
|
+
this.editorOpen.set(true);
|
|
1555
1643
|
});
|
|
1556
1644
|
}
|
|
1557
1645
|
// navigateUrl(url: string) {
|
|
@@ -1563,37 +1651,37 @@ class TranslationComponent {
|
|
|
1563
1651
|
openEditor() {
|
|
1564
1652
|
if (!this.translationService.editContent())
|
|
1565
1653
|
return;
|
|
1566
|
-
this.editorOpen.set(true);
|
|
1567
1654
|
}
|
|
1568
1655
|
closeEditor() {
|
|
1569
1656
|
this.editorOpen.set(false);
|
|
1570
1657
|
}
|
|
1571
1658
|
quickSaveContent() {
|
|
1572
|
-
this.translationService.quickSaveHtmlContent(this.name(), this.
|
|
1659
|
+
this.translationService.quickSaveHtmlContent(this.name(), this.editableContent()).subscribe((res) => {
|
|
1573
1660
|
if (res.result === true) {
|
|
1574
1661
|
this.closeEditor();
|
|
1575
1662
|
}
|
|
1576
1663
|
});
|
|
1577
1664
|
}
|
|
1578
1665
|
handleSave(e) {
|
|
1666
|
+
console.log(e);
|
|
1579
1667
|
if (e.ctrlKey && (e.which == 83)) {
|
|
1580
1668
|
e.preventDefault();
|
|
1581
1669
|
this.quickSaveContent();
|
|
1582
1670
|
}
|
|
1583
1671
|
}
|
|
1584
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1585
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
1672
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1673
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: TranslationComponent, isStandalone: true, selector: "translate", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, replacements: { classPropertyName: "replacements", publicName: "replacements", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (translationService.translationsLoaded()) {\r\n<span (click)=\"openEditor()\" style=\"position:relative\">\r\n @if(!editContent()){<span (dblclick)=\"changeEdit()\" [innerHtml]=\"content()\"></span>}\r\n</span>\r\n} @else {\r\n<p-skeleton></p-skeleton>\r\n}\r\n\r\n@if (editContent()) {\r\n<span class=\"html-edit\">\r\n <a class=\"btn-show-edit\" (click)=\"openEditor()\"><i class=\"fa fa-edit\"></i>\r\n {{name()}}</a>\r\n <span (click)=\"openEditor()\" [innerHtml]=\"editableContentView()\"></span>\r\n</span>\r\n}\r\n@if(editorOpen()) {\r\n<div class=\"content-editor\">\r\n <textarea [(ngModel)]=\"editableContent\" pTextarea [pAutoFocus]=\"true\" style=\"resize:none; height: 150px;\" class=\"w-full width: 100%\"\r\n (keydown)=\"handleSave($event)\"></textarea>\r\n\r\n <div class=\"modal-footer\">\r\n @if(saveSuccess()){\r\n <span class=\"text-muted\"><i class=\"fa fa-save\"></i> Datele au fost salvate</span>\r\n }\r\n <button pButton (click)=\"closeEditor()\">Anuleaza</button>\r\n <button pButton (click)=\"quickSaveContent()\">Salveaza modificari</button>\r\n </div>\r\n\r\n <style type=\"text/css\">\r\n body {\r\n margin-bottom: 300px\r\n }\r\n </style>\r\n</div>\r\n}", styles: [".content-editor{position:fixed;z-index:100001;bottom:0;left:0;right:0;background-color:#fff}.html-edit:hover *{opacity:.8}.btn-show-edit{display:inherit}.btn-show-edit{display:none;background-color:#c87f0a;border-radius:2px;padding:3px;font-size:8pt;z-index:10000;white-space:nowrap;color:#fff!important;position:absolute;left:5px;top:-12px;opacity:1!important}.html-edit{cursor:pointer}.html-edit-control{height:150px!important;font-family:Courier New;font-size:12px;width:100%!important;display:block!important}\n", "body{margin-bottom:300px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SkeletonModule }, { kind: "component", type: i2.Skeleton, selector: "p-skeleton", inputs: ["styleClass", "shape", "animation", "borderRadius", "size", "width", "height"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: TextareaModule }, { kind: "directive", type: i4.Textarea, selector: "[pTextarea], [pInputTextarea]", inputs: ["autoResize", "pSize", "variant", "fluid", "invalid"], outputs: ["onResize"] }, { kind: "ngmodule", type: AutoFocusModule }, { kind: "directive", type: i5.AutoFocus, selector: "[pAutoFocus]", inputs: ["pAutoFocus"] }] });
|
|
1586
1674
|
}
|
|
1587
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1675
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: TranslationComponent, decorators: [{
|
|
1588
1676
|
type: Component,
|
|
1589
|
-
args: [{ selector: 'translate', standalone: true, imports: [CommonModule, FormsModule, SkeletonModule], template: "@if (translationService.translationsLoaded()) {\r\n<span (click)=\"openEditor()\" style=\"position:relative\">\r\n @if(!
|
|
1677
|
+
args: [{ selector: 'translate', standalone: true, imports: [CommonModule, FormsModule, SkeletonModule, ButtonModule, TextareaModule, AutoFocusModule], template: "@if (translationService.translationsLoaded()) {\r\n<span (click)=\"openEditor()\" style=\"position:relative\">\r\n @if(!editContent()){<span (dblclick)=\"changeEdit()\" [innerHtml]=\"content()\"></span>}\r\n</span>\r\n} @else {\r\n<p-skeleton></p-skeleton>\r\n}\r\n\r\n@if (editContent()) {\r\n<span class=\"html-edit\">\r\n <a class=\"btn-show-edit\" (click)=\"openEditor()\"><i class=\"fa fa-edit\"></i>\r\n {{name()}}</a>\r\n <span (click)=\"openEditor()\" [innerHtml]=\"editableContentView()\"></span>\r\n</span>\r\n}\r\n@if(editorOpen()) {\r\n<div class=\"content-editor\">\r\n <textarea [(ngModel)]=\"editableContent\" pTextarea [pAutoFocus]=\"true\" style=\"resize:none; height: 150px;\" class=\"w-full width: 100%\"\r\n (keydown)=\"handleSave($event)\"></textarea>\r\n\r\n <div class=\"modal-footer\">\r\n @if(saveSuccess()){\r\n <span class=\"text-muted\"><i class=\"fa fa-save\"></i> Datele au fost salvate</span>\r\n }\r\n <button pButton (click)=\"closeEditor()\">Anuleaza</button>\r\n <button pButton (click)=\"quickSaveContent()\">Salveaza modificari</button>\r\n </div>\r\n\r\n <style type=\"text/css\">\r\n body {\r\n margin-bottom: 300px\r\n }\r\n </style>\r\n</div>\r\n}", styles: [".content-editor{position:fixed;z-index:100001;bottom:0;left:0;right:0;background-color:#fff}.html-edit:hover *{opacity:.8}.btn-show-edit{display:inherit}.btn-show-edit{display:none;background-color:#c87f0a;border-radius:2px;padding:3px;font-size:8pt;z-index:10000;white-space:nowrap;color:#fff!important;position:absolute;left:5px;top:-12px;opacity:1!important}.html-edit{cursor:pointer}.html-edit-control{height:150px!important;font-family:Courier New;font-size:12px;width:100%!important;display:block!important}\n", "body{margin-bottom:300px}\n"] }]
|
|
1590
1678
|
}], ctorParameters: () => [] });
|
|
1591
1679
|
|
|
1592
1680
|
class InternationalPhoneComponent {
|
|
1593
1681
|
countriesList = [];
|
|
1594
1682
|
countryFlag;
|
|
1595
1683
|
localizationCountry;
|
|
1596
|
-
selectedCountryCode;
|
|
1684
|
+
selectedCountryCode = signal(null, ...(ngDevMode ? [{ debugName: "selectedCountryCode" }] : []));
|
|
1597
1685
|
phoneNo;
|
|
1598
1686
|
//private _phoneNumber = computed(() => this.phoneNumber());
|
|
1599
1687
|
// private _phoneNumber = signal('')
|
|
@@ -1608,7 +1696,7 @@ class InternationalPhoneComponent {
|
|
|
1608
1696
|
// this.onPhoneInput(this._phoneNumber);
|
|
1609
1697
|
// }
|
|
1610
1698
|
get currentPhoneNumber() {
|
|
1611
|
-
let phoneDialCode = this.countriesList.find(ctr => ctr.code == this.selectedCountryCode).dialCode;
|
|
1699
|
+
let phoneDialCode = this.countriesList.find(ctr => ctr.code == this.selectedCountryCode()).dialCode;
|
|
1612
1700
|
if (this.phoneNo && phoneDialCode) {
|
|
1613
1701
|
return phoneDialCode + this.phoneNo;
|
|
1614
1702
|
}
|
|
@@ -1626,7 +1714,7 @@ class InternationalPhoneComponent {
|
|
|
1626
1714
|
// this.onPhoneInput(this._phoneNumber());
|
|
1627
1715
|
// });
|
|
1628
1716
|
effect(() => {
|
|
1629
|
-
this._phoneNumber.
|
|
1717
|
+
this._phoneNumber.set(this.phoneNumber() || '');
|
|
1630
1718
|
this.onPhoneInput(this._phoneNumber());
|
|
1631
1719
|
}, { allowSignalWrites: true });
|
|
1632
1720
|
}
|
|
@@ -1639,24 +1727,24 @@ class InternationalPhoneComponent {
|
|
|
1639
1727
|
if (this.countriesList.length > 0)
|
|
1640
1728
|
return of(this.countriesList);
|
|
1641
1729
|
this.countriesObs = this.translationService.getCountries().pipe(share());
|
|
1642
|
-
this.countriesObs.subscribe(res => {
|
|
1643
|
-
if (!this.selectedCountryCode) {
|
|
1644
|
-
this.translationService.getLocalization()
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
});
|
|
1730
|
+
this.countriesObs.subscribe(async (res) => {
|
|
1731
|
+
if (!this.selectedCountryCode()) {
|
|
1732
|
+
let r = await this.translationService.getLocalization();
|
|
1733
|
+
this.countriesList = res.result;
|
|
1734
|
+
this.countriesList.forEach(c => c.displayName = `${c.name} ${this.getFlagEmoji(c.code)} (${c.dialCode})`);
|
|
1735
|
+
this.localizationCountry = r.result.country;
|
|
1736
|
+
if (this.localizationCountry)
|
|
1737
|
+
this.onSelectionChange(this.localizationCountry);
|
|
1651
1738
|
}
|
|
1652
1739
|
});
|
|
1653
1740
|
return this.countriesObs;
|
|
1654
1741
|
}
|
|
1655
1742
|
onSelectionChange(selectedCode) {
|
|
1656
|
-
|
|
1743
|
+
if (!selectedCode)
|
|
1744
|
+
return;
|
|
1657
1745
|
this.selectedCountry = this.countriesList.find(c => c.code == selectedCode);
|
|
1658
|
-
|
|
1659
|
-
this.selectedCountryCode
|
|
1746
|
+
console.log(this.selectedCountry);
|
|
1747
|
+
this.selectedCountryCode.set(this.selectedCountry.code);
|
|
1660
1748
|
}
|
|
1661
1749
|
changePhoneNumber() {
|
|
1662
1750
|
if (this._phoneNumber() != this.currentPhoneNumber) {
|
|
@@ -1669,7 +1757,7 @@ class InternationalPhoneComponent {
|
|
|
1669
1757
|
}
|
|
1670
1758
|
onPhoneInput(pastedNumber = this.phoneNo) {
|
|
1671
1759
|
this.getCountries().subscribe(c => {
|
|
1672
|
-
this.onSelectionChange(this.selectedCountryCode);
|
|
1760
|
+
this.onSelectionChange(this.selectedCountryCode());
|
|
1673
1761
|
if (!pastedNumber)
|
|
1674
1762
|
return;
|
|
1675
1763
|
pastedNumber = pastedNumber.replace(/[^0-9+]/g, '');
|
|
@@ -1693,15 +1781,17 @@ class InternationalPhoneComponent {
|
|
|
1693
1781
|
.reduce((a, b) => `${a}${b}`);
|
|
1694
1782
|
return this.countryFlag;
|
|
1695
1783
|
}
|
|
1696
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1697
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
1784
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: InternationalPhoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1785
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.2", type: InternationalPhoneComponent, isStandalone: true, selector: "payvent-international-phone", inputs: { phoneNumber: { classPropertyName: "phoneNumber", publicName: "phoneNumber", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { phoneNumber: "phoneNumberChange", phoneNumberChange: "phoneNumberChange" }, ngImport: i0, template: "<div class=\"mb-3\">\r\n <p-inputgroup>\r\n <p-select style=\"min-width:120px; flex:0\" resetFilterOnHide=\"true\" optionLabel=\"dialCode\" filter=\"true\"\r\n optionValue=\"code\" placeholder=\"--\" [options]=\"countriesList\" name=\"country\" [(ngModel)]=\"selectedCountryCode\"\r\n (onChange)=\"onPhoneInput()\" #country=\"ngModel\">\r\n <ng-template let-country #item>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>({{ country.dialCode }}) {{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template let-country #selectedItem>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.dialCode }}</div>\r\n </div>\r\n </ng-template>\r\n </p-select>\r\n <input style=\"border-radius: 0 6px 6px 0; border-left-width: 0;\" fluid=\"true\" pInputText type=\"phone\"\r\n [(ngModel)]=\"phoneNo\" (input)=\"onPhoneInput()\" phone class=\"form-control\" #phone=\"ngModel\"\r\n (paste)=\"onPaste($event)\" name=\"phone\" placeholder=\"Please enter phone number\" />\r\n </p-inputgroup>\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i2$2.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "ngmodule", type: InputGroupModule }, { kind: "component", type: i3.InputGroup, selector: "p-inputgroup, p-inputGroup, p-input-group", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i4$1.InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }] });
|
|
1698
1786
|
}
|
|
1699
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1787
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: InternationalPhoneComponent, decorators: [{
|
|
1700
1788
|
type: Component,
|
|
1701
1789
|
args: [{ selector: 'payvent-international-phone', standalone: true, imports: [
|
|
1702
1790
|
CommonModule,
|
|
1703
1791
|
FormsModule,
|
|
1704
|
-
|
|
1792
|
+
SelectModule,
|
|
1793
|
+
InputGroupModule,
|
|
1794
|
+
InputTextModule,
|
|
1705
1795
|
// CardModule,
|
|
1706
1796
|
// RippleModule,
|
|
1707
1797
|
// ButtonModule,
|
|
@@ -1710,7 +1800,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
1710
1800
|
// TagModule,
|
|
1711
1801
|
// AvatarModule,
|
|
1712
1802
|
// AvatarGroupModule,
|
|
1713
|
-
], template: "<div class=\"mb-3\">\r\n <select style=\"width:
|
|
1803
|
+
], template: "<div class=\"mb-3\">\r\n <p-inputgroup>\r\n <p-select style=\"min-width:120px; flex:0\" resetFilterOnHide=\"true\" optionLabel=\"dialCode\" filter=\"true\"\r\n optionValue=\"code\" placeholder=\"--\" [options]=\"countriesList\" name=\"country\" [(ngModel)]=\"selectedCountryCode\"\r\n (onChange)=\"onPhoneInput()\" #country=\"ngModel\">\r\n <ng-template let-country #item>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>({{ country.dialCode }}) {{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template let-country #selectedItem>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.dialCode }}</div>\r\n </div>\r\n </ng-template>\r\n </p-select>\r\n <input style=\"border-radius: 0 6px 6px 0; border-left-width: 0;\" fluid=\"true\" pInputText type=\"phone\"\r\n [(ngModel)]=\"phoneNo\" (input)=\"onPhoneInput()\" phone class=\"form-control\" #phone=\"ngModel\"\r\n (paste)=\"onPaste($event)\" name=\"phone\" placeholder=\"Please enter phone number\" />\r\n </p-inputgroup>\r\n</div>" }]
|
|
1714
1804
|
}], ctorParameters: () => [] });
|
|
1715
1805
|
|
|
1716
1806
|
class CountryProvinceCityComponent {
|
|
@@ -1728,46 +1818,60 @@ class CountryProvinceCityComponent {
|
|
|
1728
1818
|
}
|
|
1729
1819
|
constructor() { }
|
|
1730
1820
|
ngOnInit() {
|
|
1731
|
-
this.translationService.countryProvinceCityPlaceholder
|
|
1821
|
+
this.translationService.countryProvinceCityPlaceholder.update(ctx => {
|
|
1822
|
+
ctx[this.correlation()] = ctx[this.correlation()] || {};
|
|
1823
|
+
return ctx;
|
|
1824
|
+
});
|
|
1732
1825
|
}
|
|
1733
1826
|
// emitOutput() {
|
|
1734
1827
|
// this.valueChange.emit({ countryCode: this.currentCountryCode, countryName: this.currentCountryName, provinceCode: this.currentProvinceCode, provinceName: this.currentProvinceName });
|
|
1735
1828
|
// }
|
|
1736
1829
|
setCountry() {
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1745
|
-
|
|
1830
|
+
this.translationService.countryProvinceCityPlaceholder.update(p => {
|
|
1831
|
+
p[this.correlation()] =
|
|
1832
|
+
{
|
|
1833
|
+
...p[this.correlation()],
|
|
1834
|
+
provinceCode: undefined,
|
|
1835
|
+
provinceName: undefined,
|
|
1836
|
+
currentProvince: undefined,
|
|
1837
|
+
city: undefined
|
|
1838
|
+
};
|
|
1839
|
+
return p;
|
|
1840
|
+
});
|
|
1841
|
+
this.translationService.setCountryCityPlaceholder(this.correlation(), this.translationService.countryProvinceCityPlaceholder()[this.correlation()]);
|
|
1746
1842
|
}
|
|
1747
1843
|
setProvince() {
|
|
1748
|
-
|
|
1749
|
-
|
|
1750
|
-
|
|
1751
|
-
|
|
1752
|
-
|
|
1753
|
-
|
|
1844
|
+
this.translationService.countryProvinceCityPlaceholder.update(p => {
|
|
1845
|
+
p[this.correlation()] = {
|
|
1846
|
+
...p[this.correlation()],
|
|
1847
|
+
city: undefined
|
|
1848
|
+
};
|
|
1849
|
+
return p;
|
|
1850
|
+
});
|
|
1851
|
+
this.translationService.setCountryCityPlaceholder(this.correlation(), this.translationService.countryProvinceCityPlaceholder()[this.correlation()]);
|
|
1754
1852
|
}
|
|
1755
1853
|
ngOnDestroy() {
|
|
1756
1854
|
this.translationService.countryProvinceCityPlaceholder[this.correlation()] = undefined;
|
|
1757
1855
|
}
|
|
1758
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
1759
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
1856
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CountryProvinceCityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1857
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: CountryProvinceCityComponent, isStandalone: true, selector: "payvent-country-province-city", inputs: { correlation: { classPropertyName: "correlation", publicName: "correlation", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (mode() == 'country') {\r\n<p-select (onChange)=\"setCountry()\" filter=\"true\" optionValue=\"code\" optionLabel=\"name\" resetFilterOnHide=\"true\"\r\n placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\" fluid\r\n [options]=\"translationService.countries()\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].countryCode\"\r\n class=\"form-control\">\r\n <ng-template let-country #item>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template let-country #selectedItem>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n}\r\n\r\n@if(mode()=='province') {\r\n@if(translationService.countryProvinceCityPlaceholder()[this.correlation()]?.currentCountry?.provinces?.length > 0) {\r\n\r\n<p-select placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\" (onChange)=\"setProvince()\"\r\n resetFilterOnHide=\"true\" filter=\"true\" fluid optionValue=\"code\" optionLabel=\"name\"\r\n [options]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].currentCountry?.provinces | orderBy: 'name'\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].provinceCode\">\r\n</p-select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentCountry?.provinces?.length > 0)) {\r\n<input type=\"text\" pInputText fluid\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].provinceName\"\r\n class=\"form-control\" #currentPName=\"ngModel\" name=\"currentPName\" required />\r\n}\r\n}\r\n\r\n@if(mode()=='city') {\r\n@if(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities?.length > 0) {\r\n\r\n<p-select fluid placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\"\r\n [options]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].city\">\r\n</p-select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities?.length > 0)) {\r\n\r\n<input type=\"text\" [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].city\"\r\n class=\"form-control\" #currentC=\"ngModel\" name=\"currentC\" pInputText fluid required />\r\n}\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OrderModule }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i2$2.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "panelStyle", "styleClass", "panelStyleClass", "readonly", "editable", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "filterValue", "options", "appendTo"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "pipe", type: TranslationPipe, name: "translation" }, { kind: "pipe", type: i3$1.OrderPipe, name: "orderBy" }] });
|
|
1760
1858
|
}
|
|
1761
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
1859
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CountryProvinceCityComponent, decorators: [{
|
|
1762
1860
|
type: Component,
|
|
1763
|
-
args: [{ selector: 'payvent-country-province-city', standalone: true, imports: [
|
|
1861
|
+
args: [{ selector: 'payvent-country-province-city', standalone: true, imports: [
|
|
1862
|
+
CommonModule,
|
|
1863
|
+
FormsModule,
|
|
1864
|
+
TranslationPipe,
|
|
1865
|
+
OrderModule,
|
|
1866
|
+
SelectModule,
|
|
1867
|
+
InputText
|
|
1868
|
+
], template: "@if (mode() == 'country') {\r\n<p-select (onChange)=\"setCountry()\" filter=\"true\" optionValue=\"code\" optionLabel=\"name\" resetFilterOnHide=\"true\"\r\n placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\" fluid\r\n [options]=\"translationService.countries()\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].countryCode\"\r\n class=\"form-control\">\r\n <ng-template let-country #item>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n <ng-template let-country #selectedItem>\r\n <div class=\"flex items-center gap-2\">\r\n <img [src]=\"'/assets/ngx-payvent-shared/flags/' + country.code.toLowerCase() + '.png'\"\r\n [class]=\"'flag flag-' + country.code.toLowerCase()\" style=\"width: 18px\" />\r\n <div>{{ country.name }}</div>\r\n </div>\r\n </ng-template>\r\n</p-select>\r\n}\r\n\r\n@if(mode()=='province') {\r\n@if(translationService.countryProvinceCityPlaceholder()[this.correlation()]?.currentCountry?.provinces?.length > 0) {\r\n\r\n<p-select placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\" (onChange)=\"setProvince()\"\r\n resetFilterOnHide=\"true\" filter=\"true\" fluid optionValue=\"code\" optionLabel=\"name\"\r\n [options]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].currentCountry?.provinces | orderBy: 'name'\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].provinceCode\">\r\n</p-select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentCountry?.provinces?.length > 0)) {\r\n<input type=\"text\" pInputText fluid\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].provinceName\"\r\n class=\"form-control\" #currentPName=\"ngModel\" name=\"currentPName\" required />\r\n}\r\n}\r\n\r\n@if(mode()=='city') {\r\n@if(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities?.length > 0) {\r\n\r\n<p-select fluid placeholder=\"{{'pleaseSelect' | translation: translationService.translations}}\"\r\n [options]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].city\">\r\n</p-select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder()[this.correlation()].currentProvince?.cities?.length > 0)) {\r\n\r\n<input type=\"text\" [(ngModel)]=\"translationService.countryProvinceCityPlaceholder()[this.correlation()].city\"\r\n class=\"form-control\" #currentC=\"ngModel\" name=\"currentC\" pInputText fluid required />\r\n}\r\n}" }]
|
|
1764
1869
|
}], ctorParameters: () => [] });
|
|
1765
1870
|
|
|
1766
|
-
class LoginFormComponent {
|
|
1767
|
-
context = model({}, ...(ngDevMode ? [{ debugName: "context" }] : []));
|
|
1871
|
+
class LoginFormComponent extends SidebarContext {
|
|
1768
1872
|
myForm;
|
|
1769
1873
|
// @ViewChild('cd', { static: false }) private countdown: CountdownComponent;
|
|
1770
|
-
allowAccountCreation =
|
|
1874
|
+
allowAccountCreation = true;
|
|
1771
1875
|
tokenType = input('TEMPORARY', ...(ngDevMode ? [{ debugName: "tokenType" }] : []));
|
|
1772
1876
|
clientId = input(null, ...(ngDevMode ? [{ debugName: "clientId" }] : []));
|
|
1773
1877
|
type = input('EMAIL', ...(ngDevMode ? [{ debugName: "type" }] : []));
|
|
@@ -1783,6 +1887,7 @@ class LoginFormComponent {
|
|
|
1783
1887
|
provincesList = [];
|
|
1784
1888
|
countriesList = [];
|
|
1785
1889
|
loading = signal(false, ...(ngDevMode ? [{ debugName: "loading" }] : []));
|
|
1890
|
+
otpLoading = signal(false, ...(ngDevMode ? [{ debugName: "otpLoading" }] : []));
|
|
1786
1891
|
otpSuccess = signal(false, ...(ngDevMode ? [{ debugName: "otpSuccess" }] : []));
|
|
1787
1892
|
contextResponse;
|
|
1788
1893
|
responseStatus;
|
|
@@ -1823,16 +1928,19 @@ class LoginFormComponent {
|
|
|
1823
1928
|
cookieService = inject(FlowCookieService);
|
|
1824
1929
|
globalService = inject(GlobalService);
|
|
1825
1930
|
constructor() {
|
|
1931
|
+
super();
|
|
1826
1932
|
}
|
|
1827
1933
|
ngOnInit() {
|
|
1828
1934
|
var result = {};
|
|
1829
1935
|
this.context.update(ctx => ({
|
|
1830
1936
|
...ctx,
|
|
1937
|
+
user: {},
|
|
1831
1938
|
type: ctx.type ?? this.type(),
|
|
1832
1939
|
tokenType: ctx.tokenType ?? this.tokenType(),
|
|
1833
1940
|
action: ctx.action ?? 'LOGIN',
|
|
1834
|
-
allowAccountCreation: typeof ctx.allowAccountCreation == 'boolean' ? ctx.allowAccountCreation : this.allowAccountCreation
|
|
1941
|
+
allowAccountCreation: typeof ctx.allowAccountCreation == 'boolean' ? ctx.allowAccountCreation : this.allowAccountCreation
|
|
1835
1942
|
}));
|
|
1943
|
+
console.log(this.context());
|
|
1836
1944
|
this.userService.onAccessRefused.subscribe(res => {
|
|
1837
1945
|
this.resetContext();
|
|
1838
1946
|
this.accessRefused.set(true);
|
|
@@ -1861,6 +1969,7 @@ class LoginFormComponent {
|
|
|
1861
1969
|
window.login = null;
|
|
1862
1970
|
}
|
|
1863
1971
|
openConsent(evt, item) {
|
|
1972
|
+
console.log(evt);
|
|
1864
1973
|
evt.stopPropagation();
|
|
1865
1974
|
// this.http.get(item.contentUrl, { responseType: 'text' }).subscribe(r => {
|
|
1866
1975
|
// this.modalService.openRawAlert(new TranslationPipe().transform('consentTitle.' + item.name, this.translationService.translations), r);
|
|
@@ -1875,10 +1984,12 @@ class LoginFormComponent {
|
|
|
1875
1984
|
}
|
|
1876
1985
|
getOtp() {
|
|
1877
1986
|
this.showError.set(false);
|
|
1987
|
+
this.loading.set(true);
|
|
1878
1988
|
this.context.update(ctx => ({ ...ctx, errorMessage: null }));
|
|
1879
1989
|
// this.showResend = false;
|
|
1880
1990
|
if (this.myForm && !this.myForm.valid) {
|
|
1881
1991
|
this.showError.set(true);
|
|
1992
|
+
this.loading.set(false);
|
|
1882
1993
|
this.globalService.onError.emit();
|
|
1883
1994
|
return;
|
|
1884
1995
|
}
|
|
@@ -1887,7 +1998,9 @@ class LoginFormComponent {
|
|
|
1887
1998
|
clientName: this.environment.client_id,
|
|
1888
1999
|
allowAccountCreation: this.allowAccountCreation
|
|
1889
2000
|
}));
|
|
1890
|
-
this.userService.getOtp(this.context()).subscribe(res => {
|
|
2001
|
+
this.userService.getOtp(this.context()).subscribe(async (res) => {
|
|
2002
|
+
console.log(res.result.type);
|
|
2003
|
+
this.loading.set(false);
|
|
1891
2004
|
if (res.result.status == 'otp_verified') {
|
|
1892
2005
|
this.otpSuccess.set(true);
|
|
1893
2006
|
this.globalService.onSuccess.emit();
|
|
@@ -1896,16 +2009,23 @@ class LoginFormComponent {
|
|
|
1896
2009
|
return;
|
|
1897
2010
|
}
|
|
1898
2011
|
if (res.result.type == 'DATA') {
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
2012
|
+
console.log({
|
|
2013
|
+
countryCode: res.result.user?.countryCode || (await this.translationService.getLocalization()).result.country,
|
|
2014
|
+
provinceCode: res.result.user?.provinceCode,
|
|
2015
|
+
provinceName: res.result.user?.province,
|
|
2016
|
+
city: res.result.user?.city
|
|
2017
|
+
});
|
|
2018
|
+
this.translationService.setCountryCityPlaceholder('login-form', {
|
|
2019
|
+
countryCode: res.result.user?.countryCode || (await this.translationService.getLocalization()).result.country,
|
|
2020
|
+
provinceCode: res.result.user?.provinceCode,
|
|
2021
|
+
provinceName: res.result.user?.province,
|
|
2022
|
+
city: res.result.user?.city
|
|
2023
|
+
});
|
|
1905
2024
|
}
|
|
1906
2025
|
}
|
|
1907
2026
|
this.prevContext = this.context();
|
|
1908
2027
|
this.context.set(res.result);
|
|
2028
|
+
console.log(this.context);
|
|
1909
2029
|
this.countdownConfig = { leftTime: 30, format: 'ss' };
|
|
1910
2030
|
if (this.context().status == 'error') {
|
|
1911
2031
|
this.globalService.onError.emit();
|
|
@@ -1918,7 +2038,6 @@ class LoginFormComponent {
|
|
|
1918
2038
|
});
|
|
1919
2039
|
}
|
|
1920
2040
|
verifyOtp(val) {
|
|
1921
|
-
console.log(this.context());
|
|
1922
2041
|
if (val?.value.length < 6)
|
|
1923
2042
|
return;
|
|
1924
2043
|
this.context.update(ctx => ({
|
|
@@ -1927,13 +2046,12 @@ class LoginFormComponent {
|
|
|
1927
2046
|
clientName: this.environment.client_id,
|
|
1928
2047
|
status: 'otp_sent',
|
|
1929
2048
|
}));
|
|
1930
|
-
this.
|
|
2049
|
+
this.otpLoading.set(true);
|
|
1931
2050
|
this.otpError.set(false);
|
|
1932
2051
|
this.otpSuccess.set(false);
|
|
1933
|
-
this.userService.verifyOtp(this.context()).subscribe(r => {
|
|
2052
|
+
this.userService.verifyOtp(this.context()).subscribe(async (r) => {
|
|
1934
2053
|
if (r.result.status == 'otp_verified') {
|
|
1935
2054
|
this.otpSuccess.set(true);
|
|
1936
|
-
this.globalService.onSuccess.emit();
|
|
1937
2055
|
if (r.result.type == 'TOKEN') {
|
|
1938
2056
|
this.userService.processOtpToken(r.result);
|
|
1939
2057
|
return;
|
|
@@ -1943,21 +2061,26 @@ class LoginFormComponent {
|
|
|
1943
2061
|
this.userService.onUserLoggedIn.emit({ action: this.context().action, user: r.result.user });
|
|
1944
2062
|
return;
|
|
1945
2063
|
}
|
|
2064
|
+
if (r.result.type == 'DATA') {
|
|
2065
|
+
this.translationService.setCountryCityPlaceholder('login-form', {
|
|
2066
|
+
countryCode: r.result.user?.countryCode || (await this.translationService.getLocalization()).result.country,
|
|
2067
|
+
provinceCode: r.result.user?.provinceCode,
|
|
2068
|
+
provinceName: r.result.user?.province,
|
|
2069
|
+
city: r.result.user?.city
|
|
2070
|
+
});
|
|
2071
|
+
}
|
|
1946
2072
|
}
|
|
1947
|
-
this.
|
|
2073
|
+
this.otpLoading.set(false);
|
|
1948
2074
|
this.context.set(r.result);
|
|
1949
|
-
console.log(this.context());
|
|
1950
2075
|
if (this.context().errorMessage == 'wrong_code') {
|
|
1951
|
-
this.context
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
}));
|
|
2076
|
+
// this.context.update(ctx => ({
|
|
2077
|
+
// ...ctx,
|
|
2078
|
+
// otp: null
|
|
2079
|
+
// }));
|
|
1955
2080
|
this.emailOtp = null;
|
|
1956
2081
|
this.phoneOtp = null;
|
|
1957
2082
|
this.otpError.set(true);
|
|
1958
2083
|
}
|
|
1959
|
-
if (this.context().type == 'DATA') {
|
|
1960
|
-
}
|
|
1961
2084
|
});
|
|
1962
2085
|
}
|
|
1963
2086
|
countdownEvent(evt) {
|
|
@@ -1966,7 +2089,9 @@ class LoginFormComponent {
|
|
|
1966
2089
|
}
|
|
1967
2090
|
}
|
|
1968
2091
|
resendOtp() {
|
|
2092
|
+
this.loading.set(true);
|
|
1969
2093
|
this.userService.resendOtp(this.context()).subscribe(res => {
|
|
2094
|
+
this.loading.set(false);
|
|
1970
2095
|
if (res.result.status == 'error') {
|
|
1971
2096
|
this.context().errorMessage = res.result.errorMessage;
|
|
1972
2097
|
this.globalService.onError.emit();
|
|
@@ -1981,7 +2106,7 @@ class LoginFormComponent {
|
|
|
1981
2106
|
}
|
|
1982
2107
|
saveUser() {
|
|
1983
2108
|
this.translationService.validateCountryProvinceCity('login-form');
|
|
1984
|
-
let countryProvinceCity = this.translationService.countryProvinceCityPlaceholder['login-form'];
|
|
2109
|
+
let countryProvinceCity = this.translationService.countryProvinceCityPlaceholder()['login-form'];
|
|
1985
2110
|
this.showError.set(false);
|
|
1986
2111
|
if ((this.myForm && !this.myForm.valid) || this.context().user.consents.find(c => c.required && !c.consented) || countryProvinceCity.countryError || countryProvinceCity.provinceError || countryProvinceCity.cityError) {
|
|
1987
2112
|
this.globalService.onError.emit();
|
|
@@ -2030,10 +2155,10 @@ class LoginFormComponent {
|
|
|
2030
2155
|
this.cookieService.remove('userAccount');
|
|
2031
2156
|
this.resetContext();
|
|
2032
2157
|
}
|
|
2033
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2034
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: LoginFormComponent, isStandalone: true, selector: "payvent-login-form", inputs: { context: { classPropertyName: "context", publicName: "context", isSignal: true, isRequired: false, transformFunction: null }, allowAccountCreation: { classPropertyName: "allowAccountCreation", publicName: "allowAccountCreation", isSignal: true, isRequired: false, transformFunction: null }, tokenType: { classPropertyName: "tokenType", publicName: "tokenType", isSignal: true, isRequired: false, transformFunction: null }, clientId: { classPropertyName: "clientId", publicName: "clientId", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { context: "contextChange" }, viewQueries: [{ propertyName: "myForm", first: true, predicate: ["myForm"], descendants: true }], ngImport: i0, template: "<div class=\"login-component\">\r\n @if (accessRefused()) {\r\n <div class=\"alert alert-danger\">\r\n <translate name=\"login-form.access-refused\"></translate>\r\n </div>\r\n }\r\n\r\n <form novalidate #myForm=\"ngForm\">\r\n @if (context().errorMessage) {\r\n <div class=\"mt-1 text-red-500\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n\r\n\r\n @if (context().type == 'EMAIL' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code' ){\r\n <div class=\"form-group\">\r\n <label class=\"primary-50\">\r\n <translate [name]=\"'login-form.email.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n <input type=\"email\" [(ngModel)]=\"context().loginName\" pInputText email class=\"form-control\" #email=\"ngModel\"\r\n name=\"email\" required />\r\n @if(context().action=='LOGIN') {\r\n <a (click)=\"recover()\">\r\n <translate name=\"login-form.no-email-access\"></translate>\r\n </a>\r\n }\r\n\r\n @if(!email.valid && showError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.email\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <p-button color=\"success\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-email.' + context().action.toLowerCase()\"></translate>\r\n </p-button>\r\n }\r\n\r\n\r\n @if (context().status == 'otp_sent' || context().errorMessage == 'wrong_code') {\r\n <div class=\"position:relative\">\r\n @if (loading()) {\r\n <div class=\"loader-container\">\r\n <div class=\"loader\"></div>\r\n </div>\r\n }\r\n <div class=\"form-group\">\r\n <translate name=\"login-form.enter_otp_code\" [replacements]=\"[context().loginNameMasked]\"></translate>\r\n </div>\r\n <div class=\"form-group\">\r\n <p-inputotp [disabled]=\"loading()\" [(ngModel)]=\"context().otp\" [length]=\"6\" [autofocus]=\"true\"\r\n (onChange)=\"verifyOtp($event)\" name=\"inputOtp\"></p-inputotp>\r\n </div>\r\n @if(!showResend()) {\r\n <translate name=\"login-form.resend-code.in-sec\"></translate>\r\n <!-- <countdown #cd [config]=\"countdownConfig\" (event)=\"countdownEvent($event)\">$!s!</countdown> sec -->\r\n }\r\n\r\n @if(showResend()) {\r\n <p-button color=\"info\" class=\"btn-block\" (click)=\"resendOtp()\">\r\n <translate name=\"login-form.resend-otp\"></translate>\r\n </p-button>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n\r\n @if (context().type == 'PHONE' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code') {\r\n <div class=\"form-group\">\r\n <label class=\"login-label\">\r\n <translate [name]=\"'login-form.phone.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n <payvent-international-phone [(phoneNumber)]=\"context().loginName\" name=\"phone\"\r\n ngDefaultControl></payvent-international-phone>\r\n\r\n @if (showError()) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.phone\"></translate>\r\n </div>\r\n }\r\n\r\n @if (context().status=='duplicate_phone') {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.duplicate_phone\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <button loading-button color=\"success\" class=\"btn-block\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-phone.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (context().type=='DATA') {\r\n <div class=\"form-group\">\r\n <div class=\"text-center form-group\">\r\n <label class=\"login-label\">\r\n <translate name=\"login-form.profile-data.login\"></translate>\r\n </label>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.email\"></translate>\r\n </label>\r\n <input type=\"email\" [(ngModel)]=\"context().user.email\" class=\"form-control\" #email=\"ngModel\" name=\"email\"\r\n disabled />\r\n </div>\r\n <div class=\"form-group name-group\">\r\n <div class=\"first\">\r\n <label>\r\n <translate name=\"login-form.firstName\"></translate>\r\n </label>\r\n <input type=\"text\" [(ngModel)]=\"context().user.firstName\" class=\"form-control\" #firstName=\"ngModel\"\r\n name=\"firstName\" required />\r\n <div *ngIf=\"!firstName.valid && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.firstName\"></translate>\r\n </div>\r\n </div>\r\n <div class=\"second\">\r\n <label>\r\n <translate name=\"login-form.lastName\"></translate>\r\n </label>\r\n <input type=\"text\" [(ngModel)]=\"context().user.lastName\" class=\"form-control\" #lastName=\"ngModel\"\r\n name=\"lastName\" required />\r\n <div *ngIf=\"!lastName.valid && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.lastName\"></translate>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.phone\"></translate>\r\n </label>\r\n <input type=\"phone\" [(ngModel)]=\"context().user.phoneNumber\" class=\"form-control\" #phone=\"ngModel\" name=\"phone\"\r\n disabled />\r\n </div>\r\n\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.country\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"country\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().countryError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.country\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.province\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"province\" correlation=\"login-form\"></payvent-country-province-city>\r\n\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().provinceError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.province\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.city\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"city\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().cityError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.city\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n @for(item of context().user.consents; track item.id) {\r\n <div class=\"form-group\">\r\n <icheck [name]=\"item.name\" [(ngModel)]=\"item.consented\">\r\n <translate name=\"login-form.consent\"></translate> <a (click)=\"openConsent($event, item)\">\r\n <translate [name]=\"'consent.' + item.name\"></translate>\r\n </a>\r\n </icheck>\r\n <div *ngIf=\"!item.consented && item.required && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate [name]=\"'consentError.' + item.name\"></translate>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </form>\r\n\r\n\r\n <div class=\"form-group\">\r\n @if (context().type == 'DATA') {\r\n <button loading-button color=\"success\" class=\"btn-block\" (click)=\"saveUser()\">\r\n <translate name=\"login-form.save-changes\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (context().status && context().status != 'client_not_found' && context().status != 'login_name_changed' &&\r\n context().status != 'otp_verified' && !loading()) {\r\n <div class=\"form-group\">\r\n <p-button (click)=\"resetContext()\">\r\n <translate name=\"login-form.back\"></translate>\r\n </p-button>\r\n </div>\r\n }\r\n\r\n @if(context().action=='VERIFYRECOVER' && context().type=='TOKEN') {\r\n <translate name=\"login-form.recover_success\"></translate>\r\n }\r\n\r\n @if(context().action=='CHANGELOGINNAME' && context().status=='login_name_changed') {\r\n <translate [name]=\"'login-form.login_name_changed.' + context().type.toLowerCase()\"></translate>\r\n }\r\n\r\n</div>", styles: ["@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-container{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff4d;display:flex;align-items:center;justify-content:center}.loader{content:\"\";box-sizing:border-box;display:inline-block;width:32px;height:32px;position:absolute;border-radius:50%;border:4px solid rgba(237,156,40,.3);border-top-color:#ed9c28;animation:spinner .8s cubic-bezier(.58,.33,.52,.75) infinite;z-index:10000000001}\n"], dependencies: [{ kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1$1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: InternationalPhoneComponent, selector: "payvent-international-phone", inputs: ["phoneNumber"], outputs: ["phoneNumberChange"] }, { kind: "component", type: CountryProvinceCityComponent, selector: "payvent-country-province-city", inputs: ["correlation", "mode"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "component", type: InputOtp, selector: "p-inputOtp, p-inputotp, p-input-otp", inputs: ["readonly", "tabindex", "length", "styleClass", "mask", "integerOnly", "autofocus", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }] });
|
|
2158
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LoginFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2159
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: LoginFormComponent, isStandalone: true, selector: "payvent-login-form", inputs: { tokenType: { classPropertyName: "tokenType", publicName: "tokenType", isSignal: true, isRequired: false, transformFunction: null }, clientId: { classPropertyName: "clientId", publicName: "clientId", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "myForm", first: true, predicate: ["myForm"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"login-component\">\r\n @if (accessRefused()) {\r\n <div class=\"alert alert-danger\">\r\n <translate name=\"login-form.access-refused\"></translate>\r\n </div>\r\n }\r\n\r\n <form novalidate #myForm=\"ngForm\">\r\n\r\n @if (context().type == 'EMAIL' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code' ){\r\n <div class=\"mb-3\">\r\n <div class=\"mb-1\">\r\n <translate [name]=\"'login-form.email.' + context().action.toLowerCase()\"></translate>\r\n </div>\r\n <input type=\"email\" [(ngModel)]=\"context().loginName\" pInputText email class=\"form-control\" #email=\"ngModel\"\r\n name=\"email\" required fluid=\"true\" />\r\n @if(context().action=='LOGIN') {\r\n <a (click)=\"recover()\">\r\n <translate name=\"login-form.no-email-access\"></translate>\r\n </a>\r\n }\r\n\r\n @if(!email.valid && showError()) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.email\"></translate>\r\n </div>\r\n }\r\n @if (context().errorMessage) {\r\n <div class=\"mb-2 text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <button pButton fluid=\"true\" [loading]=\"loading()\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-email.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n }\r\n\r\n\r\n @if (context().status == 'otp_sent' || context().errorMessage == 'wrong_code') {\r\n <div style=\"position:relative\">\r\n @if (otpLoading()) {\r\n <div class=\"loader-container\">\r\n <div class=\"loader\"></div>\r\n </div>\r\n }\r\n <div class=\"mb-2\">\r\n <translate name=\"login-form.enter_otp_code\" [replacements]=\"[context().loginNameMasked]\"></translate>\r\n </div>\r\n <div class=\"mb-2\">\r\n <p-inputotp [disabled]=\"loading()\" [(ngModel)]=\"context().otp\" size=\"large\" [length]=\"6\" [autofocus]=\"true\"\r\n (onChange)=\"verifyOtp($event)\" name=\"inputOtp\" class=\"justify-center my-4\"></p-inputotp>\r\n </div>\r\n @if (context().errorMessage) {\r\n <div class=\"mb-2 text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n @if(!showResend()) {\r\n <translate name=\"login-form.resend-code.in-sec\"></translate>\r\n <!-- <countdown #cd [config]=\"countdownConfig\" (event)=\"countdownEvent($event)\">$!s!</countdown> sec -->\r\n }\r\n\r\n @if(showResend()) {\r\n <button pButton [loading]=\"loading()\" fluid=\"true\" class=\"mb-1\" (click)=\"resendOtp()\">\r\n <translate name=\"login-form.resend-otp\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n\r\n @if (context().type == 'PHONE' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code') {\r\n <div class=\"mb-2\">\r\n <div class=\"mb-2\">\r\n <label class=\"login-label\">\r\n <translate [name]=\"'login-form.phone.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n </div>\r\n <payvent-international-phone [(phoneNumber)]=\"context().loginName\" name=\"phone\"\r\n ngDefaultControl></payvent-international-phone>\r\n\r\n @if (showError()) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.phone\"></translate>\r\n </div>\r\n }\r\n\r\n @if (context().status=='duplicate_phone') {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.duplicate_phone\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"mr-2\">\r\n <button pButton fluid=\"true\" [loading]=\"loading()\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-phone.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (context().type=='DATA') {\r\n <div class=\"mb-2\">\r\n <div class=\"text-center mb-2\">\r\n <label class=\"login-label\">\r\n <translate name=\"login-form.profile-data.login\"></translate>\r\n </label>\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.email\"></translate>\r\n </div>\r\n <input type=\"email\" pInputText [(ngModel)]=\"context().user.email\" fluid #email=\"ngModel\" name=\"email\"\r\n disabled />\r\n </div>\r\n <div class=\"mb-2 name-group\">\r\n <div class=\"first\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.firstName\"></translate>\r\n </div>\r\n <input type=\"text\" pInputText [(ngModel)]=\"context().user.firstName\" fluid #firstName=\"ngModel\"\r\n name=\"firstName\" required />\r\n @if (!firstName.valid && showError()){\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.firstName\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"second\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.lastName\"></translate>\r\n </div>\r\n <input type=\"text\" [(ngModel)]=\"context().user.lastName\" fluid pInputText #lastName=\"ngModel\" name=\"lastName\"\r\n required />\r\n @if (!lastName.valid && showError()){\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.lastName\"></translate>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.phone\"></translate>\r\n </div>\r\n <input type=\"phone\" [(ngModel)]=\"context().user.phoneNumber\" fluid pInputText #phone=\"ngModel\" name=\"phone\"\r\n disabled />\r\n </div>\r\n\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.country\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"country\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].countryError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.country\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.province\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"province\" correlation=\"login-form\"></payvent-country-province-city>\r\n\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].provinceError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.province\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.city\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"city\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].cityError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.city\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (context().user.consents.length > 0) {\r\n <div class=\"my-4\">\r\n @for(item of context().user.consents; track item.id) {\r\n <div class=\"mb-2 flex items-center gap-2\">\r\n <p-checkbox [inputId]=\"item.name\" [name]=\"item.name\" [binary]=\"true\" [(ngModel)]=\"item.consented\" />\r\n <label [for]=\"item.name\">\r\n <translate name=\"login-form.consent\"></translate>\r\n </label>\r\n <a (click)=\"openConsent($event, item)\">\r\n <translate [name]=\"'consent.' + item.name\"></translate>\r\n </a>\r\n </div>\r\n @if(!item.consented && item.required && showError()) {\r\n <div class=\"text-danger mb-2\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'consentError.' + item.name\"></translate>\r\n </div>\r\n }\r\n\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </form>\r\n\r\n\r\n <div class=\"my-2\">\r\n @if (context().type == 'DATA') {\r\n <button pButton fluid (click)=\"saveUser()\">\r\n <translate name=\"login-form.save-changes\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (context().status && context().status != 'client_not_found' && context().status != 'login_name_changed' &&\r\n context().status != 'otp_verified' && !loading()) {\r\n <div class=\"mb-2\">\r\n <button pButton severity=\"secondary\" outlined=\"true\" fluid=\"true\" (click)=\"resetContext()\">\r\n <translate name=\"login-form.back\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if(context().action=='VERIFYRECOVER' && context().type=='TOKEN') {\r\n <translate name=\"login-form.recover_success\"></translate>\r\n }\r\n\r\n @if(context().action=='CHANGELOGINNAME' && context().status=='login_name_changed') {\r\n <translate [name]=\"'login-form.login_name_changed.' + context().type.toLowerCase()\"></translate>\r\n }\r\n\r\n</div>", styles: ["@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-container{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff4d;display:flex;align-items:center;justify-content:center;z-index:10000000000}.loader{content:\"\";box-sizing:border-box;display:inline-block;width:32px;height:32px;position:absolute;border-radius:50%;border:4px solid rgba(237,156,40,.3);border-top-color:#ed9c28;animation:spinner .8s cubic-bezier(.58,.33,.52,.75) infinite;z-index:10000000001}\n"], dependencies: [{ kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.EmailValidator, selector: "[email][formControlName],[email][formControl],[email][ngModel]", inputs: ["email"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: i1.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: InternationalPhoneComponent, selector: "payvent-international-phone", inputs: ["phoneNumber"], outputs: ["phoneNumberChange"] }, { kind: "component", type: CountryProvinceCityComponent, selector: "payvent-country-province-city", inputs: ["correlation", "mode"] }, { kind: "directive", type: InputText, selector: "[pInputText]", inputs: ["pSize", "variant", "fluid", "invalid"] }, { kind: "component", type: InputOtp, selector: "p-inputOtp, p-inputotp, p-input-otp", inputs: ["readonly", "tabindex", "length", "styleClass", "mask", "integerOnly", "autofocus", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "directive", type: i2$1.ButtonDirective, selector: "[pButton]", inputs: ["iconPos", "loadingIcon", "loading", "severity", "raised", "rounded", "text", "outlined", "size", "plain", "fluid", "label", "icon", "buttonProps"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }] });
|
|
2035
2160
|
}
|
|
2036
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2161
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LoginFormComponent, decorators: [{
|
|
2037
2162
|
type: Component,
|
|
2038
2163
|
args: [{ selector: 'payvent-login-form', standalone: true, imports: [
|
|
2039
2164
|
TranslationComponent,
|
|
@@ -2043,8 +2168,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
2043
2168
|
CountryProvinceCityComponent,
|
|
2044
2169
|
InputText,
|
|
2045
2170
|
InputOtp,
|
|
2046
|
-
ButtonModule
|
|
2047
|
-
], template: "<div class=\"login-component\">\r\n @if (accessRefused()) {\r\n <div class=\"alert alert-danger\">\r\n <translate name=\"login-form.access-refused\"></translate>\r\n </div>\r\n }\r\n\r\n <form novalidate #myForm=\"ngForm\">\r\n @if (context().errorMessage) {\r\n <div class=\"mt-1 text-red-500\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n\r\n\r\n @if (context().type == 'EMAIL' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code' ){\r\n <div class=\"form-group\">\r\n <label class=\"primary-50\">\r\n <translate [name]=\"'login-form.email.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n <input type=\"email\" [(ngModel)]=\"context().loginName\" pInputText email class=\"form-control\" #email=\"ngModel\"\r\n name=\"email\" required />\r\n @if(context().action=='LOGIN') {\r\n <a (click)=\"recover()\">\r\n <translate name=\"login-form.no-email-access\"></translate>\r\n </a>\r\n }\r\n\r\n @if(!email.valid && showError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.email\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <p-button color=\"success\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-email.' + context().action.toLowerCase()\"></translate>\r\n </p-button>\r\n }\r\n\r\n\r\n @if (context().status == 'otp_sent' || context().errorMessage == 'wrong_code') {\r\n <div class=\"position:relative\">\r\n @if (loading()) {\r\n <div class=\"loader-container\">\r\n <div class=\"loader\"></div>\r\n </div>\r\n }\r\n <div class=\"form-group\">\r\n <translate name=\"login-form.enter_otp_code\" [replacements]=\"[context().loginNameMasked]\"></translate>\r\n </div>\r\n <div class=\"form-group\">\r\n <p-inputotp [disabled]=\"loading()\" [(ngModel)]=\"context().otp\" [length]=\"6\" [autofocus]=\"true\"\r\n (onChange)=\"verifyOtp($event)\" name=\"inputOtp\"></p-inputotp>\r\n </div>\r\n @if(!showResend()) {\r\n <translate name=\"login-form.resend-code.in-sec\"></translate>\r\n <!-- <countdown #cd [config]=\"countdownConfig\" (event)=\"countdownEvent($event)\">$!s!</countdown> sec -->\r\n }\r\n\r\n @if(showResend()) {\r\n <p-button color=\"info\" class=\"btn-block\" (click)=\"resendOtp()\">\r\n <translate name=\"login-form.resend-otp\"></translate>\r\n </p-button>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n\r\n @if (context().type == 'PHONE' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code') {\r\n <div class=\"form-group\">\r\n <label class=\"login-label\">\r\n <translate [name]=\"'login-form.phone.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n <payvent-international-phone [(phoneNumber)]=\"context().loginName\" name=\"phone\"\r\n ngDefaultControl></payvent-international-phone>\r\n\r\n @if (showError()) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.phone\"></translate>\r\n </div>\r\n }\r\n\r\n @if (context().status=='duplicate_phone') {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.duplicate_phone\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <button loading-button color=\"success\" class=\"btn-block\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-phone.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (context().type=='DATA') {\r\n <div class=\"form-group\">\r\n <div class=\"text-center form-group\">\r\n <label class=\"login-label\">\r\n <translate name=\"login-form.profile-data.login\"></translate>\r\n </label>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.email\"></translate>\r\n </label>\r\n <input type=\"email\" [(ngModel)]=\"context().user.email\" class=\"form-control\" #email=\"ngModel\" name=\"email\"\r\n disabled />\r\n </div>\r\n <div class=\"form-group name-group\">\r\n <div class=\"first\">\r\n <label>\r\n <translate name=\"login-form.firstName\"></translate>\r\n </label>\r\n <input type=\"text\" [(ngModel)]=\"context().user.firstName\" class=\"form-control\" #firstName=\"ngModel\"\r\n name=\"firstName\" required />\r\n <div *ngIf=\"!firstName.valid && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.firstName\"></translate>\r\n </div>\r\n </div>\r\n <div class=\"second\">\r\n <label>\r\n <translate name=\"login-form.lastName\"></translate>\r\n </label>\r\n <input type=\"text\" [(ngModel)]=\"context().user.lastName\" class=\"form-control\" #lastName=\"ngModel\"\r\n name=\"lastName\" required />\r\n <div *ngIf=\"!lastName.valid && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.lastName\"></translate>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.phone\"></translate>\r\n </label>\r\n <input type=\"phone\" [(ngModel)]=\"context().user.phoneNumber\" class=\"form-control\" #phone=\"ngModel\" name=\"phone\"\r\n disabled />\r\n </div>\r\n\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.country\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"country\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().countryError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.country\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.province\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"province\" correlation=\"login-form\"></payvent-country-province-city>\r\n\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().provinceError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.province\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"login-form.city\"></translate>\r\n </label>\r\n <payvent-country-province-city mode=\"city\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder['login-form']().cityError) {\r\n <div class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate name=\"error.login-form.city\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n @for(item of context().user.consents; track item.id) {\r\n <div class=\"form-group\">\r\n <icheck [name]=\"item.name\" [(ngModel)]=\"item.consented\">\r\n <translate name=\"login-form.consent\"></translate> <a (click)=\"openConsent($event, item)\">\r\n <translate [name]=\"'consent.' + item.name\"></translate>\r\n </a>\r\n </icheck>\r\n <div *ngIf=\"!item.consented && item.required && showError\" class=\"text-danger\">\r\n <i class=\"fa fa-info-circle\"></i>\r\n <translate [name]=\"'consentError.' + item.name\"></translate>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </form>\r\n\r\n\r\n <div class=\"form-group\">\r\n @if (context().type == 'DATA') {\r\n <button loading-button color=\"success\" class=\"btn-block\" (click)=\"saveUser()\">\r\n <translate name=\"login-form.save-changes\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (context().status && context().status != 'client_not_found' && context().status != 'login_name_changed' &&\r\n context().status != 'otp_verified' && !loading()) {\r\n <div class=\"form-group\">\r\n <p-button (click)=\"resetContext()\">\r\n <translate name=\"login-form.back\"></translate>\r\n </p-button>\r\n </div>\r\n }\r\n\r\n @if(context().action=='VERIFYRECOVER' && context().type=='TOKEN') {\r\n <translate name=\"login-form.recover_success\"></translate>\r\n }\r\n\r\n @if(context().action=='CHANGELOGINNAME' && context().status=='login_name_changed') {\r\n <translate [name]=\"'login-form.login_name_changed.' + context().type.toLowerCase()\"></translate>\r\n }\r\n\r\n</div>", styles: ["@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-container{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff4d;display:flex;align-items:center;justify-content:center}.loader{content:\"\";box-sizing:border-box;display:inline-block;width:32px;height:32px;position:absolute;border-radius:50%;border:4px solid rgba(237,156,40,.3);border-top-color:#ed9c28;animation:spinner .8s cubic-bezier(.58,.33,.52,.75) infinite;z-index:10000000001}\n"] }]
|
|
2171
|
+
ButtonModule,
|
|
2172
|
+
CheckboxModule
|
|
2173
|
+
], template: "<div class=\"login-component\">\r\n @if (accessRefused()) {\r\n <div class=\"alert alert-danger\">\r\n <translate name=\"login-form.access-refused\"></translate>\r\n </div>\r\n }\r\n\r\n <form novalidate #myForm=\"ngForm\">\r\n\r\n @if (context().type == 'EMAIL' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code' ){\r\n <div class=\"mb-3\">\r\n <div class=\"mb-1\">\r\n <translate [name]=\"'login-form.email.' + context().action.toLowerCase()\"></translate>\r\n </div>\r\n <input type=\"email\" [(ngModel)]=\"context().loginName\" pInputText email class=\"form-control\" #email=\"ngModel\"\r\n name=\"email\" required fluid=\"true\" />\r\n @if(context().action=='LOGIN') {\r\n <a (click)=\"recover()\">\r\n <translate name=\"login-form.no-email-access\"></translate>\r\n </a>\r\n }\r\n\r\n @if(!email.valid && showError()) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.email\"></translate>\r\n </div>\r\n }\r\n @if (context().errorMessage) {\r\n <div class=\"mb-2 text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <button pButton fluid=\"true\" [loading]=\"loading()\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-email.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n }\r\n\r\n\r\n @if (context().status == 'otp_sent' || context().errorMessage == 'wrong_code') {\r\n <div style=\"position:relative\">\r\n @if (otpLoading()) {\r\n <div class=\"loader-container\">\r\n <div class=\"loader\"></div>\r\n </div>\r\n }\r\n <div class=\"mb-2\">\r\n <translate name=\"login-form.enter_otp_code\" [replacements]=\"[context().loginNameMasked]\"></translate>\r\n </div>\r\n <div class=\"mb-2\">\r\n <p-inputotp [disabled]=\"loading()\" [(ngModel)]=\"context().otp\" size=\"large\" [length]=\"6\" [autofocus]=\"true\"\r\n (onChange)=\"verifyOtp($event)\" name=\"inputOtp\" class=\"justify-center my-4\"></p-inputotp>\r\n </div>\r\n @if (context().errorMessage) {\r\n <div class=\"mb-2 text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'login-form.error.' + context().errorMessage\"></translate>\r\n </div>\r\n }\r\n @if(!showResend()) {\r\n <translate name=\"login-form.resend-code.in-sec\"></translate>\r\n <!-- <countdown #cd [config]=\"countdownConfig\" (event)=\"countdownEvent($event)\">$!s!</countdown> sec -->\r\n }\r\n\r\n @if(showResend()) {\r\n <button pButton [loading]=\"loading()\" fluid=\"true\" class=\"mb-1\" (click)=\"resendOtp()\">\r\n <translate name=\"login-form.resend-otp\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n }\r\n\r\n\r\n @if (context().type == 'PHONE' && !['otp_sent', 'login_name_changed'].includes(context().status) &&\r\n context().errorMessage != 'wrong_code') {\r\n <div class=\"mb-2\">\r\n <div class=\"mb-2\">\r\n <label class=\"login-label\">\r\n <translate [name]=\"'login-form.phone.' + context().action.toLowerCase()\"></translate>\r\n </label>\r\n </div>\r\n <payvent-international-phone [(phoneNumber)]=\"context().loginName\" name=\"phone\"\r\n ngDefaultControl></payvent-international-phone>\r\n\r\n @if (showError()) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.phone\"></translate>\r\n </div>\r\n }\r\n\r\n @if (context().status=='duplicate_phone') {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.duplicate_phone\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"mr-2\">\r\n <button pButton fluid=\"true\" [loading]=\"loading()\" (click)=\"getOtp()\">\r\n <translate [name]=\"'login-form.submit-phone.' + context().action.toLowerCase()\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if (context().type=='DATA') {\r\n <div class=\"mb-2\">\r\n <div class=\"text-center mb-2\">\r\n <label class=\"login-label\">\r\n <translate name=\"login-form.profile-data.login\"></translate>\r\n </label>\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.email\"></translate>\r\n </div>\r\n <input type=\"email\" pInputText [(ngModel)]=\"context().user.email\" fluid #email=\"ngModel\" name=\"email\"\r\n disabled />\r\n </div>\r\n <div class=\"mb-2 name-group\">\r\n <div class=\"first\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.firstName\"></translate>\r\n </div>\r\n <input type=\"text\" pInputText [(ngModel)]=\"context().user.firstName\" fluid #firstName=\"ngModel\"\r\n name=\"firstName\" required />\r\n @if (!firstName.valid && showError()){\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.firstName\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"second\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.lastName\"></translate>\r\n </div>\r\n <input type=\"text\" [(ngModel)]=\"context().user.lastName\" fluid pInputText #lastName=\"ngModel\" name=\"lastName\"\r\n required />\r\n @if (!lastName.valid && showError()){\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.lastName\"></translate>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.phone\"></translate>\r\n </div>\r\n <input type=\"phone\" [(ngModel)]=\"context().user.phoneNumber\" fluid pInputText #phone=\"ngModel\" name=\"phone\"\r\n disabled />\r\n </div>\r\n\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.country\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"country\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].countryError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.country\"></translate>\r\n </div>\r\n }\r\n </div>\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.province\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"province\" correlation=\"login-form\"></payvent-country-province-city>\r\n\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].provinceError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.province\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"mb-2\">\r\n <div class=\"mb-1\">\r\n <translate name=\"login-form.city\"></translate>\r\n </div>\r\n <payvent-country-province-city mode=\"city\" correlation=\"login-form\"></payvent-country-province-city>\r\n @if(translationService.countryProvinceCityPlaceholder()['login-form'].cityError) {\r\n <div class=\"text-danger\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate name=\"error.login-form.city\"></translate>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (context().user.consents.length > 0) {\r\n <div class=\"my-4\">\r\n @for(item of context().user.consents; track item.id) {\r\n <div class=\"mb-2 flex items-center gap-2\">\r\n <p-checkbox [inputId]=\"item.name\" [name]=\"item.name\" [binary]=\"true\" [(ngModel)]=\"item.consented\" />\r\n <label [for]=\"item.name\">\r\n <translate name=\"login-form.consent\"></translate>\r\n </label>\r\n <a (click)=\"openConsent($event, item)\">\r\n <translate [name]=\"'consent.' + item.name\"></translate>\r\n </a>\r\n </div>\r\n @if(!item.consented && item.required && showError()) {\r\n <div class=\"text-danger mb-2\">\r\n <span class=\"material-symbols mr-1\">info</span>\r\n <translate [name]=\"'consentError.' + item.name\"></translate>\r\n </div>\r\n }\r\n\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n </form>\r\n\r\n\r\n <div class=\"my-2\">\r\n @if (context().type == 'DATA') {\r\n <button pButton fluid (click)=\"saveUser()\">\r\n <translate name=\"login-form.save-changes\"></translate>\r\n </button>\r\n }\r\n </div>\r\n\r\n @if (context().status && context().status != 'client_not_found' && context().status != 'login_name_changed' &&\r\n context().status != 'otp_verified' && !loading()) {\r\n <div class=\"mb-2\">\r\n <button pButton severity=\"secondary\" outlined=\"true\" fluid=\"true\" (click)=\"resetContext()\">\r\n <translate name=\"login-form.back\"></translate>\r\n </button>\r\n </div>\r\n }\r\n\r\n @if(context().action=='VERIFYRECOVER' && context().type=='TOKEN') {\r\n <translate name=\"login-form.recover_success\"></translate>\r\n }\r\n\r\n @if(context().action=='CHANGELOGINNAME' && context().status=='login_name_changed') {\r\n <translate [name]=\"'login-form.login_name_changed.' + context().type.toLowerCase()\"></translate>\r\n }\r\n\r\n</div>", styles: ["@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.loader-container{position:absolute;top:0;left:0;width:100%;height:100%;background-color:#ffffff4d;display:flex;align-items:center;justify-content:center;z-index:10000000000}.loader{content:\"\";box-sizing:border-box;display:inline-block;width:32px;height:32px;position:absolute;border-radius:50%;border:4px solid rgba(237,156,40,.3);border-top-color:#ed9c28;animation:spinner .8s cubic-bezier(.58,.33,.52,.75) infinite;z-index:10000000001}\n"] }]
|
|
2048
2174
|
}], ctorParameters: () => [], propDecorators: { myForm: [{
|
|
2049
2175
|
type: ViewChild,
|
|
2050
2176
|
args: ['myForm', { static: false }]
|
|
@@ -2065,10 +2191,10 @@ class CookieBarComponent {
|
|
|
2065
2191
|
rejectCookies() {
|
|
2066
2192
|
this.cookieService.gdprConsent = '0';
|
|
2067
2193
|
}
|
|
2068
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2069
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2194
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CookieBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2195
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: CookieBarComponent, isStandalone: true, selector: "cookie-bar", ngImport: i0, template: "@if(!cookieService.gdprConsent && !isPrerender){\r\n<div class=\"flow-cookie-bar-overlay\">\r\n <div class=\"flow-cookie-bar-alert\">\r\n <div style=\"padding: 10px;\">\r\n\r\n <div style=\"margin-bottom: 10px;\">\r\n <translate name=\"cookie-bar.text\"></translate>\r\n </div>\r\n <!-- <a pButton pRipple class=\"p-button-link\" (click)=\"acceptCookies()\">\r\n <translate name=\"cookie-bar.accept\"></translate>\r\n </a> -->\r\n\r\n <!-- <button pButton pRipple class=\"w-full\" (click)=\"acceptCookies()\">\r\n <translate name=\"cookie-bar.accept\"></translate>\r\n </button> -->\r\n\r\n <!-- <div class=\"mb-3\">\r\n <button class=\"w-full\" severity=\"secondary\" pRipple pButton (click)=\"acceptCookies()\">\r\n <translate name=\"cookie-bar.accept\"></translate>\r\n </button>\r\n </div> -->\r\n\r\n <div>\r\n <span style=\"padding: 5px;\">\r\n <p-button [outlined]=\"true\" (click)=\"acceptCookies()\" class=\"button-padding\">\r\n <translate name=\"cookie-bar.accept\"></translate>\r\n </p-button>\r\n </span>\r\n <span style=\"padding: 5px;\">\r\n <p-button [outlined]=\"true\" severity=\"secondary\" (click)=\"rejectCookies()\" class=\"button-padding\">\r\n <translate name=\"cookie-bar.reject\"></translate>\r\n </p-button>\r\n </span>\r\n </div>\r\n\r\n\r\n <!-- <button class=\"btn btn-default yes-btn\" (click)=\"acceptCookies()\">\r\n <translate name=\"cookie-bar.accept\"></translate>\r\n </button>\r\n <a class=\"no-link\" (click)=\"rejectCookies()\">\r\n <translate name=\"cookie-bar.reject\"></translate>\r\n </a> -->\r\n </div>\r\n </div>\r\n</div>\r\n}", styles: [".flow-cookie-bar-overlay{z-index:10;position:fixed;inset:0;background-color:#0003;display:flex;justify-content:center;align-items:center;text-align:center}.flow-cookie-bar-alert{border-radius:6px;background-color:#fff;border:solid 1px #eee;text-align:center;max-width:500px;margin:10px;font-size:medium;box-shadow:0 0 5px #ffa50033}.flow-cookie-bar-alert .yes-btn{margin-right:10px;padding:7px 10px}.flow-cookie-bar-alert .no-link{padding-bottom:10px;text-decoration:none;color:#000}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: CardModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "ngmodule", type: StyleClassModule }], encapsulation: i0.ViewEncapsulation.None });
|
|
2070
2196
|
}
|
|
2071
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2197
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: CookieBarComponent, decorators: [{
|
|
2072
2198
|
type: Component,
|
|
2073
2199
|
args: [{ selector: 'cookie-bar', encapsulation: ViewEncapsulation.None, standalone: true, imports: [
|
|
2074
2200
|
CommonModule,
|
|
@@ -2096,7 +2222,7 @@ class NotificationListComponent {
|
|
|
2096
2222
|
constructor() { }
|
|
2097
2223
|
ngOnInit() {
|
|
2098
2224
|
this.signalRService.getNotifications().subscribe(res => {
|
|
2099
|
-
this.signalRService.messages.filter(m => m.isUnread).forEach(item => {
|
|
2225
|
+
this.signalRService.messages().filter(m => m.isUnread).forEach(item => {
|
|
2100
2226
|
item.isUnread = false;
|
|
2101
2227
|
item.wasNew = true;
|
|
2102
2228
|
});
|
|
@@ -2104,12 +2230,12 @@ class NotificationListComponent {
|
|
|
2104
2230
|
});
|
|
2105
2231
|
}
|
|
2106
2232
|
ngOnDestroy() {
|
|
2107
|
-
this.signalRService.messages.forEach(item => {
|
|
2233
|
+
this.signalRService.messages().forEach(item => {
|
|
2108
2234
|
item.wasNew = false;
|
|
2109
2235
|
});
|
|
2110
2236
|
}
|
|
2111
2237
|
get messages() {
|
|
2112
|
-
return this.signalRService.messages.slice().sort((a, b) => (a.creationTime.toString() < b.creationTime.toString() ? 1 : -1));
|
|
2238
|
+
return this.signalRService.messages().slice().sort((a, b) => (a.creationTime.toString() < b.creationTime.toString() ? 1 : -1));
|
|
2113
2239
|
}
|
|
2114
2240
|
openNextPage() {
|
|
2115
2241
|
this.loading = true;
|
|
@@ -2119,10 +2245,10 @@ class NotificationListComponent {
|
|
|
2119
2245
|
notificationClick(message) {
|
|
2120
2246
|
this.signalRService.onNotificationClick.emit(message);
|
|
2121
2247
|
}
|
|
2122
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2123
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2248
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2249
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: NotificationListComponent, isStandalone: true, selector: "app-notification-list", ngImport: i0, template: "@for( m of messages; track m){\r\n<span>\r\n <li [class]=\"m.isUnread ? 'dropdown-message-unread' : m.wasNew ? 'dropdown-message-wasnew' : ''\">\r\n <div class=\"dropdown-messages-box\">\r\n <a class=\"media-link\" (click)=\"notificationClick(m)\">\r\n @if(m.mediaType=='Image' && m.mediaSrc){<img [src]=\"m.mediaSrc\" style=\"width:100%\" />}\r\n <span class=\"media-body\">\r\n <!-- <i class=\"fa fa-check bg-green icon\" *ngIf=\"m.class=='success'\"></i>\r\n <i class=\"fa fa-info-circle bg-aqua icon\" *ngIf=\"m.class=='info'\"></i>\r\n <i class=\"fa fa-exclamation-circle icon bg-yellow\" *ngIf=\"m.class=='warning'\"></i>\r\n <i class=\"fa fa-times bg-red icon\" *ngIf=\"m.class=='error'\"></i> -->\r\n @if(m.class=='success'){\r\n <i class=\"pi pi-check\"></i>\r\n }\r\n @if(m.class=='info'){\r\n <i class=\"pi pi-info-circle\"></i>\r\n }\r\n @if(m.class=='warning'){\r\n <i class=\"pi-exclamation-circle\"></i>\r\n }\r\n @if(m.class=='error'){\r\n <i class=\"pi pi-times\"></i>\r\n }\r\n\r\n <!-- @if(m.subject){\r\n <div class=\"media-title\">\r\n {{signalRService.processReplacements(m.subject | translation : translationService.translations, m.model)}}\r\n </div>\r\n }\r\n\r\n <span\r\n [innerHtml]=\"signalRService.processReplacements(m.body | translation : translationService.translations, m.model)\">\r\n </span>\r\n <br />\r\n <small class=\"text-muted\">\r\n <i class=\"fa subicon fa-clock-o\"></i> {{m.creationTime | amFromUtc | amTimeAgo}}</small> -->\r\n </span>\r\n </a>\r\n\r\n </div>\r\n </li>\r\n</span>\r\n}\r\n\r\n@if(messages.length==0){\r\n<li>\r\n <div class=\"media-body text-center text-muted\">\r\n <translate name=\"messages.nomessages\"></translate>\r\n </div>\r\n\r\n</li>\r\n}\r\n@if(signalRService.hasMorePages){\r\n<div class=\"media-body notification-footer text-center text-muted small-text\">\r\n @if(loading){<span class=\"loader loader-small\"></span>}\r\n @if(!loading){\r\n <a (click)=\"openNextPage()\">\r\n <translate name=\"messages.viewmore\"></translate>\r\n </a>\r\n }\r\n</div>\r\n}", styles: [".icon{margin-right:7px;margin-bottom:3px}.media-title{font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: CardModule }] });
|
|
2124
2250
|
}
|
|
2125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2251
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationListComponent, decorators: [{
|
|
2126
2252
|
type: Component,
|
|
2127
2253
|
args: [{ selector: 'app-notification-list', standalone: true, imports: [
|
|
2128
2254
|
CommonModule,
|
|
@@ -2156,17 +2282,17 @@ class NotificationDropdownComponent {
|
|
|
2156
2282
|
this.notificationsOpen = !this.notificationsOpen;
|
|
2157
2283
|
timer(100).subscribe(r => this.canClose = true);
|
|
2158
2284
|
}
|
|
2159
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2160
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2285
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2286
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: NotificationDropdownComponent, isStandalone: true, selector: "[notification-dropdown]", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, translation: { classPropertyName: "translation", publicName: "translation", isSignal: true, isRequired: false, transformFunction: null }, linkClass: { classPropertyName: "linkClass", publicName: "linkClass", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:touchend": "onDocumentClick($event)", "document:click": "onDocumentClick($event)" }, properties: { "class.open": "this.notificationsOpen" } }, ngImport: i0, template: "<a [class]=\"'dropdown-toggle count-info ' + linkClass\" (click)=\"openNotifications()\">\r\n <i [class]=\"icon()\"></i>\r\n @if(signalRService.unreadMessageCount()>0){\r\n <span class=\"label label-primary\">{{signalRService.unreadMessageCount()}}</span>\r\n }\r\n @if(translation){<translate [name]=\"translation\"></translate>}\r\n</a>\r\n@if(notificationsOpen){\r\n<ul class=\"dropdown-menu dropdown-messages\" #messagesCtl>\r\n <app-notification-list></app-notification-list>\r\n</ul>\r\n}", styles: [".media-body .icon{padding:2px;border-radius:2px;margin-right:3px}a.media-body{text-decoration:none}.media-body .subicon{margin-right:1px}.dropdown-menu{max-height:500px;overflow-y:auto;overflow-x:hidden;text-align:left}.dropdown-menu::-webkit-scrollbar-track{border-radius:5px;background-color:transparent}.dropdown-menu::-webkit-scrollbar{width:6px;background-color:transparent}.dropdown-menu::-webkit-scrollbar-thumb{border-radius:5px;background-color:#afafaf4d}.notification-footer{background-color:#fafafa;padding:10px 0;vertical-align:bottom}.notification-footer a{color:#333;font-size:9pt;font-weight:700}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: NotificationListComponent, selector: "app-notification-list" }] });
|
|
2161
2287
|
}
|
|
2162
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2288
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationDropdownComponent, decorators: [{
|
|
2163
2289
|
type: Component,
|
|
2164
2290
|
args: [{ selector: '[notification-dropdown]', standalone: true, imports: [
|
|
2165
2291
|
CommonModule,
|
|
2166
2292
|
TranslationComponent,
|
|
2167
2293
|
CardModule,
|
|
2168
2294
|
NotificationListComponent,
|
|
2169
|
-
], template: "<a [class]=\"'dropdown-toggle count-info ' + linkClass\" (click)=\"openNotifications()\">\r\n
|
|
2295
|
+
], template: "<a [class]=\"'dropdown-toggle count-info ' + linkClass\" (click)=\"openNotifications()\">\r\n <i [class]=\"icon()\"></i>\r\n @if(signalRService.unreadMessageCount()>0){\r\n <span class=\"label label-primary\">{{signalRService.unreadMessageCount()}}</span>\r\n }\r\n @if(translation){<translate [name]=\"translation\"></translate>}\r\n</a>\r\n@if(notificationsOpen){\r\n<ul class=\"dropdown-menu dropdown-messages\" #messagesCtl>\r\n <app-notification-list></app-notification-list>\r\n</ul>\r\n}", styles: [".media-body .icon{padding:2px;border-radius:2px;margin-right:3px}a.media-body{text-decoration:none}.media-body .subicon{margin-right:1px}.dropdown-menu{max-height:500px;overflow-y:auto;overflow-x:hidden;text-align:left}.dropdown-menu::-webkit-scrollbar-track{border-radius:5px;background-color:transparent}.dropdown-menu::-webkit-scrollbar{width:6px;background-color:transparent}.dropdown-menu::-webkit-scrollbar-thumb{border-radius:5px;background-color:#afafaf4d}.notification-footer{background-color:#fafafa;padding:10px 0;vertical-align:bottom}.notification-footer a{color:#333;font-size:9pt;font-weight:700}\n"] }]
|
|
2170
2296
|
}], ctorParameters: () => [], propDecorators: { notificationsOpen: [{
|
|
2171
2297
|
type: HostBinding,
|
|
2172
2298
|
args: ['class.open']
|
|
@@ -2204,7 +2330,7 @@ class NotificationToasterComponent {
|
|
|
2204
2330
|
});
|
|
2205
2331
|
}
|
|
2206
2332
|
get messages() {
|
|
2207
|
-
return this.signalRService.messages.filter(m => m && m.isToasterUnread && m.isUnread);
|
|
2333
|
+
return this.signalRService.messages().filter(m => m && m.isToasterUnread && m.isUnread);
|
|
2208
2334
|
}
|
|
2209
2335
|
sendMessage() {
|
|
2210
2336
|
this.connection.invoke('send', this.newMessage);
|
|
@@ -2218,10 +2344,10 @@ class NotificationToasterComponent {
|
|
|
2218
2344
|
this.signalRService.onNotificationClick.emit(message);
|
|
2219
2345
|
this.removeNotification(message);
|
|
2220
2346
|
}
|
|
2221
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2222
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationToasterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2348
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: NotificationToasterComponent, isStandalone: true, selector: "app-notification-toaster", ngImport: i0, template: "<div id=\"toast-container\" class=\"card flex justify-content-center\" class=\"toast-bottom-right\">\r\n <p-toast />\r\n @for (m of messages; track m) {\r\n <p-button (onClick)=\"notificationClick(m)\" [severity]=\" m.class\" />\r\n <div class=\"toast-progress\"></div>\r\n <div class=\"pull-left\">\r\n @if(!m.iconUrl){\r\n <ng-container>\r\n @if(m.class=='success'){\r\n <i class=\"pi pi-check\"></i>\r\n }\r\n @if(m.class=='info'){\r\n <i class=\"pi pi-info-circle\"></i>\r\n }\r\n @if(m.class=='warning'){\r\n <i class=\"pi-exclamation-circle\"></i>\r\n }\r\n @if(m.class=='error'){\r\n <i class=\"pi pi-times\"></i>\r\n }\r\n </ng-container>\r\n }\r\n\r\n @if(m.iconUrl){<div [style.backgroundImage]=\"'url(' + m.iconUrl + ')'\" class=\"toast-icon\"></div>\r\n}\r\n </div>\r\n\r\n }\r\n</div>\r\n", styles: ["#toast-container>.toast{background-image:none!important}#toast-container>div{-moz-box-shadow:0 0 3px #999;-webkit-box-shadow:0 0 3px #999;box-shadow:0 0 3px #999;opacity:.9;-ms-filter:alpha(Opacity=90);filter:alpha(opacity=90)}#toast-container>:hover{-moz-box-shadow:0 0 4px #999;-webkit-box-shadow:0 0 4px #999;box-shadow:0 0 4px #999;opacity:1;-ms-filter:alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}.toast-title{font-weight:700}.toast-message{-ms-word-wrap:break-word;word-wrap:break-word}.toast-message a,.toast-message label{color:#fff}.toast-message a:hover{color:#ccc;text-decoration:none}.toast-close-button{position:relative;right:-.3em;top:-.3em;float:right;font-size:20px;font-weight:700;color:#fff;-webkit-text-shadow:0 1px 0 #fff;text-shadow:0 1px 0 #fff;opacity:.8;-ms-filter:alpha(Opacity=80);filter:alpha(opacity=80)}.toast-close-button:focus,.toast-close-button:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;-ms-filter:alpha(Opacity=40);filter:alpha(opacity=40)}button.toast-close-button{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;position:absolute;right:10px;top:5px}.toast-top-center{top:0;right:0;width:100%}.toast-icon{width:48px;height:48px;border-radius:4px;background-color:#fff;background-size:90%;background-repeat:no-repeat;background-position:center center;margin:0 7px 7px 0}.toast-bottom-center{bottom:0;right:0;width:100%}.toast-top-full-width{top:0;right:0;width:100%}.toast-bottom-full-width{bottom:0;right:0;width:100%}.toast-top-left{top:12px;left:12px}.toast-top-right{top:12px;right:12px}.toast-bottom-right{right:12px;bottom:12px}.toast-bottom-left{bottom:12px;left:12px}#toast-container{position:fixed;z-index:999999}#toast-container *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.toast{position:relative;overflow:hidden;margin:0 0 6px;padding:15px 25px 15px 15px;width:300px;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;background-position:15px center;background-repeat:no-repeat;-moz-box-shadow:0 0 12px #999;-webkit-box-shadow:0 0 12px #999;box-shadow:0 0 12px #999;opacity:.8;-ms-filter:alpha(Opacity=80);filter:alpha(opacity=80)}#toast-container>:hover{-moz-box-shadow:0 0 12px #000;-webkit-box-shadow:0 0 12px #000;box-shadow:0 0 12px #000;opacity:1;-ms-filter:alpha(Opacity=100);filter:alpha(opacity=100);cursor:pointer}.icon{margin-right:10px;margin-bottom:10px}#toast-container.toast-bottom-center>div,#toast-container.toast-top-center>div{width:300px;margin:auto}#toast-container.toast-bottom-full-width>div,#toast-container.toast-top-full-width>div{width:96%;margin:auto}.toast{background-color:#030303;color:#fff}.toast-success{background-color:#51a351;color:#fff}.toast-error{background-color:#bd362f;color:#fff}.toast-info{background-color:#2f96b4;color:#fff}.toast-warning{background-color:#f89406;color:#fff}.toast-default{background-color:#fafafa;color:#555;padding:none}.toast-default.toast,.toast-default.toast .toast-message{padding:0}.toast-default.toast .toast-text-container{padding:15px}.toast-default.toast .toast-title{margin-bottom:3px}.toast-default .toast-message a,.toast-default .toast-message label{color:#555}.toast-progress{position:absolute;left:0;bottom:0;height:4px;background-color:#000;opacity:.4;-ms-filter:alpha(Opacity=40);filter:alpha(opacity=40)}@media all and (max-width: 240px){#toast-container>div{width:90%;margin-left:auto;margin-right:auto}}@media all and (min-width: 241px) and (max-width: 480px){#toast-container>div{width:90%;margin-left:auto;margin-right:auto}}@media all and (min-width: 481px) and (max-width: 768px){#toast-container>div{width:25em}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: CardModule }, { kind: "ngmodule", type: ToastModule }, { kind: "component", type: i1$1.Toast, selector: "p-toast", inputs: ["key", "autoZIndex", "baseZIndex", "life", "styleClass", "position", "preventOpenDuplicates", "preventDuplicates", "showTransformOptions", "hideTransformOptions", "showTransitionOptions", "hideTransitionOptions", "breakpoints"], outputs: ["onClose"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }] });
|
|
2223
2349
|
}
|
|
2224
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: NotificationToasterComponent, decorators: [{
|
|
2225
2351
|
type: Component,
|
|
2226
2352
|
args: [{ selector: 'app-notification-toaster', standalone: true, imports: [
|
|
2227
2353
|
TranslationPipe,
|
|
@@ -2266,10 +2392,10 @@ class QrScannerComponent {
|
|
|
2266
2392
|
ngOnDestroy() {
|
|
2267
2393
|
this.eventListener();
|
|
2268
2394
|
}
|
|
2269
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2270
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
2395
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: QrScannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2396
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: QrScannerComponent, isStandalone: true, selector: "flow-qr-scanner", outputs: { valueRead: "valueRead" }, ngImport: i0, template: "", styles: [""] });
|
|
2271
2397
|
}
|
|
2272
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: QrScannerComponent, decorators: [{
|
|
2273
2399
|
type: Component,
|
|
2274
2400
|
args: [{ selector: 'flow-qr-scanner', standalone: true, template: "" }]
|
|
2275
2401
|
}], ctorParameters: () => [], propDecorators: { valueRead: [{
|
|
@@ -2335,12 +2461,12 @@ class SidebarComponent {
|
|
|
2335
2461
|
break;
|
|
2336
2462
|
}
|
|
2337
2463
|
}
|
|
2338
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2339
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2464
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2465
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: SidebarComponent, isStandalone: true, selector: "sidebar", viewQueries: [{ propertyName: "contentComponent", first: true, predicate: ["content"], descendants: true, read: ElementRef }], ngImport: i0, template: "@if(sidebarService.sidebars().length > 0) {\r\n<div class=\"sidebar-overlay\">\r\n @for(sidebar of sidebarService.sidebars(); track sidebar.id) {\r\n <div [id]=\"'sidebar-' + sidebar.id\" style=\"height: 100%;\" class=\"sidebar-container\">\r\n <p-drawer [visible]=\"sidebar.visible\" [appendTo]=\"'sidebar-' + sidebar.id\" dismissible=\"false\" closeOnEscape=\"false\"\r\n [position]=\"sidebar.options.position\" [style]=\"sidebar.options.ngStyle\">\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-col h-full\" [id]=\"'sidebar-body-' + sidebar.id\" style=\"touch-action: none;\"\r\n (touchmove)=\"onPan($event, sidebar.id)\" (touchstart)=\"onPan($event, sidebar.id)\"\r\n (touchend)=\"onPan($event, sidebar.id)\">\r\n <div class=\"flex align-items-center justify-center px-3 py-2 flex-shrink-0 md:absolute md:z-100 md:right-0\"\r\n [id]=\"'sidebar-header-' + sidebar.id\">\r\n <span [id]=\"'sidebar-header-inner-' + sidebar.id\"\r\n class=\"inline-flex flex-1 align-items-center justify-center gap-2 \">\r\n @if (sidebar.options.position=='bottom') {\r\n <div class=\"inline-block self-center bg-sky-400 rounded-full\" [id]=\"'sidebar-header-hook-' + sidebar.id\"\r\n style=\"height: .3rem; width:70px\"></div>\r\n }\r\n </span>\r\n @if(sidebar.options.position == 'left' || sidebar.options.position == 'right') {\r\n <span>\r\n <a (click)=\"closeCallback(sidebar.id)\" class=\"text-2xl p-2 opacity-40 font-bold\">\r\n <i class=\"fi fi-rr-cross\"></i>\r\n </a>\r\n </span>\r\n }\r\n </div>\r\n <div #content\r\n [class]=\"{ 'overflow-y-auto': sidebar.options.contentScrollable(), 'p-8': !sidebar.options.noPadding, 'h-full': true }\">\r\n <ng-container *ngComponentOutlet=\"sidebar.component;inputs: sidebar.inputs;\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-drawer>\r\n </div>\r\n }\r\n</div>\r\n}", styles: [".sidebar-container{z-index:1000;position:fixed}.sidebar-overlay{position:fixed;inset:0;z-index:999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}\n"], dependencies: [{ kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i1$2.Drawer, selector: "p-drawer", inputs: ["appendTo", "blockScroll", "style", "styleClass", "ariaCloseLabel", "autoZIndex", "baseZIndex", "modal", "closeButtonProps", "dismissible", "showCloseIcon", "closeOnEscape", "transitionOptions", "visible", "position", "fullScreen", "header", "maskStyle", "closable"], outputs: ["onShow", "onHide", "visibleChange"] }, { kind: "directive", type: i2$3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "directive", type: NgComponentOutlet, selector: "[ngComponentOutlet]", inputs: ["ngComponentOutlet", "ngComponentOutletInputs", "ngComponentOutletInjector", "ngComponentOutletEnvironmentInjector", "ngComponentOutletContent", "ngComponentOutletNgModule", "ngComponentOutletNgModuleFactory"], exportAs: ["ngComponentOutlet"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: HammerModule }] });
|
|
2340
2466
|
}
|
|
2341
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2467
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: SidebarComponent, decorators: [{
|
|
2342
2468
|
type: Component,
|
|
2343
|
-
args: [{ selector: 'sidebar', standalone: true, imports: [DrawerModule, NgComponentOutlet, ButtonModule, HammerModule], template: "@for(sidebar of sidebarService.sidebars(); track sidebar.id) {\r\n<div [id]=\"'sidebar-' + sidebar.id\" style=\"height: 100%;\">\r\n
|
|
2469
|
+
args: [{ selector: 'sidebar', standalone: true, imports: [DrawerModule, NgComponentOutlet, ButtonModule, HammerModule], template: "@if(sidebarService.sidebars().length > 0) {\r\n<div class=\"sidebar-overlay\">\r\n @for(sidebar of sidebarService.sidebars(); track sidebar.id) {\r\n <div [id]=\"'sidebar-' + sidebar.id\" style=\"height: 100%;\" class=\"sidebar-container\">\r\n <p-drawer [visible]=\"sidebar.visible\" [appendTo]=\"'sidebar-' + sidebar.id\" dismissible=\"false\" closeOnEscape=\"false\"\r\n [position]=\"sidebar.options.position\" [style]=\"sidebar.options.ngStyle\">\r\n <ng-template pTemplate=\"headless\">\r\n <div class=\"flex flex-col h-full\" [id]=\"'sidebar-body-' + sidebar.id\" style=\"touch-action: none;\"\r\n (touchmove)=\"onPan($event, sidebar.id)\" (touchstart)=\"onPan($event, sidebar.id)\"\r\n (touchend)=\"onPan($event, sidebar.id)\">\r\n <div class=\"flex align-items-center justify-center px-3 py-2 flex-shrink-0 md:absolute md:z-100 md:right-0\"\r\n [id]=\"'sidebar-header-' + sidebar.id\">\r\n <span [id]=\"'sidebar-header-inner-' + sidebar.id\"\r\n class=\"inline-flex flex-1 align-items-center justify-center gap-2 \">\r\n @if (sidebar.options.position=='bottom') {\r\n <div class=\"inline-block self-center bg-sky-400 rounded-full\" [id]=\"'sidebar-header-hook-' + sidebar.id\"\r\n style=\"height: .3rem; width:70px\"></div>\r\n }\r\n </span>\r\n @if(sidebar.options.position == 'left' || sidebar.options.position == 'right') {\r\n <span>\r\n <a (click)=\"closeCallback(sidebar.id)\" class=\"text-2xl p-2 opacity-40 font-bold\">\r\n <i class=\"fi fi-rr-cross\"></i>\r\n </a>\r\n </span>\r\n }\r\n </div>\r\n <div #content\r\n [class]=\"{ 'overflow-y-auto': sidebar.options.contentScrollable(), 'p-8': !sidebar.options.noPadding, 'h-full': true }\">\r\n <ng-container *ngComponentOutlet=\"sidebar.component;inputs: sidebar.inputs;\" />\r\n </div>\r\n </div>\r\n </ng-template>\r\n </p-drawer>\r\n </div>\r\n }\r\n</div>\r\n}", styles: [".sidebar-container{z-index:1000;position:fixed}.sidebar-overlay{position:fixed;inset:0;z-index:999;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}\n"] }]
|
|
2344
2470
|
}], propDecorators: { contentComponent: [{
|
|
2345
2471
|
type: ViewChild,
|
|
2346
2472
|
args: ['content', { read: ElementRef }]
|
|
@@ -2355,6 +2481,7 @@ class StoriesComponent {
|
|
|
2355
2481
|
showSubFooter = input(true, ...(ngDevMode ? [{ debugName: "showSubFooter" }] : []));
|
|
2356
2482
|
mute = signal(true, ...(ngDevMode ? [{ debugName: "mute" }] : []));
|
|
2357
2483
|
descriptionOpen = input(...(ngDevMode ? [undefined, { debugName: "descriptionOpen" }] : []));
|
|
2484
|
+
fullScreen = model(false, ...(ngDevMode ? [{ debugName: "fullScreen" }] : []));
|
|
2358
2485
|
storyChanged = output();
|
|
2359
2486
|
currentStory = computed(() => this.stories()[this.currentStoryIndex()], ...(ngDevMode ? [{ debugName: "currentStory" }] : []));
|
|
2360
2487
|
defaultDuration = input(7, ...(ngDevMode ? [{ debugName: "defaultDuration" }] : []));
|
|
@@ -2363,6 +2490,7 @@ class StoriesComponent {
|
|
|
2363
2490
|
timerInterval = 100;
|
|
2364
2491
|
timerSubscription;
|
|
2365
2492
|
paused = model(false, ...(ngDevMode ? [{ debugName: "paused" }] : []));
|
|
2493
|
+
close = output();
|
|
2366
2494
|
sidebarService = inject(SidebarService);
|
|
2367
2495
|
videoPlayer;
|
|
2368
2496
|
constructor() {
|
|
@@ -2391,12 +2519,15 @@ class StoriesComponent {
|
|
|
2391
2519
|
this.paused.set(false);
|
|
2392
2520
|
this.currentProgress.set(0);
|
|
2393
2521
|
this.currentTime = 0;
|
|
2522
|
+
if (this.currentStory().type == 'video') {
|
|
2523
|
+
timer(100).subscribe(() => console.log(this.videoPlayer.nativeElement.duration));
|
|
2524
|
+
}
|
|
2394
2525
|
this.runTimer();
|
|
2395
2526
|
}
|
|
2396
2527
|
runTimer() {
|
|
2397
2528
|
if (this.timerSubscription)
|
|
2398
2529
|
this.timerSubscription.unsubscribe();
|
|
2399
|
-
if (this.paused())
|
|
2530
|
+
if (this.paused() || this.stories().length == 1)
|
|
2400
2531
|
return;
|
|
2401
2532
|
this.timerSubscription = timer(this.timerInterval).subscribe(() => {
|
|
2402
2533
|
this.currentTime += this.timerInterval;
|
|
@@ -2409,14 +2540,21 @@ class StoriesComponent {
|
|
|
2409
2540
|
});
|
|
2410
2541
|
}
|
|
2411
2542
|
closeCallback(id) {
|
|
2412
|
-
this.sidebarService.closeSidebar(id);
|
|
2543
|
+
//this.sidebarService.closeSidebar(id);
|
|
2544
|
+
}
|
|
2545
|
+
emitClose() {
|
|
2546
|
+
this.fullScreen.set(false);
|
|
2547
|
+
this.close.emit();
|
|
2548
|
+
}
|
|
2549
|
+
setFullScreen() {
|
|
2550
|
+
this.fullScreen.set(true);
|
|
2413
2551
|
}
|
|
2414
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2415
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2552
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: StoriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2553
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: StoriesComponent, isStandalone: true, selector: "stories", inputs: { stories: { classPropertyName: "stories", publicName: "stories", isSignal: true, isRequired: false, transformFunction: null }, footerTemplate: { classPropertyName: "footerTemplate", publicName: "footerTemplate", isSignal: true, isRequired: false, transformFunction: null }, subFooterTemplate: { classPropertyName: "subFooterTemplate", publicName: "subFooterTemplate", isSignal: true, isRequired: false, transformFunction: null }, sideTemplate: { classPropertyName: "sideTemplate", publicName: "sideTemplate", isSignal: true, isRequired: false, transformFunction: null }, showSubFooter: { classPropertyName: "showSubFooter", publicName: "showSubFooter", isSignal: true, isRequired: false, transformFunction: null }, descriptionOpen: { classPropertyName: "descriptionOpen", publicName: "descriptionOpen", isSignal: true, isRequired: false, transformFunction: null }, fullScreen: { classPropertyName: "fullScreen", publicName: "fullScreen", isSignal: true, isRequired: false, transformFunction: null }, defaultDuration: { classPropertyName: "defaultDuration", publicName: "defaultDuration", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fullScreen: "fullScreenChange", storyChanged: "storyChanged", paused: "pausedChange", close: "close" }, viewQueries: [{ propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"w-full h-full story-container \" [ngClass]=\"{ 'fixed top-0 left-0 z-52': fullScreen(),\r\n 'relative': !fullScreen()\r\n }\">\r\n\r\n @if(stories().length > 1) {\r\n <div class=\"flex gap-1 story-lines p-2\">\r\n @for (story of stories(); track story.id; let i = $index) {\r\n <span class=\"hidden\">\r\n <p-button type=\"button\" (click)=\"closeCallback(story.id)\" rounded=\"true\" outlined=\"true\"\r\n styleClass=\"h-2rem w-2rem\"></p-button>\r\n </span>\r\n <div class=\"story-line\">\r\n <div class=\"story-line-inner\"\r\n [style.width]=\"currentStoryIndex() > i ? '100%' : (currentStoryIndex() == i ? this.currentProgress() + '%' : '0')\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"story-backdrop z-1\" (click)=\"next()\">\r\n @if (currentStory()?.type=='image') {\r\n <img [src]=\"currentStory().src\" />\r\n } @else if (currentStory()?.type=='video') {\r\n <video class=\"w-full\">\r\n <source [src]=\"currentStory().src\" type=\"video/mp4\">\r\n </video>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"story-content sm:border-round\">\r\n\r\n\r\n @if (currentStory()?.type == 'image') {\r\n <img [src]=\"currentStory().src\" (click)=\"next()\" />\r\n }\r\n @if (currentStory()?.type=='video') {\r\n <video class=\"w-full h-full\" (canplay)=\"videoPlayer.play()\" (loadedmetadata)=\"videoPlayer.muted = mute()\"\r\n #videoPlayer autoplay [muted]=\"mute()\" [playsInline]=\"true\" loop (click)=\"next()\">\r\n <source [src]=\"currentStory().src\" type=\"video/mp4\">\r\n\r\n </video>\r\n }\r\n\r\n </div>\r\n <div class=\"top-7 right-5 z-3 absolute flex gap-2\">\r\n @if (currentStory()?.type=='video') {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"mute.set(!mute())\" style=\"color: inherit;\">\r\n @if(mute()) {\r\n <i class=\"fi text-2xl fi-rr-volume-mute\"></i>\r\n }\r\n @else {\r\n <i class=\"fi text-2xl fi-rr-volume\"></i>\r\n }\r\n </a>\r\n </div>\r\n }\r\n\r\n @if(stories().length > 1) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"paused.set(!paused())\" style=\"color:inherit\">\r\n @if (paused()) {\r\n <i class=\"fi fi-rr-play text-2xl\"></i>\r\n }\r\n @else {\r\n <i class=\"fi fi-rr-pause text-2xl\"></i>\r\n }\r\n\r\n </a>\r\n </div>\r\n @if(fullScreen()) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"emitClose()\" style=\"color: inherit;\">\r\n <i class=\"fi text-2xl fi-rr-compress\"></i>\r\n </a>\r\n </div>\r\n }\r\n @if(!fullScreen()) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"setFullScreen()\" style=\"color: inherit;\">\r\n <i class=\"fi text-2xl fi-rr-expand\"></i>\r\n </a>\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div [class]=\"'story-overlay absolute bottom-0 p-2 left-0 z-2 gap-2 ' + (descriptionOpen() ? 'scrollable' : '')\">\r\n @if(footerTemplate()){\r\n <div class=\"story-footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n }\r\n\r\n\r\n\r\n </div>\r\n\r\n\r\n\r\n</div>", styles: [".story-content{z-index:1;background-repeat:no-repeat;position:absolute;overflow:hidden;object-fit:contain;text-align:center;align-content:center;width:100%;height:100%}.story-container{min-height:300px;overflow:hidden}.story-backdrop{background-color:#000;position:absolute;left:0;top:0;width:100%;height:100%;filter:blur(20px) brightness(60%);text-align:center;align-content:center;overflow:hidden}.story-backdrop video,.story-backdrop img{object-fit:cover;display:inline-block;width:100%;height:100%}.story-content video,.story-content img{object-fit:contain;display:inline-block;width:100%;height:100%}.story-content img{width:100%}.story-lines{position:absolute;width:100%;top:0;z-index:10}.story-line{background:#fff6;border-radius:6px;height:4px;flex:1}.story-footer{color:#fff;flex:1;min-width:0}p-skeleton .p-skeleton{background-color:#373737cc}.story-overlay{color:#fff;text-shadow:0 0px 3px rgba(0,0,0)}.story-side{text-align:center}.story-side .side-icon{font-size:24px}.story-line-inner{background:#fff;border-radius:6px;height:4px;transition:width .1s}.story-container{background-color:#000}.story-overlay.scrollable{height:90%;padding-top:0}.story-overlay.scrollable .story-footer{height:100%;overflow-y:auto}.story-overlay.scrollable .story-description{height:initial}.story-footer::-webkit-scrollbar{display:none}@media (max-width: 567px){.story-content{width:100%;height:100%;border-radius:0;background-color:transparent;margin:0}}.story-controls{top:10px;right:10px;position:absolute;z-index:3}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2$1.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "variant", "style", "styleClass", "badgeClass", "badgeSeverity", "ariaLabel", "buttonProps", "autofocus", "fluid"], outputs: ["onClick", "onFocus", "onBlur"] }], encapsulation: i0.ViewEncapsulation.None });
|
|
2416
2554
|
}
|
|
2417
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2555
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: StoriesComponent, decorators: [{
|
|
2418
2556
|
type: Component,
|
|
2419
|
-
args: [{ selector: 'stories', standalone: true, imports: [
|
|
2557
|
+
args: [{ selector: 'stories', standalone: true, imports: [CommonModule, NgTemplateOutlet, ButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"w-full h-full story-container \" [ngClass]=\"{ 'fixed top-0 left-0 z-52': fullScreen(),\r\n 'relative': !fullScreen()\r\n }\">\r\n\r\n @if(stories().length > 1) {\r\n <div class=\"flex gap-1 story-lines p-2\">\r\n @for (story of stories(); track story.id; let i = $index) {\r\n <span class=\"hidden\">\r\n <p-button type=\"button\" (click)=\"closeCallback(story.id)\" rounded=\"true\" outlined=\"true\"\r\n styleClass=\"h-2rem w-2rem\"></p-button>\r\n </span>\r\n <div class=\"story-line\">\r\n <div class=\"story-line-inner\"\r\n [style.width]=\"currentStoryIndex() > i ? '100%' : (currentStoryIndex() == i ? this.currentProgress() + '%' : '0')\">\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"story-backdrop z-1\" (click)=\"next()\">\r\n @if (currentStory()?.type=='image') {\r\n <img [src]=\"currentStory().src\" />\r\n } @else if (currentStory()?.type=='video') {\r\n <video class=\"w-full\">\r\n <source [src]=\"currentStory().src\" type=\"video/mp4\">\r\n </video>\r\n }\r\n </div>\r\n\r\n\r\n <div class=\"story-content sm:border-round\">\r\n\r\n\r\n @if (currentStory()?.type == 'image') {\r\n <img [src]=\"currentStory().src\" (click)=\"next()\" />\r\n }\r\n @if (currentStory()?.type=='video') {\r\n <video class=\"w-full h-full\" (canplay)=\"videoPlayer.play()\" (loadedmetadata)=\"videoPlayer.muted = mute()\"\r\n #videoPlayer autoplay [muted]=\"mute()\" [playsInline]=\"true\" loop (click)=\"next()\">\r\n <source [src]=\"currentStory().src\" type=\"video/mp4\">\r\n\r\n </video>\r\n }\r\n\r\n </div>\r\n <div class=\"top-7 right-5 z-3 absolute flex gap-2\">\r\n @if (currentStory()?.type=='video') {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"mute.set(!mute())\" style=\"color: inherit;\">\r\n @if(mute()) {\r\n <i class=\"fi text-2xl fi-rr-volume-mute\"></i>\r\n }\r\n @else {\r\n <i class=\"fi text-2xl fi-rr-volume\"></i>\r\n }\r\n </a>\r\n </div>\r\n }\r\n\r\n @if(stories().length > 1) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"paused.set(!paused())\" style=\"color:inherit\">\r\n @if (paused()) {\r\n <i class=\"fi fi-rr-play text-2xl\"></i>\r\n }\r\n @else {\r\n <i class=\"fi fi-rr-pause text-2xl\"></i>\r\n }\r\n\r\n </a>\r\n </div>\r\n @if(fullScreen()) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"emitClose()\" style=\"color: inherit;\">\r\n <i class=\"fi text-2xl fi-rr-compress\"></i>\r\n </a>\r\n </div>\r\n }\r\n @if(!fullScreen()) {\r\n <div class=\"w-12 h-12 rounded-full text-center content-center bg-surface-500/30 text-white\">\r\n <a (click)=\"setFullScreen()\" style=\"color: inherit;\">\r\n <i class=\"fi text-2xl fi-rr-expand\"></i>\r\n </a>\r\n </div>\r\n }\r\n }\r\n </div>\r\n\r\n <div [class]=\"'story-overlay absolute bottom-0 p-2 left-0 z-2 gap-2 ' + (descriptionOpen() ? 'scrollable' : '')\">\r\n @if(footerTemplate()){\r\n <div class=\"story-footer\">\r\n <ng-container [ngTemplateOutlet]=\"footerTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n }\r\n\r\n\r\n\r\n </div>\r\n\r\n\r\n\r\n</div>", styles: [".story-content{z-index:1;background-repeat:no-repeat;position:absolute;overflow:hidden;object-fit:contain;text-align:center;align-content:center;width:100%;height:100%}.story-container{min-height:300px;overflow:hidden}.story-backdrop{background-color:#000;position:absolute;left:0;top:0;width:100%;height:100%;filter:blur(20px) brightness(60%);text-align:center;align-content:center;overflow:hidden}.story-backdrop video,.story-backdrop img{object-fit:cover;display:inline-block;width:100%;height:100%}.story-content video,.story-content img{object-fit:contain;display:inline-block;width:100%;height:100%}.story-content img{width:100%}.story-lines{position:absolute;width:100%;top:0;z-index:10}.story-line{background:#fff6;border-radius:6px;height:4px;flex:1}.story-footer{color:#fff;flex:1;min-width:0}p-skeleton .p-skeleton{background-color:#373737cc}.story-overlay{color:#fff;text-shadow:0 0px 3px rgba(0,0,0)}.story-side{text-align:center}.story-side .side-icon{font-size:24px}.story-line-inner{background:#fff;border-radius:6px;height:4px;transition:width .1s}.story-container{background-color:#000}.story-overlay.scrollable{height:90%;padding-top:0}.story-overlay.scrollable .story-footer{height:100%;overflow-y:auto}.story-overlay.scrollable .story-description{height:initial}.story-footer::-webkit-scrollbar{display:none}@media (max-width: 567px){.story-content{width:100%;height:100%;border-radius:0;background-color:transparent;margin:0}}.story-controls{top:10px;right:10px;position:absolute;z-index:3}\n"] }]
|
|
2420
2558
|
}], ctorParameters: () => [], propDecorators: { videoPlayer: [{
|
|
2421
2559
|
type: ViewChild,
|
|
2422
2560
|
args: ['videoPlayer', { read: ElementRef }]
|
|
@@ -2477,10 +2615,10 @@ class QuestionsComponent {
|
|
|
2477
2615
|
deleteQuestion(item) {
|
|
2478
2616
|
this.registerQuestions.update(q => q.splice(q.indexOf(item), 1));
|
|
2479
2617
|
}
|
|
2480
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2481
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
2618
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: QuestionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2619
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.2", type: QuestionsComponent, isStandalone: true, selector: "questions", inputs: { imageRoot: { classPropertyName: "imageRoot", publicName: "imageRoot", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, registerQuestions: { classPropertyName: "registerQuestions", publicName: "registerQuestions", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { registerQuestions: "registerQuestionsChange" }, ngImport: i0, template: "<div>\r\n @for(item of orderedRegisterQuestions; track item){\r\n <div>\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"company-questions.question\"></translate>\r\n </label>\r\n <input type=\"text\" [(ngModel)]=\"item.name\" class=\"form-control\" name=\"{{item.id}}\" required />\r\n </div>\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"company-questions.type\"></translate>\r\n </label>\r\n\r\n <select [(ngModel)]=\"item.inputType\" class=\"form-control\">\r\n <option>TEXTBOX</option>\r\n <option>TEXTAREA</option>\r\n <option>CHOICE</option>\r\n @if(has(item, 'DATEOFBIRTH')){\r\n <option>DATE</option>\r\n }\r\n\r\n @if(has(item, 'IMAGE')){\r\n <option>IMAGE</option>\r\n }\r\n </select>\r\n </div>\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"company-questions.value-type\"></translate>\r\n </label>\r\n\r\n <select [(ngModel)]=\"item.type\" class=\"form-control\">\r\n @if(has(item, 'FIRSTNAME')){\r\n <option>FIRSTNAME</option>\r\n }\r\n @if(has(item, 'LASTNAME')){\r\n <option>LASTNAME</option>\r\n }\r\n @if(has(item, 'EMAIL')){\r\n <option>EMAIL</option>\r\n }\r\n @if(has(item, 'PHONE')){\r\n <option>PHONE</option>\r\n }\r\n @if(has(item, 'CNP')){\r\n <option>CNP</option>\r\n }\r\n @if(has(item, 'SEX')){\r\n <option>SEX</option>\r\n }\r\n @if(has(item, 'COUNTRY')){\r\n <option>COUNTRY</option>\r\n }\r\n @if(has(item, 'CITY')){\r\n <option>CITY</option>\r\n }\r\n @if(has(item, 'DATEOFBIRTH')){\r\n <option>DATEOFBIRTH</option>\r\n }\r\n @if(has(item, 'GUARDIANNAME')){\r\n <option>GUARDIANNAME</option>\r\n }\r\n @if(has(item, 'GUARDIANPHONE')){\r\n <option>GUARDIANPHONE</option>\r\n }\r\n @if(has(item, 'IMAGE')){\r\n <option>IMAGE</option>\r\n }\r\n <option>OTHER</option>\r\n </select>\r\n </div>\r\n @if(item.inputType=='CHOICE'){\r\n <div class=\"form-group\">\r\n <label>\r\n <translate name=\"company-questions.choices\"></translate>\r\n </label>\r\n <textarea [(ngModel)]=\"item.choices\" class=\"form-control\" #choices=\"ngModel\" name=\"choices\" rows=\"5\"></textarea>\r\n </div>\r\n }\r\n\r\n <div class=\"form-group\" style=\"display: flex; justify-content: space-between; align-items: center;\">\r\n <label>\r\n <translate name=\"company-questions.priority\"></translate>\r\n </label>\r\n <input type=\"number\" [(ngModel)]=\"item.priority\" class=\"form-control\" style=\"width:100px; margin-left: 5px;\" />\r\n\r\n <p-checkbox class=\"pr-3\" [(ngModel)]=\"item.required\" [binary]=\"true\" name=\"is_required\" [inputId]=\"item.required\">\r\n <translate name=\"questions.is-required\">\r\n </translate>\r\n </p-checkbox>\r\n\r\n <!-- <icheck name=\"is_required\" style=\"margin-left: 10px;\" [(ngModel)]=\"item.required\"><translate name=\"questions.is-required\">\r\n </translate>\r\n </icheck> -->\r\n\r\n <a class=\"btn btn-warning btn-sm\" style=\"margin-left: auto;\" (click)=\"deleteQuestion(item)\"><i\r\n class=\"pi pi-trash\"></i></a>\r\n\r\n </div>\r\n <hr />\r\n </div>\r\n}\r\n <button class=\"btn btn-primary\" (click)=\"addNew()\"><i class=\"pi pi-plus\"></i></button>\r\n</div>\r\n<!-- <div *ngIf=\"mode=='answer'\">\r\n <div class=\"form-group text-center\">\r\n <div [style.backgroundImage]=\"imageUrl\" *ngIf=\"imageItem\" class=\"image-upload\"></div>\r\n <h3 *ngIf=\"firstNameItem || lastNameItem\">{{firstNameItem?.answer}} {{lastNameItem?.answer}}</h3>\r\n </div>\r\n <div class=\"form-group extra-fields\" *ngFor=\"let item of extraFields\">\r\n <label>{{item.name}}</label>\r\n \r\n <div>{{item.answer}}</div>\r\n </div>\r\n</div> -->", styles: [".image-upload{width:200px;height:200px;background-size:cover;background-position:center center;display:inline-block}.extra-fields{background-color:#fff;border-bottom:solid 1px #ccc;padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TranslationComponent, selector: "translate", inputs: ["name", "replacements"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "ngmodule", type: CardModule }, { kind: "ngmodule", type: RippleModule }, { kind: "ngmodule", type: ButtonModule }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3$2.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "inputStyle", "styleClass", "inputClass", "indeterminate", "formControl", "checkboxIcon", "readonly", "autofocus", "trueValue", "falseValue", "variant", "size"], outputs: ["onChange", "onFocus", "onBlur"] }] });
|
|
2482
2620
|
}
|
|
2483
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2621
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: QuestionsComponent, decorators: [{
|
|
2484
2622
|
type: Component,
|
|
2485
2623
|
args: [{ selector: 'questions', standalone: true, imports: [
|
|
2486
2624
|
CommonModule,
|
|
@@ -2546,13 +2684,13 @@ class LoginComponent {
|
|
|
2546
2684
|
// window.login.userLoggedIn(this.userService.currentUser);
|
|
2547
2685
|
// });
|
|
2548
2686
|
}
|
|
2549
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
2550
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.
|
|
2687
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LoginComponent, deps: [{ token: UserAccountService }, { token: GlobalService }, { token: i2$4.Router }], target: i0.ɵɵFactoryTarget.Component });
|
|
2688
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.2", type: LoginComponent, isStandalone: true, selector: "app-login", ngImport: i0, template: "<!-- <app-loader></app-loader> -->\r\n<div style=\"max-width:400px; width:90%; margin: 0px auto\">\r\n <payvent-login-form></payvent-login-form>\r\n</div>", styles: [""], dependencies: [{ kind: "component", type: LoginFormComponent, selector: "payvent-login-form", inputs: ["tokenType", "clientId", "type"] }] });
|
|
2551
2689
|
}
|
|
2552
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
2690
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: LoginComponent, decorators: [{
|
|
2553
2691
|
type: Component,
|
|
2554
2692
|
args: [{ selector: 'app-login', standalone: true, imports: [LoginFormComponent], template: "<!-- <app-loader></app-loader> -->\r\n<div style=\"max-width:400px; width:90%; margin: 0px auto\">\r\n <payvent-login-form></payvent-login-form>\r\n</div>" }]
|
|
2555
|
-
}], ctorParameters: () => [{ type: UserAccountService }, { type: GlobalService }, { type:
|
|
2693
|
+
}], ctorParameters: () => [{ type: UserAccountService }, { type: GlobalService }, { type: i2$4.Router }] });
|
|
2556
2694
|
|
|
2557
2695
|
// export * from './loading-button/loading-button.component';
|
|
2558
2696
|
// export * from './location-select/location-select.component';
|
|
@@ -2560,27 +2698,161 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.1.6", ngImpor
|
|
|
2560
2698
|
// export * from './notification-list/notification-list.component';
|
|
2561
2699
|
// export * from './questions/questions.component';
|
|
2562
2700
|
|
|
2563
|
-
class
|
|
2564
|
-
|
|
2565
|
-
|
|
2566
|
-
|
|
2567
|
-
|
|
2568
|
-
|
|
2569
|
-
|
|
2701
|
+
class DragScrollDirective {
|
|
2702
|
+
_el = inject((ElementRef));
|
|
2703
|
+
_renderer = inject(Renderer2);
|
|
2704
|
+
_isDragging = signal(false, ...(ngDevMode ? [{ debugName: "_isDragging" }] : []));
|
|
2705
|
+
_startY = signal(0, ...(ngDevMode ? [{ debugName: "_startY" }] : []));
|
|
2706
|
+
_scrollTop = signal(0, ...(ngDevMode ? [{ debugName: "_scrollTop" }] : []));
|
|
2707
|
+
_startX = signal(0, ...(ngDevMode ? [{ debugName: "_startX" }] : []));
|
|
2708
|
+
_scrollLeft = signal(0, ...(ngDevMode ? [{ debugName: "_scrollLeft" }] : []));
|
|
2709
|
+
// Binds methods to maintain the correct context
|
|
2710
|
+
_boundMouseMove = this.onMouseMove.bind(this);
|
|
2711
|
+
_boundMouseUp = this.onMouseUp.bind(this);
|
|
2712
|
+
onScroll = output();
|
|
2713
|
+
disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
2714
|
+
overflowHidden = input(false, ...(ngDevMode ? [{ debugName: "overflowHidden" }] : []));
|
|
2715
|
+
coord = model({ x: 0, y: 0 }, ...(ngDevMode ? [{ debugName: "coord" }] : []));
|
|
2716
|
+
constructor() {
|
|
2717
|
+
// Sets basic styles for the element
|
|
2718
|
+
this._renderer.setStyle(this._el.nativeElement, 'user-select', 'none');
|
|
2719
|
+
this._renderer.setStyle(this._el.nativeElement, 'overflow', 'auto');
|
|
2720
|
+
// Updates the position when the coord signal changes
|
|
2721
|
+
effect(() => {
|
|
2722
|
+
this.setPosition(this.coord().x, this.coord().y);
|
|
2723
|
+
});
|
|
2724
|
+
// Updates the cursor style
|
|
2725
|
+
afterEveryRender(() => {
|
|
2726
|
+
this._renderer.setStyle(this._el.nativeElement, 'cursor', this.disabled() ? 'default' : 'move');
|
|
2727
|
+
});
|
|
2728
|
+
// apply inital position
|
|
2729
|
+
afterNextRender(() => {
|
|
2730
|
+
this.setPosition(this.coord().x, this.coord().y);
|
|
2731
|
+
if (this.overflowHidden()) {
|
|
2732
|
+
this._renderer.setStyle(this._el.nativeElement, 'scrollbar-width', 'none');
|
|
2733
|
+
this._renderer.setStyle(this._el.nativeElement, '-ms-overflow-style', 'none');
|
|
2734
|
+
this._renderer.setStyle(this._el.nativeElement, '::-webkit-scrollbar', 'display: none');
|
|
2570
2735
|
}
|
|
2571
|
-
|
|
2572
|
-
|
|
2736
|
+
});
|
|
2737
|
+
}
|
|
2738
|
+
setPosition(x, y) {
|
|
2739
|
+
this._renderer.setProperty(this._el.nativeElement, 'scrollLeft', x);
|
|
2740
|
+
this._renderer.setProperty(this._el.nativeElement, 'scrollTop', y);
|
|
2741
|
+
}
|
|
2742
|
+
onMouseDown(e) {
|
|
2743
|
+
if (this.disabled())
|
|
2744
|
+
return;
|
|
2745
|
+
// Check if click target is a button or inside a button
|
|
2746
|
+
const targetElement = e.target;
|
|
2747
|
+
if (targetElement.tagName.toLowerCase() === 'button' || targetElement.closest('button')) {
|
|
2748
|
+
return;
|
|
2573
2749
|
}
|
|
2574
|
-
|
|
2750
|
+
this._isDragging.set(true);
|
|
2751
|
+
// Calculates initial positions
|
|
2752
|
+
const rect = this._el.nativeElement.getBoundingClientRect();
|
|
2753
|
+
this._startY.set(e.clientY - rect.top);
|
|
2754
|
+
this._startX.set(e.clientX - rect.left);
|
|
2755
|
+
this._scrollTop.set(this._el.nativeElement.scrollTop);
|
|
2756
|
+
this._scrollLeft.set(this._el.nativeElement.scrollLeft);
|
|
2757
|
+
// Changes the cursor to grab
|
|
2758
|
+
this._renderer.setStyle(this._el.nativeElement, 'cursor', 'grab');
|
|
2759
|
+
// Adds global listeners
|
|
2760
|
+
document.addEventListener('mousemove', this._boundMouseMove);
|
|
2761
|
+
document.addEventListener('mouseup', this._boundMouseUp);
|
|
2762
|
+
// Prevents default behaviors
|
|
2763
|
+
e.preventDefault();
|
|
2764
|
+
e.stopPropagation();
|
|
2765
|
+
}
|
|
2766
|
+
onScrollMove(e) {
|
|
2767
|
+
this.coord.set({ x: this._el.nativeElement.scrollLeft, y: this._el.nativeElement.scrollTop });
|
|
2768
|
+
this.onScroll.emit(this.coord());
|
|
2769
|
+
}
|
|
2770
|
+
onSelectStart(e) {
|
|
2771
|
+
if (this.disabled())
|
|
2772
|
+
return;
|
|
2773
|
+
// Check if target is a button or inside a button
|
|
2774
|
+
const targetElement = e.target;
|
|
2775
|
+
if (targetElement.tagName.toLowerCase() === 'button' || targetElement.closest('button')) {
|
|
2776
|
+
return;
|
|
2777
|
+
}
|
|
2778
|
+
// Prevents text selection
|
|
2779
|
+
e.preventDefault();
|
|
2780
|
+
}
|
|
2781
|
+
onMouseMove(e) {
|
|
2782
|
+
if (!this._isDragging)
|
|
2783
|
+
return;
|
|
2784
|
+
e.preventDefault();
|
|
2785
|
+
const rect = this._el.nativeElement.getBoundingClientRect();
|
|
2786
|
+
const y = e.clientY - rect.top;
|
|
2787
|
+
const x = e.clientX - rect.left;
|
|
2788
|
+
const deltaY = y - this._startY();
|
|
2789
|
+
const deltaX = x - this._startX();
|
|
2790
|
+
// Applies scrolling based on mouse movement
|
|
2791
|
+
this._el.nativeElement.scrollTop = this._scrollTop() - deltaY;
|
|
2792
|
+
this._el.nativeElement.scrollLeft = this._scrollLeft() - deltaX;
|
|
2793
|
+
}
|
|
2794
|
+
onMouseUp() {
|
|
2795
|
+
if (this.disabled())
|
|
2796
|
+
return;
|
|
2797
|
+
this._isDragging.set(false);
|
|
2798
|
+
// Reset the cursor
|
|
2799
|
+
this._renderer.setStyle(this._el.nativeElement, 'cursor', 'move');
|
|
2800
|
+
// Remove global listeners
|
|
2801
|
+
this.removeDragListeners();
|
|
2575
2802
|
}
|
|
2803
|
+
removeDragListeners() {
|
|
2804
|
+
document.removeEventListener('mousemove', this._boundMouseMove);
|
|
2805
|
+
document.removeEventListener('mouseup', this._boundMouseUp);
|
|
2806
|
+
}
|
|
2807
|
+
ngOnDestroy() {
|
|
2808
|
+
this.removeDragListeners();
|
|
2809
|
+
}
|
|
2810
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: DragScrollDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2811
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.2", type: DragScrollDirective, isStandalone: true, selector: "[dragscroll]", inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, overflowHidden: { classPropertyName: "overflowHidden", publicName: "overflowHidden", isSignal: true, isRequired: false, transformFunction: null }, coord: { classPropertyName: "coord", publicName: "coord", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onScroll: "onScroll", coord: "coordChange" }, host: { listeners: { "mousedown": "onMouseDown($event)", "scroll": "onScrollMove($event)", "selectstart": "onSelectStart($event)" } }, ngImport: i0 });
|
|
2576
2812
|
}
|
|
2813
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: DragScrollDirective, decorators: [{
|
|
2814
|
+
type: Directive,
|
|
2815
|
+
args: [{
|
|
2816
|
+
standalone: true,
|
|
2817
|
+
selector: '[dragscroll]'
|
|
2818
|
+
}]
|
|
2819
|
+
}], ctorParameters: () => [], propDecorators: { onMouseDown: [{
|
|
2820
|
+
type: HostListener,
|
|
2821
|
+
args: ['mousedown', ['$event']]
|
|
2822
|
+
}], onScrollMove: [{
|
|
2823
|
+
type: HostListener,
|
|
2824
|
+
args: ['scroll', ['$event']]
|
|
2825
|
+
}], onSelectStart: [{
|
|
2826
|
+
type: HostListener,
|
|
2827
|
+
args: ['selectstart', ['$event']]
|
|
2828
|
+
}] } });
|
|
2577
2829
|
|
|
2578
|
-
class
|
|
2579
|
-
|
|
2580
|
-
|
|
2581
|
-
|
|
2582
|
-
|
|
2830
|
+
class ViewTransitionDirective {
|
|
2831
|
+
clicked = signal(false, ...(ngDevMode ? [{ debugName: "clicked" }] : []));
|
|
2832
|
+
onClicked() {
|
|
2833
|
+
this.clicked.set(true);
|
|
2834
|
+
}
|
|
2835
|
+
static = input(false, ...(ngDevMode ? [{ debugName: "static" }] : []));
|
|
2836
|
+
viewTranistionService = inject(ViewTransitionService);
|
|
2837
|
+
name = input('', ...(ngDevMode ? [{ debugName: "name", alias: 'viewTransition' }] : [{ alias: 'viewTransition' }]));
|
|
2838
|
+
id = input(...(ngDevMode ? [undefined, { debugName: "id" }] : []));
|
|
2839
|
+
viewTransitionName = computed(() => {
|
|
2840
|
+
return this.clicked() || this.static() ? this.name() : 'none';
|
|
2841
|
+
}, ...(ngDevMode ? [{ debugName: "viewTransitionName" }] : []));
|
|
2842
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ViewTransitionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
2843
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.3.2", type: ViewTransitionDirective, isStandalone: true, selector: "[viewTransition]", inputs: { static: { classPropertyName: "static", publicName: "static", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "viewTransition", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "onClicked()" }, properties: { "style.view-transition-name": "viewTransitionName()" } }, ngImport: i0 });
|
|
2583
2844
|
}
|
|
2845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: ViewTransitionDirective, decorators: [{
|
|
2846
|
+
type: Directive,
|
|
2847
|
+
args: [{
|
|
2848
|
+
selector: '[viewTransition]',
|
|
2849
|
+
standalone: true,
|
|
2850
|
+
host: { '[style.view-transition-name]': 'viewTransitionName()' },
|
|
2851
|
+
}]
|
|
2852
|
+
}], propDecorators: { onClicked: [{
|
|
2853
|
+
type: HostListener,
|
|
2854
|
+
args: ['click']
|
|
2855
|
+
}] } });
|
|
2584
2856
|
|
|
2585
2857
|
/*
|
|
2586
2858
|
* Public API Surface of ngx-payvent-shared
|
|
@@ -2591,5 +2863,5 @@ class StoryContext {
|
|
|
2591
2863
|
* Generated bundle index. Do not edit.
|
|
2592
2864
|
*/
|
|
2593
2865
|
|
|
2594
|
-
export { ApplicationSharedService, CookieBarComponent, FlowAppConfig, FlowCookieService, FlowHttpClient, GlobalService, InternationalPhoneComponent, LoginComponent, LoginFormComponent, Misc, ModalService, NotificationDropdownComponent, NotificationListComponent, NotificationToasterComponent, QrScannerComponent, QuestionsComponent, SidebarComponent, SidebarContext, SidebarService, SignalrNotificationService, SortingPagingCriteria, StoriesComponent, StoryContext, SumPipe, TranslationComponent, TranslationPipe, TranslationSharedService, UserAccountService };
|
|
2866
|
+
export { AppSettingsLoader, AppSettingsLoaderService, ApplicationSharedService, CookieBarComponent, CountryProvinceCityComponent, DragScrollDirective, FlowAppConfig, FlowCookieService, FlowHttpClient, GlobalService, InternationalPhoneComponent, LoginComponent, LoginFormComponent, Misc, ModalService, NotificationDropdownComponent, NotificationListComponent, NotificationToasterComponent, QrScannerComponent, QuestionsComponent, SidebarComponent, SidebarContext, SidebarService, SignalrNotificationService, SortingPagingCriteria, StoriesComponent, StoryContext, SumPipe, TranslationComponent, TranslationPipe, TranslationSharedService, UserAccountService, ViewTransitionDirective, ViewTransitionService };
|
|
2595
2867
|
//# sourceMappingURL=ngx-payvent-shared.mjs.map
|