0.0.1
UI upgrade started
This commit is contained in:
parent
eb891df838
commit
8d9fe51497
1144
css/main.css
Normal file
1144
css/main.css
Normal file
File diff suppressed because it is too large
Load Diff
9
css/main.css.map
Normal file
9
css/main.css.map
Normal file
File diff suppressed because one or more lines are too long
816
css/main.scss
Normal file
816
css/main.scss
Normal file
@ -0,0 +1,816 @@
|
|||||||
|
@import url('https://fonts.googleapis.com/css2?family=Barlow:wght@400;500;600;700&family=Roboto:wght@400;500;700&display=swap');
|
||||||
|
*{
|
||||||
|
box-sizing: border-box;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
font-family: 'Barlow', sans-serif;
|
||||||
|
}
|
||||||
|
:root{
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
body{
|
||||||
|
--primary-color: #303F9F;
|
||||||
|
--text: 17, 17, 17;
|
||||||
|
--text-light: 85, 85, 85;
|
||||||
|
--foreground: 255, 255, 255;
|
||||||
|
--background: #e8e8e8;
|
||||||
|
--dark-shade: #dadada;
|
||||||
|
background: var(--foreground);
|
||||||
|
color: rgba(var(--text), 1);
|
||||||
|
font-size: 16px;
|
||||||
|
margin: 1.5rem;
|
||||||
|
}
|
||||||
|
a{
|
||||||
|
font-weight: 600;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--primary-color);
|
||||||
|
}
|
||||||
|
.dark-text{
|
||||||
|
color: #111;
|
||||||
|
}
|
||||||
|
h1,h2,h3,h4,h5{
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
padding: 0.6rem 1rem;
|
||||||
|
font-weight: 600;
|
||||||
|
cursor: pointer;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
color: var(--primary-color);
|
||||||
|
transition: transform 0.3s, clip-path 0.3s;
|
||||||
|
border: none;
|
||||||
|
clip-path: circle(100%);
|
||||||
|
background: rgba(var(--text), 0.1);
|
||||||
|
-webkit-tap-highlight-color: transparent;
|
||||||
|
&:focus{
|
||||||
|
outline: thin solid rgba(var(--text-light), .4);
|
||||||
|
}
|
||||||
|
&:disabled{
|
||||||
|
cursor: default;
|
||||||
|
background: rgba(var(--text-light), 1);
|
||||||
|
}
|
||||||
|
&:disabled ~ .loader{
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
input[type=number]::-webkit-inner-spin-button,
|
||||||
|
input[type=number]::-webkit-outer-spin-button {
|
||||||
|
-webkit-appearance: none;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
input[type=text]::-ms-clear { display: none; width : 0; height: 0; }
|
||||||
|
input[type=text]::-ms-reveal { display: none; width : 0; height: 0; }
|
||||||
|
input[type="search"]::-webkit-search-decoration,
|
||||||
|
input[type="search"]::-webkit-search-cancel-button,
|
||||||
|
input[type="search"]::-webkit-search-results-button,
|
||||||
|
input[type="search"]::-webkit-search-results-decoration { display: none; }
|
||||||
|
input[type=number] {
|
||||||
|
-moz-appearance:textfield;
|
||||||
|
}
|
||||||
|
input:invalid{
|
||||||
|
outline: none;
|
||||||
|
box-shadow: none;
|
||||||
|
}
|
||||||
|
::-moz-focus-inner{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
.bottom-padding{
|
||||||
|
padding-bottom: 1em;
|
||||||
|
}
|
||||||
|
.top-padding{
|
||||||
|
padding-top: 1em;
|
||||||
|
}
|
||||||
|
.bottom-margin{
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.top-margin{
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
.flex{
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
.grid{
|
||||||
|
display: grid;
|
||||||
|
}
|
||||||
|
.grid-2{
|
||||||
|
grid-template-columns: auto auto;
|
||||||
|
gap: 1em;
|
||||||
|
}
|
||||||
|
.light-text{
|
||||||
|
color: rgba(var(--text-light), 1);
|
||||||
|
}
|
||||||
|
.hide{
|
||||||
|
opacity: 0;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.hide-completely{
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
.breakable{
|
||||||
|
word-break: break-all;
|
||||||
|
}
|
||||||
|
.separator{
|
||||||
|
padding: .1em;
|
||||||
|
}
|
||||||
|
.no-transformations{
|
||||||
|
transform: none !important;
|
||||||
|
}
|
||||||
|
.loader{
|
||||||
|
fill: none;
|
||||||
|
stroke-width: 10;
|
||||||
|
stroke: var(--primary-color);
|
||||||
|
height: 2rem;
|
||||||
|
width: 2rem;
|
||||||
|
overflow: visible;
|
||||||
|
stroke-dashoffset: 230;
|
||||||
|
stroke-dasharray: 230;
|
||||||
|
padding: 2px;
|
||||||
|
justify-self: center;
|
||||||
|
}
|
||||||
|
@keyframes rotate{
|
||||||
|
100%{
|
||||||
|
transform: rotate(360deg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes load{
|
||||||
|
50%{
|
||||||
|
stroke-dashoffset: 0;
|
||||||
|
}
|
||||||
|
100%{
|
||||||
|
stroke-dashoffset: -210;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
line-height: 1.5;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
color: rgba(var(--text), 0.8);
|
||||||
|
}
|
||||||
|
.action{
|
||||||
|
position: relative;
|
||||||
|
display: inline-flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
.btn{
|
||||||
|
z-index: 2;
|
||||||
|
}
|
||||||
|
.loader{
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
padding: 0.4em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.clip{
|
||||||
|
clip-path: circle(0) !important;
|
||||||
|
}
|
||||||
|
.animate-loader{
|
||||||
|
animation: load 2.6s infinite, rotate 1s infinite linear;
|
||||||
|
}
|
||||||
|
.expand{
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
.fade-left{
|
||||||
|
animation: fadeleft 0.3s;
|
||||||
|
}
|
||||||
|
.fade-right{
|
||||||
|
animation: faderight 0.3s;
|
||||||
|
}
|
||||||
|
@keyframes faderight{
|
||||||
|
from{
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(-1em);
|
||||||
|
}
|
||||||
|
to{
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@keyframes fadeleft{
|
||||||
|
from{
|
||||||
|
opacity: 0;
|
||||||
|
transform: translateX(1em);
|
||||||
|
}
|
||||||
|
to{
|
||||||
|
opacity: 1;
|
||||||
|
transform: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#logo{
|
||||||
|
display: inline-grid;
|
||||||
|
align-items: center;
|
||||||
|
grid-template-columns: auto 1fr;
|
||||||
|
gap: 0.6rem 0.2rem;
|
||||||
|
margin-right: 1rem;
|
||||||
|
h4{
|
||||||
|
letter-spacing: 0.06rem;
|
||||||
|
word-spacing: 0.12rem;
|
||||||
|
margin-top: 0.2rem;
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
font-weight: 400;
|
||||||
|
}
|
||||||
|
#main_logo{
|
||||||
|
height: 1.4rem;
|
||||||
|
width: 1.4rem;
|
||||||
|
fill: rgba(var(--text), 1);
|
||||||
|
stroke: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.input{
|
||||||
|
display: flex;
|
||||||
|
width: 100%;
|
||||||
|
align-items: center;
|
||||||
|
position: relative;
|
||||||
|
padding: 0.8em;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
border-radius: 0.2em;
|
||||||
|
background: rgba(var(--text), 0.1);
|
||||||
|
border: 0.1em solid transparent;
|
||||||
|
&:last-of-type{
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
&:focus-within{
|
||||||
|
border: 0.1em solid var(--primary-color);
|
||||||
|
}
|
||||||
|
label{
|
||||||
|
opacity: .7;
|
||||||
|
font-weight: 500;
|
||||||
|
font-size: 1em;
|
||||||
|
position: absolute;
|
||||||
|
transition: transform 0.3s ease;
|
||||||
|
transform-origin: left;
|
||||||
|
pointer-events: none;
|
||||||
|
will-change: contents;
|
||||||
|
}
|
||||||
|
input{
|
||||||
|
flex: 1;
|
||||||
|
font-size: 1rem;
|
||||||
|
border: none;
|
||||||
|
background: transparent;
|
||||||
|
outline: none;
|
||||||
|
color: rgba(var(--text), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.animate-label{
|
||||||
|
input{
|
||||||
|
transform: translateY(0.5em);
|
||||||
|
}
|
||||||
|
label{
|
||||||
|
transform: translateY(-60%) scale(0.7);
|
||||||
|
opacity: 1;
|
||||||
|
color: var(--primary-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.container-header{
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
width: 100%;
|
||||||
|
padding: 1rem 0;
|
||||||
|
h2{
|
||||||
|
flex: 1;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
align-self: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.btn{
|
||||||
|
background: var(--primary-color);
|
||||||
|
color: rgba(var(--foreground), 1);
|
||||||
|
padding: 0.4em 1em;
|
||||||
|
}
|
||||||
|
.back-arrow{
|
||||||
|
stroke: rgba(var(--text), 1);
|
||||||
|
stroke-width: 6;
|
||||||
|
fill: none;
|
||||||
|
height: 2rem;
|
||||||
|
padding: 0.5rem 0.5rem 0.5rem 0;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
.card{
|
||||||
|
border-radius: 0.6rem;
|
||||||
|
padding: 1.5em;
|
||||||
|
background: rgba(var(--foreground), 1);
|
||||||
|
}
|
||||||
|
.solid-background{
|
||||||
|
background: var(--background) !important;
|
||||||
|
}
|
||||||
|
.popup-container{
|
||||||
|
display: grid;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
place-items: center;
|
||||||
|
background: rgba($color: #000000, $alpha: 0.24);
|
||||||
|
z-index: 10;
|
||||||
|
transition: opacity 0.3s ease;
|
||||||
|
.popup{
|
||||||
|
align-self: flex-end;
|
||||||
|
align-items: flex-start;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
width: 100%;
|
||||||
|
border-radius: 0.5rem 0.5rem 0 0;
|
||||||
|
padding: 1.5rem;
|
||||||
|
position: relative;
|
||||||
|
display: flex;
|
||||||
|
background: rgba(var(--foreground), 1);
|
||||||
|
transform: translateY(1rem);
|
||||||
|
transition: transform 0.3s;
|
||||||
|
box-shadow: 0 2rem 2rem rgba($color: #000000, $alpha: 0.24);
|
||||||
|
overflow-y: auto;
|
||||||
|
h5{
|
||||||
|
margin: 0.5rem 0;
|
||||||
|
}
|
||||||
|
button:first-of-type{
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
.container-header{
|
||||||
|
align-items: center;
|
||||||
|
padding: 0;
|
||||||
|
margin-bottom: 1.5em;
|
||||||
|
.btn{
|
||||||
|
padding: 0.6em 1.2em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#show_message{
|
||||||
|
transform: translate(0, -100%);
|
||||||
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
|
box-shadow: 0.2rem 0.4rem 0.8rem rgba($color: #000000, $alpha: 0.16);
|
||||||
|
align-items: center;
|
||||||
|
flex-direction: row;
|
||||||
|
display: flex;
|
||||||
|
color: rgba(var(--text), 1);
|
||||||
|
position: fixed;
|
||||||
|
right: 0;
|
||||||
|
top: 0;
|
||||||
|
width: 100%;
|
||||||
|
max-width: 100%;
|
||||||
|
z-index: 11;
|
||||||
|
background: rgba(var(--foreground), 1);
|
||||||
|
#error_icon{
|
||||||
|
fill: #E53935;
|
||||||
|
}
|
||||||
|
#done_icon{
|
||||||
|
fill: #00C853;
|
||||||
|
}
|
||||||
|
.notification-icon{
|
||||||
|
height: 2em;
|
||||||
|
width: 2em;
|
||||||
|
margin: 1em 0 1em 1em;
|
||||||
|
fill: rgba(var(--text), 1);
|
||||||
|
}
|
||||||
|
div{
|
||||||
|
padding: 1em;
|
||||||
|
flex: 1;
|
||||||
|
h5{
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
span{
|
||||||
|
font-weight: 500;
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
padding: 1rem;
|
||||||
|
margin: 0 1em 0 0;
|
||||||
|
border: none;
|
||||||
|
background: none;
|
||||||
|
svg{
|
||||||
|
height: 1em;
|
||||||
|
width: 1em;
|
||||||
|
stroke: rgba(var(--text), 1);
|
||||||
|
stroke-width: 6;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#confirmation{
|
||||||
|
flex-direction: column;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 1rem;
|
||||||
|
p{
|
||||||
|
margin: 1rem;
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: rgba(var(--rgb-bw),1) !important;
|
||||||
|
}
|
||||||
|
div{
|
||||||
|
display: flex;
|
||||||
|
padding: 1em;
|
||||||
|
justify-content: right;
|
||||||
|
width: 100%;
|
||||||
|
button{
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
button:first-of-type{
|
||||||
|
margin-right: 0.6em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.refresh{
|
||||||
|
margin-top: 0.6em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
#sign_in_popup{
|
||||||
|
align-self: center;
|
||||||
|
border-radius: 0.5em;
|
||||||
|
width: calc(100vw - 2em);
|
||||||
|
background: rgba(var(--foreground), 1);
|
||||||
|
h1{
|
||||||
|
margin-top: 3em;
|
||||||
|
}
|
||||||
|
p:first-of-type{
|
||||||
|
margin-bottom: 4em;
|
||||||
|
}
|
||||||
|
.action{
|
||||||
|
margin-top: 1em;
|
||||||
|
}
|
||||||
|
p:nth-of-type(2){
|
||||||
|
margin-top: 2em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
}
|
||||||
|
.input{
|
||||||
|
background: rgba(var(--text), 0.1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.primary-btn{
|
||||||
|
background: var(--primary-color);
|
||||||
|
padding: 0.8em 1.6em;
|
||||||
|
justify-content: center;
|
||||||
|
color: rgba(var(--foreground), 1);
|
||||||
|
}
|
||||||
|
#main_header{
|
||||||
|
align-items: center;
|
||||||
|
padding: 1em 0;
|
||||||
|
svg{
|
||||||
|
stroke: var(--primary-color);
|
||||||
|
stroke-width: 10;
|
||||||
|
stroke-linecap: round;
|
||||||
|
height: 2em;
|
||||||
|
width: 3em;
|
||||||
|
fill: none;
|
||||||
|
margin-right: 0.4em;
|
||||||
|
}
|
||||||
|
#display_balance{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
margin-left: auto;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#navbar{
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-evenly;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
top: auto;
|
||||||
|
border-top: solid 1px rgba(var(--text), 0.2);
|
||||||
|
z-index: 3;
|
||||||
|
background: rgba(var(--foreground), 1);
|
||||||
|
.navbar-item{
|
||||||
|
position: relative;
|
||||||
|
text-align: center;
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 0.3em;
|
||||||
|
margin: 0.3em;
|
||||||
|
border-radius: 0.4em;
|
||||||
|
color: rgba(var(--text), 0.8);
|
||||||
|
font-size: 0.9em;
|
||||||
|
text-transform: uppercase;
|
||||||
|
letter-spacing: 0.1em;
|
||||||
|
.icon{
|
||||||
|
height: 1.2rem;
|
||||||
|
width: 1.2rem;
|
||||||
|
fill: none;
|
||||||
|
stroke: rgba(var(--text), 0.8);
|
||||||
|
stroke-width: 6;
|
||||||
|
overflow: visible;
|
||||||
|
stroke-linecap: round;
|
||||||
|
stroke-linejoin: round;
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
font-size: 0.6em;
|
||||||
|
margin-top: 0.4em;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
.banking{
|
||||||
|
stroke-width: 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.active{
|
||||||
|
color: var(--primary-color);
|
||||||
|
.icon{
|
||||||
|
stroke: var(--primary-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#home_page{
|
||||||
|
h1{
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
|
}
|
||||||
|
.user-option{
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
&:last-of-type{
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
h2{
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.options-tab{
|
||||||
|
display: flex;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
margin-top: 0.8rem;
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
.option{
|
||||||
|
white-space: nowrap;
|
||||||
|
padding: 0.6rem 1rem;
|
||||||
|
text-decoration: none;
|
||||||
|
border-right: solid 1px rgba(var(--text), 0.2);
|
||||||
|
text-transform: capitalize;
|
||||||
|
&:last-of-type{
|
||||||
|
border: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.notification-dot::after{
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
top: 0;
|
||||||
|
right: 0;
|
||||||
|
height: 0.6em;
|
||||||
|
width: 0.6em;
|
||||||
|
background-color: #E53935;
|
||||||
|
border-radius: 0.4em;
|
||||||
|
transition: transform 0.3s;
|
||||||
|
}
|
||||||
|
.shrink.notification-dot::after{
|
||||||
|
transform: scale(0);
|
||||||
|
}
|
||||||
|
#deposit, #withdraw{
|
||||||
|
.container-header{
|
||||||
|
background: linear-gradient(rgba(var(--foreground), 1) 90%, transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.request{
|
||||||
|
display: inline-flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 2em 1.5em;
|
||||||
|
border-radius: 0.4em;
|
||||||
|
background: var(--background);
|
||||||
|
h5{
|
||||||
|
color: rgba(var(--text-light), 1);
|
||||||
|
margin-bottom: 0.3rem;
|
||||||
|
}
|
||||||
|
h3,h4{
|
||||||
|
margin-bottom: 1em;
|
||||||
|
font-family: 'Roboto', sans-serif;
|
||||||
|
font-weight: 500;
|
||||||
|
}
|
||||||
|
.action{
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
.amount{
|
||||||
|
font-size: 1.4em;
|
||||||
|
}
|
||||||
|
button{
|
||||||
|
width: auto;
|
||||||
|
align-self: flex-end;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
display: grid;
|
||||||
|
gap: 1em;
|
||||||
|
grid-template-columns: 1fr;
|
||||||
|
}
|
||||||
|
.page{
|
||||||
|
padding: 2rem 0;
|
||||||
|
padding-bottom: 4rem;
|
||||||
|
.container-header{
|
||||||
|
display: grid;
|
||||||
|
grid-template-columns: 1fr auto;
|
||||||
|
grid-template-areas: '. .'
|
||||||
|
'search search';
|
||||||
|
gap: 1rem;
|
||||||
|
position: sticky;
|
||||||
|
top: 0;
|
||||||
|
padding-bottom: 1em;
|
||||||
|
margin-bottom: 1em;
|
||||||
|
z-index: 2;
|
||||||
|
h2{
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
.action{
|
||||||
|
height: 100%;
|
||||||
|
button{
|
||||||
|
height: 100%;
|
||||||
|
padding: 0.8em 1.6em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.search{
|
||||||
|
grid-area: search;
|
||||||
|
input{
|
||||||
|
padding: 1em;
|
||||||
|
border: none;
|
||||||
|
width: 100%;
|
||||||
|
background: var(--dark-shade);
|
||||||
|
font-size: 1rem;
|
||||||
|
font-weight: 500;
|
||||||
|
color: rgba(var(--text), 1);
|
||||||
|
border-radius: 0.2em;
|
||||||
|
&:focus{
|
||||||
|
outline: none;
|
||||||
|
background: rgba(var(--text-light), 0.2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.empty{
|
||||||
|
display: grid;
|
||||||
|
place-items: center;
|
||||||
|
width: 100%;
|
||||||
|
svg{
|
||||||
|
stroke: rgba(var(--text), 0.8);
|
||||||
|
height: 12em;
|
||||||
|
width: 12em;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 640px){
|
||||||
|
body{
|
||||||
|
padding: 1rem 6vw;
|
||||||
|
margin-left: 6rem;
|
||||||
|
}
|
||||||
|
.popup-container{
|
||||||
|
.popup{
|
||||||
|
width: auto;
|
||||||
|
align-self: center;
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#show_message{
|
||||||
|
transform: translate(100%, 0);
|
||||||
|
margin: 1rem;
|
||||||
|
max-width: 60vw;
|
||||||
|
width: max-content;
|
||||||
|
border-radius: 0.2rem;
|
||||||
|
}
|
||||||
|
#confirmation{
|
||||||
|
padding: 1rem;
|
||||||
|
width: 24rem;
|
||||||
|
button{
|
||||||
|
margin-left: 0.5rem;
|
||||||
|
&:first-of-type{
|
||||||
|
margin-left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
p{
|
||||||
|
margin: 1rem;
|
||||||
|
margin-bottom: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
grid-template-columns: repeat(2, 1fr);
|
||||||
|
}
|
||||||
|
#navbar{
|
||||||
|
justify-content: center;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0;
|
||||||
|
top: 0;
|
||||||
|
right: auto;
|
||||||
|
width: 6rem;
|
||||||
|
border-right: solid 1px rgba(var(--text), 0.2);
|
||||||
|
.navbar-item{
|
||||||
|
width: auto;
|
||||||
|
padding: 1.4em 0;
|
||||||
|
margin: 0.6em;
|
||||||
|
.icon{
|
||||||
|
height: 1.4rem;
|
||||||
|
width: 1.4rem;
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
font-size: 0.8em;
|
||||||
|
}
|
||||||
|
&:hover{
|
||||||
|
.icon{
|
||||||
|
stroke: rgba(var(--text), 1);
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
color: rgba(var(--text), 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
&.active:hover{
|
||||||
|
.icon{
|
||||||
|
stroke: var(--primary-color);
|
||||||
|
}
|
||||||
|
h5{
|
||||||
|
color: var(--primary-color);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.page{
|
||||||
|
padding-bottom: 2em;
|
||||||
|
}
|
||||||
|
#sign_in_popup{
|
||||||
|
width: 24rem;
|
||||||
|
}
|
||||||
|
.options-tab{
|
||||||
|
//grid-template-columns: repeat(4, auto);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 800px){
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
#home_page{
|
||||||
|
.user-option{
|
||||||
|
max-width: 40%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 1280px){
|
||||||
|
body{
|
||||||
|
padding: 1rem 12vw;
|
||||||
|
}
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
grid-template-columns: repeat(3, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 1920px){
|
||||||
|
body{
|
||||||
|
font-size: 24px;
|
||||||
|
padding: 2rem 20vw;
|
||||||
|
}
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (min-width: 2048px){
|
||||||
|
body{
|
||||||
|
font-size: 24px;
|
||||||
|
padding: 2rem 30vw;
|
||||||
|
}
|
||||||
|
#deposit_request_container, #withdraw_request_container{
|
||||||
|
grid-template-columns: repeat(4, 1fr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media only screen and (max-width: 320px){
|
||||||
|
body{
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (prefers-color-scheme: dark){
|
||||||
|
:root{
|
||||||
|
--text: 238, 238, 238;
|
||||||
|
--text-light: 170, 170, 170;
|
||||||
|
--foreground: 26, 26, 26;
|
||||||
|
--background: #111;
|
||||||
|
--dark-shade: #1a1a1a;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (prefers-color-scheme: light){
|
||||||
|
:root{
|
||||||
|
--text: 17, 17, 17;
|
||||||
|
--text-light: 85, 85, 85;
|
||||||
|
--foreground: 255, 255, 255;
|
||||||
|
--background: #e8e8e8;
|
||||||
|
--dark-shade: #dadada;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (prefers-color-scheme: no-preference){
|
||||||
|
:root{
|
||||||
|
--text: 17, 17, 17;
|
||||||
|
--text-light: 85, 85, 85;
|
||||||
|
--foreground: 255, 255, 255;
|
||||||
|
--background: #e8e8e8;
|
||||||
|
--dark-shade: #dadada;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@media (any-hover: hover){
|
||||||
|
}
|
||||||
|
|
||||||
807
index.html
Normal file
807
index.html
Normal file
@ -0,0 +1,807 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Blockchain UPI</title>
|
||||||
|
<link rel="stylesheet" href="css/main.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<audio id="notification_sound">
|
||||||
|
<source src="https://rmservices.duckdns.org/files/notification-sound.mp3" type="audio/mpeg">
|
||||||
|
<source src="https://rmservices.duckdns.org/files/notification-sound.ogg" type="audio/ogg">
|
||||||
|
</audio>
|
||||||
|
<div class="popup-container hide">
|
||||||
|
<div id="confirmation" class="popup">
|
||||||
|
<p></p>
|
||||||
|
<div>
|
||||||
|
<button class="hover" onclick="hidePopup(this)">Cancel</button>
|
||||||
|
<button class="hover">Ok</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="show_message" class="hide">
|
||||||
|
<svg id="error_icon" class="notification-icon hide-completely" viewBox="0 0 100 100">
|
||||||
|
<title>Error icon</title>
|
||||||
|
<path
|
||||||
|
d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM46,27.18A.79.79,0,0,1,46.6,27h7.72a.79.79,0,0,1,.79.79l-1,28.76a.79.79,0,0,
|
||||||
|
1-.79.79H47.46a.77.77,0,0,1-.56-.23.73.73,0,0,1-.23-.56l-.86-28.76A.77.77,0,0,1,46,27.18Zm7.68,44.39A4.91,4.91,0,0,1,50,73.05a5.08,5.08,
|
||||||
|
0,0,1-5.21-5.21A5,5,0,0,1,50,62.63a5,5,0,0,1,3.73,1.45,5.18,5.18,0,0,1,1.42,3.76A5.11,5.11,0,0,1,53.72,71.57Z" />
|
||||||
|
</svg>
|
||||||
|
<svg id="done_icon" class="notification-icon" viewBox="0 0 100 100">
|
||||||
|
<title>Done icon</title>
|
||||||
|
<path
|
||||||
|
d="M50,0a50,50,0,1,0,50,50A50,50,0,0,0,50,0ZM80.85,32.37,40.3,72.92a1.24,1.24,0,0,1-1.75,0l-19.4-19.4a1.23,1.23,0,0,1,0-1.75l3.54-3.54a1.23,
|
||||||
|
1.23,0,0,1,1.74,0L38.55,62.35a1.24,1.24,0,0,0,1.75,0L75.57,27.08a1.23,1.23,0,0,1,1.74,0l3.54,3.54A1.23,1.23,0,0,1,80.85,32.37Z" />
|
||||||
|
</svg>
|
||||||
|
<div>
|
||||||
|
<h5>Notification</h5>
|
||||||
|
<span id="notification_text">Message</span>
|
||||||
|
</div>
|
||||||
|
<button id="hide_banner_btn">
|
||||||
|
<svg viewBox="0 0 50 50">
|
||||||
|
<title>Close this notification</title>
|
||||||
|
<line x1="50" y1="0" x2="0" y2="50" />
|
||||||
|
<line x1="0" y1="0" x2="50" y2="50" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<div class="popup-container solid-background hide">
|
||||||
|
<div id="sign_in_popup" class="popup">
|
||||||
|
<div class="container-header">
|
||||||
|
<h1>Sign In</h1>
|
||||||
|
</div>
|
||||||
|
<p class="expand light-text">Welcome to RanchiMall Blockchain UPI</b></p>
|
||||||
|
<form class="expand" autocomplete="off" onsubmit="return false">
|
||||||
|
<div class="input">
|
||||||
|
<input id="get_priv_key_field" type="password" required>
|
||||||
|
<label>Private Key</label>
|
||||||
|
</div>
|
||||||
|
<div class="action expand" onclick="signIn(this)">
|
||||||
|
<button class="primary-btn expand" type="submit" disabled>
|
||||||
|
Sign In
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<header id="main_header" class="flex">
|
||||||
|
<svg viewBox="0 0 180 105.7" class="hide-completely">
|
||||||
|
<path d="M22.5,35.5C27.7,32.6,33.6,31,40,31c19.9,0,36,16.1,36,36c0,16.6-11.2,30.6-26.5,34.7" />
|
||||||
|
<path d="M4,4v63c0,16.2,10.7,30,25.5,34.4" />
|
||||||
|
<line x1="94" y1="67.1" x2="126" y2="67.1" />
|
||||||
|
<line x1="110" y1="50.5" x2="110" y2="83.8" />
|
||||||
|
<line x1="144" y1="67.1" x2="176" y2="67.1" />
|
||||||
|
<line x1="160" y1="50.5" x2="160" y2="83.8" />
|
||||||
|
</svg>
|
||||||
|
<div id="logo">
|
||||||
|
<svg id="main_logo" viewBox="0 0 27.25 32">
|
||||||
|
<title>RanchiMall</title>
|
||||||
|
<path
|
||||||
|
d="M27.14,30.86c-.74-2.48-3-4.36-8.25-6.94a20,20,0,0,1-4.2-2.49,6,6,0,0,1-1.25-1.67,4,4,0,0,1,0-2.26c.37-1.08.79-1.57,3.89-4.55a11.66,11.66,0,0,0,3.34-4.67,6.54,6.54,0,0,0,.05-2.82C20,3.6,18.58,2,16.16.49c-.89-.56-1.29-.64-1.3-.24a3,3,0,0,1-.3.72l-.3.55L13.42.94C13,.62,12.4.26,12.19.15c-.4-.2-.73-.18-.72.05a9.39,9.39,0,0,1-.61,1.33s-.14,0-.27-.13C8.76.09,8-.27,8,.23A11.73,11.73,0,0,1,6.76,2.6C4.81,5.87,2.83,7.49.77,7.49c-.89,0-.88,0-.61,1,.22.85.33.92,1.09.69A5.29,5.29,0,0,0,3,8.33c.23-.17.45-.29.49-.26a2,2,0,0,1,.22.63A1.31,1.31,0,0,0,4,9.34a5.62,5.62,0,0,0,2.27-.87L7,8l.13.55c.19.74.32.82,1,.65a7.06,7.06,0,0,0,3.46-2.47l.6-.71-.06.64c-.17,1.63-1.3,3.42-3.39,5.42L6.73,14c-3.21,3.06-3,5.59.6,8a46.77,46.77,0,0,0,4.6,2.41c.28.13,1,.52,1.59.87,3.31,2,4.95,3.92,4.95,5.93a2.49,2.49,0,0,0,.07.77h0c.09.09,0,.1.9-.14a2.61,2.61,0,0,0,.83-.32,3.69,3.69,0,0,0-.55-1.83A11.14,11.14,0,0,0,17,26.81a35.7,35.7,0,0,0-5.1-2.91C9.37,22.64,8.38,22,7.52,21.17a3.53,3.53,0,0,1-1.18-2.48c0-1.38.71-2.58,2.5-4.23,2.84-2.6,3.92-3.91,4.67-5.65a3.64,3.64,0,0,0,.42-2A3.37,3.37,0,0,0,13.61,5l-.32-.74.29-.48c.17-.27.37-.63.46-.8l.15-.3.44.64a5.92,5.92,0,0,1,1,2.81,5.86,5.86,0,0,1-.42,1.94c0,.12-.12.3-.15.4a9.49,9.49,0,0,1-.67,1.1,28,28,0,0,1-4,4.29C8.62,15.49,8.05,16.44,8,17.78a3.28,3.28,0,0,0,1.11,2.76c.95,1,2.07,1.74,5.25,3.32,3.64,1.82,5.22,2.9,6.41,4.38A4.78,4.78,0,0,1,21.94,31a3.21,3.21,0,0,0,.14.92,1.06,1.06,0,0,0,.43-.05l.83-.22.46-.12-.06-.46c-.21-1.53-1.62-3.25-3.94-4.8a37.57,37.57,0,0,0-5.22-2.82A13.36,13.36,0,0,1,11,21.19a3.36,3.36,0,0,1-.8-4.19c.41-.85.83-1.31,3.77-4.15,2.39-2.31,3.43-4.13,3.43-6a5.85,5.85,0,0,0-2.08-4.29c-.23-.21-.44-.43-.65-.65A2.5,2.5,0,0,1,15.27.69a10.6,10.6,0,0,1,2.91,2.78A4.16,4.16,0,0,1,19,6.16a4.91,4.91,0,0,1-.87,3c-.71,1.22-1.26,1.82-4.27,4.67a9.47,9.47,0,0,0-2.07,2.6,2.76,2.76,0,0,0-.33,1.54,2.76,2.76,0,0,0,.29,1.47c.57,1.21,2.23,2.55,4.65,3.73a32.41,32.41,0,0,1,5.82,3.24c2.16,1.6,3.2,3.16,3.2,4.8a1.94,1.94,0,0,0,.09.76,4.54,4.54,0,0,0,1.66-.4C27.29,31.42,27.29,31.37,27.14,30.86ZM6.1,7h0a3.77,3.77,0,0,1-1.46.45L4,7.51l.68-.83a25.09,25.09,0,0,0,3-4.82A12,12,0,0,1,8.28.76c.11-.12.77.32,1.53,1l.63.58-.57.84A10.34,10.34,0,0,1,6.1,7Zm5.71-1.78A9.77,9.77,0,0,1,9.24,7.18h0a5.25,5.25,0,0,1-1.17.28l-.58,0,.65-.78a21.29,21.29,0,0,0,2.1-3.12c.22-.41.42-.76.44-.79s.5.43.9,1.24L12,5ZM13.41,3a2.84,2.84,0,0,1-.45.64,11,11,0,0,1-.9-.91l-.84-.9.19-.45c.34-.79.39-.8,1-.31A9.4,9.4,0,0,1,13.8,2.33q-.18.34-.39.69Z" />
|
||||||
|
</svg>
|
||||||
|
<span>
|
||||||
|
<h5>RanchiMall</h5>
|
||||||
|
<h4>BLOCKCHAIN UPI</h4>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div id="display_balance">
|
||||||
|
<h5>Rupee Tokens</h5>
|
||||||
|
<h3 id="token_balance">0</h3>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
<nav id="navbar">
|
||||||
|
<div title="homepage" id="home_page_btn" class="navbar-item active" onclick="showPage(this, 'home_page')">
|
||||||
|
<svg class="icon" viewBox="0 0 64 64">
|
||||||
|
<path
|
||||||
|
d="M24.77,44.15H40.06V63.5H53.4V36h5.66a3.38,3.38,0,0,0,2.53-5.68l-6.73-7.16V11.26H46.48v3L34.53,1.59a3.49,3.49,0,0,0-5.06,0L2.41,30.35A3.38,3.38,0,0,0,4.94,36H10.6V63.5H24.77" />
|
||||||
|
</svg>
|
||||||
|
<h5>Home</h5>
|
||||||
|
</div>
|
||||||
|
<div title="See all cash deposit requests" id="deposit_page_btn" class="navbar-item notification-dot"
|
||||||
|
onclick="showPage(this, 'deposit')">
|
||||||
|
<svg class="icon banking" viewBox="0 0 52 51.5">
|
||||||
|
<line x1="4" y1="28" x2="4" y2="19.5" />
|
||||||
|
<polyline points="4 6 4 1 51 1 51 48 4 48 4 41.5" />
|
||||||
|
<line x1="9" y1="50" x2="18" y2="50" />
|
||||||
|
<line x1="36" y1="50" x2="45" y2="50" />
|
||||||
|
<circle cx="27.5" cy="30" r="9.5" />
|
||||||
|
<circle cx="27.5" cy="30" r="3.5" />
|
||||||
|
<rect x="1" y="6" width="6" height="13.5" rx="2.76" />
|
||||||
|
<rect x="1" y="28" width="6" height="13.5" rx="2.76" />
|
||||||
|
</svg>
|
||||||
|
<h5>Deposit</h5>
|
||||||
|
</div>
|
||||||
|
<div title="See all cash withdraw requests" class="navbar-item notification-dot"
|
||||||
|
onclick="showPage(this, 'withdraw')">
|
||||||
|
<svg class="icon banking" viewBox="0 0 52 60">
|
||||||
|
<line x1="4" y1="33.5" x2="4" y2="25" />
|
||||||
|
<polyline points="41.52 6.5 51 6.5 51 53.5 41.69 53.5" />
|
||||||
|
<line x1="9" y1="55.5" x2="14" y2="55.5" />
|
||||||
|
<line x1="43" y1="55.5" x2="45" y2="55.5" />
|
||||||
|
<rect x="1" y="11.5" width="6" height="13.5" rx="2.76" />
|
||||||
|
<rect x="1" y="33.5" width="6" height="13.5" rx="2.76" />
|
||||||
|
<polyline points="3.81 11.5 3.81 6.5 41.5 1 41.69 59 3.81 53.5 3.81 47" />
|
||||||
|
<path
|
||||||
|
d="M35.64,39.19c0,6.31-3.25,11.45-7.22,11.48s-7-4.92-7-11.07,3.13-11.29,7.05-11.48S35.64,32.88,35.64,39.19Z"
|
||||||
|
transform="translate(-6 -2)" />
|
||||||
|
<path
|
||||||
|
d="M31.06,39.32c0,2.31-1.19,4.2-2.64,4.23s-2.62-1.79-2.62-4.08S27,35.3,28.42,35.24,31.06,37,31.06,39.32Z"
|
||||||
|
transform="translate(-6 -2)" />
|
||||||
|
</svg>
|
||||||
|
<h5>Withdraw</h5>
|
||||||
|
</div>
|
||||||
|
<div title="profile page" class="dropdown navbar-item" onclick="showPage(this, 'profile_page')">
|
||||||
|
<svg class="icon" id="profile_pic" viewBox="0 0 49.54 61.12">
|
||||||
|
<path
|
||||||
|
d="M49.34,19.94c7.73,0,13.26,5.26,13.26,14S58.18,50.14,49.71,50.08,36.82,42.66,36.82,33.93s5.53-14,13.26-14"
|
||||||
|
transform="translate(-25.23 -20)" />
|
||||||
|
<path
|
||||||
|
d="M43.83,52c-2.34,4.38-9.77,6.64-15.31,9.06-2.29,1-4.11,13-1.53,13a46.06,46.06,0,0,0,23.51,6,40.48,40.48,0,0,0,22.51-6c2.58,0,.76-12-1.53-13-5.54-2.42-13-4.68-15.31-9.06"
|
||||||
|
transform="translate(-25.23 -19.44)" />
|
||||||
|
</svg>
|
||||||
|
<h5>Cashier</h5>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<main class="">
|
||||||
|
<section class="page" id="home_page">
|
||||||
|
<h1>What do we offer?</h1>
|
||||||
|
<p>
|
||||||
|
Your Rupee balance is digital footprint of actual cash.<br> Deposit, Withdraw or Pay Rupee digitally
|
||||||
|
using a FLO Blockchain address.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h4>Go ahead and try something</h4>
|
||||||
|
|
||||||
|
<div class="options-tab">
|
||||||
|
<a class="option" href="#cash_transfer">Transfer cash</a>
|
||||||
|
<a class="option" href="#buy_rupee">buy rupee</a>
|
||||||
|
<a class="option" href="#withdraw_rupee">withdraw rupee</a>
|
||||||
|
<a class="option" href="#pay_anyone">pay through cashier</a>
|
||||||
|
</div>
|
||||||
|
<div id="cash_transfer" class="user-option">
|
||||||
|
<h2>Cash transfer</h2>
|
||||||
|
<form autocomplete="off" onsubmit="return false">
|
||||||
|
<div class="input">
|
||||||
|
<input id="token_reciever" type="text" required>
|
||||||
|
<label for="token_reciever">Reciever's FLO ID</label>
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input id="token_amount" inputmode="numeric" type="number" required>
|
||||||
|
<label for="token_amount">Amount</label>
|
||||||
|
</div>
|
||||||
|
<div id="send-tokens_btn" class="action top-margin expand">
|
||||||
|
<button class="primary-btn expand" type="submit" disabled>
|
||||||
|
transfer
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="buy_rupee" class="user-option">
|
||||||
|
<h2>Buy rupee</h2>
|
||||||
|
<form autocomplete="off" onsubmit="return false">
|
||||||
|
<div class="input">
|
||||||
|
<input id="token_amount_to_buy" inputmode="numeric" type="number" required>
|
||||||
|
<label for="token_amount_to_buy">Amount</label>
|
||||||
|
</div>
|
||||||
|
<div id="request_tokens_btn" class="action top-margin expand">
|
||||||
|
<button class="primary-btn expand" type="submit" disabled>
|
||||||
|
buy
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="withdraw_rupee" class="user-option">
|
||||||
|
<h2>Withdraw rupee</h2>
|
||||||
|
<form autocomplete="off" onsubmit="return false">
|
||||||
|
<div class="input">
|
||||||
|
<input id="withdraw_cash_amount" type="text" required>
|
||||||
|
<label for="withdraw_cash_amount">Reciever's FLO ID</label>
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input id="user_withdraw_upi" type="text" required>
|
||||||
|
<label for="user_withdraw_upi">Reciever's FLO ID</label>
|
||||||
|
</div>
|
||||||
|
<div id="withdraw_cash_btn" class="action top-margin expand">
|
||||||
|
<button class="primary-btn expand" type="submit" disabled>
|
||||||
|
withdraw
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
<div id="pay_anyone" class="user-option">
|
||||||
|
<h2>Pay anyone through cashier</h2>
|
||||||
|
<form autocomplete="off" onsubmit="return false">
|
||||||
|
<div class="input">
|
||||||
|
<input id="recvr_id" type="text" required>
|
||||||
|
<label for="recvr_id">Reciever's FLO ID</label>
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input id="recvr_amount_to_pay" type="number" inputmode="numeric" required>
|
||||||
|
<label for="recvr_amount_to_pay">Amount</label>
|
||||||
|
</div>
|
||||||
|
<div class="input">
|
||||||
|
<input id="paid_cashier_upi_txid" type="text" required>
|
||||||
|
<label for="paid_cashier_upi_txid">UPI Txid/Ref Number</label>
|
||||||
|
</div>
|
||||||
|
<div id="cnf_cash_payment" class="action top-margin expand" onclick="confirm_pay_through_cashier_request()">
|
||||||
|
<button class="primary-btn expand" type="submit" disabled>
|
||||||
|
pay
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section id="deposit" class="page hide-completely">
|
||||||
|
<div class="container-header">
|
||||||
|
<h2>Deposit Requests</h2>
|
||||||
|
<div id="fetch_deposits">
|
||||||
|
<button>
|
||||||
|
Load pending
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
<label class="search" id="search_deposit">
|
||||||
|
<input type="search" placeholder="Search">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div id="deposit_illustration" class="empty">
|
||||||
|
<svg viewBox="0 0 529.94 446.5">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.a,
|
||||||
|
.b,
|
||||||
|
.c,
|
||||||
|
.d {
|
||||||
|
fill: none;
|
||||||
|
stroke-linejoin: round;
|
||||||
|
}
|
||||||
|
|
||||||
|
.a {
|
||||||
|
stroke-width: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.b,
|
||||||
|
.c {
|
||||||
|
stroke-width: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.c {
|
||||||
|
stroke-dasharray: 11.94 11.94;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d {
|
||||||
|
stroke-width: 3px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<title>Empty icon</title>
|
||||||
|
<polyline class="a"
|
||||||
|
points="508.5 289 220.5 217 4.5 289 293.5 361 370.38 335.47 220.5 298 143.05 323.82 220.5 298 220.5 217 4.5 289 4.5 370 292.5 442 508.5 370 508.5 289 293.5 361 292.5 442" />
|
||||||
|
<path class="b" d="M947.54,629.34q0-3,.05-6" transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="c"
|
||||||
|
d="M948.09,611.41c5.42-83.07,49.82-144.78,102.21-154.63,57.46-10.81,101.53-.27,88.07,42.61-7.82,24.88-50.89,36.71-71.95,5.86-26.87-39.37,12.95-108.88,71.46-131,17.38-6.57,37.33-14.37,53.89-30.53"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="b" d="M1195.9,339.41c1.32-1.47,2.62-3,3.88-4.58"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1215,324.59c-2,3.62-6.21,5.12-9.34,3.36s-4-6.11-2-9.72,5.67-3.13,8.8-1.37S1217,321,1215,324.59Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<ellipse class="d" cx="1215.17" cy="310.95" rx="4.5" ry="4"
|
||||||
|
transform="translate(-354.28 918.17) rotate(-60.69)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1231.68,321.5c1.44-1.68-3.48-3-6.84-5.84s-8.44-.9-9.87.78,1.31,2.43,4.67,5.3S1230.25,323.18,1231.68,321.5Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1197.61,302.37c.69-2.09,4.36,1.43,8.56,2.81s5.16,6.73,4.47,8.83-2.76.14-7-1.23S1196.93,304.47,1197.61,302.37Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
</svg>
|
||||||
|
<h2 class="light-text">No deposit requests.</h2>
|
||||||
|
</div>
|
||||||
|
<div id="deposit_request_container">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section id="withdraw" class="page hide-completely">
|
||||||
|
<div class="container-header">
|
||||||
|
<h2>Withdraw Requests</h2>
|
||||||
|
<div id="fetch_withdraws" class="action">
|
||||||
|
<button>
|
||||||
|
Load pending
|
||||||
|
</button>
|
||||||
|
<svg viewBox="0 0 73 73" class="loader">
|
||||||
|
<path
|
||||||
|
d="M72.5,36.5c0,19.88-16.12,36-36,36s-36-16.12-36-36s16.12-36,36-36S72.5,16.62,72.5,36.5" />
|
||||||
|
</svg>
|
||||||
|
</div>
|
||||||
|
<label class="search" id="search_withdraw">
|
||||||
|
<input type="search" placeholder="Search">
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
<div id="withdraw_illustration" class="empty">
|
||||||
|
<svg viewBox="0 0 529.94 446.5">
|
||||||
|
<defs>
|
||||||
|
<style>
|
||||||
|
.a,
|
||||||
|
.b,
|
||||||
|
.c,
|
||||||
|
.d {
|
||||||
|
fill: none;
|
||||||
|
stroke-linejoin: round;
|
||||||
|
}
|
||||||
|
|
||||||
|
.a {
|
||||||
|
stroke-width: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.b,
|
||||||
|
.c {
|
||||||
|
stroke-width: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.c {
|
||||||
|
stroke-dasharray: 11.94 11.94;
|
||||||
|
}
|
||||||
|
|
||||||
|
.d {
|
||||||
|
stroke-width: 3px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</defs>
|
||||||
|
<title>Empty icon</title>
|
||||||
|
<polyline class="a"
|
||||||
|
points="508.5 289 220.5 217 4.5 289 293.5 361 370.38 335.47 220.5 298 143.05 323.82 220.5 298 220.5 217 4.5 289 4.5 370 292.5 442 508.5 370 508.5 289 293.5 361 292.5 442" />
|
||||||
|
<path class="b" d="M947.54,629.34q0-3,.05-6" transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="c"
|
||||||
|
d="M948.09,611.41c5.42-83.07,49.82-144.78,102.21-154.63,57.46-10.81,101.53-.27,88.07,42.61-7.82,24.88-50.89,36.71-71.95,5.86-26.87-39.37,12.95-108.88,71.46-131,17.38-6.57,37.33-14.37,53.89-30.53"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="b" d="M1195.9,339.41c1.32-1.47,2.62-3,3.88-4.58"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1215,324.59c-2,3.62-6.21,5.12-9.34,3.36s-4-6.11-2-9.72,5.67-3.13,8.8-1.37S1217,321,1215,324.59Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<ellipse class="d" cx="1215.17" cy="310.95" rx="4.5" ry="4"
|
||||||
|
transform="translate(-354.28 918.17) rotate(-60.69)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1231.68,321.5c1.44-1.68-3.48-3-6.84-5.84s-8.44-.9-9.87.78,1.31,2.43,4.67,5.3S1230.25,323.18,1231.68,321.5Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
<path class="d"
|
||||||
|
d="M1197.61,302.37c.69-2.09,4.36,1.43,8.56,2.81s5.16,6.73,4.47,8.83-2.76.14-7-1.23S1196.93,304.47,1197.61,302.37Z"
|
||||||
|
transform="translate(-703.5 -300.22)" />
|
||||||
|
</svg>
|
||||||
|
<h2 class="light-text">No withdraw requests.</h2>
|
||||||
|
</div>
|
||||||
|
<div id="withdraw_request_container">
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section id="profile_page" class="page hide-completely">
|
||||||
|
<div class="container-header">
|
||||||
|
<h2>Profile</h2>
|
||||||
|
</div>
|
||||||
|
<h5>FLO ID</h5>
|
||||||
|
<h4>FPFeL5PXzW9bGosUjQYCxTHSMHidnygvvd</h4>
|
||||||
|
<button class="primary-btn top-margin" onclick="signOut()">Sign out</button>
|
||||||
|
</section>
|
||||||
|
</main>
|
||||||
|
<script id="ui_functions">
|
||||||
|
let frag = document.createDocumentFragment(),
|
||||||
|
currentTimeout,
|
||||||
|
notificationSound = document.getElementById('notification_sound');
|
||||||
|
const render = {
|
||||||
|
// returns an order element;
|
||||||
|
depositRequest: function (txid, upiId, floId, currency, amount) {
|
||||||
|
let card = document.createElement('div'), currencySymbol;
|
||||||
|
card.classList.add('request')
|
||||||
|
currency === 'INR' ? currencySymbol = '₹' : currencySymbol = '$';
|
||||||
|
card.innerHTML = ` <h5>FLO ID</h5>
|
||||||
|
<h4 class="breakable">${floId}</h4>
|
||||||
|
<h5>UPI ID</h5>
|
||||||
|
<h3 class="breakable">${upiId}</h3>
|
||||||
|
<h5>Amount</h5>
|
||||||
|
<h3>${currencySymbol}${amount}</h3>
|
||||||
|
<button id="" class="confirm-deposit-btn">
|
||||||
|
Confirm
|
||||||
|
</button>`;
|
||||||
|
return card;
|
||||||
|
},
|
||||||
|
withdrawRequest: function (txid, upiId, floId, currency, amount) {
|
||||||
|
let card = document.createElement('div'), currencySymbol;
|
||||||
|
card.classList.add('request')
|
||||||
|
currency === 'INR' ? currencySymbol = '₹' : currencySymbol = '$';
|
||||||
|
card.innerHTML = ` <h5>FLO ID</h5>
|
||||||
|
<h4 class="breakable">${floId}</h4>
|
||||||
|
<h5>UPI ID</h5>
|
||||||
|
<h3 class="breakable">${upiId}</h3>
|
||||||
|
<h5>Amount</h5>
|
||||||
|
<h3>${currencySymbol}${amount}</h3>
|
||||||
|
<h5>Transaction ID</h5>
|
||||||
|
<h4 class="breakable">${txid}</h4>
|
||||||
|
<button id="" class="confirm-withdraw-btn"">
|
||||||
|
Confirm
|
||||||
|
</button>`;
|
||||||
|
return card;
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
//Checks for internet connection status
|
||||||
|
if (!navigator.onLine)
|
||||||
|
notify('error', 'There seems to be a problem connecting to the internet.', 'fixed', true)
|
||||||
|
window.addEventListener('offline', () => {
|
||||||
|
notify('error', 'There seems to be a problem connecting to the internet.', 'fixed', true)
|
||||||
|
})
|
||||||
|
window.addEventListener('online', () => {
|
||||||
|
notify('', 'We are back online.', '', true)
|
||||||
|
})
|
||||||
|
// function required for popups or modals to appear
|
||||||
|
function showPopup(popup, permission) {
|
||||||
|
let thisPopup = document.getElementById(popup);
|
||||||
|
thisPopup.parentNode.classList.remove('hide');
|
||||||
|
thisPopup.classList.add('no-transformations');
|
||||||
|
window.onmousedown = function (event) {
|
||||||
|
if (event.target == thisPopup.parentNode && permission !== 'no')
|
||||||
|
hidePopup(popup, permission);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// hides the popup or modal
|
||||||
|
function hidePopup(pop, permission) {
|
||||||
|
let popup;
|
||||||
|
typeof pop === 'string' ? popup = document.getElementById(pop) : popup = pop.closest('.popup');
|
||||||
|
if (permission === 'no') return;
|
||||||
|
popup.closest('.popup-container').classList.add('hide');
|
||||||
|
popup.closest('.popup').classList.remove('no-transformations');
|
||||||
|
setTimeout(() => {
|
||||||
|
clearAllInputs(popup)
|
||||||
|
if (popup.querySelector('.btn')) {
|
||||||
|
popup.querySelector('.btn').classList.remove('clip')
|
||||||
|
popup.querySelector('.loader').classList.remove('animate-loader')
|
||||||
|
popup.querySelector(".action button").disabled = true;
|
||||||
|
}
|
||||||
|
}, 400)
|
||||||
|
}
|
||||||
|
|
||||||
|
function setAttributes(el, attrs) {
|
||||||
|
for (var key in attrs) {
|
||||||
|
el.setAttribute(key, attrs[key]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function clearAllInputs(parent) {
|
||||||
|
parent.querySelectorAll("input").forEach((field) => {
|
||||||
|
if (field.getAttribute('type') !== 'radio') {
|
||||||
|
field.value = '';
|
||||||
|
if (field.closest('.input')) {
|
||||||
|
field.closest('.input').classList.remove('animate-label')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
field.checked = false
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//Function for displaying toast notifications. pass in error for mode param if you want to show an error.
|
||||||
|
function notify(mode, message, behavior, sound) {
|
||||||
|
let banner = document.getElementById('show_message'),
|
||||||
|
back;
|
||||||
|
if (mode === 'error') {
|
||||||
|
banner.querySelector('#error_icon').classList.remove('hide-completely')
|
||||||
|
banner.querySelector('#done_icon').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
banner.querySelector('#error_icon').classList.add('hide-completely')
|
||||||
|
banner.querySelector('#done_icon').classList.remove('hide-completely')
|
||||||
|
}
|
||||||
|
|
||||||
|
banner.style.background = back;
|
||||||
|
banner.classList.add('no-transformations')
|
||||||
|
banner.classList.remove('hide')
|
||||||
|
banner.querySelector('#notification_text').textContent = message.charAt(0).toUpperCase() + message.slice(1);
|
||||||
|
if (navigator.onLine && sound) {
|
||||||
|
notificationSound.currentTime = 0;
|
||||||
|
notificationSound.play();
|
||||||
|
}
|
||||||
|
banner.querySelector('#hide_banner_btn').onclick = function () {
|
||||||
|
banner.classList.add('hide')
|
||||||
|
banner.classList.remove('no-transformations')
|
||||||
|
}
|
||||||
|
clearTimeout(currentTimeout)
|
||||||
|
if (behavior === 'fixed') return;
|
||||||
|
currentTimeout = setTimeout(() => {
|
||||||
|
banner.classList.add('hide')
|
||||||
|
banner.classList.remove('no-transformations')
|
||||||
|
}, 4000)
|
||||||
|
}
|
||||||
|
|
||||||
|
// displays a popup for asking permission. Use this instead of JS confirm
|
||||||
|
let askConfirmation = function (message) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
let popup = document.getElementById('confirmation');
|
||||||
|
showPopup('confirmation')
|
||||||
|
popup.children[0].textContent = message;
|
||||||
|
popup.children[1].firstElementChild.onclick = function () {
|
||||||
|
hidePopup('confirmation')
|
||||||
|
resolve(false)
|
||||||
|
}
|
||||||
|
popup.children[1].children[1].onclick = function () {
|
||||||
|
hidePopup('confirmation')
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
function enableBtn(btn) {
|
||||||
|
if (typeof btn === 'string')
|
||||||
|
btn = document.getElementById(btn);
|
||||||
|
if (btn.disabled)
|
||||||
|
btn.disabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableBtn(btn) {
|
||||||
|
if (typeof btn === 'string')
|
||||||
|
btn = document.getElementById(btn);
|
||||||
|
if (!btn.disabled)
|
||||||
|
btn.disabled = true;
|
||||||
|
}
|
||||||
|
function btnLoading(btn, option) {
|
||||||
|
if (typeof btn === 'string')
|
||||||
|
btn = document.getElementById(btn);
|
||||||
|
if (option === 'start') {
|
||||||
|
btn.firstElementChild.focus();
|
||||||
|
btn.children[0].classList.add('clip')
|
||||||
|
btn.children[1].classList.add('animate-loader')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
disableBtn(btn.children[0])
|
||||||
|
btn.children[0].classList.remove('clip')
|
||||||
|
btn.children[1].classList.remove('animate-loader')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// prevents non numerical input on firefox
|
||||||
|
function preventNonNumericalInput(e) {
|
||||||
|
e = e || window.event;
|
||||||
|
let charCode = (typeof e.which == "undefined") ? e.keyCode : e.which,
|
||||||
|
charStr = String.fromCharCode(charCode);
|
||||||
|
|
||||||
|
if (!charStr.match(/[+-]?([0-9]*[.])?[0-9]+/))
|
||||||
|
e.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
function areInputsEmpty(parent) {
|
||||||
|
let allInputs = parent.querySelectorAll(".input input"),
|
||||||
|
allRadios = parent.querySelectorAll("input[type='radio']"),
|
||||||
|
radioStatus, inputStatus, counter = 0;
|
||||||
|
inputStatus = [...allInputs].every(input => input.checkValidity())
|
||||||
|
|
||||||
|
allRadios.forEach(radio => {
|
||||||
|
if (radio.checked)
|
||||||
|
counter++;
|
||||||
|
})
|
||||||
|
if (counter == allRadios.length / 2)
|
||||||
|
radioStatus = true;
|
||||||
|
if (inputStatus && radioStatus)
|
||||||
|
return true
|
||||||
|
else false
|
||||||
|
}
|
||||||
|
|
||||||
|
function formValidation(formElement, e) {
|
||||||
|
if (formElement.getAttribute('type') === 'number')
|
||||||
|
preventNonNumericalInput(e);
|
||||||
|
let parent = formElement.closest('form'),
|
||||||
|
submitBtn = parent.querySelector(".action button");
|
||||||
|
if (areInputsEmpty(parent))
|
||||||
|
submitBtn.disabled = false;
|
||||||
|
else
|
||||||
|
submitBtn.disabled = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
let allForms = document.querySelectorAll('form');
|
||||||
|
window.addEventListener('load', () => {
|
||||||
|
allForms.forEach((form) => {
|
||||||
|
form.addEventListener('input', (e) => {
|
||||||
|
if (e.target.closest('.input')) {
|
||||||
|
let parent = e.target.closest('.input');
|
||||||
|
if (parent.firstElementChild.value !== '')
|
||||||
|
parent.classList.add('animate-label')
|
||||||
|
else
|
||||||
|
parent.classList.remove('animate-label')
|
||||||
|
formValidation(parent.firstElementChild, e)
|
||||||
|
if (e.key === 'Enter') {
|
||||||
|
parent.closest('form').querySelector("button[type='submit']").click();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
allForms.forEach((form) => {
|
||||||
|
form.addEventListener('blur', (e) => {
|
||||||
|
if (e.target.closest('.input')) {
|
||||||
|
let parent = e.target.closest('.input');
|
||||||
|
if (parent.firstElementChild.value === '')
|
||||||
|
parent.classList.remove('animate-label')
|
||||||
|
}
|
||||||
|
}, true)
|
||||||
|
})
|
||||||
|
|
||||||
|
// Function for confirming deposit requests
|
||||||
|
document.getElementById('deposit_request_container').addEventListener('click', (e) => {
|
||||||
|
let container = document.getElementById('deposit_request_container');
|
||||||
|
if (e.target.closest('.confirm-deposit-btn'))
|
||||||
|
askConfirmation('Confirm this deposit request?').then((result) => {
|
||||||
|
if (result) {
|
||||||
|
let depositRequestId = e.target.closest('.confirm-deposit-btn').id;
|
||||||
|
btnLoading(e.target.closest('.confirm-deposit-btn'), 'start')
|
||||||
|
setTimeout(() => {
|
||||||
|
e.target.closest('.request').remove();
|
||||||
|
notify('', `Request id: ${depositRequestId} confirmed.`, '', true)
|
||||||
|
checkBalance();
|
||||||
|
if (container.children.length === 0) {
|
||||||
|
document.getElementById('deposit_illustration').classList.remove('hide-completely')
|
||||||
|
document.getElementById('search_deposit').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
// Function for confirming withdraw requests
|
||||||
|
document.getElementById('withdraw_request_container').addEventListener('click', (e) => {
|
||||||
|
let container = document.getElementById('withdraw_request_container');
|
||||||
|
if (e.target.closest('.confirm-withdraw-btn'))
|
||||||
|
askConfirmation('Confirm this withdraw request?').then((result) => {
|
||||||
|
if (result) {
|
||||||
|
let withdrawRequestId = e.target.closest('.confirm-withdraw-btn').id;
|
||||||
|
btnLoading(e.target.closest('.confirm-withdraw-btn'), 'start')
|
||||||
|
setTimeout(() => {
|
||||||
|
e.target.closest('.request').remove();
|
||||||
|
notify('', `Request id: ${withdrawRequestId} confirmed.`, '', true)
|
||||||
|
if (container.children.length === 0) {
|
||||||
|
document.getElementById('withdraw_illustration').classList.remove('hide-completely')
|
||||||
|
document.getElementById('search_withdraw').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//renders deposit requests
|
||||||
|
document.getElementById('deposit_request_container').innerHTML = '';
|
||||||
|
for (let i = 0; i < 6; i++) {
|
||||||
|
frag.append(render.depositRequest('s6f5h4s65f4h6s5465s4', '7744023898@paytm', 'FPFeL5PXzW9bGosUjQYCxTHSMHidnygvvd', 'INR', '50000'))
|
||||||
|
}
|
||||||
|
if (frag.children.length === 0) {
|
||||||
|
document.getElementById('deposit_illustration').classList.remove('hide-completely')
|
||||||
|
document.getElementById('search_deposit').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
document.getElementById('search_withdraw').classList.remove('hide-completely')
|
||||||
|
document.getElementById('deposit_illustration').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
document.getElementById('deposit_request_container').append(frag);
|
||||||
|
|
||||||
|
//renders deposit requests
|
||||||
|
document.getElementById('withdraw_request_container').innerHTML = '';
|
||||||
|
for (let i = 0; i < 4; i++) {
|
||||||
|
frag.append(render.withdrawRequest('s6f5h4s65f4h6s5465s4kdvbskjbvjasbdvbadbvjabdjvajdbksvjbskjb', '7744023898@paytm', 'FPFeL5PXzW9bGosUjQYCxTHSMHidnygvvd', 'INR', '50000'))
|
||||||
|
}
|
||||||
|
if (frag.children.length === 0) {
|
||||||
|
document.getElementById('withdraw_request_container').innerHTML = ``;
|
||||||
|
document.getElementById('search_withdraw').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
document.getElementById('search_withdraw').classList.remove('hide-completely')
|
||||||
|
document.getElementById('withdraw_illustration').classList.add('hide-completely')
|
||||||
|
}
|
||||||
|
|
||||||
|
document.getElementById('withdraw_request_container').append(frag);
|
||||||
|
})
|
||||||
|
|
||||||
|
let allPages = document.querySelectorAll('.page'),
|
||||||
|
allTabs = document.querySelectorAll('.navbar-item');
|
||||||
|
function showPage(btn, page) {
|
||||||
|
let thisBtn;
|
||||||
|
typeof btn === 'string' ? thisbtn = document.getElementById(btn) : thisBtn = btn;
|
||||||
|
allPages.forEach((page) => {
|
||||||
|
page.classList.add('hide-completely')
|
||||||
|
})
|
||||||
|
allTabs.forEach((tab) => {
|
||||||
|
tab.classList.remove('active')
|
||||||
|
})
|
||||||
|
document.getElementById(page).classList.remove('hide-completely')
|
||||||
|
thisBtn.classList.add('active', 'shrink')
|
||||||
|
if (page === 'send_token') {
|
||||||
|
document.getElementById('deposit_page_btn').classList.remove('shrink')
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let balDisplay = document.getElementById('token_balance'),
|
||||||
|
userFloId = 'FCja6sLv58e3RMy41T5AmWyvXEWesqBCkX';
|
||||||
|
function checkBalance() {
|
||||||
|
fetch(`https://ranchimallflo.duckdns.org/api/v1.0/getFloAddressBalance?floAddress=${userFloId}&token=rupee`)
|
||||||
|
.then((response) => {
|
||||||
|
if (response.status !== 200) {
|
||||||
|
console.log('Looks like there was a problem. Status Code: ' +
|
||||||
|
response.status);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Examine the text in the response
|
||||||
|
response.json().then(function (data) {
|
||||||
|
balDisplay.textContent = data.balance;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.catch(function (err) {
|
||||||
|
console.log('Fetch Error :-S', err);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// exchange execute option functions
|
||||||
|
|
||||||
|
function buyCrypto(btn) {
|
||||||
|
let parentPopup = btn.closest('.popup'),
|
||||||
|
selectedCrypto = parentPopup.querySelector("input[name='crypto']:checked").value,
|
||||||
|
selectedCurrency = parentPopup.querySelector("input[name='currency']:checked").value,
|
||||||
|
buyWorth = parentPopup.querySelector('.input input').value;
|
||||||
|
console.log(selectedCrypto, selectedCurrency, buyWorth)
|
||||||
|
btnLoading(btn, 'start')
|
||||||
|
|
||||||
|
//if operation completes{
|
||||||
|
setTimeout(() => {
|
||||||
|
btnLoading(btn, 'stop')
|
||||||
|
hidePopup(parentPopup)
|
||||||
|
notify('', 'Bought Crypto')
|
||||||
|
}, 1000)
|
||||||
|
//}
|
||||||
|
/*else{
|
||||||
|
notify('error', 'Error message')
|
||||||
|
}*/
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function signIn(btn) {
|
||||||
|
let parentPopup = btn.closest('form');
|
||||||
|
btnLoading(btn, 'start')
|
||||||
|
|
||||||
|
//if operation completes{
|
||||||
|
setTimeout(() => {
|
||||||
|
btnLoading(btn, 'stop')
|
||||||
|
hidePopup(parentPopup)
|
||||||
|
notify('', 'Signed In')
|
||||||
|
document.querySelector('main').classList.remove('hide-completely')
|
||||||
|
document.getElementById('deposit_page_btn').click()
|
||||||
|
}, 1000)
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
function signOut() {
|
||||||
|
askConfirmation('Do you want to sign out?').then((result) => {
|
||||||
|
if (result) {
|
||||||
|
notify('', 'Signed out')
|
||||||
|
document.querySelector('main').classList.add('hide-completely')
|
||||||
|
showPopup('sign_in_popup')
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
checkBalance()
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
Loading…
Reference in New Issue
Block a user