@tapni/auth 0.0.2 → 0.0.3

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 (50) hide show
  1. package/dist/TapniAuth.es.js +1 -1
  2. package/dist/TapniAuth.umd.js +1 -1
  3. package/package.json +3 -2
  4. package/src/App.vue +269 -0
  5. package/src/components/Language.vue +158 -0
  6. package/src/components/LinkIcon.vue +288 -0
  7. package/src/components/ModalOverlay.vue +67 -0
  8. package/src/components/SSO.vue +126 -0
  9. package/src/components/SSOPick.vue +166 -0
  10. package/src/install.js +8 -0
  11. package/src/main.js +96 -0
  12. package/src/mixins/apple.mixin.js +60 -0
  13. package/src/mixins/auth.mixin.js +525 -0
  14. package/src/mixins/facebook.mixin.js +78 -0
  15. package/src/mixins/global.mixin.js +110 -0
  16. package/src/mixins/google.mixin.js +61 -0
  17. package/src/mixins/microsoft.mixin.js +88 -0
  18. package/src/mixins/okta.mixin.js +132 -0
  19. package/src/mixins/qr-auth.mixin.js +112 -0
  20. package/src/mixins/saml.mixin.js +84 -0
  21. package/src/router/index.js +9 -0
  22. package/src/routes.js +55 -0
  23. package/src/services/Api.js +55 -0
  24. package/src/services/AuthService.js +71 -0
  25. package/src/services/CompanyService.js +13 -0
  26. package/src/services/DeviceService.js +10 -0
  27. package/src/services/UserService.js +49 -0
  28. package/src/services/UtilService.js +221 -0
  29. package/src/store/constants.js +8 -0
  30. package/src/store/event-bus.js +30 -0
  31. package/src/store/locales/cn.js +462 -0
  32. package/src/store/locales/de.js +528 -0
  33. package/src/store/locales/en.js +514 -0
  34. package/src/store/locales/es.js +536 -0
  35. package/src/store/locales/fr.js +520 -0
  36. package/src/store/locales/it.js +518 -0
  37. package/src/store/locales/kr.js +496 -0
  38. package/src/store/locales/lang.js +47 -0
  39. package/src/store/locales/sr.js +497 -0
  40. package/src/store/locales/tr.js +491 -0
  41. package/src/styles/framework.css +4012 -0
  42. package/src/styles/inter.ttf +0 -0
  43. package/src/styles/style.css +618 -0
  44. package/src/views/Callback.vue +47 -0
  45. package/src/views/Login.vue +389 -0
  46. package/src/views/QR.vue +39 -0
  47. package/src/views/Register.vue +217 -0
  48. package/src/views/Reset.vue +155 -0
  49. package/src/views/Verify.vue +170 -0
  50. package/src/views/Welcome.vue +69 -0
@@ -13,7 +13,7 @@ import { Capacitor as ie } from "@capacitor/core";
13
13
  import { Browser as F } from "@capacitor/browser";
14
14
  import Te from "qr-code-styling";
15
15
  import { sanitizeUrl as je } from "@braintree/sanitize-url";
16
- const Pe = "0.0.2", m = (e, a = !1) => {
16
+ const Pe = "0.0.3", m = (e, a = !1) => {
17
17
  const n = Pe;
18
18
  let o = K.create({
19
19
  baseURL: "https://api.tapni.co/v1/",
@@ -1,4 +1,4 @@
1
- (function(e,z){typeof exports=="object"&&typeof module<"u"?module.exports=z(require("vue"),require("vue-router"),require("await-to-js"),require("axios"),require("jwt-decode"),require("@capacitor/device"),require("@tapni/capacitor-reactive-localstorage-vue3"),require("@codetrix-studio/capacitor-google-auth"),require("@capacitor-community/facebook-login"),require("@capacitor-community/apple-sign-in"),require("@recognizebv/capacitor-plugin-msauth"),require("@capacitor/core"),require("@capacitor/browser"),require("qr-code-styling"),require("@braintree/sanitize-url")):typeof define=="function"&&define.amd?define(["vue","vue-router","await-to-js","axios","jwt-decode","@capacitor/device","@tapni/capacitor-reactive-localstorage-vue3","@codetrix-studio/capacitor-google-auth","@capacitor-community/facebook-login","@capacitor-community/apple-sign-in","@recognizebv/capacitor-plugin-msauth","@capacitor/core","@capacitor/browser","qr-code-styling","@braintree/sanitize-url"],z):(e=typeof globalThis<"u"?globalThis:e||self,e.TapniAuth=z(e.Vue,e.vueRouter,e.to,e.axios,e.jwtDecode,e.device,e.capacitorReactiveLocalstorageVue3,e.capacitorGoogleAuth,e.facebookLogin,e.appleSignIn,e.capacitorPluginMsauth,e.core,e.browser,e.QRCodeStyling,e.sanitizeUrl))})(this,function(e,z,_,S,V,L,I,B,J,ee,ae,x,E,te,ne){"use strict";const ie="0.0.2",p=(a,t=!1)=>{const n=ie;let o=S.create({baseURL:"https://api.tapni.co/v1/",headers:{Authorization:`Bearer ${a.token}`,"X-Client-Name":"sso-"+n.platform,"X-Client-Version":n.version}});return o.interceptors.request.use(async function(i){if(["post","put","delete"].includes(i.method.toLowerCase())?i.data={...i.data,lang:a.appLang,realm:a.realm||"app"}:i.method.toLowerCase()==="get"&&(i.params={...i.params,lang:a.appLang,realm:a.realm||"app"}),a.token&&!t){const r=V.jwtDecode(a.token);if(r.exp-30<Math.floor(Date.now()/1e3))return m.methods.refreshTokenAction(r).then(()=>(i.headers={...i.headers,Authorization:`Bearer ${a.token}`},i))}return i}),o},y={getMe(){return p(storage).get("/users/me")},getByUsername(a,t){let n=document.referrer||"",o=a.utmParams||{};return a.dontTap&&(o.dontTap=!0),p(t).get(`/users/${a.username}`,{params:o,headers:{"X-Referer":n}})},getByNumber(a,t){let n=document.referrer||"",o=a.utmParams||{};return a.dontTap&&(o.dontTap=!0),p(t).get(`/users/tag/${a.serial}`,{params:o,headers:{"X-Referer":n}})},save(a,t){return p(t).put("/users",a)},newPassword(a,t){return p(t).put("/users/new-password",a)},connect(a,t){return p(t).post("/users/connect",a)},eventLog(a,t){return p(t).post("/users/log",a)},deleteAccount(a,t){return p(t).post("/users/profile/delete",a)},registerDevice(a,t){return p(t).post("/users/device/register",a)},addFcmToken(a,t){return p(t).post("/users/device/fcm",a)},loginUsingQR(a,t){return p(t).post("/users/qr/login",a)}},q={registerDevice(a,t){return p(t).post("/devices/add",a)},addFcmToken(a,t){return p(t).post("/devices/fcm/add",a)}};let g;L.Device.getId().then(a=>g=a.uuid);const u={register(a,t){return a.device_id=g,p(t).post("/users/register",a)},login(a,t){return a.device_id=g,p(t).post("/users/login",a)},logout(a,t){return a.device_id=g,p(t).post("/users/logout",a)},refreshToken(a,t){return p(t,!0).get(`/users/refresh-token?UserId=${a.id}&token=${a.refreshToken}`)},getLoggedInAccounts(a,t){return p(t).post("/users/tokens",a)},sendResetEmail(a,t){return a.device_id=g,p(t).post("/users/reset",a)},changePassword(a,t){return p(t).put("/users/password",a,{headers:{Authorization:"Bearer "+a.token}})},verify(a,t){return p(t).get("/users/verify?c="+a.code+"&e="+a.email+"&captchatoken="+a.captchaToken)},googleUrl(a){return p(a).get("/users/google/url")},google(a,t){return a.device_id=g,p(t).post("/users/google",a)},facebook(a,t){return a.device_id=g,p(t).post("/users/facebook",a)},googleSDK(a,t){return a.device_id=g,p(t).post("/users/google/sdk",a)},facebookSDK(a,t){return a.device_id=g,p(t).post("/users/facebook/sdk",a)},appleSDK(a,t){return a.device_id=g,p(t).post("/users/apple/sdk",a)},microsoftSDK(a,t){return a.device_id=g,p(t).post("/users/microsoft/sdk",a)},oktaSDK(a,t){return a.device_id=g,p(t).post("/users/okta/sdk",a)},samlLoginUrl(a,t){return p(t).post("/saml/url",a)}},N={getBySSOEmail(a,t){return p(t).get(`/company/sso/${a}`)},acceptCompanyInvitation(a,t){return p(t).get(`/users/invitation?ic=${a}`)},qrCodePooling(a,t){return p(t).post("/company/login/qr",a)}},C=e.reactive(new Map),c={$on(a,t){let n=C.get(a);n||(n=new Set,C.set(a,n)),n.add(t)},$emit(a,...t){const n=C.get(a);if(n)for(const o of n)o(...t)},$off(a,t){const n=C.get(a);n&&n.delete(t)}};e.readonly(c);const oe={state:{english:"English",spanish:"Spanish",german:"German",korean:"Korean",italian:"Italian",french:"French",serbian:"Serbian",turkish:"Turkish",chinese:"Chinese",app_language:"Language",profile_preview:"Profile preview",edit_profile:"Edit profile",login:"Login",referral_reach:"Provide us with more information about you and your reach.",referral_apply_placeholder:"How do you plan to promote Tapni?",referral_apply_note:`Add as many links as possible in your account, <br>
1
+ (function(e,z){typeof exports=="object"&&typeof module<"u"?module.exports=z(require("vue"),require("vue-router"),require("await-to-js"),require("axios"),require("jwt-decode"),require("@capacitor/device"),require("@tapni/capacitor-reactive-localstorage-vue3"),require("@codetrix-studio/capacitor-google-auth"),require("@capacitor-community/facebook-login"),require("@capacitor-community/apple-sign-in"),require("@recognizebv/capacitor-plugin-msauth"),require("@capacitor/core"),require("@capacitor/browser"),require("qr-code-styling"),require("@braintree/sanitize-url")):typeof define=="function"&&define.amd?define(["vue","vue-router","await-to-js","axios","jwt-decode","@capacitor/device","@tapni/capacitor-reactive-localstorage-vue3","@codetrix-studio/capacitor-google-auth","@capacitor-community/facebook-login","@capacitor-community/apple-sign-in","@recognizebv/capacitor-plugin-msauth","@capacitor/core","@capacitor/browser","qr-code-styling","@braintree/sanitize-url"],z):(e=typeof globalThis<"u"?globalThis:e||self,e.TapniAuth=z(e.Vue,e.vueRouter,e.to,e.axios,e.jwtDecode,e.device,e.capacitorReactiveLocalstorageVue3,e.capacitorGoogleAuth,e.facebookLogin,e.appleSignIn,e.capacitorPluginMsauth,e.core,e.browser,e.QRCodeStyling,e.sanitizeUrl))})(this,function(e,z,_,S,V,L,I,B,J,ee,ae,x,E,te,ne){"use strict";const ie="0.0.3",p=(a,t=!1)=>{const n=ie;let o=S.create({baseURL:"https://api.tapni.co/v1/",headers:{Authorization:`Bearer ${a.token}`,"X-Client-Name":"sso-"+n.platform,"X-Client-Version":n.version}});return o.interceptors.request.use(async function(i){if(["post","put","delete"].includes(i.method.toLowerCase())?i.data={...i.data,lang:a.appLang,realm:a.realm||"app"}:i.method.toLowerCase()==="get"&&(i.params={...i.params,lang:a.appLang,realm:a.realm||"app"}),a.token&&!t){const r=V.jwtDecode(a.token);if(r.exp-30<Math.floor(Date.now()/1e3))return m.methods.refreshTokenAction(r).then(()=>(i.headers={...i.headers,Authorization:`Bearer ${a.token}`},i))}return i}),o},y={getMe(){return p(storage).get("/users/me")},getByUsername(a,t){let n=document.referrer||"",o=a.utmParams||{};return a.dontTap&&(o.dontTap=!0),p(t).get(`/users/${a.username}`,{params:o,headers:{"X-Referer":n}})},getByNumber(a,t){let n=document.referrer||"",o=a.utmParams||{};return a.dontTap&&(o.dontTap=!0),p(t).get(`/users/tag/${a.serial}`,{params:o,headers:{"X-Referer":n}})},save(a,t){return p(t).put("/users",a)},newPassword(a,t){return p(t).put("/users/new-password",a)},connect(a,t){return p(t).post("/users/connect",a)},eventLog(a,t){return p(t).post("/users/log",a)},deleteAccount(a,t){return p(t).post("/users/profile/delete",a)},registerDevice(a,t){return p(t).post("/users/device/register",a)},addFcmToken(a,t){return p(t).post("/users/device/fcm",a)},loginUsingQR(a,t){return p(t).post("/users/qr/login",a)}},q={registerDevice(a,t){return p(t).post("/devices/add",a)},addFcmToken(a,t){return p(t).post("/devices/fcm/add",a)}};let g;L.Device.getId().then(a=>g=a.uuid);const u={register(a,t){return a.device_id=g,p(t).post("/users/register",a)},login(a,t){return a.device_id=g,p(t).post("/users/login",a)},logout(a,t){return a.device_id=g,p(t).post("/users/logout",a)},refreshToken(a,t){return p(t,!0).get(`/users/refresh-token?UserId=${a.id}&token=${a.refreshToken}`)},getLoggedInAccounts(a,t){return p(t).post("/users/tokens",a)},sendResetEmail(a,t){return a.device_id=g,p(t).post("/users/reset",a)},changePassword(a,t){return p(t).put("/users/password",a,{headers:{Authorization:"Bearer "+a.token}})},verify(a,t){return p(t).get("/users/verify?c="+a.code+"&e="+a.email+"&captchatoken="+a.captchaToken)},googleUrl(a){return p(a).get("/users/google/url")},google(a,t){return a.device_id=g,p(t).post("/users/google",a)},facebook(a,t){return a.device_id=g,p(t).post("/users/facebook",a)},googleSDK(a,t){return a.device_id=g,p(t).post("/users/google/sdk",a)},facebookSDK(a,t){return a.device_id=g,p(t).post("/users/facebook/sdk",a)},appleSDK(a,t){return a.device_id=g,p(t).post("/users/apple/sdk",a)},microsoftSDK(a,t){return a.device_id=g,p(t).post("/users/microsoft/sdk",a)},oktaSDK(a,t){return a.device_id=g,p(t).post("/users/okta/sdk",a)},samlLoginUrl(a,t){return p(t).post("/saml/url",a)}},N={getBySSOEmail(a,t){return p(t).get(`/company/sso/${a}`)},acceptCompanyInvitation(a,t){return p(t).get(`/users/invitation?ic=${a}`)},qrCodePooling(a,t){return p(t).post("/company/login/qr",a)}},C=e.reactive(new Map),c={$on(a,t){let n=C.get(a);n||(n=new Set,C.set(a,n)),n.add(t)},$emit(a,...t){const n=C.get(a);if(n)for(const o of n)o(...t)},$off(a,t){const n=C.get(a);n&&n.delete(t)}};e.readonly(c);const oe={state:{english:"English",spanish:"Spanish",german:"German",korean:"Korean",italian:"Italian",french:"French",serbian:"Serbian",turkish:"Turkish",chinese:"Chinese",app_language:"Language",profile_preview:"Profile preview",edit_profile:"Edit profile",login:"Login",referral_reach:"Provide us with more information about you and your reach.",referral_apply_placeholder:"How do you plan to promote Tapni?",referral_apply_note:`Add as many links as possible in your account, <br>
2
2
  so that we can know who you are.
3
3
  <br><br>Be exclusive.
4
4
  <br>Not everyone gets accepted.😉`,referral_apply_now:"Apply now",referral_apply_thanks:"Thanks for applying. We will review your application soon!",connect:"Connect",with:"with",exchange_contact:"Exchange Contact",add_details:"Add more",show_details:"Show more",download_contact:"Download Contact",stay_in_touch:"Stay in touch with",no_thanks:"No Thanks",connect_join:"Join Tapni",connect_with:"Exchange contact with",connect_required_fields:"One of the two contact fields must be provided",name:"Name",first_name:"First name",last_name:"Last name",email:"Email",phone:"Phone number",phone_p:"Phone",company:"Company",address:"Address",website:"Website",open:"Open",delete:"Delete",confirm:"Confirm",cancel:"Cancel",save:"Save",code:"Code",note:"Note",note_p:"Add a note",contact_card_icon:"Set text under the contact card icon",contact_card_name:"Enter first and lastname",contact_card_name_p:"Contact card name",contact_card_email:"Enter personal email address",contact_card_email_p:"Contact card email",contact_card_phone:"Enter personal phone number",contact_card_phone_p:"Contact card phone",contact_card_website:"Enter personal website",contact_card_website_p:"Contact card website",contact_card_company_name:"Enter company name",contact_card_company_name_p:"Contact card company name",contact_card_job_title:"Job title",contact_card_job_title_p:"Enter job title",contact_card_company_website:"Company website",contact_card_company_website_p:"Enter company website",contact_card_bio:"Enter bio for the contact card",contact_card_bio_p:"Enter bio for the contact card",contact_card_home_address:"Enter home address",contact_card_home_address_p:"Contact card home address",contact_card_work_address:"Enter work address",contact_card_work_address_p:"Contact card work address",contact_card_social:"Choose social media links to your Tapni profile <br>in order to add them in the contact card",contact_card_social_p:"Choose social media links for the contact card",link_text_p:"Link Text",link_icon:"Set text under the link icon",direct_pick:"Pick a direct link",direct_p:"When you tap someone's phone, <br> this link will be opened instead of your full profile.",password_change:"Change password",password_repeat:"Repeat password",password_reset_t:"Password reset",password_current:"Enter your current password",password_current_p:"Current Password",password_new:"Enter your new password",password_new_p:"New Password",password_new_repeat:"Enter your new password again",password_new_repeat_p:"Enter your new password again",password_update:"Password update",password_reset:`If you can't remember your current password,<br>
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@tapni/auth",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "type": "module",
5
5
  "main": "./dist/TapniAuth.umd.js",
6
6
  "module": "./dist/TapniAuth.es.js",
7
7
  "files": [
8
- "dist"
8
+ "dist",
9
+ "src"
9
10
  ],
10
11
  "exports": {
11
12
  ".": {
package/src/App.vue ADDED
@@ -0,0 +1,269 @@
1
+ <script setup>
2
+ import { RouterView } from 'vue-router'
3
+
4
+ document.addEventListener('DOMContentLoaded', function() {
5
+ const recaptchaScript = document.createElement('script');
6
+ recaptchaScript.src = `https://www.google.com/recaptcha/api.js?render=${import.meta.env.VITE_GOOGLE_RECAPTCHA_SITE_KEY}`;
7
+ document.head.appendChild(recaptchaScript);
8
+ });
9
+ </script>
10
+
11
+
12
+ <template>
13
+ <div id="ssoapp">
14
+ <a v-if="display === 'redirect'" href="/" class="header-logo"><img src="data:image/png;base64,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" onerror="this.onerror=null;this.src='https://cdn.tapni.co/images/logo-dark.png';" class="header-logo-img"></a>
15
+
16
+ <a v-if="display === 'redirect'"
17
+ @click="toggleLanguageModal"
18
+ class="font-18 no-border pointer color-black"
19
+ style="position: absolute; right: 20px; top: -10px">
20
+ <span class="lang-icon">{{ appLang.toUpperCase() }}</span>
21
+ </a>
22
+
23
+
24
+ <ModalOverlay />
25
+ <Language />
26
+ <SSO />
27
+ <SSOPick />
28
+
29
+ <AuthWelcome v-if="initialized && renderView === 'AuthWelcome'" />
30
+ <AuthLogin v-else-if="initialized && renderView === 'AuthLogin'" :isModal="isModal" />
31
+ <AuthRegister v-else-if="initialized && renderView === 'AuthRegister'" :isModal="isModal" />
32
+ <AuthVerify v-else-if="initialized && renderView === 'AuthVerify'" :isModal="isModal" />
33
+ <AuthReset v-else-if="initialized && renderView === 'AuthReset'" />
34
+ <AuthCallback v-else-if="initialized && renderView === 'AuthCallback'" />
35
+ <RouterView v-else />
36
+
37
+ <div class="snackbar snackbar-boxed" id="snackbar">
38
+ <p class="snack-body" id="errorSnack">
39
+ <span id="errorMessage"> {{ ssoLang[appLang].error }} </span>
40
+ <a
41
+ @click="closeSnacks"
42
+ style="
43
+ position: absolute;
44
+ right: 10px;
45
+ top: 10px;
46
+ width: 50px;
47
+ height: 50px;
48
+ "
49
+ >
50
+ <img
51
+ src="https://cdn.tapni.co/icons/notification-close.png"
52
+ style="width: 100%;:"
53
+ />
54
+ </a>
55
+ </p>
56
+ <p class="snack-body" id="successSnack">
57
+ <span id="successMessage"> {{ ssoLang[appLang].success }} </span>
58
+ <a
59
+ @click="closeSnacks"
60
+ style="
61
+ position: absolute;
62
+ right: 10px;
63
+ top: 10px;
64
+ width: 50px;
65
+ height: 50px;
66
+ "
67
+ >
68
+ <img
69
+ src="https://cdn.tapni.co/icons/notification-close.png"
70
+ style="width: 100%"
71
+ />
72
+ </a>
73
+ </p>
74
+ </div>
75
+ </div>
76
+ </template>
77
+
78
+ <script>
79
+ import AuthWelcome from "@/views/Welcome.vue";
80
+ import AuthLogin from "@/views/Login.vue";
81
+ import AuthRegister from "@/views/Register.vue";
82
+ import AuthVerify from "@/views/Verify.vue";
83
+ import AuthReset from "@/views/Reset.vue";
84
+ import AuthCallback from "@/views/Callback.vue";
85
+ import ModalOverlay from "@/components/ModalOverlay.vue";
86
+ import SSO from "@/components/SSO.vue";
87
+ import SSOPick from "@/components/SSOPick.vue";
88
+ import {EventBus} from "@/store/event-bus.js";
89
+ import AuthMixin from "@/mixins/auth.mixin.js";
90
+ import Language from "@/components/Language.vue";
91
+ import {StorageService, StorageMixin} from '@tapni/capacitor-reactive-localstorage-vue3';
92
+
93
+ export default {
94
+ name: 'TapniAuth',
95
+ mixins: [AuthMixin, StorageMixin],
96
+ data () {
97
+ return {
98
+ initialized: false
99
+ }
100
+ },
101
+ components: {
102
+ Language,
103
+ SSOPick,
104
+ SSO, ModalOverlay, AuthCallback, AuthReset, AuthVerify, AuthRegister, AuthLogin, AuthWelcome
105
+ },
106
+ props: {
107
+ view: {
108
+ type: String,
109
+ default: ''
110
+ },
111
+ isModal: {
112
+ type: Boolean,
113
+ default: false
114
+ }
115
+ },
116
+ mounted() {
117
+ this.applyBgStyle()
118
+
119
+ EventBus.$on('ssoEvent', this.ssoOutgoingEvent)
120
+ EventBus.$on('ssoLogout',(data) => this.logout(data))
121
+ EventBus.$on('getLoggedInAccounts',(data) => this.getLoggedInAccounts(data))
122
+ EventBus.$on('refreshTokenAction',(data) => this.refreshTokenAction(data))
123
+ },
124
+ methods: {
125
+ async init () {
126
+ const storage = await StorageService.getAll();
127
+ await this.setStorage(storage)
128
+
129
+ if (this.storage && this.storage.token && this.storage.refreshTokens) {
130
+ this.setToken(this.storage.token);
131
+ const refreshTokens = this.getRefreshTokens();
132
+ this.setRefreshToken(refreshTokens[0]);
133
+ this.getLoggedInAccounts();
134
+ }
135
+ this.initialized = true;
136
+ this.$emit('ssoLibraryReady');
137
+ },
138
+ ssoOutgoingEvent (data) {
139
+ this.$emit('ssoEvent', data)
140
+ },
141
+ ssoIncomingEvent (data) {
142
+ EventBus.$emit(data.name, data.data)
143
+ },
144
+ applyBgStyle () {
145
+ if (this.display === 'redirect') {
146
+ document.getElementsByTagName("html")[0].style = "background: #dfeefe;"
147
+ } else {
148
+ document.getElementsByTagName("html")[0].style = ""
149
+ }
150
+ },
151
+ toggleLanguageModal () {
152
+ EventBus.$emit('toggleLanguageModal', true)
153
+ }
154
+ },
155
+ watch: {
156
+ display () {
157
+ this.applyBgStyle()
158
+ }
159
+ }
160
+ }
161
+ </script>
162
+
163
+ <style>
164
+ html * {
165
+ font-family: "Inter", sans-serif;
166
+ }
167
+
168
+ .action-block-top .default-text,
169
+ .action-block-top .default-text:after {
170
+ border-radius: 50%;
171
+ width: 10em !important;
172
+ height: 10em !important;
173
+ }
174
+ .action-block-top .default-text {
175
+ margin: 10px auto;
176
+ font-size: 3px;
177
+ position: relative;
178
+ text-indent: -9999em;
179
+ /*
180
+ border-left: 0.5em solid #ffffff;
181
+ border-top: 0.5em solid rgba(255, 255, 255, 0.2);
182
+ border-right: 0.5em solid rgba(255, 255, 255, 0.2);
183
+ border-bottom: 0.5em solid rgba(255, 255, 255, 0.2);
184
+ */
185
+ border-left: 0.5em solid #000000;
186
+ border-top: 0.5em solid rgba(0, 0, 0, 0.2);
187
+ border-right: 0.5em solid rgba(0, 0, 0, 0.2);
188
+ border-bottom: 0.5em solid rgba(0, 0, 0, 0.2);
189
+ -webkit-transform: translateZ(0);
190
+ -ms-transform: translateZ(0);
191
+ transform: translateZ(0);
192
+ -webkit-animation: load8 1.1s infinite linear;
193
+ animation: load8 1.1s infinite linear;
194
+ }
195
+ @-webkit-keyframes load8 {
196
+ 0% {
197
+ -webkit-transform: rotate(0deg);
198
+ transform: rotate(0deg);
199
+ }
200
+ 100% {
201
+ -webkit-transform: rotate(360deg);
202
+ transform: rotate(360deg);
203
+ }
204
+ }
205
+ @keyframes load8 {
206
+ 0% {
207
+ -webkit-transform: rotate(0deg);
208
+ transform: rotate(0deg);
209
+ }
210
+ 100% {
211
+ -webkit-transform: rotate(360deg);
212
+ transform: rotate(360deg);
213
+ }
214
+ }
215
+ .smartbanner-ios {
216
+ background: linear-gradient(to bottom, #f4f4f4, #f4f4f4);
217
+ box-shadow: 0 0px 0px #ffffff;
218
+ border-bottom: 1px solid #dddddd;
219
+ }
220
+ .smartbanner-icon {
221
+ border-radius: 16px;
222
+ }
223
+ .smartbanner-ios .smartbanner-button {
224
+ font-size: 13px;
225
+ padding: 9px 0px;
226
+ height: 40px;
227
+ border-radius: 13px;
228
+ background: #f4f4f4;
229
+ color: #0a99d2;
230
+ border: none;
231
+ box-shadow: none;
232
+ text-transform: uppercase;
233
+ }
234
+
235
+ .snack-body {
236
+ display: none;
237
+ border-radius: 40px;
238
+ font-size: 15px !important;
239
+ }
240
+
241
+ #errorSnack {
242
+ background-color: #fee3e3 !important;
243
+ border: 2px solid #edd9d9 !important;
244
+ color: #000000;
245
+ }
246
+
247
+ #successSnack {
248
+ background-color: #eff5eb !important;
249
+ border: 2px solid #e3ecd7 !important;
250
+ color: #000000;
251
+ }
252
+
253
+ .grecaptcha-badge {
254
+ visibility: hidden;
255
+ }
256
+
257
+ .header-logo {
258
+ position: absolute;
259
+ left: 50%;
260
+ transform: translate(-50%, -50%);
261
+ margin-top: 0px;
262
+ z-index: 2;
263
+ }
264
+
265
+ .header-logo-img {
266
+ height: 40px;
267
+ margin-top: 10px;
268
+ }
269
+ </style>
@@ -0,0 +1,158 @@
1
+ <template>
2
+ <div
3
+ class="menu-wrapper menu-light menu-white menu-modal center-text activate-page"
4
+ :class="{ 'active-menu': toggle }"
5
+ style="height: auto; max-height: 92vh; margin-top: -172.5px"
6
+ >
7
+ <a
8
+ @click="close"
9
+ class="color-black pull-right pointer"
10
+ style="margin-top: 5px; position: absolute; right: 5px"
11
+ >
12
+ <i class="font-17 fa color-black">
13
+ <img
14
+ src="https://cdn.tapni.co/icons/down-arrow.png"
15
+ class="fa responsive-image"
16
+ style="width: 45%"
17
+ />
18
+ </i>
19
+ </a>
20
+ <h3 class="bold center-text color-black small-bottom">
21
+ {{ ssoLang[appLang].app_language }}
22
+ </h3>
23
+
24
+ <LinkIcon
25
+ @click.native="updateLanguage('en')"
26
+ :link-style="'link-grid'"
27
+ :data="{ type: 'lang/en', text: ssoLang[this.appLang].english }"
28
+ :editing="false"
29
+ :class="{ 'add-button': true }"
30
+ />
31
+
32
+ <LinkIcon
33
+ @click.native="updateLanguage('es')"
34
+ :link-style="'link-grid'"
35
+ :data="{ type: 'lang/es', text: ssoLang[this.appLang].spanish }"
36
+ :editing="false"
37
+ :class="{ 'add-button': true }"
38
+ />
39
+
40
+ <LinkIcon
41
+ @click.native="updateLanguage('de')"
42
+ :link-style="'link-grid'"
43
+ :data="{ type: 'lang/de', text: ssoLang[this.appLang].german }"
44
+ :editing="false"
45
+ :class="{ 'add-button': true }"
46
+ />
47
+
48
+ <LinkIcon
49
+ @click.native="updateLanguage('it')"
50
+ :link-style="'link-grid'"
51
+ :data="{ type: 'lang/it', text: ssoLang[this.appLang].italian }"
52
+ :editing="false"
53
+ :class="{ 'add-button': true }"
54
+ />
55
+
56
+ <LinkIcon
57
+ @click.native="updateLanguage('fr')"
58
+ :link-style="'link-grid'"
59
+ :data="{ type: 'lang/fr', text: ssoLang[this.appLang].french }"
60
+ :editing="false"
61
+ :class="{ 'add-button': true }"
62
+ />
63
+
64
+ <LinkIcon
65
+ @click.native="updateLanguage('kr')"
66
+ :link-style="'link-grid'"
67
+ :data="{ type: 'lang/kr', text: ssoLang[this.appLang].korean }"
68
+ :editing="false"
69
+ :class="{ 'add-button': true }"
70
+ />
71
+
72
+ <LinkIcon
73
+ @click.native="updateLanguage('sr')"
74
+ :link-style="'link-grid'"
75
+ :data="{ type: 'lang/sr', text: ssoLang[this.appLang].serbian }"
76
+ :editing="false"
77
+ :class="{ 'add-button': true }"
78
+ />
79
+
80
+ <LinkIcon
81
+ @click.native="updateLanguage('tr')"
82
+ :link-style="'link-grid'"
83
+ :data="{ type: 'lang/tr', text: ssoLang[this.appLang].turkish }"
84
+ :editing="false"
85
+ :class="{ 'add-button': true }"
86
+ />
87
+ <!--
88
+ <LinkIcon @click.native="updateLanguage('cn')"
89
+ :link-style="'link-grid'"
90
+ :data="{ type: 'lang/cn', text: ssoLang[this.appLang].chinese }"
91
+ :editing="false"
92
+ :class="{ 'add-button': true }" />
93
+ -->
94
+ </div>
95
+ </template>
96
+
97
+ <script>
98
+ import { EventBus } from "../store/event-bus.js";
99
+ import LinkIcon from "./LinkIcon.vue";
100
+ import UtilService from "../services/UtilService.js";
101
+ import CONSTANTS from "../store/constants.js";
102
+ import { Device } from "@capacitor/device";
103
+ import AuthMixin from "../mixins/auth.mixin.js";
104
+
105
+ export default {
106
+ name: "Language",
107
+ mixins: [AuthMixin],
108
+ components: { LinkIcon },
109
+ data() {
110
+ return {
111
+ toggle: false,
112
+ };
113
+ },
114
+ async mounted() {
115
+ EventBus.$on("toggleLanguageModal", this.toggleModal);
116
+ EventBus.$on("closeModal", () => {
117
+ this.toggle = false;
118
+ });
119
+
120
+ let lang = this.isNative
121
+ ? await Device.getLanguageCode()
122
+ : UtilService.getFirstBrowserLanguage();
123
+ if (lang && CONSTANTS.SUPPORTED_LANGUAGES.includes(lang)) {
124
+ this.updateLanguage(lang);
125
+ }
126
+ },
127
+ beforeDestroy() {
128
+ EventBus["_events"]["toggleLanguageModal"].pop();
129
+ },
130
+ methods: {
131
+ forceClose() {
132
+ EventBus.$emit("closeModal");
133
+ },
134
+ close() {
135
+ this.forceClose();
136
+ },
137
+ async updateLanguage(lang) {
138
+ EventBus.$emit("updateLang", lang);
139
+ EventBus.$emit("closeModal");
140
+ },
141
+ toggleModal() {
142
+ this.toggle = !this.toggle;
143
+ },
144
+ },
145
+ };
146
+ </script>
147
+
148
+ <style scoped>
149
+ .user-img {
150
+ margin: 0 auto;
151
+ margin-top: 2px;
152
+ width: 65px;
153
+ }
154
+ input {
155
+ margin: 0 auto;
156
+ height: 25px;
157
+ }
158
+ </style>