ngx-firebase 1.1.13 → 22.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (274) hide show
  1. package/README.md +51 -11
  2. package/fesm2022/ngx-firebase.mjs +158 -0
  3. package/fesm2022/ngx-firebase.mjs.map +1 -0
  4. package/package.json +40 -30
  5. package/types/ngx-firebase.d.ts +55 -0
  6. package/bundles/ngx-firebase-capacitor.umd.js +0 -763
  7. package/bundles/ngx-firebase-capacitor.umd.js.map +0 -1
  8. package/bundles/ngx-firebase-capacitor.umd.min.js +0 -16
  9. package/bundles/ngx-firebase-capacitor.umd.min.js.map +0 -1
  10. package/bundles/ngx-firebase-iap.umd.js +0 -718
  11. package/bundles/ngx-firebase-iap.umd.js.map +0 -1
  12. package/bundles/ngx-firebase-iap.umd.min.js +0 -2
  13. package/bundles/ngx-firebase-iap.umd.min.js.map +0 -1
  14. package/bundles/ngx-firebase-ionic-auth-ui.umd.js +0 -2116
  15. package/bundles/ngx-firebase-ionic-auth-ui.umd.js.map +0 -1
  16. package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js +0 -16
  17. package/bundles/ngx-firebase-ionic-auth-ui.umd.min.js.map +0 -1
  18. package/bundles/ngx-firebase-ionic.umd.js +0 -979
  19. package/bundles/ngx-firebase-ionic.umd.js.map +0 -1
  20. package/bundles/ngx-firebase-ionic.umd.min.js +0 -16
  21. package/bundles/ngx-firebase-ionic.umd.min.js.map +0 -1
  22. package/bundles/ngx-firebase-testing.umd.js +0 -801
  23. package/bundles/ngx-firebase-testing.umd.js.map +0 -1
  24. package/bundles/ngx-firebase-testing.umd.min.js +0 -2
  25. package/bundles/ngx-firebase-testing.umd.min.js.map +0 -1
  26. package/bundles/ngx-firebase.umd.js +0 -2299
  27. package/bundles/ngx-firebase.umd.js.map +0 -1
  28. package/bundles/ngx-firebase.umd.min.js +0 -2
  29. package/bundles/ngx-firebase.umd.min.js.map +0 -1
  30. package/capacitor/capacitor.module.d.ts +0 -9
  31. package/capacitor/interfaces/config.d.ts +0 -12
  32. package/capacitor/interfaces/index.d.ts +0 -1
  33. package/capacitor/ngx-firebase-capacitor.d.ts +0 -5
  34. package/capacitor/ngx-firebase-capacitor.metadata.json +0 -1
  35. package/capacitor/package.json +0 -25
  36. package/capacitor/public-api.d.ts +0 -3
  37. package/capacitor/services/analytics-firebase-capacitor.service.d.ts +0 -9
  38. package/capacitor/services/crashlytics-firebase-capacitor.service.d.ts +0 -8
  39. package/capacitor/services/credential-factory-capacitor.service.d.ts +0 -18
  40. package/capacitor/services/index.d.ts +0 -3
  41. package/esm2015/capacitor/capacitor.module.js +0 -78
  42. package/esm2015/capacitor/interfaces/config.js +0 -3
  43. package/esm2015/capacitor/interfaces/index.js +0 -2
  44. package/esm2015/capacitor/ngx-firebase-capacitor.js +0 -6
  45. package/esm2015/capacitor/public-api.js +0 -4
  46. package/esm2015/capacitor/services/analytics-firebase-capacitor.service.js +0 -43
  47. package/esm2015/capacitor/services/crashlytics-firebase-capacitor.service.js +0 -40
  48. package/esm2015/capacitor/services/credential-factory-capacitor.service.js +0 -182
  49. package/esm2015/capacitor/services/index.js +0 -4
  50. package/esm2015/iap/iap.module.js +0 -32
  51. package/esm2015/iap/interfaces/index.js +0 -5
  52. package/esm2015/iap/ngx-firebase-iap.js +0 -5
  53. package/esm2015/iap/public-api.js +0 -5
  54. package/esm2015/iap/services/iap.service.js +0 -317
  55. package/esm2015/iap/tokens/index.js +0 -4
  56. package/esm2015/ionic/animations/index.js +0 -30
  57. package/esm2015/ionic/components/avatar/avatar.component.js +0 -98
  58. package/esm2015/ionic/components/avatar/index.js +0 -2
  59. package/esm2015/ionic/components/index.js +0 -3
  60. package/esm2015/ionic/components/popover-menu/index.js +0 -3
  61. package/esm2015/ionic/components/popover-menu/interface.js +0 -2
  62. package/esm2015/ionic/components/popover-menu/popover-menu.component.js +0 -34
  63. package/esm2015/ionic/ionic.module.js +0 -46
  64. package/esm2015/ionic/ngx-firebase-ionic.js +0 -5
  65. package/esm2015/ionic/public-api.js +0 -5
  66. package/esm2015/ionic/services/alerts-ionic.service.js +0 -107
  67. package/esm2015/ionic/services/index.js +0 -6
  68. package/esm2015/ionic/services/legality-dialog-ionic.service.js +0 -85
  69. package/esm2015/ionic/services/loading-ionic.service.js +0 -46
  70. package/esm2015/ionic/services/picker-ionic.service.js +0 -44
  71. package/esm2015/ionic/services/toast-ionic.service.js +0 -49
  72. package/esm2015/ionic-auth-ui/animations/index.js +0 -30
  73. package/esm2015/ionic-auth-ui/components/email-confirmation/email-confirmation.component.js +0 -99
  74. package/esm2015/ionic-auth-ui/components/email-field/email-field.component.js +0 -25
  75. package/esm2015/ionic-auth-ui/components/form-field/form-field.component.js +0 -82
  76. package/esm2015/ionic-auth-ui/components/index.js +0 -12
  77. package/esm2015/ionic-auth-ui/components/name-field/name-field.component.js +0 -30
  78. package/esm2015/ionic-auth-ui/components/or-divider/or-divider.component.js +0 -11
  79. package/esm2015/ionic-auth-ui/components/password-field/password-field.component.js +0 -138
  80. package/esm2015/ionic-auth-ui/components/password-field/passwordValidatorFunctions.js +0 -62
  81. package/esm2015/ionic-auth-ui/components/providers/providers.component.js +0 -70
  82. package/esm2015/ionic-auth-ui/components/reauthenticate/reauthenticate.component.js +0 -99
  83. package/esm2015/ionic-auth-ui/components/register/register.component.js +0 -142
  84. package/esm2015/ionic-auth-ui/components/register-with-email/register-with-email.component.js +0 -60
  85. package/esm2015/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.js +0 -26
  86. package/esm2015/ionic-auth-ui/components/signin/signin.component.js +0 -92
  87. package/esm2015/ionic-auth-ui/components/terms-field/terms-field.component.js +0 -99
  88. package/esm2015/ionic-auth-ui/components/user/user.component.js +0 -195
  89. package/esm2015/ionic-auth-ui/ionic-auth-ui.module.js +0 -92
  90. package/esm2015/ionic-auth-ui/ngx-firebase-ionic-auth-ui.js +0 -23
  91. package/esm2015/ionic-auth-ui/pages/index.js +0 -5
  92. package/esm2015/ionic-auth-ui/pages/register/index.js +0 -2
  93. package/esm2015/ionic-auth-ui/pages/register/register.page.js +0 -56
  94. package/esm2015/ionic-auth-ui/pages/signin/index.js +0 -2
  95. package/esm2015/ionic-auth-ui/pages/signin/signin.page.js +0 -78
  96. package/esm2015/ionic-auth-ui/pages/user/index.js +0 -2
  97. package/esm2015/ionic-auth-ui/pages/user/user.page.js +0 -11
  98. package/esm2015/ionic-auth-ui/pages/verifyemail/index.js +0 -2
  99. package/esm2015/ionic-auth-ui/pages/verifyemail/verifyemail.page.js +0 -85
  100. package/esm2015/ionic-auth-ui/public-api.js +0 -5
  101. package/esm2015/ngx-firebase.js +0 -6
  102. package/esm2015/public-api.js +0 -6
  103. package/esm2015/shared/guards/index.js +0 -3
  104. package/esm2015/shared/guards/logged-in.guard.js +0 -60
  105. package/esm2015/shared/guards/verify-email.guard.js +0 -41
  106. package/esm2015/shared/interfaces/accounts.enum.js +0 -9
  107. package/esm2015/shared/interfaces/authprovider.enum.js +0 -15
  108. package/esm2015/shared/interfaces/config.interface.js +0 -61
  109. package/esm2015/shared/interfaces/index.js +0 -8
  110. package/esm2015/shared/interfaces/main.interface.js +0 -7
  111. package/esm2015/shared/interfaces/providers.interface.js +0 -2
  112. package/esm2015/shared/interfaces/tokens.js +0 -19
  113. package/esm2015/shared/interfaces/ui-providers.interface.js +0 -2
  114. package/esm2015/shared/services/analytics.service.js +0 -24
  115. package/esm2015/shared/services/auth-process.service.js +0 -779
  116. package/esm2015/shared/services/crashlytics.service.js +0 -42
  117. package/esm2015/shared/services/device-info.service.js +0 -14
  118. package/esm2015/shared/services/firebase.service.js +0 -37
  119. package/esm2015/shared/services/firestore-sync.service.js +0 -60
  120. package/esm2015/shared/services/index.js +0 -10
  121. package/esm2015/shared/services/performance.service.js +0 -28
  122. package/esm2015/shared/services/remoteconfig.service.js +0 -49
  123. package/esm2015/shared/services/ui.service.js +0 -45
  124. package/esm2015/shared/shared.module.js +0 -175
  125. package/esm2015/shared/types/DisplayWidth.js +0 -9
  126. package/esm2015/shared/types/Location.js +0 -2
  127. package/esm2015/shared/types/ValueAccessorControlComponent.js +0 -85
  128. package/esm2015/shared/types/ValueAccessorValueComponent.js +0 -40
  129. package/esm2015/shared/types/index.js +0 -5
  130. package/esm2015/testing/fakeavatar.module.js +0 -22
  131. package/esm2015/testing/fakes/FakeAuthProcessService.js +0 -31
  132. package/esm2015/testing/fakes/FakeAvatarComponent.js +0 -13
  133. package/esm2015/testing/fakes/FakeFireService.js +0 -21
  134. package/esm2015/testing/fakes/FakeFirestoreSyncService.js +0 -11
  135. package/esm2015/testing/fakes/FakeIAPurchaseService.js +0 -11
  136. package/esm2015/testing/fakes/FakePickerService.js +0 -9
  137. package/esm2015/testing/fakes/FakeRemoteConfigService.js +0 -44
  138. package/esm2015/testing/fakes/FakeTranslateService.js +0 -21
  139. package/esm2015/testing/fakes/FakeUiService.js +0 -26
  140. package/esm2015/testing/fakes/angular-fire/FakeAngularFireAuth.js +0 -30
  141. package/esm2015/testing/fakes/angular-fire/FakeAngularFireFunctions.js +0 -17
  142. package/esm2015/testing/fakes/angular-fire/FakeAngularFirePerformance.js +0 -17
  143. package/esm2015/testing/fakes/angular-fire/FakeAngularFireStorage.js +0 -8
  144. package/esm2015/testing/fakes/angular-fire/FakeAngularFirestore.js +0 -8
  145. package/esm2015/testing/fakes/angular-fire/FakeUserCredential.js +0 -18
  146. package/esm2015/testing/fakes/index.js +0 -19
  147. package/esm2015/testing/ngx-firebase-testing.js +0 -6
  148. package/esm2015/testing/public-api.js +0 -5
  149. package/esm2015/testing/test.module.js +0 -66
  150. package/esm2015/testing/utils/index.js +0 -17
  151. package/esm2015/testing/utils/patchConsole.js +0 -14
  152. package/fesm2015/ngx-firebase-capacitor.js +0 -328
  153. package/fesm2015/ngx-firebase-capacitor.js.map +0 -1
  154. package/fesm2015/ngx-firebase-iap.js +0 -354
  155. package/fesm2015/ngx-firebase-iap.js.map +0 -1
  156. package/fesm2015/ngx-firebase-ionic-auth-ui.js +0 -1482
  157. package/fesm2015/ngx-firebase-ionic-auth-ui.js.map +0 -1
  158. package/fesm2015/ngx-firebase-ionic.js +0 -495
  159. package/fesm2015/ngx-firebase-ionic.js.map +0 -1
  160. package/fesm2015/ngx-firebase-testing.js +0 -388
  161. package/fesm2015/ngx-firebase-testing.js.map +0 -1
  162. package/fesm2015/ngx-firebase.js +0 -1509
  163. package/fesm2015/ngx-firebase.js.map +0 -1
  164. package/iap/iap.module.d.ts +0 -5
  165. package/iap/interfaces/index.d.ts +0 -11
  166. package/iap/ngx-firebase-iap.d.ts +0 -4
  167. package/iap/ngx-firebase-iap.metadata.json +0 -1
  168. package/iap/package.json +0 -23
  169. package/iap/public-api.d.ts +0 -4
  170. package/iap/services/iap.service.d.ts +0 -47
  171. package/iap/tokens/index.d.ts +0 -3
  172. package/ionic/animations/index.d.ts +0 -1
  173. package/ionic/components/avatar/avatar.component.d.ts +0 -27
  174. package/ionic/components/avatar/index.d.ts +0 -1
  175. package/ionic/components/index.d.ts +0 -2
  176. package/ionic/components/popover-menu/index.d.ts +0 -2
  177. package/ionic/components/popover-menu/interface.d.ts +0 -6
  178. package/ionic/components/popover-menu/popover-menu.component.d.ts +0 -10
  179. package/ionic/ionic.module.d.ts +0 -2
  180. package/ionic/ngx-firebase-ionic.d.ts +0 -4
  181. package/ionic/ngx-firebase-ionic.metadata.json +0 -1
  182. package/ionic/package.json +0 -30
  183. package/ionic/public-api.d.ts +0 -4
  184. package/ionic/services/alerts-ionic.service.d.ts +0 -13
  185. package/ionic/services/index.d.ts +0 -5
  186. package/ionic/services/legality-dialog-ionic.service.d.ts +0 -10
  187. package/ionic/services/loading-ionic.service.d.ts +0 -17
  188. package/ionic/services/picker-ionic.service.d.ts +0 -9
  189. package/ionic/services/toast-ionic.service.d.ts +0 -11
  190. package/ionic-auth-ui/animations/index.d.ts +0 -1
  191. package/ionic-auth-ui/components/email-confirmation/email-confirmation.component.d.ts +0 -31
  192. package/ionic-auth-ui/components/email-field/email-field.component.d.ts +0 -7
  193. package/ionic-auth-ui/components/form-field/form-field.component.d.ts +0 -28
  194. package/ionic-auth-ui/components/index.d.ts +0 -11
  195. package/ionic-auth-ui/components/name-field/name-field.component.d.ts +0 -8
  196. package/ionic-auth-ui/components/or-divider/or-divider.component.d.ts +0 -2
  197. package/ionic-auth-ui/components/password-field/password-field.component.d.ts +0 -34
  198. package/ionic-auth-ui/components/password-field/passwordValidatorFunctions.d.ts +0 -4
  199. package/ionic-auth-ui/components/providers/providers.component.d.ts +0 -26
  200. package/ionic-auth-ui/components/reauthenticate/reauthenticate.component.d.ts +0 -30
  201. package/ionic-auth-ui/components/register/register.component.d.ts +0 -26
  202. package/ionic-auth-ui/components/register-with-email/register-with-email.component.d.ts +0 -24
  203. package/ionic-auth-ui/components/register-with-email-popover/register-with-email-popover.component.d.ts +0 -7
  204. package/ionic-auth-ui/components/signin/signin.component.d.ts +0 -28
  205. package/ionic-auth-ui/components/terms-field/terms-field.component.d.ts +0 -27
  206. package/ionic-auth-ui/components/user/user.component.d.ts +0 -45
  207. package/ionic-auth-ui/ionic-auth-ui.module.d.ts +0 -32
  208. package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.d.ts +0 -22
  209. package/ionic-auth-ui/ngx-firebase-ionic-auth-ui.metadata.json +0 -1
  210. package/ionic-auth-ui/package.json +0 -30
  211. package/ionic-auth-ui/pages/index.d.ts +0 -4
  212. package/ionic-auth-ui/pages/register/index.d.ts +0 -1
  213. package/ionic-auth-ui/pages/register/register.page.d.ts +0 -16
  214. package/ionic-auth-ui/pages/signin/index.d.ts +0 -1
  215. package/ionic-auth-ui/pages/signin/signin.page.d.ts +0 -22
  216. package/ionic-auth-ui/pages/user/index.d.ts +0 -1
  217. package/ionic-auth-ui/pages/user/user.page.d.ts +0 -3
  218. package/ionic-auth-ui/pages/verifyemail/index.d.ts +0 -1
  219. package/ionic-auth-ui/pages/verifyemail/verifyemail.page.d.ts +0 -19
  220. package/ionic-auth-ui/public-api.d.ts +0 -4
  221. package/ngx-firebase.d.ts +0 -5
  222. package/ngx-firebase.metadata.json +0 -1
  223. package/public-api.d.ts +0 -5
  224. package/shared/guards/index.d.ts +0 -2
  225. package/shared/guards/logged-in.guard.d.ts +0 -13
  226. package/shared/guards/verify-email.guard.d.ts +0 -11
  227. package/shared/interfaces/accounts.enum.d.ts +0 -7
  228. package/shared/interfaces/authprovider.enum.d.ts +0 -13
  229. package/shared/interfaces/config.interface.d.ts +0 -63
  230. package/shared/interfaces/index.d.ts +0 -7
  231. package/shared/interfaces/main.interface.d.ts +0 -13
  232. package/shared/interfaces/providers.interface.d.ts +0 -70
  233. package/shared/interfaces/tokens.d.ts +0 -16
  234. package/shared/interfaces/ui-providers.interface.d.ts +0 -66
  235. package/shared/services/analytics.service.d.ts +0 -10
  236. package/shared/services/auth-process.service.d.ts +0 -197
  237. package/shared/services/crashlytics.service.d.ts +0 -11
  238. package/shared/services/device-info.service.d.ts +0 -3
  239. package/shared/services/firebase.service.d.ts +0 -16
  240. package/shared/services/firestore-sync.service.d.ts +0 -16
  241. package/shared/services/index.d.ts +0 -9
  242. package/shared/services/performance.service.d.ts +0 -12
  243. package/shared/services/remoteconfig.service.d.ts +0 -18
  244. package/shared/services/ui.service.d.ts +0 -22
  245. package/shared/shared.module.d.ts +0 -14
  246. package/shared/types/DisplayWidth.d.ts +0 -7
  247. package/shared/types/Location.d.ts +0 -8
  248. package/shared/types/ValueAccessorControlComponent.d.ts +0 -27
  249. package/shared/types/ValueAccessorValueComponent.d.ts +0 -19
  250. package/shared/types/index.d.ts +0 -4
  251. package/testing/fakeavatar.module.d.ts +0 -2
  252. package/testing/fakes/FakeAuthProcessService.d.ts +0 -28
  253. package/testing/fakes/FakeAvatarComponent.d.ts +0 -3
  254. package/testing/fakes/FakeFireService.d.ts +0 -20
  255. package/testing/fakes/FakeFirestoreSyncService.d.ts +0 -9
  256. package/testing/fakes/FakeIAPurchaseService.d.ts +0 -9
  257. package/testing/fakes/FakePickerService.d.ts +0 -6
  258. package/testing/fakes/FakeRemoteConfigService.d.ts +0 -19
  259. package/testing/fakes/FakeTranslateService.d.ts +0 -15
  260. package/testing/fakes/FakeUiService.d.ts +0 -25
  261. package/testing/fakes/angular-fire/FakeAngularFireAuth.d.ts +0 -52
  262. package/testing/fakes/angular-fire/FakeAngularFireFunctions.d.ts +0 -11
  263. package/testing/fakes/angular-fire/FakeAngularFirePerformance.d.ts +0 -10
  264. package/testing/fakes/angular-fire/FakeAngularFireStorage.d.ts +0 -5
  265. package/testing/fakes/angular-fire/FakeAngularFirestore.d.ts +0 -5
  266. package/testing/fakes/angular-fire/FakeUserCredential.d.ts +0 -9
  267. package/testing/fakes/index.d.ts +0 -16
  268. package/testing/ngx-firebase-testing.d.ts +0 -5
  269. package/testing/ngx-firebase-testing.metadata.json +0 -1
  270. package/testing/package.json +0 -29
  271. package/testing/public-api.d.ts +0 -4
  272. package/testing/test.module.d.ts +0 -4
  273. package/testing/utils/index.d.ts +0 -5
  274. package/testing/utils/patchConsole.d.ts +0 -4
@@ -1,495 +0,0 @@
1
- import { __awaiter } from 'tslib';
2
- import { Component, Input, EventEmitter, Output, ɵɵdefineInjectable, ɵɵinject, Injectable, Inject, forwardRef, NgModule } from '@angular/core';
3
- import { map, timeout, debounceTime } from 'rxjs/operators';
4
- import { PopoverController, AlertController, LoadingController, PickerController, ToastController, IonicModule } from '@ionic/angular';
5
- import { UiService, AuthProcessService, FirebaseService, RemoteConfigService, MalSharedConfigToken, MalSharedModule, MalAlertsUIProviderToken, MalLoadingUIProviderToken, MalPickerUIProviderToken, MalToastUIProviderToken, MalLegaliyDialogUIProiderToken } from 'ngx-firebase';
6
- import { animation, style, animate, trigger, transition, useAnimation, state, query, stagger, animateChild } from '@angular/animations';
7
- import { TranslateService } from '@ngx-translate/core';
8
- import { BehaviorSubject, combineLatest } from 'rxjs';
9
- import { HttpClientModule } from '@angular/common/http';
10
- import { CommonModule } from '@angular/common';
11
-
12
- class AuthPopoverMenuComponent {
13
- constructor(popoverController, ui) {
14
- this.popoverController = popoverController;
15
- this.ui = ui;
16
- this.links = [];
17
- }
18
- doLinkClick(link) {
19
- try {
20
- this.popoverController.dismiss();
21
- if (link.callback) {
22
- link.callback();
23
- }
24
- }
25
- catch (error) {
26
- this.ui.logError(error);
27
- }
28
- }
29
- }
30
- AuthPopoverMenuComponent.decorators = [
31
- { type: Component, args: [{
32
- template: "<ion-button *ngFor=\"let link of links\"\n expand=\"block\"\n [disabled]=\"link.disabled\"\n (click)=\"doLinkClick(link)\">\n {{ link.text | translate }}\n</ion-button>"
33
- },] }
34
- ];
35
- AuthPopoverMenuComponent.ctorParameters = () => [
36
- { type: PopoverController },
37
- { type: UiService }
38
- ];
39
- AuthPopoverMenuComponent.propDecorators = {
40
- links: [{ type: Input }]
41
- };
42
-
43
- class AuthAvatarComponent {
44
- constructor(aps, popoverController, ui, fire) {
45
- this.aps = aps;
46
- this.popoverController = popoverController;
47
- this.ui = ui;
48
- this.fire = fire;
49
- this.layout = 'default';
50
- this.canLogout = true;
51
- this.links = [];
52
- this.canViewAccount = true;
53
- this.canDeleteAccount = true;
54
- this.canEditAccount = true;
55
- this.showIfAnon = false;
56
- this.showProfileDialog = new EventEmitter();
57
- // tslint:disable-next-line no-output-on-prefix
58
- this.onSignOut = new EventEmitter();
59
- this.user$ = this.aps.user$
60
- .pipe(map(user => ((null !== user && (this.showIfAnon || !user.isAnonymous)) ? user : null)));
61
- this.displayNameInitials$ = this.user$
62
- .pipe(map(user => {
63
- if (!user || !user.displayName) {
64
- return '';
65
- }
66
- const initialsRegExp = user.displayName.match(/\b\w/g) || [];
67
- const initials = ((initialsRegExp.shift() || '') + (initialsRegExp.pop() || '')).toUpperCase();
68
- return initials || '';
69
- }));
70
- }
71
- openAvatarMenu(ev) {
72
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
73
- const popover = yield this.popoverController.create({
74
- component: AuthPopoverMenuComponent,
75
- componentProps: {
76
- links: [
77
- ...(this.canViewAccount) ? [{ text: 'auth.menu.profile', callback: this.doShowProfile.bind(this) }] : [],
78
- ...(this.canLogout) ? [{ text: 'auth.menu.signOut', callback: this.signOut.bind(this) }] : []
79
- ]
80
- },
81
- event: ev,
82
- translucent: true
83
- });
84
- popover.onDidDismiss().then(data => {
85
- resolve();
86
- });
87
- popover.present();
88
- }));
89
- }
90
- doShowProfile(ev) {
91
- return __awaiter(this, void 0, void 0, function* () {
92
- this.showProfileDialog.emit(ev);
93
- this.aps.showProfileDialog.emit(ev);
94
- });
95
- }
96
- signOut() {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- try {
99
- this.fire.addLogMessage('Starting signOut');
100
- yield this.aps.signOut();
101
- // Sign-out successful.
102
- this.onSignOut.emit();
103
- }
104
- catch (error) {
105
- this.ui.logError(error);
106
- }
107
- });
108
- }
109
- }
110
- AuthAvatarComponent.decorators = [
111
- { type: Component, args: [{
112
- selector: 'mal-auth-avatar',
113
- template: "<ng-container *ngIf=\"(user$ | async) as user\">\n <ion-avatar name='auth-avatar' class=\"avatar\" *ngIf=\"user?.photoURL || !(displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n <img [alt]=\"user.name\" [src]=\"user.photoURL\" onerror=\"this.onerror=null;this.src='/assets/images/person.png';\">\n </ion-avatar>\n <ion-button class=\"avatar\" *ngIf=\"!user?.photoURL && (displayNameInitials$ | async)\" (click)=\"openAvatarMenu($event)\">\n {{ displayNameInitials$ | async }}\n </ion-button>\n</ng-container>",
114
- styles: ["ion-button.avatar{background-color:var(--ion-color-primary-tint);border-radius:50%;font-weight:700}.avatar{border:.75px solid var(--ion-color-primary);box-shadow:2px 2px var(--ion-color-primary-tint);max-width:var(--mal-avatar-size,35px)!important;max-height:var(--mal-avatar-size,35px)!important}"]
115
- },] }
116
- ];
117
- AuthAvatarComponent.ctorParameters = () => [
118
- { type: AuthProcessService },
119
- { type: PopoverController },
120
- { type: UiService },
121
- { type: FirebaseService }
122
- ];
123
- AuthAvatarComponent.propDecorators = {
124
- layout: [{ type: Input }],
125
- canLogout: [{ type: Input }],
126
- links: [{ type: Input }],
127
- canViewAccount: [{ type: Input }],
128
- canDeleteAccount: [{ type: Input }],
129
- canEditAccount: [{ type: Input }],
130
- showIfAnon: [{ type: Input }],
131
- showProfileDialog: [{ type: Output }],
132
- onSignOut: [{ type: Output }]
133
- };
134
-
135
- const customAnimation = animation([
136
- style({
137
- opacity: '{{opacity}}',
138
- transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'
139
- }),
140
- animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))
141
- ], {
142
- params: {
143
- duration: '200ms',
144
- delay: '0ms',
145
- opacity: '0',
146
- scale: '1',
147
- x: '0',
148
- y: '0',
149
- z: '0'
150
- }
151
- });
152
- const NgxAuthFirebaseuiAnimations = [
153
- trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),
154
- trigger('animateStagger', [
155
- state('50', style('*')),
156
- state('100', style('*')),
157
- state('200', style('*')),
158
- transition('void => 50', query('@*', [stagger('50ms', [animateChild()])], { optional: true })),
159
- transition('void => 100', query('@*', [stagger('100ms', [animateChild()])], { optional: true })),
160
- transition('void => 200', query('@*', [stagger('200ms', [animateChild()])], { optional: true }))
161
- ]),
162
- ];
163
-
164
- class MalIonicAlertsService {
165
- constructor(alertController, translateService) {
166
- this.alertController = alertController;
167
- this.translateService = translateService;
168
- }
169
- yesNoAlert(message, options = {}) {
170
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
171
- const [headerKey, subheaderKey] = [options.header || 'brand.name', options.subHeader || 'subHeader'];
172
- const txd = yield this.translateService.get([headerKey, subheaderKey, message, 'shared.button.no', 'shared.button.yes'], options.interpolateParams).toPromise();
173
- const noButton = {
174
- text: txd['shared.button.no'],
175
- role: 'cancel',
176
- handler: () => resolve(false)
177
- };
178
- const yesButton = {
179
- text: txd['shared.button.yes'],
180
- handler: () => resolve(true)
181
- };
182
- const alert = yield this.alertController.create({
183
- header: txd[headerKey],
184
- subHeader: (options === null || options === void 0 ? void 0 : options.subHeader) ? txd[subheaderKey] : undefined,
185
- message: txd[message],
186
- buttons: [
187
- (options === null || options === void 0 ? void 0 : options.defaultToNo) ? yesButton : noButton,
188
- (options === null || options === void 0 ? void 0 : options.defaultToNo) ? noButton : yesButton
189
- ]
190
- });
191
- yield alert.present();
192
- }));
193
- }
194
- okAlert(message, options = {}) {
195
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
196
- const [headerKey, subheaderKey] = [options.header || 'brand.name', options.subHeader || 'subHeader'];
197
- const txd = yield this.translateService.get([headerKey, subheaderKey, message, 'shared.button.ok'], options.interpolateParams).toPromise();
198
- const alert = yield this.alertController.create({
199
- header: txd[headerKey],
200
- subHeader: (options.subHeader) ? txd[subheaderKey] : undefined,
201
- message: txd[message],
202
- buttons: [txd['shared.button.ok']]
203
- });
204
- alert.onDidDismiss().then(() => resolve());
205
- yield alert.present();
206
- }));
207
- }
208
- errorAlert(message, options = {}) {
209
- return this.okAlert(message, options);
210
- }
211
- infoAlert(message, options = {}) {
212
- return this.okAlert(message, options);
213
- }
214
- textboxInputAlert(options) {
215
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
216
- const [headerKey, subheaderKey, okKey, placeholderKey] = [
217
- options.header || 'brand.name',
218
- options.subHeader || 'subHeader',
219
- options.okText || 'shared.button.ok',
220
- options.placeholder || 'placeHolder'
221
- ];
222
- const txd = yield this.translateService.get([headerKey, subheaderKey, 'shared.button.cancel', okKey, placeholderKey], options.interpolateParams).toPromise();
223
- const alert = yield this.alertController.create({
224
- cssClass: 'my-custom-class',
225
- header: txd[headerKey],
226
- subHeader: (options.subHeader) ? txd[subheaderKey] : undefined,
227
- inputs: [
228
- {
229
- name: 'textField',
230
- type: 'text',
231
- value: options.value,
232
- placeholder: txd[placeholderKey],
233
- }
234
- ],
235
- buttons: [
236
- {
237
- text: txd['shared.button.cancel'],
238
- role: 'cancel',
239
- cssClass: 'secondary',
240
- handler: () => {
241
- resolve(null);
242
- }
243
- }, {
244
- text: txd[okKey],
245
- handler: (data) => {
246
- resolve(data.textField);
247
- }
248
- }
249
- ]
250
- });
251
- yield alert.present();
252
- }));
253
- }
254
- }
255
- MalIonicAlertsService.ɵprov = ɵɵdefineInjectable({ factory: function MalIonicAlertsService_Factory() { return new MalIonicAlertsService(ɵɵinject(AlertController), ɵɵinject(TranslateService)); }, token: MalIonicAlertsService, providedIn: "root" });
256
- MalIonicAlertsService.decorators = [
257
- { type: Injectable, args: [{ providedIn: 'root' },] }
258
- ];
259
- MalIonicAlertsService.ctorParameters = () => [
260
- { type: AlertController },
261
- { type: TranslateService }
262
- ];
263
-
264
- class MalIonicLoadingService {
265
- constructor(loadingController, translateService, remoteConfig) {
266
- this.loadingController = loadingController;
267
- this.translateService = translateService;
268
- this.remoteConfig = remoteConfig;
269
- this.watchLoading = this.watchLoading.bind(this);
270
- }
271
- createLoading(message) {
272
- return __awaiter(this, void 0, void 0, function* () {
273
- if (message) {
274
- message = yield this.translateService.get(message).toPromise();
275
- return yield this.loadingController.create({ message });
276
- }
277
- else {
278
- return yield this.loadingController.create();
279
- }
280
- });
281
- }
282
- watchLoading(source, options) {
283
- return __awaiter(this, void 0, void 0, function* () {
284
- const timeoutInterval = (undefined !== (options === null || options === void 0 ? void 0 : options.timeoutMs))
285
- ? options.timeoutMs
286
- : yield this.remoteConfig.getNumber('timeoutLoading');
287
- const loading = yield this.createLoading(options === null || options === void 0 ? void 0 : options.message);
288
- source = !timeoutInterval ? source : source.pipe(timeout(timeoutInterval));
289
- return source.pipe(debounceTime((options === null || options === void 0 ? void 0 : options.debounce) || 100)).subscribe(isLoading => isLoading ? loading.present() : loading.dismiss(), () => { loading.dismiss(); }, // Dismiss on error including timeout,
290
- () => { loading.dismiss(); } // Dismiss on completion
291
- );
292
- });
293
- }
294
- }
295
- MalIonicLoadingService.decorators = [
296
- { type: Injectable }
297
- ];
298
- MalIonicLoadingService.ctorParameters = () => [
299
- { type: LoadingController },
300
- { type: TranslateService },
301
- { type: RemoteConfigService }
302
- ];
303
-
304
- class MalIonicPickerService {
305
- constructor(pickerController, translateService) {
306
- this.pickerController = pickerController;
307
- this.translateService = translateService;
308
- }
309
- picker(options) {
310
- return __awaiter(this, void 0, void 0, function* () {
311
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
312
- const [cancelKey, confirmKey] = [options.cancelText || 'shared.button.cancel', options.confirmText || 'shared.button.confirm'];
313
- const txd = yield this.translateService.get([options.title, cancelKey, confirmKey], options.interpolateParams).toPromise();
314
- const picker = yield this.pickerController.create({
315
- columns: [
316
- {
317
- name: txd[options.title],
318
- options: options.options
319
- }
320
- ],
321
- cssClass: 'pickerfix',
322
- buttons: [
323
- { text: txd[cancelKey], role: 'cancel', handler: () => { resolve(null); } },
324
- { text: txd[confirmKey], handler: (value) => { resolve(value[txd[options.title]].value); } }
325
- ]
326
- });
327
- yield picker.present();
328
- }));
329
- });
330
- }
331
- }
332
- MalIonicPickerService.ɵprov = ɵɵdefineInjectable({ factory: function MalIonicPickerService_Factory() { return new MalIonicPickerService(ɵɵinject(PickerController), ɵɵinject(TranslateService)); }, token: MalIonicPickerService, providedIn: "root" });
333
- MalIonicPickerService.decorators = [
334
- { type: Injectable, args: [{ providedIn: 'root' },] }
335
- ];
336
- MalIonicPickerService.ctorParameters = () => [
337
- { type: PickerController },
338
- { type: TranslateService }
339
- ];
340
-
341
- class MalIonicToastService {
342
- constructor(toastControl, translateService) {
343
- this.toastControl = toastControl;
344
- this.translateService = translateService;
345
- }
346
- createToast(message, options = {}) {
347
- return __awaiter(this, void 0, void 0, function* () {
348
- return yield this.toastControl.create({
349
- message: yield this.translateService.get(message, options.interpolateParams).toPromise(),
350
- duration: options.duration || 3000,
351
- position: options.position || 'middle'
352
- });
353
- });
354
- }
355
- toast(message, options = {}) {
356
- return __awaiter(this, void 0, void 0, function* () {
357
- // TODO Add OK button if duration is not set....
358
- const toast = yield this.createToast(message, options);
359
- yield toast.present();
360
- yield toast.onDidDismiss();
361
- });
362
- }
363
- errorToast(error, messagePrefix, options = {}) {
364
- return __awaiter(this, void 0, void 0, function* () {
365
- if (messagePrefix) {
366
- yield this.toast(`${messagePrefix}: ${error.message}`, options);
367
- }
368
- else {
369
- yield this.toast(error.message, options);
370
- }
371
- });
372
- }
373
- }
374
- MalIonicToastService.ɵprov = ɵɵdefineInjectable({ factory: function MalIonicToastService_Factory() { return new MalIonicToastService(ɵɵinject(ToastController), ɵɵinject(TranslateService)); }, token: MalIonicToastService, providedIn: "root" });
375
- MalIonicToastService.decorators = [
376
- { type: Injectable, args: [{ providedIn: 'root' },] }
377
- ];
378
- MalIonicToastService.ctorParameters = () => [
379
- { type: ToastController },
380
- { type: TranslateService }
381
- ];
382
-
383
- class MalIonicLegalityDialogService {
384
- constructor(config, alertController, translate) {
385
- this.config = config;
386
- this.alertController = alertController;
387
- this.translate = translate;
388
- }
389
- confirmTos() {
390
- if (this.config.authUi.tosUrl || this.config.authUi.privacyPolicyUrl) {
391
- return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {
392
- const inputs = [];
393
- const tosChecked$ = new BehaviorSubject(true);
394
- const privacyChecked$ = new BehaviorSubject(true);
395
- const readMessage = yield this.translate.get('auth.legal.readAndAccept').toPromise();
396
- let tosLink = '';
397
- let privacyLink = '';
398
- if (this.config.authUi.tosUrl) {
399
- const tosLabel = yield this.translate.get('auth.legal.termsAndConditions').toPromise();
400
- inputs.push({
401
- id: 'tos_check',
402
- type: 'checkbox',
403
- label: tosLabel,
404
- checked: tosChecked$.value,
405
- cssClass: 'authui-checkbox-wrap',
406
- handler: (elem) => tosChecked$.next(elem.checked)
407
- });
408
- tosLink = ` <a target="_blank" href="${this.config.authUi.tosUrl}" >${tosLabel}</a> `;
409
- }
410
- if (this.config.authUi.privacyPolicyUrl) {
411
- const privacyLabel = yield this.translate.get('auth.legal.privacyPolicy').toPromise();
412
- inputs.push({
413
- id: 'privacy_check',
414
- type: 'checkbox',
415
- label: privacyLabel,
416
- checked: privacyChecked$.value,
417
- cssClass: 'authui-checkbox-wrap',
418
- handler: (elem) => privacyChecked$.next(elem.checked)
419
- });
420
- privacyLink = ` <a target="_blank" href="${this.config.authUi.privacyPolicyUrl}" >${privacyLabel}</a> `;
421
- }
422
- const txd = yield this.translate.get([
423
- 'brand.name',
424
- 'auth.legal.subHeader',
425
- 'auth.legal.declineButton',
426
- 'auth.legal.acceptButton'
427
- ]).toPromise();
428
- const alert = yield this.alertController.create({
429
- header: txd['brand.name'],
430
- subHeader: txd['auth.legal.subHeader'],
431
- message: `${readMessage}${tosLink}${privacyLink}`,
432
- inputs,
433
- buttons: [
434
- { text: txd['auth.legal.declineButton'], handler: _ => resolve(false), role: 'cancel' },
435
- { text: txd['auth.legal.acceptButton'], handler: _ => resolve(true), cssClass: 'confirm' }
436
- ],
437
- });
438
- yield alert.present();
439
- const confirmBtn = document.querySelector('.confirm');
440
- if (confirmBtn === null) {
441
- throw new Error('QuerySelector for confirmBtn returned null');
442
- }
443
- confirmBtn.disabled = true;
444
- combineLatest([tosChecked$, privacyChecked$])
445
- .subscribe(([tosChecked, privacyChecked]) => confirmBtn.disabled = !tosChecked || !privacyChecked);
446
- }));
447
- }
448
- else {
449
- return Promise.resolve(null);
450
- }
451
- }
452
- }
453
- MalIonicLegalityDialogService.decorators = [
454
- { type: Injectable }
455
- ];
456
- MalIonicLegalityDialogService.ctorParameters = () => [
457
- { type: undefined, decorators: [{ type: Inject, args: [forwardRef(() => MalSharedConfigToken),] }] },
458
- { type: AlertController },
459
- { type: TranslateService }
460
- ];
461
-
462
- // @angular/*
463
- // pages
464
- const COMPONENTS = [
465
- AuthAvatarComponent,
466
- AuthPopoverMenuComponent
467
- ];
468
- class MalIonicModule {
469
- }
470
- MalIonicModule.decorators = [
471
- { type: NgModule, args: [{
472
- imports: [
473
- MalSharedModule,
474
- CommonModule,
475
- HttpClientModule,
476
- IonicModule
477
- ],
478
- exports: COMPONENTS,
479
- declarations: COMPONENTS,
480
- providers: [
481
- { provide: MalAlertsUIProviderToken, useClass: MalIonicAlertsService },
482
- { provide: MalLoadingUIProviderToken, useClass: MalIonicLoadingService },
483
- { provide: MalPickerUIProviderToken, useClass: MalIonicPickerService },
484
- { provide: MalToastUIProviderToken, useClass: MalIonicToastService },
485
- { provide: MalLegaliyDialogUIProiderToken, useClass: MalIonicLegalityDialogService }
486
- ]
487
- },] }
488
- ];
489
-
490
- /**
491
- * Generated bundle index. Do not edit.
492
- */
493
-
494
- export { AuthAvatarComponent, AuthPopoverMenuComponent, MalIonicAlertsService, MalIonicLegalityDialogService, MalIonicLoadingService, MalIonicModule, MalIonicPickerService, MalIonicToastService, NgxAuthFirebaseuiAnimations };
495
- //# sourceMappingURL=ngx-firebase-ionic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngx-firebase-ionic.js","sources":["../../../projects/ngx-firebase/ionic/src/components/popover-menu/popover-menu.component.ts","../../../projects/ngx-firebase/ionic/src/components/avatar/avatar.component.ts","../../../projects/ngx-firebase/ionic/src/animations/index.ts","../../../projects/ngx-firebase/ionic/src/services/alerts-ionic.service.ts","../../../projects/ngx-firebase/ionic/src/services/loading-ionic.service.ts","../../../projects/ngx-firebase/ionic/src/services/picker-ionic.service.ts","../../../projects/ngx-firebase/ionic/src/services/toast-ionic.service.ts","../../../projects/ngx-firebase/ionic/src/services/legality-dialog-ionic.service.ts","../../../projects/ngx-firebase/ionic/src/ionic.module.ts","../../../projects/ngx-firebase/ionic/src/ngx-firebase-ionic.ts"],"sourcesContent":["import { Component, Input } from '@angular/core';\nimport { PopoverController } from '@ionic/angular';\nimport { UiService } from 'ngx-firebase';\nimport { LinkMenuItem } from './interface';\n\n@Component({\n templateUrl: './popover-menu.component.html'\n})\nexport class AuthPopoverMenuComponent {\n\n @Input()\n links: LinkMenuItem[] = [];\n\n constructor(\n private popoverController: PopoverController,\n private ui: UiService\n ) { }\n\n doLinkClick(link: LinkMenuItem) {\n try {\n this.popoverController.dismiss();\n if (link.callback) {\n link.callback();\n }\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n}","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { User } from '@firebase/auth-types';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { PopoverController } from '@ionic/angular';\nimport { LinkMenuItem, AuthPopoverMenuComponent } from '../popover-menu';\nimport { AuthProcessService, UiService, FirebaseService } from 'ngx-firebase';\n\n@Component({\n selector: 'mal-auth-avatar',\n templateUrl: './avatar.component.html',\n styleUrls: ['./avatar.component.scss']\n})\nexport class AuthAvatarComponent {\n\n @Input()\n layout: 'default' | 'simple' = 'default';\n\n @Input()\n canLogout = true;\n\n @Input()\n links: LinkMenuItem[] = [];\n\n @Input()\n canViewAccount = true;\n\n @Input()\n canDeleteAccount = true;\n\n @Input()\n canEditAccount = true;\n\n @Input()\n showIfAnon = false;\n\n @Output()\n showProfileDialog: EventEmitter<any> = new EventEmitter<any>();\n\n // tslint:disable-next-line no-output-on-prefix\n @Output()\n onSignOut: EventEmitter<void> = new EventEmitter();\n\n user$: Observable<User | null> = this.aps.user$\n .pipe(\n map(user => ((null !== user && (this.showIfAnon || !user.isAnonymous)) ? user : null)),\n );\n\n displayNameInitials$: Observable<string> = this.user$\n .pipe(\n map(user => {\n if (!user || !user.displayName) {\n return '';\n }\n const initialsRegExp: RegExpMatchArray = user.displayName.match(/\\b\\w/g) || [];\n const initials = ((initialsRegExp.shift() || '') + (initialsRegExp.pop() || '')).toUpperCase();\n return initials || '';\n })\n );\n\n constructor(\n public aps: AuthProcessService,\n private popoverController: PopoverController,\n private ui: UiService,\n private fire: FirebaseService\n ) {\n }\n\n openAvatarMenu(ev: any): Promise<void> {\n return new Promise<void>(async resolve => {\n const popover = await this.popoverController.create({\n component: AuthPopoverMenuComponent,\n componentProps: {\n links: [\n ...(this.canViewAccount) ? [{ text: 'auth.menu.profile', callback: this.doShowProfile.bind(this) }] : [],\n ...(this.canLogout) ? [{ text: 'auth.menu.signOut', callback: this.signOut.bind(this) }] : []\n ]\n },\n event: ev,\n translucent: true\n });\n popover.onDidDismiss().then(\n data => {\n resolve();\n }\n );\n popover.present();\n });\n }\n\n async doShowProfile(ev: any): Promise<void> {\n this.showProfileDialog.emit(ev);\n this.aps.showProfileDialog.emit(ev);\n }\n\n async signOut() {\n try {\n this.fire.addLogMessage('Starting signOut');\n await this.aps.signOut();\n // Sign-out successful.\n this.onSignOut.emit();\n } catch (error) {\n this.ui.logError(error);\n }\n }\n\n}\n","import {animate, animateChild, animation, query, stagger, state, style, transition, trigger, useAnimation} from '@angular/animations';\n\nconst customAnimation = animation(\n [\n style({\n opacity: '{{opacity}}',\n transform: 'scale({{scale}}) translate3d({{x}}, {{y}}, {{z}})'\n }),\n animate('{{duration}} {{delay}} cubic-bezier(0.0, 0.0, 0.2, 1)', style('*'))\n ],\n {\n params: {\n duration: '200ms',\n delay: '0ms',\n opacity: '0',\n scale: '1',\n x: '0',\n y: '0',\n z: '0'\n }\n }\n);\n\nexport const NgxAuthFirebaseuiAnimations = [\n trigger('animate', [transition('void => *', [useAnimation(customAnimation)])]),\n\n trigger('animateStagger', [\n state('50', style('*')),\n state('100', style('*')),\n state('200', style('*')),\n\n transition('void => 50', query('@*', [stagger('50ms', [animateChild()])], {optional: true})),\n transition('void => 100', query('@*', [stagger('100ms', [animateChild()])], {optional: true})),\n transition('void => 200', query('@*', [stagger('200ms', [animateChild()])], {optional: true}))\n ]),\n];\n","import { Injectable } from '@angular/core';\nimport { AlertController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IYesNoAlertOptions, IOkAlertOptions, ITextAlertOptions, IAlertsUIProvider } from 'ngx-firebase';\n\n@Injectable({ providedIn: 'root' })\nexport class MalIonicAlertsService implements IAlertsUIProvider {\n\n constructor(\n private alertController: AlertController,\n private translateService: TranslateService\n ) { }\n\n yesNoAlert(message: string, options: IYesNoAlertOptions = {}): Promise<boolean> {\n return new Promise<boolean>(async resolve => {\n const [headerKey, subheaderKey] = [options.header || 'brand.name', options.subHeader || 'subHeader'];\n const txd = await this.translateService.get(\n [headerKey, subheaderKey, message, 'shared.button.no', 'shared.button.yes'],\n options.interpolateParams\n ).toPromise();\n\n const noButton = {\n text: txd['shared.button.no'],\n role: 'cancel',\n handler: () => resolve(false)\n };\n\n const yesButton = {\n text: txd['shared.button.yes'],\n handler: () => resolve(true)\n }\n\n const alert = await this.alertController.create({\n header: txd[headerKey],\n subHeader: (options?.subHeader) ? txd[subheaderKey] : undefined,\n message: txd[message],\n buttons: [\n (options?.defaultToNo) ? yesButton : noButton,\n (options?.defaultToNo) ? noButton : yesButton\n ]\n });\n await alert.present();\n });\n }\n\n okAlert(message: string, options: IOkAlertOptions = {}): Promise<void> {\n return new Promise<void>(async resolve => {\n const [headerKey, subheaderKey] = [options.header || 'brand.name', options.subHeader || 'subHeader'];\n const txd = await this.translateService.get(\n [headerKey, subheaderKey, message, 'shared.button.ok'],\n options.interpolateParams\n ).toPromise();\n\n const alert = await this.alertController.create({\n header: txd[headerKey],\n subHeader: (options.subHeader) ? txd[subheaderKey] : undefined,\n message: txd[message],\n buttons: [txd['shared.button.ok']]\n });\n alert.onDidDismiss().then(() => resolve());\n await alert.present();\n });\n }\n\n errorAlert(message: string, options: IOkAlertOptions = {}): Promise<void> {\n return this.okAlert(message, options);\n }\n\n infoAlert(message: string, options: IOkAlertOptions = {}): Promise<void> {\n return this.okAlert(message, options);\n }\n\n textboxInputAlert(options: ITextAlertOptions): Promise<string | null> {\n return new Promise(async (resolve) => {\n\n const [headerKey, subheaderKey, okKey, placeholderKey] = [\n options.header || 'brand.name',\n options.subHeader || 'subHeader',\n options.okText || 'shared.button.ok',\n options.placeholder || 'placeHolder'\n ];\n const txd = await this.translateService.get(\n [headerKey, subheaderKey, 'shared.button.cancel', okKey, placeholderKey],\n options.interpolateParams\n ).toPromise();\n\n const alert = await this.alertController.create({\n cssClass: 'my-custom-class',\n header: txd[headerKey],\n subHeader: (options.subHeader) ? txd[subheaderKey] : undefined,\n inputs: [\n {\n name: 'textField',\n type: 'text',\n value: options.value,\n placeholder: txd[placeholderKey],\n }\n ],\n buttons: [\n {\n text: txd['shared.button.cancel'],\n role: 'cancel',\n cssClass: 'secondary',\n handler: () => {\n resolve(null);\n }\n }, {\n text: txd[okKey],\n handler: (data) => {\n resolve(data.textField);\n }\n }\n ]\n });\n await alert.present();\n });\n }\n\n\n}\n","import { Injectable } from '@angular/core';\nimport { LoadingController } from '@ionic/angular';\nimport { Observable, Subscription } from 'rxjs';\nimport { debounceTime, timeout } from 'rxjs/operators';\nimport { TranslateService } from '@ngx-translate/core';\nimport { ILoadingUIProvider, RemoteConfigService } from 'ngx-firebase';\n\n@Injectable()\nexport class MalIonicLoadingService implements ILoadingUIProvider {\n\n constructor(\n private loadingController: LoadingController,\n private translateService: TranslateService,\n private remoteConfig: RemoteConfigService\n ) {\n this.watchLoading = this.watchLoading.bind(this);\n }\n\n async createLoading(message?: string) {\n if (message) {\n message = await this.translateService.get(message).toPromise();\n return await this.loadingController.create({ message });\n } else {\n return await this.loadingController.create();\n }\n }\n\n async watchLoading(\n source: Observable<boolean>,\n options?: { debounce?: number, message?: string, timeoutMs?: number | null, debug?: string }\n ): Promise<Subscription> {\n\n const timeoutInterval = (undefined !== options?.timeoutMs)\n ? options.timeoutMs\n : await this.remoteConfig.getNumber('timeoutLoading');\n\n const loading = await this.createLoading(options?.message);\n\n source = !timeoutInterval ? source : source.pipe(timeout(timeoutInterval));\n\n return source.pipe(\n debounceTime(options?.debounce || 100)\n ).subscribe(\n isLoading => isLoading ? loading.present() : loading.dismiss(),\n () => { loading.dismiss(); }, // Dismiss on error including timeout,\n () => { loading.dismiss(); } // Dismiss on completion\n );\n\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { PickerController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IPickerServiceOptions, IPickerUIProvider } from 'ngx-firebase';\n\n@Injectable({ providedIn: 'root' })\nexport class MalIonicPickerService implements IPickerUIProvider {\n\n constructor(\n private pickerController: PickerController,\n private translateService: TranslateService\n ) {\n }\n\n async picker<T>(options: IPickerServiceOptions): Promise<T | null> {\n return new Promise<T | null>(async resolve => {\n const [cancelKey, confirmKey] = [options.cancelText || 'shared.button.cancel', options.confirmText || 'shared.button.confirm'];\n const txd =\n await this.translateService.get([options.title, cancelKey, confirmKey], options.interpolateParams).toPromise();\n const picker = await this.pickerController.create({\n columns: [\n {\n name: txd[options.title],\n options: options.options\n }\n ],\n cssClass: 'pickerfix',\n buttons: [\n { text: txd[cancelKey], role: 'cancel', handler: () => { resolve(null); } },\n { text: txd[confirmKey], handler: (value) => { resolve(value[txd[options.title]].value); } }\n ]\n });\n await picker.present();\n });\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { ToastController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { IToastOptions, IToastUIProvider } from 'ngx-firebase';\n\n@Injectable({ providedIn: 'root' })\nexport class MalIonicToastService implements IToastUIProvider {\n\n constructor(\n private toastControl: ToastController,\n private translateService: TranslateService\n ) {\n }\n\n async createToast(message: string, options: IToastOptions = {}) {\n return await this.toastControl.create({\n message: await this.translateService.get(message, options.interpolateParams).toPromise(),\n duration: options.duration || 3000,\n position: options.position || 'middle'\n });\n }\n\n async toast(message: string, options: IToastOptions = {}) {\n // TODO Add OK button if duration is not set....\n const toast = await this.createToast(message, options);\n await toast.present();\n await toast.onDidDismiss();\n }\n\n async errorToast(error: Error, messagePrefix?: string, options: IToastOptions = {}) {\n if (messagePrefix) {\n await this.toast(`${messagePrefix}: ${error.message}`, options);\n } else {\n await this.toast(error.message, options);\n }\n }\n\n}\n","import { forwardRef, Inject, Injectable } from '@angular/core';\nimport { AlertController } from '@ionic/angular';\nimport { TranslateService } from '@ngx-translate/core';\nimport { BehaviorSubject, combineLatest } from 'rxjs';\nimport { ILegalityDialogUIProvider, MalSharedConfig, MalSharedConfigToken } from 'ngx-firebase';\n\n@Injectable()\nexport class MalIonicLegalityDialogService implements ILegalityDialogUIProvider {\n\n constructor(\n @Inject(forwardRef(() => MalSharedConfigToken)) public config: MalSharedConfig,\n private alertController: AlertController,\n private translate: TranslateService\n ) {\n }\n\n confirmTos(): Promise<boolean | null> {\n if (this.config.authUi.tosUrl || this.config.authUi.privacyPolicyUrl) {\n return new Promise<boolean>(async (resolve) => {\n\n const inputs = [];\n\n const tosChecked$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n const privacyChecked$: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(true);\n\n const readMessage = await this.translate.get('auth.legal.readAndAccept').toPromise();\n let tosLink: string = '';\n let privacyLink: string = '';\n\n if (this.config.authUi.tosUrl) {\n const tosLabel = await this.translate.get('auth.legal.termsAndConditions').toPromise();\n inputs.push({\n id: 'tos_check',\n type: 'checkbox' as 'checkbox',\n label: tosLabel,\n checked: tosChecked$.value,\n cssClass: 'authui-checkbox-wrap',\n handler: (elem: any) => tosChecked$.next(elem.checked)\n });\n tosLink = ` <a target=\"_blank\" href=\"${this.config.authUi.tosUrl}\" >${tosLabel}</a> `;\n\n }\n\n if (this.config.authUi.privacyPolicyUrl) {\n const privacyLabel = await this.translate.get('auth.legal.privacyPolicy').toPromise();\n inputs.push({\n id: 'privacy_check',\n type: 'checkbox' as 'checkbox',\n label: privacyLabel,\n checked: privacyChecked$.value,\n cssClass: 'authui-checkbox-wrap',\n handler: (elem: any) => privacyChecked$.next(elem.checked)\n });\n privacyLink = ` <a target=\"_blank\" href=\"${this.config.authUi.privacyPolicyUrl}\" >${privacyLabel}</a> `;\n }\n\n const txd = await this.translate.get([\n 'brand.name',\n 'auth.legal.subHeader',\n 'auth.legal.declineButton',\n 'auth.legal.acceptButton'\n ]).toPromise();\n const alert = await this.alertController.create({\n header: txd['brand.name'],\n subHeader: txd['auth.legal.subHeader'],\n message: `${readMessage}${tosLink}${privacyLink}`,\n inputs,\n buttons: [\n { text: txd['auth.legal.declineButton'], handler: _ => resolve(false), role: 'cancel' },\n { text: txd['auth.legal.acceptButton'], handler: _ => resolve(true), cssClass: 'confirm' }\n ],\n });\n await alert.present();\n\n const confirmBtn: HTMLIonButtonElement | null = document.querySelector('.confirm');\n if (confirmBtn === null) {\n throw new Error('QuerySelector for confirmBtn returned null');\n }\n confirmBtn.disabled = true;\n\n combineLatest([tosChecked$, privacyChecked$])\n .subscribe(([tosChecked, privacyChecked]) => confirmBtn.disabled = !tosChecked || !privacyChecked);\n\n });\n } else {\n return Promise.resolve(null);\n }\n }\n\n\n}\n","// @angular/*\nimport { NgModule } from '@angular/core';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CommonModule } from '@angular/common'\n\n// Ionic\nimport { IonicModule } from '@ionic/angular';\n\n// Mal\nimport { MalSharedModule } from 'ngx-firebase';\n\n// components\nimport { AuthAvatarComponent } from './components/avatar/avatar.component';\nimport { AuthPopoverMenuComponent } from './components/popover-menu/popover-menu.component';\n\n// services\nimport { MalIonicAlertsService } from './services/alerts-ionic.service';\nimport { MalIonicLoadingService } from './services/loading-ionic.service';\nimport { MalIonicPickerService } from './services/picker-ionic.service';\nimport { MalIonicToastService } from './services/toast-ionic.service';\nimport { MalIonicLegalityDialogService } from './services/legality-dialog-ionic.service';\n// interfaces\nimport {\n MalToastUIProviderToken, MalAlertsUIProviderToken, MalLoadingUIProviderToken,\n MalPickerUIProviderToken, MalLegaliyDialogUIProiderToken\n} from 'ngx-firebase';\n// pages\n\nconst COMPONENTS = [\n AuthAvatarComponent,\n AuthPopoverMenuComponent\n];\n\n@NgModule({\n imports: [\n MalSharedModule,\n CommonModule,\n HttpClientModule,\n IonicModule\n ],\n exports: COMPONENTS,\n declarations: COMPONENTS,\n providers:\n [\n { provide: MalAlertsUIProviderToken, useClass: MalIonicAlertsService },\n { provide: MalLoadingUIProviderToken, useClass: MalIonicLoadingService },\n { provide: MalPickerUIProviderToken, useClass: MalIonicPickerService },\n { provide: MalToastUIProviderToken, useClass: MalIonicToastService },\n { provide: MalLegaliyDialogUIProiderToken, useClass: MalIonicLegalityDialogService }\n ]\n})\nexport class MalIonicModule {\n\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}