0.2.2
fix (user): Fix on-boarding expereince for mobile users
This commit is contained in:
parent
39d01a91b5
commit
8e35d4f5f3
1
css/focus.svg
Normal file
1
css/focus.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128"><title>focus</title><g style="opacity:0.5"><path d="M64,0a64,64,0,1,0,64,64A64,64,0,0,0,64,0Zm0,89A25,25,0,1,1,89,64,25,25,0,0,1,64,89Z" style="fill:#562787"/></g><g style="opacity:0.5"><path d="M64,20a44,44,0,1,0,44,44A44,44,0,0,0,64,20Zm0,69A25,25,0,1,1,89,64,25,25,0,0,1,64,89Z" style="fill:#6b31a8"/></g></svg>
|
||||||
|
After Width: | Height: | Size: 401 B |
49
css/main.css
49
css/main.css
@ -36,6 +36,10 @@ body[data-theme=dark] {
|
|||||||
body[data-theme=dark] .flo-balance-card {
|
body[data-theme=dark] .flo-balance-card {
|
||||||
color: rgba(var(--text-color), 1);
|
color: rgba(var(--text-color), 1);
|
||||||
}
|
}
|
||||||
|
body[data-theme=dark] #focus_illu {
|
||||||
|
opacity: 0.6;
|
||||||
|
fill: rgba(var(--text-color), 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
@ -243,6 +247,21 @@ sm-button[variant=outlined] {
|
|||||||
stroke-dashoffset: -220;
|
stroke-dashoffset: -220;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#focus_illu {
|
||||||
|
pointer-events: none;
|
||||||
|
height: 3rem;
|
||||||
|
width: 3rem;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
|
fill: var(--accent-color);
|
||||||
|
}
|
||||||
|
#focus_illu path {
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
|
||||||
#on_boarding {
|
#on_boarding {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -250,22 +269,11 @@ sm-button[variant=outlined] {
|
|||||||
border-radius: 0.8rem;
|
border-radius: 0.8rem;
|
||||||
box-shadow: 0.1em 0.2em 1em rgba(var(--text-color), 0.16);
|
box-shadow: 0.1em 0.2em 1em rgba(var(--text-color), 0.16);
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
background: var(--accent-color);
|
|
||||||
z-index: 50;
|
|
||||||
color: rgba(var(--foreground-color), 1);
|
color: rgba(var(--foreground-color), 1);
|
||||||
|
background: var(--accent-color);
|
||||||
|
z-index: 10;
|
||||||
transition: transform 0.3s, opacity 0.3s;
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
}
|
}
|
||||||
#on_boarding::before {
|
|
||||||
content: "";
|
|
||||||
position: absolute;
|
|
||||||
transform: rotate(45deg);
|
|
||||||
top: 1rem;
|
|
||||||
left: -0.5rem;
|
|
||||||
width: 1rem;
|
|
||||||
height: 1rem;
|
|
||||||
background: inherit;
|
|
||||||
box-shadow: -0.1em 0 1em rgba(var(--text-color), 0.16);
|
|
||||||
}
|
|
||||||
#on_boarding::after {
|
#on_boarding::after {
|
||||||
content: "";
|
content: "";
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -275,6 +283,10 @@ sm-button[variant=outlined] {
|
|||||||
height: 2rem;
|
height: 2rem;
|
||||||
background: inherit;
|
background: inherit;
|
||||||
}
|
}
|
||||||
|
#on_boarding #total_tuts {
|
||||||
|
opacity: 0.8;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
#on_boarding h4 {
|
#on_boarding h4 {
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
@ -1869,6 +1881,17 @@ sm-panel {
|
|||||||
#on_boarding {
|
#on_boarding {
|
||||||
width: 26rem;
|
width: 26rem;
|
||||||
}
|
}
|
||||||
|
#on_boarding::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
top: 1rem;
|
||||||
|
left: -0.5rem;
|
||||||
|
width: 1rem;
|
||||||
|
height: 1rem;
|
||||||
|
background: inherit;
|
||||||
|
box-shadow: -0.1em 0 1em rgba(var(--text-color), 0.16);
|
||||||
|
}
|
||||||
|
|
||||||
#navbar {
|
#navbar {
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
|
|||||||
2
css/main.min.css
vendored
2
css/main.min.css
vendored
File diff suppressed because one or more lines are too long
@ -33,6 +33,10 @@ body[data-theme="dark"]{
|
|||||||
.flo-balance-card{
|
.flo-balance-card{
|
||||||
color: rgba(var(--text-color), 1);
|
color: rgba(var(--text-color), 1);
|
||||||
}
|
}
|
||||||
|
#focus_illu{
|
||||||
|
opacity: 0.6;
|
||||||
|
fill: rgba(var(--text-color), 0.5);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -242,7 +246,20 @@ sm-button[variant="outlined"]{
|
|||||||
stroke-dashoffset: -220;
|
stroke-dashoffset: -220;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#focus_illu{
|
||||||
|
pointer-events: none;
|
||||||
|
height: 3rem;
|
||||||
|
width: 3rem;
|
||||||
|
position: fixed;
|
||||||
|
left: 0;
|
||||||
|
top: 0;
|
||||||
|
z-index: 10;
|
||||||
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
|
fill: var(--accent-color);
|
||||||
|
path{
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
|
}
|
||||||
#on_boarding{
|
#on_boarding{
|
||||||
position: fixed;
|
position: fixed;
|
||||||
left: 0;
|
left: 0;
|
||||||
@ -250,21 +267,10 @@ sm-button[variant="outlined"]{
|
|||||||
border-radius: 0.8rem;
|
border-radius: 0.8rem;
|
||||||
box-shadow: 0.1em 0.2em 1em rgba(var(--text-color), 0.16);
|
box-shadow: 0.1em 0.2em 1em rgba(var(--text-color), 0.16);
|
||||||
padding: 1.5rem;
|
padding: 1.5rem;
|
||||||
background: var(--accent-color);
|
|
||||||
z-index: 50;
|
|
||||||
color: rgba(var(--foreground-color), 1);
|
color: rgba(var(--foreground-color), 1);
|
||||||
|
background: var(--accent-color);
|
||||||
|
z-index: 10;
|
||||||
transition: transform 0.3s, opacity 0.3s;
|
transition: transform 0.3s, opacity 0.3s;
|
||||||
&::before{
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
transform: rotate(45deg);
|
|
||||||
top: 1rem;
|
|
||||||
left: -0.5rem;
|
|
||||||
width: 1rem;
|
|
||||||
height: 1rem;
|
|
||||||
background: inherit;
|
|
||||||
box-shadow: -0.1em 0 1em rgba(var(--text-color), 0.16);
|
|
||||||
}
|
|
||||||
&::after{
|
&::after{
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
@ -274,6 +280,10 @@ sm-button[variant="outlined"]{
|
|||||||
height: 2rem;
|
height: 2rem;
|
||||||
background: inherit;
|
background: inherit;
|
||||||
}
|
}
|
||||||
|
#total_tuts{
|
||||||
|
opacity: 0.8;
|
||||||
|
font-size: 0.8rem;
|
||||||
|
}
|
||||||
h4{
|
h4{
|
||||||
margin-bottom: 0.5rem;
|
margin-bottom: 0.5rem;
|
||||||
font-size: 1.2rem;
|
font-size: 1.2rem;
|
||||||
@ -1901,6 +1911,17 @@ sm-panel{
|
|||||||
|
|
||||||
#on_boarding{
|
#on_boarding{
|
||||||
width: 26rem;
|
width: 26rem;
|
||||||
|
&::before{
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
transform: rotate(45deg);
|
||||||
|
top: 1rem;
|
||||||
|
left: -0.5rem;
|
||||||
|
width: 1rem;
|
||||||
|
height: 1rem;
|
||||||
|
background: inherit;
|
||||||
|
box-shadow: -0.1em 0 1em rgba(var(--text-color), 0.16);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#navbar {
|
#navbar {
|
||||||
|
|||||||
57
index.html
57
index.html
@ -32,6 +32,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</sm-popup>
|
</sm-popup>
|
||||||
<sm-notifications id="show_message"></sm-notifications>
|
<sm-notifications id="show_message"></sm-notifications>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="hide-on-desktop" id="focus_illu" viewBox="0 0 128 128">
|
||||||
|
<path d="M64,0a64,64,0,1,0,64,64A64,64,0,0,0,64,0Zm0,89A25,25,0,1,1,89,64,25,25,0,0,1,64,89Z"/>
|
||||||
|
<path d="M64,20a44,44,0,1,0,44,44A44,44,0,0,0,64,20Zm0,69A25,25,0,1,1,89,64,25,25,0,0,1,64,89Z"/>
|
||||||
|
</svg>
|
||||||
<div id="on_boarding" class="flex direction-column hide">
|
<div id="on_boarding" class="flex direction-column hide">
|
||||||
<svg class="icon justify-right" onclick="finishOnBoarding()" viewBox="0 0 64 64">
|
<svg class="icon justify-right" onclick="finishOnBoarding()" viewBox="0 0 64 64">
|
||||||
<title>close</title>
|
<title>close</title>
|
||||||
@ -40,8 +44,9 @@
|
|||||||
</svg>
|
</svg>
|
||||||
<h4 id="feature_title">Get Started</h4>
|
<h4 id="feature_title">Get Started</h4>
|
||||||
<p id="feature_details">Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum eaque tempore cumque?</p>
|
<p id="feature_details">Lorem ipsum dolor sit amet consectetur adipisicing elit. Cum eaque tempore cumque?</p>
|
||||||
<div class="flex space-between">
|
<div class="flex space-between align-center">
|
||||||
<sm-button id="prev_tut_button" onclick="previousTutorial()" variant="primary">Back</sm-button>
|
<sm-button id="prev_tut_button" onclick="previousTutorial()" variant="primary">Back</sm-button>
|
||||||
|
<div id="total_tuts"></div>
|
||||||
<sm-button id="next_tut_button" onclick="nextTutorial()" variant="no-outline">Next</sm-button>
|
<sm-button id="next_tut_button" onclick="nextTutorial()" variant="no-outline">Next</sm-button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -2496,7 +2501,7 @@
|
|||||||
{
|
{
|
||||||
id: 'send_rupee_option',
|
id: 'send_rupee_option',
|
||||||
title: 'Send money',
|
title: 'Send money',
|
||||||
details: 'Send money to any FLO addres. This uses wallet balance to send money.'
|
details: 'Send money to any FLO address. This uses wallet balance to send money.'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'deposit_rupee_option',
|
id: 'deposit_rupee_option',
|
||||||
@ -2518,6 +2523,11 @@
|
|||||||
title: 'Pay through cashier',
|
title: 'Pay through cashier',
|
||||||
details: `Don't have enough wallet balance? Pay to our cashier through UPI and our cashier will complete that transaction on your behalf.`
|
details: `Don't have enough wallet balance? Pay to our cashier through UPI and our cashier will complete that transaction on your behalf.`
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: 'add_person_btn',
|
||||||
|
title: 'Add a person',
|
||||||
|
details: `You can save someone's FLO ID as person for easier access in future.`
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'request_page_btn',
|
id: 'request_page_btn',
|
||||||
title: `Request page`,
|
title: `Request page`,
|
||||||
@ -2539,7 +2549,9 @@
|
|||||||
featureTitle = document.getElementById('feature_title'),
|
featureTitle = document.getElementById('feature_title'),
|
||||||
featureDetails = document.getElementById('feature_details'),
|
featureDetails = document.getElementById('feature_details'),
|
||||||
nextTutButton = document.getElementById('next_tut_button'),
|
nextTutButton = document.getElementById('next_tut_button'),
|
||||||
prevTutButton = document.getElementById('prev_tut_button')
|
prevTutButton = document.getElementById('prev_tut_button'),
|
||||||
|
totalTuts = document.getElementById('total_tuts'),
|
||||||
|
focusIllu = document.getElementById('focus_illu')
|
||||||
|
|
||||||
|
|
||||||
let currentFeatureIndex = 0;
|
let currentFeatureIndex = 0;
|
||||||
@ -2564,11 +2576,16 @@
|
|||||||
finishOnBoarding()
|
finishOnBoarding()
|
||||||
}
|
}
|
||||||
index = Math.min(Math.max(index + currentFeatureIndex, 0), onBoarding.length - 1)
|
index = Math.min(Math.max(index + currentFeatureIndex, 0), onBoarding.length - 1)
|
||||||
if (index === 0)
|
if (index === 0){
|
||||||
prevTutButton.classList.add('hide')
|
prevTutButton.classList.add('hide')
|
||||||
else
|
focusIllu.classList.add('hide')
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
focusIllu.classList.remove('hide')
|
||||||
prevTutButton.classList.remove('hide')
|
prevTutButton.classList.remove('hide')
|
||||||
|
}
|
||||||
if (index === onBoarding.length - 1) {
|
if (index === onBoarding.length - 1) {
|
||||||
|
focusIllu.classList.add('hide')
|
||||||
nextTutButton.textContent = `Got it`
|
nextTutButton.textContent = `Got it`
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@ -2609,10 +2626,36 @@
|
|||||||
titleAnime.onfinish = () => {
|
titleAnime.onfinish = () => {
|
||||||
featureTitle.textContent = onBoarding[index].title
|
featureTitle.textContent = onBoarding[index].title
|
||||||
featureDetails.innerHTML = onBoarding[index].details
|
featureDetails.innerHTML = onBoarding[index].details
|
||||||
|
totalTuts.textContent = `${index + 1}/${onBoarding.length}`
|
||||||
if (onBoarding[index].id !== '') {
|
if (onBoarding[index].id !== '') {
|
||||||
const targetOption = document.getElementById(onBoarding[index].id)
|
const targetOption = document.getElementById(onBoarding[index].id)
|
||||||
const targetPosition = targetOption.getBoundingClientRect()
|
let targetPosition = targetOption.getBoundingClientRect()
|
||||||
onBoardingPanel.setAttribute('style', `transform: translate(${targetPosition.left + targetPosition.width}px, ${targetPosition.top}px)`)
|
if(window.innerWidth > 640){
|
||||||
|
onBoardingPanel.setAttribute('style', `transform: translate(${targetPosition.left + targetPosition.width}px, ${targetPosition.top}px)`)
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
if(targetPosition.bottom + onBoardingPanel.getBoundingClientRect().height < window.innerHeight)
|
||||||
|
onBoardingPanel.setAttribute('style', `transform: translateY(calc(${targetPosition.bottom}px + 1.5rem))`)
|
||||||
|
else{
|
||||||
|
if(targetPosition.top + targetPosition.height > window.innerHeight)
|
||||||
|
setTimeout(() => {
|
||||||
|
onBoardingPanel.setAttribute('style', `transform: translateY(calc(${targetPosition.top - onBoardingPanel.getBoundingClientRect().height}px - 1.5rem))`)
|
||||||
|
}, 300);
|
||||||
|
else
|
||||||
|
onBoardingPanel.setAttribute('style', `transform: translateY(calc(${targetPosition.top - onBoardingPanel.getBoundingClientRect().height}px - 1.5rem))`)
|
||||||
|
}
|
||||||
|
if(targetPosition.top + targetPosition.height > window.innerHeight){
|
||||||
|
targetOption.scrollIntoView({behavior: 'smooth', block: 'center', inline: 'start'})
|
||||||
|
setTimeout(() => {
|
||||||
|
targetPosition = targetOption.getBoundingClientRect()
|
||||||
|
onBoardingPanel.setAttribute('style', `transform: translateY(calc(${targetPosition.top - onBoardingPanel.getBoundingClientRect().height}px - 1.5rem))`)
|
||||||
|
focusIllu.setAttribute('style', `transform: translate(calc(${targetPosition.left + targetPosition.width/2}px - 1.5rem), ${targetPosition.top}px)`)
|
||||||
|
}, 300);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
focusIllu.setAttribute('style', `transform: translate(calc(${targetPosition.left + targetPosition.width/2}px - 1.5rem), ${targetPosition.top}px)`)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (currentFeatureIndex > index) {
|
if (currentFeatureIndex > index) {
|
||||||
featureTitle.animate(flyOut, options).reverse()
|
featureTitle.animate(flyOut, options).reverse()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user