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.
Files changed (258) hide show
  1. package/fesm2022/ngx-payvent-shared.mjs +741 -469
  2. package/fesm2022/ngx-payvent-shared.mjs.map +1 -1
  3. package/index.d.ts +175 -81
  4. package/package.json +2 -1
  5. package/src/assets/flags/ad.png +0 -0
  6. package/src/assets/flags/ae.png +0 -0
  7. package/src/assets/flags/af.png +0 -0
  8. package/src/assets/flags/ag.png +0 -0
  9. package/src/assets/flags/ai.png +0 -0
  10. package/src/assets/flags/al.png +0 -0
  11. package/src/assets/flags/am.png +0 -0
  12. package/src/assets/flags/ao.png +0 -0
  13. package/src/assets/flags/aq.png +0 -0
  14. package/src/assets/flags/ar.png +0 -0
  15. package/src/assets/flags/as.png +0 -0
  16. package/src/assets/flags/at.png +0 -0
  17. package/src/assets/flags/au.png +0 -0
  18. package/src/assets/flags/aw.png +0 -0
  19. package/src/assets/flags/ax.png +0 -0
  20. package/src/assets/flags/az.png +0 -0
  21. package/src/assets/flags/ba.png +0 -0
  22. package/src/assets/flags/bb.png +0 -0
  23. package/src/assets/flags/bd.png +0 -0
  24. package/src/assets/flags/be.png +0 -0
  25. package/src/assets/flags/bf.png +0 -0
  26. package/src/assets/flags/bg.png +0 -0
  27. package/src/assets/flags/bh.png +0 -0
  28. package/src/assets/flags/bi.png +0 -0
  29. package/src/assets/flags/bj.png +0 -0
  30. package/src/assets/flags/bl.png +0 -0
  31. package/src/assets/flags/bm.png +0 -0
  32. package/src/assets/flags/bn.png +0 -0
  33. package/src/assets/flags/bo.png +0 -0
  34. package/src/assets/flags/bq.png +0 -0
  35. package/src/assets/flags/br.png +0 -0
  36. package/src/assets/flags/bs.png +0 -0
  37. package/src/assets/flags/bt.png +0 -0
  38. package/src/assets/flags/bv.png +0 -0
  39. package/src/assets/flags/bw.png +0 -0
  40. package/src/assets/flags/by.png +0 -0
  41. package/src/assets/flags/bz.png +0 -0
  42. package/src/assets/flags/ca.png +0 -0
  43. package/src/assets/flags/cc.png +0 -0
  44. package/src/assets/flags/cd.png +0 -0
  45. package/src/assets/flags/cf.png +0 -0
  46. package/src/assets/flags/cg.png +0 -0
  47. package/src/assets/flags/ch.png +0 -0
  48. package/src/assets/flags/ci.png +0 -0
  49. package/src/assets/flags/ck.png +0 -0
  50. package/src/assets/flags/cl.png +0 -0
  51. package/src/assets/flags/cm.png +0 -0
  52. package/src/assets/flags/cn.png +0 -0
  53. package/src/assets/flags/co.png +0 -0
  54. package/src/assets/flags/cr.png +0 -0
  55. package/src/assets/flags/cu.png +0 -0
  56. package/src/assets/flags/cv.png +0 -0
  57. package/src/assets/flags/cw.png +0 -0
  58. package/src/assets/flags/cx.png +0 -0
  59. package/src/assets/flags/cy.png +0 -0
  60. package/src/assets/flags/cz.png +0 -0
  61. package/src/assets/flags/de.png +0 -0
  62. package/src/assets/flags/dj.png +0 -0
  63. package/src/assets/flags/dk.png +0 -0
  64. package/src/assets/flags/dm.png +0 -0
  65. package/src/assets/flags/do.png +0 -0
  66. package/src/assets/flags/dz.png +0 -0
  67. package/src/assets/flags/ec.png +0 -0
  68. package/src/assets/flags/ee.png +0 -0
  69. package/src/assets/flags/eg.png +0 -0
  70. package/src/assets/flags/eh.png +0 -0
  71. package/src/assets/flags/er.png +0 -0
  72. package/src/assets/flags/es.png +0 -0
  73. package/src/assets/flags/et.png +0 -0
  74. package/src/assets/flags/fi.png +0 -0
  75. package/src/assets/flags/fj.png +0 -0
  76. package/src/assets/flags/fk.png +0 -0
  77. package/src/assets/flags/fm.png +0 -0
  78. package/src/assets/flags/fo.png +0 -0
  79. package/src/assets/flags/fr.png +0 -0
  80. package/src/assets/flags/ga.png +0 -0
  81. package/src/assets/flags/gb-eng.png +0 -0
  82. package/src/assets/flags/gb-nir.png +0 -0
  83. package/src/assets/flags/gb-sct.png +0 -0
  84. package/src/assets/flags/gb-wls.png +0 -0
  85. package/src/assets/flags/gb.png +0 -0
  86. package/src/assets/flags/gd.png +0 -0
  87. package/src/assets/flags/ge.png +0 -0
  88. package/src/assets/flags/gf.png +0 -0
  89. package/src/assets/flags/gg.png +0 -0
  90. package/src/assets/flags/gh.png +0 -0
  91. package/src/assets/flags/gi.png +0 -0
  92. package/src/assets/flags/gl.png +0 -0
  93. package/src/assets/flags/gm.png +0 -0
  94. package/src/assets/flags/gn.png +0 -0
  95. package/src/assets/flags/gp.png +0 -0
  96. package/src/assets/flags/gq.png +0 -0
  97. package/src/assets/flags/gr.png +0 -0
  98. package/src/assets/flags/gs.png +0 -0
  99. package/src/assets/flags/gt.png +0 -0
  100. package/src/assets/flags/gu.png +0 -0
  101. package/src/assets/flags/gw.png +0 -0
  102. package/src/assets/flags/gy.png +0 -0
  103. package/src/assets/flags/hk.png +0 -0
  104. package/src/assets/flags/hm.png +0 -0
  105. package/src/assets/flags/hn.png +0 -0
  106. package/src/assets/flags/hr.png +0 -0
  107. package/src/assets/flags/ht.png +0 -0
  108. package/src/assets/flags/hu.png +0 -0
  109. package/src/assets/flags/id.png +0 -0
  110. package/src/assets/flags/ie.png +0 -0
  111. package/src/assets/flags/il.png +0 -0
  112. package/src/assets/flags/im.png +0 -0
  113. package/src/assets/flags/in.png +0 -0
  114. package/src/assets/flags/io.png +0 -0
  115. package/src/assets/flags/iq.png +0 -0
  116. package/src/assets/flags/ir.png +0 -0
  117. package/src/assets/flags/is.png +0 -0
  118. package/src/assets/flags/it.png +0 -0
  119. package/src/assets/flags/je.png +0 -0
  120. package/src/assets/flags/jm.png +0 -0
  121. package/src/assets/flags/jo.png +0 -0
  122. package/src/assets/flags/jp.png +0 -0
  123. package/src/assets/flags/ke.png +0 -0
  124. package/src/assets/flags/kg.png +0 -0
  125. package/src/assets/flags/kh.png +0 -0
  126. package/src/assets/flags/ki.png +0 -0
  127. package/src/assets/flags/km.png +0 -0
  128. package/src/assets/flags/kn.png +0 -0
  129. package/src/assets/flags/kp.png +0 -0
  130. package/src/assets/flags/kr.png +0 -0
  131. package/src/assets/flags/kw.png +0 -0
  132. package/src/assets/flags/ky.png +0 -0
  133. package/src/assets/flags/kz.png +0 -0
  134. package/src/assets/flags/la.png +0 -0
  135. package/src/assets/flags/lb.png +0 -0
  136. package/src/assets/flags/lc.png +0 -0
  137. package/src/assets/flags/li.png +0 -0
  138. package/src/assets/flags/lk.png +0 -0
  139. package/src/assets/flags/lr.png +0 -0
  140. package/src/assets/flags/ls.png +0 -0
  141. package/src/assets/flags/lt.png +0 -0
  142. package/src/assets/flags/lu.png +0 -0
  143. package/src/assets/flags/lv.png +0 -0
  144. package/src/assets/flags/ly.png +0 -0
  145. package/src/assets/flags/ma.png +0 -0
  146. package/src/assets/flags/mc.png +0 -0
  147. package/src/assets/flags/md.png +0 -0
  148. package/src/assets/flags/me.png +0 -0
  149. package/src/assets/flags/mf.png +0 -0
  150. package/src/assets/flags/mg.png +0 -0
  151. package/src/assets/flags/mh.png +0 -0
  152. package/src/assets/flags/mk.png +0 -0
  153. package/src/assets/flags/ml.png +0 -0
  154. package/src/assets/flags/mm.png +0 -0
  155. package/src/assets/flags/mn.png +0 -0
  156. package/src/assets/flags/mo.png +0 -0
  157. package/src/assets/flags/mp.png +0 -0
  158. package/src/assets/flags/mq.png +0 -0
  159. package/src/assets/flags/mr.png +0 -0
  160. package/src/assets/flags/ms.png +0 -0
  161. package/src/assets/flags/mt.png +0 -0
  162. package/src/assets/flags/mu.png +0 -0
  163. package/src/assets/flags/mv.png +0 -0
  164. package/src/assets/flags/mw.png +0 -0
  165. package/src/assets/flags/mx.png +0 -0
  166. package/src/assets/flags/my.png +0 -0
  167. package/src/assets/flags/mz.png +0 -0
  168. package/src/assets/flags/na.png +0 -0
  169. package/src/assets/flags/nc.png +0 -0
  170. package/src/assets/flags/ne.png +0 -0
  171. package/src/assets/flags/nf.png +0 -0
  172. package/src/assets/flags/ng.png +0 -0
  173. package/src/assets/flags/ni.png +0 -0
  174. package/src/assets/flags/nl.png +0 -0
  175. package/src/assets/flags/no.png +0 -0
  176. package/src/assets/flags/np.png +0 -0
  177. package/src/assets/flags/nr.png +0 -0
  178. package/src/assets/flags/nu.png +0 -0
  179. package/src/assets/flags/nz.png +0 -0
  180. package/src/assets/flags/om.png +0 -0
  181. package/src/assets/flags/pa.png +0 -0
  182. package/src/assets/flags/pe.png +0 -0
  183. package/src/assets/flags/pf.png +0 -0
  184. package/src/assets/flags/pg.png +0 -0
  185. package/src/assets/flags/ph.png +0 -0
  186. package/src/assets/flags/pk.png +0 -0
  187. package/src/assets/flags/pl.png +0 -0
  188. package/src/assets/flags/pm.png +0 -0
  189. package/src/assets/flags/pn.png +0 -0
  190. package/src/assets/flags/pr.png +0 -0
  191. package/src/assets/flags/ps.png +0 -0
  192. package/src/assets/flags/pt.png +0 -0
  193. package/src/assets/flags/pw.png +0 -0
  194. package/src/assets/flags/py.png +0 -0
  195. package/src/assets/flags/qa.png +0 -0
  196. package/src/assets/flags/re.png +0 -0
  197. package/src/assets/flags/ro.png +0 -0
  198. package/src/assets/flags/rs.png +0 -0
  199. package/src/assets/flags/ru.png +0 -0
  200. package/src/assets/flags/rw.png +0 -0
  201. package/src/assets/flags/sa.png +0 -0
  202. package/src/assets/flags/sb.png +0 -0
  203. package/src/assets/flags/sc.png +0 -0
  204. package/src/assets/flags/sd.png +0 -0
  205. package/src/assets/flags/se.png +0 -0
  206. package/src/assets/flags/sg.png +0 -0
  207. package/src/assets/flags/sh.png +0 -0
  208. package/src/assets/flags/si.png +0 -0
  209. package/src/assets/flags/sj.png +0 -0
  210. package/src/assets/flags/sk.png +0 -0
  211. package/src/assets/flags/sl.png +0 -0
  212. package/src/assets/flags/sm.png +0 -0
  213. package/src/assets/flags/sn.png +0 -0
  214. package/src/assets/flags/so.png +0 -0
  215. package/src/assets/flags/sr.png +0 -0
  216. package/src/assets/flags/ss.png +0 -0
  217. package/src/assets/flags/st.png +0 -0
  218. package/src/assets/flags/sv.png +0 -0
  219. package/src/assets/flags/sx.png +0 -0
  220. package/src/assets/flags/sy.png +0 -0
  221. package/src/assets/flags/sz.png +0 -0
  222. package/src/assets/flags/tc.png +0 -0
  223. package/src/assets/flags/td.png +0 -0
  224. package/src/assets/flags/tf.png +0 -0
  225. package/src/assets/flags/tg.png +0 -0
  226. package/src/assets/flags/th.png +0 -0
  227. package/src/assets/flags/tj.png +0 -0
  228. package/src/assets/flags/tk.png +0 -0
  229. package/src/assets/flags/tl.png +0 -0
  230. package/src/assets/flags/tm.png +0 -0
  231. package/src/assets/flags/tn.png +0 -0
  232. package/src/assets/flags/to.png +0 -0
  233. package/src/assets/flags/tr.png +0 -0
  234. package/src/assets/flags/tt.png +0 -0
  235. package/src/assets/flags/tv.png +0 -0
  236. package/src/assets/flags/tw.png +0 -0
  237. package/src/assets/flags/tz.png +0 -0
  238. package/src/assets/flags/ua.png +0 -0
  239. package/src/assets/flags/ug.png +0 -0
  240. package/src/assets/flags/um.png +0 -0
  241. package/src/assets/flags/us.png +0 -0
  242. package/src/assets/flags/uy.png +0 -0
  243. package/src/assets/flags/uz.png +0 -0
  244. package/src/assets/flags/va.png +0 -0
  245. package/src/assets/flags/vc.png +0 -0
  246. package/src/assets/flags/ve.png +0 -0
  247. package/src/assets/flags/vg.png +0 -0
  248. package/src/assets/flags/vi.png +0 -0
  249. package/src/assets/flags/vn.png +0 -0
  250. package/src/assets/flags/vu.png +0 -0
  251. package/src/assets/flags/wf.png +0 -0
  252. package/src/assets/flags/ws.png +0 -0
  253. package/src/assets/flags/xk.png +0 -0
  254. package/src/assets/flags/ye.png +0 -0
  255. package/src/assets/flags/yt.png +0 -0
  256. package/src/assets/flags/za.png +0 -0
  257. package/src/assets/flags/zm.png +0 -0
  258. package/src/assets/flags/zw.png +0 -0
@@ -1,37 +1,49 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, signal, Injectable, inject, Input, Component, HostListener, Pipe, input, computed, model, output, effect, ViewChild, ViewEncapsulation, ElementRef, HostBinding, Renderer2, Output, untracked } from '@angular/core';
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 i1 from '@angular/router';
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, map } from 'rxjs/operators';
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 i1$2 from '@angular/common';
11
- import { Location, CommonModule, NgComponentOutlet, NgTemplateOutlet, JsonPipe } from '@angular/common';
12
- import * as bowser from 'bowser';
13
- import * as i2$1 from 'primeng/api';
14
- import { ConfirmationService, MessageService } from 'primeng/api';
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$1 from '@angular/forms';
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 i3 from 'ngx-order-pipe';
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$1 from 'primeng/button';
25
- import { ButtonModule } from 'primeng/button';
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$3 from 'primeng/toast';
42
+ import * as i1$1 from 'primeng/toast';
29
43
  import { ToastModule } from 'primeng/toast';
30
- import * as i1$4 from 'primeng/drawer';
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
- Exemplu: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49.
411
+ Exemplu: RO49AAAA1B31007593840000 devine AAAA1B31007593840000RO49.
244
412
 
245
- Pasul 2: Se face conversia literelor in numere, conform tabelei de conversie cuprinsa in Anexa nr. 2.
246
- Exemplu: AAAA1B31007593840000RO49 devine 1010101011131007593840000272449
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
- 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.
249
- Exemplu: Restul impartirii lui 1010101011131007593840000272449 la 97 este 1.
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
- hexToRgbA(hex, a) {
308
- var c;
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.1.6", ngImport: i0, type: FlowCookieService, decorators: [{
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
- set pageLoading(value) {
417
- let changed = value != this.loading;
418
- this.loading = value;
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 = 0;
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.pageLoading++;
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 = 0;
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.pageLoading--;
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.pageLoading++;
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 = 0;
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.pageLoading--;
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.pageLoading++;
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 = 0;
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.pageLoading--;
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.1.6", ngImport: i0, type: FlowHttpClient, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
593
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: FlowHttpClient, providedIn: 'root' });
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.1.6", ngImport: i0, type: FlowHttpClient, decorators: [{
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(router) {
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 || '400px';
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 = { context: { data: data } };
675
- obj.inputs.context.close = (value) => {
732
+ obj.inputs = data || {};
733
+ obj.inputs.close = (value) => {
676
734
  resolve(value);
677
735
  this.closeSidebar(obj.id);
678
736
  };
679
- obj.inputs.context.setSize = (value) => {
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
- if (s.findIndex(a => !a.visible) >= 0)
708
- s.splice(s.findIndex(a => !a.visible), 1);
709
- let closee = s.find(a => a.id == id);
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.1.6", ngImport: i0, type: SidebarService, deps: [{ token: i1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
719
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SidebarService, providedIn: 'root' });
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.1.6", ngImport: i0, type: SidebarService, decorators: [{
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: () => [{ type: i1.Router }] });
790
+ }], ctorParameters: () => [] });
727
791
 
728
- class SortingPagingCriteria {
729
- numberOfRecords = 30;
730
- pageNumber = 1;
731
- totalResults;
732
- columnSortOrdersDefinition;
733
- applySort(columnName) {
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
- class ColumnSortOrdersDefinition {
744
- columnName;
745
- columnSortOrder;
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.push(m);
888
- this.unreadMessageCount++;
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 = this.messages.filter(m => !m.saveToDb);
1042
+ this.messages.update(c => c.filter(m => !m.saveToDb));
976
1043
  }
977
- this.messages = this.messages.concat(res.result.notifications);
978
- this.unreadMessageCount = res.result.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 = 0;
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.1.6", ngImport: i0, type: SignalrNotificationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
989
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: SignalrNotificationService, providedIn: 'root' });
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.1.6", ngImport: i0, type: SignalrNotificationService, decorators: [{
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.1.6", ngImport: i0, type: ApplicationSharedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1018
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ApplicationSharedService, providedIn: 'root' });
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.1.6", ngImport: i0, type: ApplicationSharedService, decorators: [{
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.getTranslations(true).subscribe(() => { });
1094
- this.getCountries().subscribe(() => { });
1095
- this.getLanguages().subscribe(() => { });
1096
- this.getLocalization();
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
- }), tap(res => {
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
- return of(JSON.parse(this.cookieService.get('localization')));
1189
+ loc = JSON.parse(this.cookieService.get('localization'));
1156
1190
  else {
1157
- let obs = this.http.get(this.endpoint, `/api/services/app/LocalizationService/GetWithClientIp`).pipe(tap(res => this.cookieService.put('localization', JSON.stringify(res))));
1158
- return obs;
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
- return this.countryProvinceCityPlaceholder[correlation];
1204
+ console.log(this.countryProvinceCityPlaceholder()[correlation]);
1205
+ return this.countryProvinceCityPlaceholder()[correlation];
1163
1206
  }
1164
1207
  setCountryCityPlaceholder(correlation, value) {
1165
- var context = this.countryProvinceCityPlaceholder[correlation];
1166
- context.update(ctx => {
1167
- let result = {
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[correlation] = this.countryProvinceCityPlaceholder[correlation] || {};
1187
- let countryProvinceCity = this.countryProvinceCityPlaceholder[correlation];
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.1.6", ngImport: i0, type: TranslationSharedService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1202
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TranslationSharedService, providedIn: 'root' });
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.1.6", ngImport: i0, type: TranslationSharedService, decorators: [{
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.default.getParser(window.navigator.userAgent);
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 = res.result.user;
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 = res.userAccount;
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 = result.user;
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 = { claims: [] };
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.1.6", ngImport: i0, type: UserAccountService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1409
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: UserAccountService, providedIn: 'root' });
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.1.6", ngImport: i0, type: UserAccountService, decorators: [{
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
- // The work of the pipe is handled in the tranform method with our pipe's class
1422
- class TranslationPipe {
1423
- constructor() { }
1424
- transform(value, htmlContentList) {
1425
- return htmlContentList && htmlContentList[value] ? htmlContentList[value] : value;
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
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: TranslationPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1428
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: TranslationPipe, isStandalone: true, name: "translation" });
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.1.6", ngImport: i0, type: TranslationPipe, decorators: [{
1431
- type: Pipe,
1501
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.2", ngImport: i0, type: AppSettingsLoader, decorators: [{
1502
+ type: Injectable,
1432
1503
  args: [{
1433
- name: 'translation',
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.1.6", ngImport: i0, type: SumPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe });
1447
- static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "20.1.6", ngImport: i0, type: SumPipe, isStandalone: true, name: "sum" });
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.1.6", ngImport: i0, type: SumPipe, decorators: [{
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.1.6", ngImport: i0, type: ModalService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
1510
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.1.6", ngImport: i0, type: ModalService, providedIn: 'root' });
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.1.6", ngImport: i0, type: ModalService, decorators: [{
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
- return this.sanitizer.bypassSecurityTrustHtml(this.globalService.formatString(new TranslationPipe().transform(this.name(), this.translationService.translations()), ...(Array.isArray(this.replacements()) ? this.replacements() : [])));
1538
- }, ...(ngDevMode ? [{ debugName: "content" }] : []));
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.translationService.editContent.set(res.claims && res.claims['permission'] &&
1554
- res.claims['permission'].indexOf('manageTranslations') >= 0);
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.translationService.translations()[this.name()]).subscribe((res) => {
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.1.6", ngImport: i0, type: TranslationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1585
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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(!translationService.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 (translationService.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]=\"editableContent()\"></span>\r\n</span>\r\n}\r\n@if(editorOpen()) {\r\n<div class=\"content-editor\">\r\n <textarea [(ngModel)]=\"translationService.translations()[name()]\" class='form-control html-edit-control'\r\n (keydown)=\"handleSave($event)\"></textarea>\r\n\r\n <div class=\"modal-footer\">\r\n @if(saveSuccess){<span class=\"text-muted\"><i class=\"fa fa-save\"></i> Datele au fost salvate</span>\r\n }\r\n <button color=\"default\" (click)=\"closeEditor()\">Anuleaza</button>\r\n <button color=\"primary\" (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$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.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"] }] });
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.1.6", ngImport: i0, type: TranslationComponent, decorators: [{
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(!translationService.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 (translationService.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]=\"editableContent()\"></span>\r\n</span>\r\n}\r\n@if(editorOpen()) {\r\n<div class=\"content-editor\">\r\n <textarea [(ngModel)]=\"translationService.translations()[name()]\" class='form-control html-edit-control'\r\n (keydown)=\"handleSave($event)\"></textarea>\r\n\r\n <div class=\"modal-footer\">\r\n @if(saveSuccess){<span class=\"text-muted\"><i class=\"fa fa-save\"></i> Datele au fost salvate</span>\r\n }\r\n <button color=\"default\" (click)=\"closeEditor()\">Anuleaza</button>\r\n <button color=\"primary\" (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"] }]
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.update(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().subscribe(r => {
1645
- this.countriesList = res.result;
1646
- this.countriesList.forEach(c => c.displayName = `${c.name} ${this.getFlagEmoji(c.code)} (${c.dialCode})`);
1647
- this.localizationCountry = r.result.country;
1648
- if (this.localizationCountry)
1649
- this.onSelectionChange(this.localizationCountry);
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
- this.countriesList.forEach(c => c.displayName = `${c.name} ${this.getFlagEmoji(c.code)} (${c.dialCode})`);
1743
+ if (!selectedCode)
1744
+ return;
1657
1745
  this.selectedCountry = this.countriesList.find(c => c.code == selectedCode);
1658
- this.selectedCountry.displayName = `${this.getFlagEmoji(this.selectedCountry.code)} (${this.selectedCountry.dialCode})`;
1659
- this.selectedCountryCode = this.selectedCountry.code;
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.1.6", ngImport: i0, type: InternationalPhoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1697
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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 <select style=\"width:110px; border-radius: 6px 0 0 6px; border-right-width: 0;\" class=\"form-control\" name=\"country\"\r\n [(ngModel)]=\"selectedCountryCode\" (change)=\"onPhoneInput()\" #country=\"ngModel\">\r\n <option value=\"undefined\" selected disabled>- select -</option>\r\n @for (item of countriesList; track item.code){\r\n <option [ngValue]=\"item.code\">{{item.displayName}}</option>\r\n }\r\n </select>\r\n <input style=\"border-radius: 0 6px 6px 0; border-left-width: 0;\" pInputText class=\"w-full\" type=\"phone\" [(ngModel)]=\"phoneNo\"\r\n (input)=\"onPhoneInput()\" phone class=\"form-control\" #phone=\"ngModel\" (paste)=\"onPaste($event)\" name=\"phone\"\r\n placeholder=\"Please enter phone number\" />\r\n</div>", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
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.1.6", ngImport: i0, type: InternationalPhoneComponent, decorators: [{
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
- // InputTextModule,
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:110px; border-radius: 6px 0 0 6px; border-right-width: 0;\" class=\"form-control\" name=\"country\"\r\n [(ngModel)]=\"selectedCountryCode\" (change)=\"onPhoneInput()\" #country=\"ngModel\">\r\n <option value=\"undefined\" selected disabled>- select -</option>\r\n @for (item of countriesList; track item.code){\r\n <option [ngValue]=\"item.code\">{{item.displayName}}</option>\r\n }\r\n </select>\r\n <input style=\"border-radius: 0 6px 6px 0; border-left-width: 0;\" pInputText class=\"w-full\" type=\"phone\" [(ngModel)]=\"phoneNo\"\r\n (input)=\"onPhoneInput()\" phone class=\"form-control\" #phone=\"ngModel\" (paste)=\"onPaste($event)\" name=\"phone\"\r\n placeholder=\"Please enter phone number\" />\r\n</div>" }]
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[this.correlation()] = signal({});
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
- let placeholder = this.translationService.getCountryCityPlaceholder(this.correlation());
1738
- placeholder.update(p => ({
1739
- ...p,
1740
- provinceCode: undefined,
1741
- provinceName: undefined,
1742
- currentProvince: undefined,
1743
- city: undefined
1744
- }));
1745
- this.translationService.setCountryCityPlaceholder(this.correlation(), placeholder);
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
- let placeholder = this.translationService.getCountryCityPlaceholder(this.correlation());
1749
- placeholder.update(p => ({
1750
- ...p,
1751
- city: undefined
1752
- }));
1753
- this.translationService.setCountryCityPlaceholder(this.correlation(), placeholder);
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.1.6", ngImport: i0, type: CountryProvinceCityComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1759
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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<select (change)=\"setCountry()\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().countryCode\"\r\n class=\"form-control\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n @for(c of translationService.countries(); track c.code) {\r\n <option [ngValue]=\"c.code\">{{c.name}}</option>\r\n }\r\n</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<select (change)=\"setProvince()\" class=\"form-control\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().provinceCode\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n <option\r\n *ngFor=\"let c of translationService.countryProvinceCityPlaceholder[this.correlation()]().currentCountry?.provinces | orderBy: 'name'\"\r\n [ngValue]=\"c.code\">{{c.name}}</option>\r\n</select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder[this.correlation()]().currentCountry?.provinces?.length > 0)) {\r\n<input type=\"text\" [(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\r\n@if(translationService.countryProvinceCityPlaceholder[this.correlation()]().currentProvince?.cities?.length > 0) {\r\n\r\n<select class=\"form-control\" [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().city\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n @for(c of translationService.countryProvinceCityPlaceholder[this.correlation()]().currentProvince?.cities; track c) {\r\n <option>{{c}}</option>\r\n }\r\n</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\" required />\r\n}\r\n}", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { 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.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OrderModule }, { kind: "pipe", type: TranslationPipe, name: "translation" }, { kind: "pipe", type: i3.OrderPipe, name: "orderBy" }] });
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.1.6", ngImport: i0, type: CountryProvinceCityComponent, decorators: [{
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: [CommonModule, FormsModule, TranslationComponent, TranslationPipe, OrderModule], template: "@if (mode() == 'country') {\r\n<select (change)=\"setCountry()\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().countryCode\"\r\n class=\"form-control\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n @for(c of translationService.countries(); track c.code) {\r\n <option [ngValue]=\"c.code\">{{c.name}}</option>\r\n }\r\n</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<select (change)=\"setProvince()\" class=\"form-control\"\r\n [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().provinceCode\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n <option\r\n *ngFor=\"let c of translationService.countryProvinceCityPlaceholder[this.correlation()]().currentCountry?.provinces | orderBy: 'name'\"\r\n [ngValue]=\"c.code\">{{c.name}}</option>\r\n</select>\r\n}\r\n\r\n@if(!(translationService.countryProvinceCityPlaceholder[this.correlation()]().currentCountry?.provinces?.length > 0)) {\r\n<input type=\"text\" [(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\r\n@if(translationService.countryProvinceCityPlaceholder[this.correlation()]().currentProvince?.cities?.length > 0) {\r\n\r\n<select class=\"form-control\" [(ngModel)]=\"translationService.countryProvinceCityPlaceholder[this.correlation()]().city\">\r\n <option [ngValue]=\"undefined\">{{'pleaseSelect' | translation: translationService.translations }}</option>\r\n @for(c of translationService.countryProvinceCityPlaceholder[this.correlation()]().currentProvince?.cities; track c) {\r\n <option>{{c}}</option>\r\n }\r\n</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\" required />\r\n}\r\n}" }]
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 = input(true, ...(ngDevMode ? [{ debugName: "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
- // this.translationService.setCountryCityPlaceholder('login-form', {
1900
- // countryCode: this.context().user.countryCode,
1901
- // provinceCode: this.context().user.provinceCode,
1902
- // provinceName: this.context().user.province,
1903
- // city: this.context().user.city
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.loading.set(true);
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.loading.set(false);
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().update(ctx => ({
1952
- ...ctx,
1953
- otp: null
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.1.6", ngImport: i0, type: LoginFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
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>&nbsp;<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.1.6", ngImport: i0, type: LoginFormComponent, decorators: [{
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>&nbsp;<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.1.6", ngImport: i0, type: CookieBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2069
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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: 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"] }, { kind: "ngmodule", type: StyleClassModule }], encapsulation: i0.ViewEncapsulation.None });
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.1.6", ngImport: i0, type: CookieBarComponent, decorators: [{
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.1.6", ngImport: i0, type: NotificationListComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2123
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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 }] });
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.1.6", ngImport: i0, type: NotificationListComponent, decorators: [{
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.1.6", ngImport: i0, type: NotificationDropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2160
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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" }] });
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.1.6", ngImport: i0, type: NotificationDropdownComponent, decorators: [{
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 <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"] }]
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.1.6", ngImport: i0, type: NotificationToasterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2222
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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$3.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: 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"] }] });
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.1.6", ngImport: i0, type: NotificationToasterComponent, decorators: [{
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.1.6", ngImport: i0, type: QrScannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2270
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", type: QrScannerComponent, isStandalone: true, selector: "flow-qr-scanner", outputs: { valueRead: "valueRead" }, ngImport: i0, template: "", styles: [""] });
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.1.6", ngImport: i0, type: QrScannerComponent, decorators: [{
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.1.6", ngImport: i0, type: SidebarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2339
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", type: SidebarComponent, isStandalone: true, selector: "sidebar", viewQueries: [{ propertyName: "contentComponent", first: true, predicate: ["content"], descendants: true, read: ElementRef }], ngImport: i0, template: "@for(sidebar of sidebarService.sidebars(); track sidebar.id) {\r\n<div [id]=\"'sidebar-' + sidebar.id\" style=\"height: 100%;\">\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-content-between px-3 py-2 flex-shrink-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-content-center gap-2 \">\r\n @if (sidebar.options.position=='bottom') {\r\n <div class=\"inline-block self-center bg-sky-400 rounded-full my-8\"\r\n [id]=\"'sidebar-header-hook-' + sidebar.id\" 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 <p-button type=\"button\" (click)=\"closeCallback(sidebar.id)\" rounded=\"true\" outlined=\"true\"\r\n styleClass=\"h-2rem w-2rem\"><span class=\"material-symbols\">close</span></p-button>\r\n </span>\r\n }\r\n </div>\r\n <div #content\r\n [class]=\"{ 'overflow-y-auto': sidebar.options.contentScrollable(), 'p-3': !sidebar.options.noPadding }\">\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}", styles: [""], dependencies: [{ kind: "ngmodule", type: DrawerModule }, { kind: "component", type: i1$4.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$1.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: "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"] }, { kind: "ngmodule", type: HammerModule }] });
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.1.6", ngImport: i0, type: SidebarComponent, decorators: [{
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 <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-content-between px-3 py-2 flex-shrink-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-content-center gap-2 \">\r\n @if (sidebar.options.position=='bottom') {\r\n <div class=\"inline-block self-center bg-sky-400 rounded-full my-8\"\r\n [id]=\"'sidebar-header-hook-' + sidebar.id\" 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 <p-button type=\"button\" (click)=\"closeCallback(sidebar.id)\" rounded=\"true\" outlined=\"true\"\r\n styleClass=\"h-2rem w-2rem\"><span class=\"material-symbols\">close</span></p-button>\r\n </span>\r\n }\r\n </div>\r\n <div #content\r\n [class]=\"{ 'overflow-y-auto': sidebar.options.contentScrollable(), 'p-3': !sidebar.options.noPadding }\">\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}" }]
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.1.6", ngImport: i0, type: StoriesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2415
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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 }, defaultDuration: { classPropertyName: "defaultDuration", publicName: "defaultDuration", isSignal: true, isRequired: false, transformFunction: null }, paused: { classPropertyName: "paused", publicName: "paused", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { storyChanged: "storyChanged", paused: "pausedChange" }, viewQueries: [{ propertyName: "videoPlayer", first: true, predicate: ["videoPlayer"], descendants: true, read: ElementRef }], ngImport: i0, template: "<div class=\"w-full h-full flex align-items-center justify-content-center story-container\">\r\n <div class=\"story-backdrop\" (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 <div class=\"flex gap-1 story-lines p-2\">\r\n @for (story of stories(); track story.id; let i = $index) {\r\n <span>\r\n <p-button type=\"button\" (click)=\"closeCallback(story.id)\" icon=\"pi pi-times\" rounded=\"true\"\r\n outlined=\"true\" 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 @if (currentStory()?.type == 'image') {\r\n <img [src]=\"currentStory().src\" (click)=\"next()\" />\r\n }\r\n @if (currentStory()?.type=='video') {\r\n\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 [class]=\"'story-overlay absolute bottom-0 p-3 left-0 w-full flex-column absolute flex align-items-end justify-content-end gap-2 ' + (descriptionOpen() ? 'scrollable' : '')\">\r\n <div class=\"flex align-items-end min-h-0 w-full gap-2\">\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 @if(sideTemplate()){\r\n <div class=\"story-side\">\r\n <div class=\"mb-4\">\r\n <i (click)=\"paused.set(!paused())\"\r\n [class]=\"'pi side-icon ' + (paused() ? 'pi-play' : 'pi-pause')\"></i>\r\n </div>\r\n <div class=\"mb-4\">\r\n <i (click)=\"mute.set(!mute())\"\r\n [class]=\"'pi side-icon ' + (mute() ? 'pi-volume-off' : 'pi-volume-up')\"></i>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"sideTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n @if(showSubFooter() && subFooterTemplate()){\r\n <div class=\"story-subfooter w-full text-center\">\r\n <ng-container [ngTemplateOutlet]=\"subFooterTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>", styles: [".story-content{background-position:center;background-size:contain;z-index:1;background-repeat:no-repeat;background-color:#000;position:relative;aspect-ratio:9 / 16;height:calc(100% - 5rem);display:flex;overflow:hidden}.story-backdrop{background-color:#000;position:absolute;left:0;top:0;width:100%;height:100%;filter:blur(50px);display:flex;align-items:center;justify-content:center;overflow:hidden}.story-backdrop video,.story-backdrop img{object-fit:cover;width:100%;height:100%}.story-content video,.story-content img{object-fit:contain}.story-content img{width:100%}.story-lines{position:absolute;width:100%}.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;background-image:linear-gradient(transparent,#000c,#000);text-shadow:0 0px 3px rgba(0,0,0);padding-top:50px!important}.story-side{width:50px;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}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { 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"] }], encapsulation: i0.ViewEncapsulation.None });
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.1.6", ngImport: i0, type: StoriesComponent, decorators: [{
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: [JsonPipe, NgTemplateOutlet, ButtonModule], encapsulation: ViewEncapsulation.None, template: "<div class=\"w-full h-full flex align-items-center justify-content-center story-container\">\r\n <div class=\"story-backdrop\" (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 <div class=\"flex gap-1 story-lines p-2\">\r\n @for (story of stories(); track story.id; let i = $index) {\r\n <span>\r\n <p-button type=\"button\" (click)=\"closeCallback(story.id)\" icon=\"pi pi-times\" rounded=\"true\"\r\n outlined=\"true\" 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 @if (currentStory()?.type == 'image') {\r\n <img [src]=\"currentStory().src\" (click)=\"next()\" />\r\n }\r\n @if (currentStory()?.type=='video') {\r\n\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 [class]=\"'story-overlay absolute bottom-0 p-3 left-0 w-full flex-column absolute flex align-items-end justify-content-end gap-2 ' + (descriptionOpen() ? 'scrollable' : '')\">\r\n <div class=\"flex align-items-end min-h-0 w-full gap-2\">\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 @if(sideTemplate()){\r\n <div class=\"story-side\">\r\n <div class=\"mb-4\">\r\n <i (click)=\"paused.set(!paused())\"\r\n [class]=\"'pi side-icon ' + (paused() ? 'pi-play' : 'pi-pause')\"></i>\r\n </div>\r\n <div class=\"mb-4\">\r\n <i (click)=\"mute.set(!mute())\"\r\n [class]=\"'pi side-icon ' + (mute() ? 'pi-volume-off' : 'pi-volume-up')\"></i>\r\n </div>\r\n <ng-container [ngTemplateOutlet]=\"sideTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n @if(showSubFooter() && subFooterTemplate()){\r\n <div class=\"story-subfooter w-full text-center\">\r\n <ng-container [ngTemplateOutlet]=\"subFooterTemplate()\"\r\n [ngTemplateOutletContext]=\"{ $implicit: currentStory() }\"></ng-container>\r\n </div>\r\n\r\n }\r\n\r\n </div>\r\n </div>\r\n\r\n\r\n\r\n</div>", styles: [".story-content{background-position:center;background-size:contain;z-index:1;background-repeat:no-repeat;background-color:#000;position:relative;aspect-ratio:9 / 16;height:calc(100% - 5rem);display:flex;overflow:hidden}.story-backdrop{background-color:#000;position:absolute;left:0;top:0;width:100%;height:100%;filter:blur(50px);display:flex;align-items:center;justify-content:center;overflow:hidden}.story-backdrop video,.story-backdrop img{object-fit:cover;width:100%;height:100%}.story-content video,.story-content img{object-fit:contain}.story-content img{width:100%}.story-lines{position:absolute;width:100%}.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;background-image:linear-gradient(transparent,#000c,#000);text-shadow:0 0px 3px rgba(0,0,0);padding-top:50px!important}.story-side{width:50px;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}}\n"] }]
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.1.6", ngImport: i0, type: QuestionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2481
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.1.6", 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$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { 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.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { 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.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: i2$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"] }] });
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.1.6", ngImport: i0, type: QuestionsComponent, decorators: [{
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.1.6", ngImport: i0, type: LoginComponent, deps: [{ token: UserAccountService }, { token: GlobalService }, { token: i1.Router }], target: i0.ɵɵFactoryTarget.Component });
2550
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.1.6", 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: ["context", "allowAccountCreation", "tokenType", "clientId", "type"], outputs: ["contextChange"] }] });
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.1.6", ngImport: i0, type: LoginComponent, decorators: [{
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: i1.Router }] });
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 Misc {
2564
- hexToRgbA(hex, opacity) {
2565
- var c;
2566
- if (/^#([A-Fa-f0-9]{3}){1,2}$/.test(hex)) {
2567
- c = hex.substring(1).split('');
2568
- if (c.length == 3) {
2569
- c = [c[0], c[0], c[1], c[1], c[2], c[2]];
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
- c = '0x' + c.join('');
2572
- return 'rgba(' + [(c >> 16) & 255, (c >> 8) & 255, c & 255].join(',') + ',' + opacity + ')';
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
- throw new Error('Bad Hex');
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 StoryContext {
2579
- id;
2580
- type;
2581
- src;
2582
- completion = signal(0, ...(ngDevMode ? [{ debugName: "completion" }] : []));
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