diff --git a/components.js b/components.js index 236b87a..843c779 100644 --- a/components.js +++ b/components.js @@ -211,6 +211,7 @@ border: none; border-radius: 0.3em; transition: opacity 0.3s; background: rgba(var(--text-color), 0.1); + box-shadow: 0 0 0 0.1em rgba(var(--text-color), 0.2) inset; font-family: var(--font-family); width: 100% outline: none; @@ -1495,7 +1496,7 @@ customElements.define('sm-strip-select', class extends HTMLElement { set value(val) { this.setAttribute('value', val) } - scrollLeft() { + scrollLeft = () => { this.select.scrollBy({ top: 0, left: -this.scrollDistance, @@ -1503,7 +1504,7 @@ customElements.define('sm-strip-select', class extends HTMLElement { }) } - scrollRight() { + scrollRight = () => { this.select.scrollBy({ top: 0, left: this.scrollDistance, @@ -1579,13 +1580,13 @@ customElements.define('sm-strip-select', class extends HTMLElement { previousOption = firstElement; } }); - this.nextArrow.addEventListener('click', this.scrollRight.bind(this)) - this.previousArrow.addEventListener('click', this.scrollLeft.bind(this)) + this.nextArrow.addEventListener('click', this.scrollRight) + this.previousArrow.addEventListener('click', this.scrollLeft) } disconnectedCallback() { - this.nextArrow.removeEventListener('click', this.scrollRight.bind(this)) - this.previousArrow.removeEventListener('click', this.scrollLeft.bind(this)) + this.nextArrow.removeEventListener('click', this.scrollRight) + this.previousArrow.removeEventListener('click', this.scrollLeft) } }) @@ -1687,7 +1688,7 @@ smPopup.innerHTML = ` transition: opacity 0.3s ease; } :host(.stacked) .popup{ - transform: scale(0.9) translateY(-1rem) !important; + transform: scale(0.9) translateY(-2rem) !important; } .popup{ margin-bottom: 0.5rem; @@ -1784,7 +1785,7 @@ customElements.define('sm-popup', class extends HTMLElement { this.allowClosing = false } - resumeScrolling() { + resumeScrolling = () => { const scrollY = document.body.style.top; window.scrollTo(0, parseInt(scrollY || '0') * -1); setTimeout(() => { @@ -1792,15 +1793,26 @@ customElements.define('sm-popup', class extends HTMLElement { }, 300); } - show(pinned, popupStack) { + show = (pinned, popupStack) => { + if(popupStack) + this.popupStack = popupStack + if (this.popupStack && !this.hasAttribute('open')) { + this.popupStack.push({ + popup: this, + permission: pinned + }) + if (this.popupStack.items.length > 1){ + this.popupStack.items[this.popupStack.items.length - 2].popup.classList.add('stacked') + } + } this.setAttribute('open', '') this.pinned = pinned - this.popupStack = popupStack this.popupContainer.classList.remove('hide') this.popup.style.transform = 'translateY(0)'; document.body.setAttribute('style', `overflow: hidden; top: -${window.scrollY}px`) + return this.popupStack } - hide() { + hide = () => { this.removeAttribute('open') if(window.innerWidth < 640) this.popup.style.transform = 'translateY(100%)'; @@ -1809,7 +1821,10 @@ customElements.define('sm-popup', class extends HTMLElement { this.popupContainer.classList.add('hide') if (typeof this.popupStack !== 'undefined') { this.popupStack.pop() - if (this.popupStack.items.length === 0) { + if (this.popupStack.items.length){ + this.popupStack.items[this.popupStack.items.length - 1].popup.classList.remove('stacked') + } + else { this.resumeScrolling() } } @@ -1831,19 +1846,20 @@ customElements.define('sm-popup', class extends HTMLElement { new CustomEvent("popupclosed", { bubbles: true, detail: { - popup: this + popup: this, + popupStack: this.popupStack } }) ) } - handleTouchStart(e) { + handleTouchStart = (e) => { this.touchStartY = e.changedTouches[0].clientY this.popup.style.transition = 'initial' this.touchStartTime = e.timeStamp } - handleTouchMove(e) { + handleTouchMove = (e) => { e.preventDefault() if (this.touchStartY < e.changedTouches[0].clientY) { this.offset = e.changedTouches[0].clientY - this.touchStartY; @@ -1854,8 +1870,8 @@ customElements.define('sm-popup', class extends HTMLElement { this.popup.style.transform = `translateY(-${this.offset}px)` }*/ } - - handleTouchEnd(e) { + + handleTouchEnd = (e) => { this.touchEndTime = e.timeStamp cancelAnimationFrame(this.touchEndAnimataion) this.touchEndY = e.changedTouches[0].clientY @@ -1874,7 +1890,7 @@ customElements.define('sm-popup', class extends HTMLElement { } } - movePopup() { + movePopup = () => { this.popup.style.transform = `translateY(${this.offset}px)` } @@ -1916,9 +1932,9 @@ customElements.define('sm-popup', class extends HTMLElement { }) } disconnectedCallback() { - this.popupHeader.removeEventListener('touchstart', this.handleTouchStart.bind(this)) - this.popupHeader.removeEventListener('touchmove', this.handleTouchMove.bind(this)) - this.popupHeader.removeEventListener('touchend', this.handleTouchEnd.bind(this)) + this.popupHeader.removeEventListener('touchstart', this.handleTouchStart) + this.popupHeader.removeEventListener('touchmove', this.handleTouchMove) + this.popupHeader.removeEventListener('touchend', this.handleTouchEnd) } }) @@ -2060,7 +2076,7 @@ customElements.define('sm-carousel', class extends HTMLElement { this.attachShadow({ mode: 'open' }).append(smCarousel.content.cloneNode(true)) } - scrollLeft() { + scrollLeft = () => { this.carousel.scrollBy({ top: 0, left: -this.scrollDistance, @@ -2068,7 +2084,7 @@ customElements.define('sm-carousel', class extends HTMLElement { }) } - scrollRight() { + scrollRight = () => { this.carousel.scrollBy({ top: 0, left: this.scrollDistance, @@ -2134,13 +2150,13 @@ customElements.define('sm-carousel', class extends HTMLElement { this.scrollRight() }) - this.nextArrow.addEventListener('click', this.scrollRight.bind(this)) - this.previousArrow.addEventListener('click', this.scrollLeft.bind(this)) + this.nextArrow.addEventListener('click', this.scrollRight) + this.previousArrow.addEventListener('click', this.scrollLeft) } disconnectedCallback() { - this.nextArrow.removeEventListener('click', this.scrollRight.bind(this)) - this.previousArrow.removeEventListener('click', this.scrollLeft.bind(this)) + this.nextArrow.removeEventListener('click', this.scrollRight) + this.previousArrow.removeEventListener('click', this.scrollLeft) } }) @@ -2285,14 +2301,14 @@ customElements.define('sm-notifications', class extends HTMLElement { this.shadow = this.attachShadow({ mode: 'open' }).append(smNotifications.content.cloneNode(true)) } - handleTouchStart(e) { + handleTouchStart =(e) => { this.notification = e.target.closest('.notification') this.touchStartX = e.changedTouches[0].clientX this.notification.style.transition = 'initial' this.touchStartTime = e.timeStamp } - handleTouchMove(e) { + handleTouchMove = (e) => { e.preventDefault() if (this.touchStartX < e.changedTouches[0].clientX) { this.offset = e.changedTouches[0].clientX - this.touchStartX; @@ -2304,7 +2320,7 @@ customElements.define('sm-notifications', class extends HTMLElement { } } - handleTouchEnd(e) { + handleTouchEnd = (e) => { this.notification.style.transition = 'transform 0.3s, opacity 0.3s' this.touchEndTime = e.timeStamp cancelAnimationFrame(this.touchEndAnimataion) @@ -2334,11 +2350,11 @@ customElements.define('sm-notifications', class extends HTMLElement { this.notification.style.transform = `translateX(${this.offset}px)` } - resetPosition() { + resetPosition = () => { this.notification.style.transform = `translateX(0)` } - push(messageBody, type, pinned) { + push = (messageBody, type, pinned) => { let notification = document.createElement('div'), composition = `` notification.classList.add('notification') @@ -2384,12 +2400,12 @@ customElements.define('sm-notifications', class extends HTMLElement { else { notification.setAttribute('style', `transform: translateY(0); opacity: 1`) } - notification.addEventListener('touchstart', this.handleTouchStart.bind(this)) - notification.addEventListener('touchmove', this.handleTouchMove.bind(this)) - notification.addEventListener('touchend', this.handleTouchEnd.bind(this)) + notification.addEventListener('touchstart', this.handleTouchStart) + notification.addEventListener('touchmove', this.handleTouchMove) + notification.addEventListener('touchend', this.handleTouchEnd) } - removeNotification(notification, toLeft) { + removeNotification = (notification, toLeft) => { if (!this.offset) this.offset = 0; diff --git a/css/main.css b/css/main.css index fe17e84..84f7b07 100644 --- a/css/main.css +++ b/css/main.css @@ -431,6 +431,12 @@ sm-popup sm-input:not(:last-of-type) { sm-popup p { margin-block-end: 1rem; } +sm-popup .action { + margin-top: 1.5rem; +} +sm-popup .action h4 { + padding: 0.8rem 1.6rem; +} .popup-header { padding: 1.5rem; diff --git a/css/main.min.css b/css/main.min.css index 5ff6c41..c7221fa 100644 --- a/css/main.min.css +++ b/css/main.min.css @@ -1 +1 @@ -.action,button{position:relative}.options-tab .option,button{transition:transform .3s;text-transform:capitalize}*{box-sizing:border-box;padding:0;margin:0;font-family:Roboto,sans-serif}button,h1,h2,h3,h4,h5{font-weight:600;font-family:Poppins,sans-serif}:root{scroll-behavior:smooth}body{--accent-color:#2237CD;--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada;background:var(--foreground-color);color:rgba(var(--text-color),1);font-size:16px}a{font-weight:600;text-decoration:none;color:var(--accent-color)}.dark-text{color:#111}h1{font-size:3.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1rem}h5{font-size:.8rem}p{line-height:1.5;max-width:60ch;color:rgba(var(--text-color),.9)}button{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.2rem;cursor:pointer;border-radius:.3rem;color:var(--accent-color);border:none;background:rgba(var(--text-color),.1);-webkit-tap-highlight-color:transparent}.action,.align-center{align-items:center}button:focus{outline:solid thin}button:disabled{cursor:default;background:rgba(var(--text-color),.5)}.action,.action[disabled] .primary-btn{background:0 0}button: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-cancel-button,input[type=search]::-webkit-search-decoration,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:0;box-shadow:none}::-moz-focus-inner{border:none}.bottom-padding{padding-bottom:1.5rem}.top-padding{padding-top:1em}.bottom-margin{margin-bottom:1.5rem}.top-margin{margin-top:1.5rem}.flex{display:flex}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}#confirmation,#prompt,.direction-column,.options-tab .option{flex-direction:column}.space-between{justify-content:space-between}.label{margin-bottom:.4rem}.light-text{opacity:.7}.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(--accent-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}}.action{display:inline-flex;justify-content:center;padding:0}.action h4{padding:.5rem 1.2rem;font-size:.9rem;clip-path:circle(100%);transition:clip-path .3s;border-radius:.2rem}.action .btn{z-index:2}.action .loader{position:absolute;z-index:1;padding:.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 .3s}.fade-right{animation:faderight .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:.6rem .4rem;margin-right:1rem}#logo h4{letter-spacing:.06rem;word-spacing:.12rem}#logo h5{font-weight:400}#logo #main_logo{height:1.6rem;width:1.6rem;fill:rgba(var(--text-color),1);stroke:none}textarea{width:100%;max-width:100%;background:rgba(var(--text-color),.1);border:none;border-radius:.2rem;resize:none;font-size:1rem;line-height:1.6;padding:.8rem}:empty+.empty-state{display:grid}.empty-state{display:none;place-items:center;width:100%}.empty-state svg{stroke:rgba(var(--text-color),.8);height:12em;width:12em}.container-header{display:flex;align-items:center;flex-direction:row;width:100%;padding:1rem 0}.container-header h2{flex:1}.container-header button{align-self:center}.btn{background:var(--accent-color);color:rgba(var(--foreground-color),1);padding:.4em 1em}.back-arrow{stroke:rgba(var(--text-color),1);stroke-width:6;fill:none;height:2rem;padding:.5rem .5rem .5rem 0;cursor:pointer}.card{border-radius:.6rem;padding:1.5em;background:rgba(var(--foreground-color),1)}.solid-background{background:rgba(var(--foreground-color),1)!important}#confirmation p,#prompt p{margin:1rem}#confirmation h4,#prompt h4{font-weight:500;margin-bottom:1.5rem}#confirmation .btns,#prompt .btns{display:flex;justify-content:right;width:100%}#confirmation .btns button,#prompt .btns button{background:0 0}#confirmation .btns button:first-of-type,#prompt .btns button:first-of-type{margin-right:.6em}.refresh{margin-top:.6em;margin-bottom:1em}sm-popup .illustration{position:relative;height:4rem;width:4rem;padding:1rem;stroke:var(--accent-color);margin-bottom:1rem;border-radius:5rem;background:rgba(var(--text-color),.06)}.complaint-placeholder h4,.complaint-placeholder h5,details p{border-radius:.2rem}sm-popup sm-input:not(:last-of-type){margin-bottom:1rem}sm-popup p{margin-block-end:1rem}.popup-header{padding:1.5rem;padding-bottom:0;display:flex;align-items:center;width:100%}.popup-header .icon{margin-right:1rem;padding:.2rem;stroke-width:10;cursor:pointer}.popup-header button{width:auto;margin-left:auto}details,summary{margin-bottom:1rem}details p{padding:.5rem 1rem;background:rgba(var(--text-color),.06);margin-bottom:0}#sign_in_popup h3{margin-top:2rem}#sign_in_popup h4{font-weight:500;margin-bottom:3rem}#sign_in_popup button{margin:1rem 0}#sign_in_popup p{margin-top:1rem;margin-bottom:0!important}.primary-btn{background:var(--accent-color);justify-content:center;color:rgba(var(--foreground-color),1)}#main_header{align-items:center;padding:1rem;justify-content:space-between}.display-balance{gap:1rem;grid-auto-flow:row}.display-balance .balance{width:100%}.display-balance .icon{height:1.4rem;width:1.4rem;padding:.3rem;stroke-width:10;cursor:pointer}.icon{height:1.2rem;width:1.2rem;fill:none;stroke:rgba(var(--text-color),.8);stroke-width:6;overflow:visible;stroke-linecap:round;stroke-linejoin:round}#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-color),.2);border-right:none;z-index:3;background:rgba(var(--foreground-color),1)}#navbar .navbar-item{position:relative;text-align:center;cursor:pointer;padding:.3em;margin:.3em;border-radius:.4em;color:rgba(var(--text-color),.8);font-size:.8em;text-transform:capitalize;width:100%;font-weight:600}#navbar .navbar-item h5{margin-top:.4em}#navbar .active{color:var(--accent-color)}.user-panel,.user-panel .grid P{color:rgba(var(--foreground-color),1)}#navbar .active .icon{stroke:var(--accent-color)}.banking{stroke-width:4}#home_page{padding:1rem 0 4rem}#home_page .left{padding:1.5rem 0;width:auto;background:rgba(var(--text-color),.06);border-radius:.6rem}#home_page .left h3,#home_page .left h4,#home_page .left p,#home_page sm-carousel::part(carousel){padding:0 1.5rem}#home_page .left h3{font-size:2rem;margin-bottom:1rem}#home_page .user-panel{margin:0 1.5rem}.user-panel{position:relative;padding:1.5rem;border-radius:.6rem;background:linear-gradient(135deg,var(--accent-color),#2F2B76);box-shadow:0 .1rem .1rem #00010,0 1rem 1rem -1rem #00010;align-self:flex-start}.request .action,.request button{align-self:flex-end}.user-panel .icon{stroke:rgba(var(--foreground-color),1)}.user-panel .copy-row{margin-bottom:1rem;padding-bottom:1rem;border-bottom:solid 1px rgba(var(--foreground-color),.3)}.user-panel sm-button{--text-color:rgba(var(--foreground-color), 1);background:rgba(var(--foreground-color),.2);border-radius:2rem}.user-panel .grid{gap:1.5rem;grid-template-columns:1fr 1fr;margin-top:1rem}.user-panel .grid h5{font-weight:500}.user-panel .grid h4{font-size:1.2rem}.user-panel .grid P{font-size:.8rem;opacity:.9;margin-bottom:0!important;max-width:30ch}.balance{display:grid;gap:0 1rem}.user-type{font-weight:500}.options-tab{margin:1rem 0}.options-tab .option{position:relative;display:flex;align-items:center;text-align:center;border-radius:.4rem;margin-right:1rem;margin-bottom:1rem;width:5rem;min-width:5rem;cursor:pointer}.options-tab .option .icon{height:3rem;width:3rem;padding:.8rem;stroke:var(--accent-color)}.options-tab .option h4{font-size:.9rem;font-weight:500}.options-tab .option:active{transform:scale(.95)}.request-icon{transform:rotate(180deg)}.notification-dot::after{content:"";position:absolute;z-index:1;top:0;right:0;height:.6em;width:.6em;background-color:#E53935;border-radius:.4em;transition:transform .3s}.shrink.notification-dot::after{transform:scale(0)}#deposit .container-header,#withdraw .container-header{background:linear-gradient(rgba(var(--foreground-color),1) 90%,transparent)}.page .container-header,sm-tab-header{top:0;background:rgba(var(--foreground-color),1);z-index:2}sm-tab-header{position:sticky;margin-bottom:1rem;border-bottom:solid 1px rgba(var(--text-color),.2)}sm-tab::part(tab){padding:.8rem .4rem;text-transform:capitalize}sm-panel{width:100%}.request{display:inline-flex;flex-direction:column;padding:1.5em;border-radius:.4em;border:1px solid}.request h5{margin-bottom:.2rem;text-transform:capitalize}.request h3,.request h4{margin-bottom:1.5rem}.copy-row h4,.request button{margin-bottom:0}.request h4:last-of-type{margin-bottom:0}.request .amount{font-size:1.4em}.request button{width:auto;margin-top:1.5rem}.request .copy-row{margin-bottom:1.5rem}.request .flex{align-items:center;justify-content:flex-end;margin-top:1.5rem}.request .flex button,.request .flex h5{margin:0}.deposited{color:#007732}.deposited::before{content:"+ "}.decline-request{margin-right:.5rem!important}.withdrawn{color:#d43125}.withdrawn::before{content:"- "}.container{display:grid;gap:1em;width:100%;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.copy-row,.page .container-header{display:grid;grid-template-columns:1fr auto}.page{padding:1rem 1.5rem;padding-bottom:4rem}.page .container-header{grid-template-areas:". ." "search search";gap:1rem;will-change:auto}.page .container-header .search{grid-area:search}.page .container-header .search input{padding:1em;border:none;width:100%;background:var(--dark-shade);font-size:1rem;font-weight:500;color:rgba(var(--text-color),1);border-radius:.2em}.page .container-header .search input:focus{outline:0;background:rgba(var(--text-color-light),.2)}.copy-row{align-items:center;gap:.5rem}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time{margin-bottom:1.5rem!important;font-weight:500}#report_popup{width:32rem}#profile_page{display:flex;flex-direction:column}#profile_page button{align-self:flex-start}.complaint{display:grid;gap:1.5rem 0}.complaint .complaint-actions{align-items:center;margin:1.5rem 0 0}#helpline_page sm-select,.complaint .processed,.complaint .unprocessed{margin-bottom:1.5rem}.complaint .processed{color:#007732}.complaint .unprocessed{color:#d43125}.complaint button .icon{padding:.2rem;margin-right:.5rem;stroke:var(--accent-color);stroke-width:8}.complaints-container{padding-top:1.5rem;display:grid;align-items:flex-start;gap:1.5rem}.complaint-placeholder{animation:pulse infinite .6s alternate}.complaint-placeholder h5{background:rgba(var(--text-color),.1);padding:.5rem .6rem}.complaint-placeholder h4{background:rgba(var(--text-color),.2);padding:.8rem}.complaint-placeholder .demo-btn{padding:.8rem 3rem}@keyframes pulse{from{opacity:.4}to{opacity:1}}#main_loader{text-align:center;place-content:center;height:100vh;width:100vw;position:fixed;left:0}#main_loader sm-button{margin-left:0;margin-top:1rem}#main_loader svg{height:2rem;width:2rem;stroke:var(--accent-color);stroke-width:6;fill:none;overflow:visible;stroke-linecap:round;stroke-dashoffset:210;stroke-dasharray:210;justify-self:center;align-self:center;margin-bottom:2rem}#main_loader h3{width:100%;font-weight:400;word-spacing:.16em}#upi_txId_section .copy-row{margin-bottom:1.5rem}#send_amount_to_deposit{margin-bottom:0!important}@keyframes popup{0%{stroke-dashoffset:50;transform:translateY(4rem) scale(.2,.6)}40%,41%{transform:translateY(0) scale(.2)}50%{stroke-dashoffset:50;transform:translateY(0) scale(1)}100%{stroke-dashoffset:0}}#failure_section h4,#success_section h4{text-align:center;margin-top:1rem}#failure_svg,#success_svg{height:5rem;width:5rem;stroke-width:4;align-self:center;stroke:none;stroke-dasharray:50;fill:rgba(var(--text-color),.06);animation:popup 2s forwards infinite cubic-bezier(.175,.885,.32,1.275)}#success_svg polyline{fill:none;stroke:#00C853}#failure_svg line{stroke:#EF5350}@media only screen and (max-width:640px){#deposit,#home_page{display:grid;gap:1.5rem;grid-template-areas:"." "left";grid-template-columns:minmax(0,1fr)}#deposit .left,#home_page .left{grid-area:left}sm-select{width:100%}}@media only screen and (min-width:640px){body{padding:0 2rem;margin-left:6rem}#confirmation,sm-popup::part(popup){width:24rem}#navbar{justify-content:center;flex-direction:column;align-items:stretch;left:0;bottom:0;top:0;right:auto;width:6rem;border-top:none;border-right:solid 1px rgba(var(--text-color),.2)}#navbar .navbar-item{border-radius:.5rem;width:auto;padding:.5rem 0;margin:.5rem .6rem}#navbar .navbar-item .icon{height:1.4rem;width:1.4rem}#navbar .navbar-item:hover{background:rgba(var(--foreground-color),.2)}#navbar .navbar-item.active{background:rgba(var(--foreground-color),1);color:var(--accent-color)}#navbar .navbar-item.active .icon{stroke:var(--accent-color)}.page{padding-bottom:2em}#sign_in_popup{width:24rem}#profile_page .copy-row{display:inline-flex}#deposit,#home_page{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr) 24rem}}@media only screen and (min-width:800px){.complaint{gap:0 1.5rem;grid-template-columns:1fr 1fr;grid-template-areas:". . " "header header"}.complaint .complaint-actions{grid-area:header}.complaint .left{border-right:1px solid rgba(var(--text-color),.2);padding-right:1.5rem}.complaint .right{display:flex;justify-content:center;flex-direction:column}.user-panel{position:sticky;top:1.5rem}}@media only screen and (min-width:1920px){body{font-size:24px}}@media only screen and (min-width:2048px){body{font-size:24px}}@media only screen and (max-width:320px){body{font-size:14px}}@media (prefers-color-scheme:dark){:root{--text-color:238,238,238;--text-color-light:170,170,170;--foreground-color:26,26,26;--background-color:#111;--dark-shade:#1a1a1a}}@media (prefers-color-scheme:light){:root{--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada}}@media (prefers-color-scheme:no-preference){:root{--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada}}@media (any-hover:hover){.option:hover{background:rgba(var(--text-color),.1)}} \ No newline at end of file +.options-tab .option,button{transition:transform .3s;text-transform:capitalize;cursor:pointer}.icon,.loader{overflow:visible;fill:none}.action,button{position:relative}*{box-sizing:border-box;padding:0;margin:0;font-family:Roboto,sans-serif}button,h1,h2,h3,h4,h5{font-weight:600;font-family:Poppins,sans-serif}:root{scroll-behavior:smooth}body{--accent-color:#2237CD;--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada;background:var(--foreground-color);color:rgba(var(--text-color),1);font-size:16px}a{font-weight:600;text-decoration:none;color:var(--accent-color)}.dark-text{color:#111}h1{font-size:3.5rem}h2{font-size:2rem}h3{font-size:1.5rem}h4{font-size:1rem}h5{font-size:.8rem}p{line-height:1.5;max-width:60ch;color:rgba(var(--text-color),.9)}button{display:inline-flex;align-items:center;justify-content:center;padding:.6rem 1.2rem;border-radius:.3rem;color:var(--accent-color);border:none;background:rgba(var(--text-color),.1);-webkit-tap-highlight-color:transparent}.action,.align-center{align-items:center}button:focus{outline:solid thin}button:disabled{cursor:default;background:rgba(var(--text-color),.5)}.action,.action[disabled] .primary-btn{background:0 0}button: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-cancel-button,input[type=search]::-webkit-search-decoration,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:0;box-shadow:none}::-moz-focus-inner{border:none}.bottom-padding{padding-bottom:1.5rem}.top-padding{padding-top:1em}.bottom-margin{margin-bottom:1.5rem}.top-margin{margin-top:1.5rem}.flex{display:flex}.grid{display:grid}.grid-2{grid-template-columns:auto auto;gap:1em}#confirmation,#prompt,.direction-column,.options-tab .option{flex-direction:column}.space-between{justify-content:space-between}.label{margin-bottom:.4rem}.light-text{opacity:.7}.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{stroke-width:10;stroke:var(--accent-color);height:2rem;width:2rem;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}}.action{display:inline-flex;justify-content:center;padding:0}.action h4{padding:.5rem 1.2rem;font-size:.9rem;clip-path:circle(100%);transition:clip-path .3s;border-radius:.2rem}.action .btn{z-index:2}.action .loader{position:absolute;z-index:1;padding:.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 .3s}.fade-right{animation:faderight .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:.6rem .4rem;margin-right:1rem}#logo h4{letter-spacing:.06rem;word-spacing:.12rem}#logo h5{font-weight:400}#logo #main_logo{height:1.6rem;width:1.6rem;fill:rgba(var(--text-color),1);stroke:none}textarea{width:100%;max-width:100%;background:rgba(var(--text-color),.1);border:none;border-radius:.2rem;resize:none;font-size:1rem;line-height:1.6;padding:.8rem}:empty+.empty-state{display:grid}.empty-state{display:none;place-items:center;width:100%}.empty-state svg{stroke:rgba(var(--text-color),.8);height:12em;width:12em}.container-header{display:flex;align-items:center;flex-direction:row;width:100%;padding:1rem 0}.container-header h2{flex:1}.container-header button{align-self:center}.btn{background:var(--accent-color);color:rgba(var(--foreground-color),1);padding:.4em 1em}.back-arrow{stroke:rgba(var(--text-color),1);stroke-width:6;fill:none;height:2rem;padding:.5rem .5rem .5rem 0;cursor:pointer}.card{border-radius:.6rem;padding:1.5em;background:rgba(var(--foreground-color),1)}.solid-background{background:rgba(var(--foreground-color),1)!important}#confirmation p,#prompt p{margin:1rem}#confirmation h4,#prompt h4{font-weight:500;margin-bottom:1.5rem}#confirmation .btns,#prompt .btns{display:flex;justify-content:right;width:100%}#confirmation .btns button,#prompt .btns button{background:0 0}details p,sm-popup .illustration{background:rgba(var(--text-color),.06)}#confirmation .btns button:first-of-type,#prompt .btns button:first-of-type{margin-right:.6em}.refresh{margin-top:.6em;margin-bottom:1em}sm-popup .illustration{position:relative;height:4rem;width:4rem;padding:1rem;stroke:var(--accent-color);margin-bottom:1rem;border-radius:5rem}.complaint-placeholder h4,.complaint-placeholder h5,details p{border-radius:.2rem}sm-popup sm-input:not(:last-of-type){margin-bottom:1rem}sm-popup p{margin-block-end:1rem}sm-popup .action{margin-top:1.5rem}sm-popup .action h4{padding:.8rem 1.6rem}.popup-header{padding:1.5rem;padding-bottom:0;display:flex;align-items:center;width:100%}.popup-header .icon{margin-right:1rem;padding:.2rem;stroke-width:10;cursor:pointer}.popup-header button{width:auto;margin-left:auto}details,summary{margin-bottom:1rem}details p{padding:.5rem 1rem;margin-bottom:0}#sign_in_popup h3{margin-top:2rem}#sign_in_popup h4{font-weight:500;margin-bottom:3rem}#sign_in_popup button{margin:1rem 0}#sign_in_popup p{margin-top:1rem;margin-bottom:0!important}.primary-btn{background:var(--accent-color);justify-content:center;color:rgba(var(--foreground-color),1)}#main_header{align-items:center;padding:1rem;justify-content:space-between}.display-balance{gap:1rem;grid-auto-flow:row}.display-balance .balance{width:100%}.display-balance .icon{height:1.4rem;width:1.4rem;padding:.3rem;stroke-width:10;cursor:pointer}.icon{height:1.2rem;width:1.2rem;stroke:rgba(var(--text-color),.8);stroke-width:6;stroke-linecap:round;stroke-linejoin:round}#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-color),.2);border-right:none;z-index:3;background:rgba(var(--foreground-color),1)}#navbar .navbar-item{position:relative;text-align:center;cursor:pointer;padding:.3em;margin:.3em;border-radius:.4em;color:rgba(var(--text-color),.8);font-size:.8em;text-transform:capitalize;width:100%;font-weight:600}#navbar .navbar-item h5{margin-top:.4em}#navbar .active{color:var(--accent-color)}.user-panel,.user-panel .grid P{color:rgba(var(--foreground-color),1)}#navbar .active .icon{stroke:var(--accent-color)}.banking{stroke-width:4}#home_page{padding:1rem 0 4rem}#home_page .left{padding:1.5rem 0;width:auto;background:rgba(var(--text-color),.06);border-radius:.6rem}#home_page .left h3,#home_page .left h4,#home_page .left p,#home_page sm-carousel::part(carousel){padding:0 1.5rem}#home_page .left h3{font-size:2rem;margin-bottom:1rem}#home_page .user-panel{margin:0 1.5rem}.user-panel{position:relative;padding:1.5rem;border-radius:.6rem;background:linear-gradient(135deg,var(--accent-color),#2F2B76);box-shadow:0 .1rem .1rem #00010,0 1rem 1rem -1rem #00010;align-self:flex-start}.request .action,.request button{align-self:flex-end}.user-panel .icon{stroke:rgba(var(--foreground-color),1)}.user-panel .copy-row{margin-bottom:1rem;padding-bottom:1rem;border-bottom:solid 1px rgba(var(--foreground-color),.3)}.user-panel sm-button{--text-color:rgba(var(--foreground-color), 1);background:rgba(var(--foreground-color),.2);border-radius:2rem}.user-panel .grid{gap:1.5rem;grid-template-columns:1fr 1fr;margin-top:1rem}.user-panel .grid h5{font-weight:500}.user-panel .grid h4{font-size:1.2rem}.user-panel .grid P{font-size:.8rem;opacity:.9;margin-bottom:0!important;max-width:30ch}.balance{display:grid;gap:0 1rem}.user-type{font-weight:500}.options-tab{margin:1rem 0}.options-tab .option{position:relative;display:flex;align-items:center;text-align:center;border-radius:.4rem;margin-right:1rem;margin-bottom:1rem;width:5rem;min-width:5rem}.options-tab .option .icon{height:3rem;width:3rem;padding:.8rem;stroke:var(--accent-color)}.options-tab .option h4{font-size:.9rem;font-weight:500}.options-tab .option:active{transform:scale(.95)}.request-icon{transform:rotate(180deg)}.notification-dot::after{content:"";position:absolute;z-index:1;top:0;right:0;height:.6em;width:.6em;background-color:#E53935;border-radius:.4em;transition:transform .3s}.shrink.notification-dot::after{transform:scale(0)}#deposit .container-header,#withdraw .container-header{background:linear-gradient(rgba(var(--foreground-color),1) 90%,transparent)}.page .container-header,sm-tab-header{top:0;background:rgba(var(--foreground-color),1);z-index:2}sm-tab-header{position:sticky;margin-bottom:1rem;border-bottom:solid 1px rgba(var(--text-color),.2)}sm-tab::part(tab){padding:.8rem .4rem;text-transform:capitalize}sm-panel{width:100%}.request{display:inline-flex;flex-direction:column;padding:1.5em;border-radius:.4em;border:1px solid}.request h5{margin-bottom:.2rem;text-transform:capitalize}.request h3,.request h4{margin-bottom:1.5rem}.copy-row h4,.request button{margin-bottom:0}.request h4:last-of-type{margin-bottom:0}.request .amount{font-size:1.4em}.request button{width:auto;margin-top:1.5rem}.request .copy-row{margin-bottom:1.5rem}.request .flex{align-items:center;justify-content:flex-end;margin-top:1.5rem}.request .flex button,.request .flex h5{margin:0}.deposited{color:#007732}.deposited::before{content:"+ "}.decline-request{margin-right:.5rem!important}.withdrawn{color:#d43125}.withdrawn::before{content:"- "}.container{display:grid;gap:1em;width:100%;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr))}.copy-row,.page .container-header{display:grid;grid-template-columns:1fr auto}.page{padding:1rem 1.5rem;padding-bottom:4rem}.page .container-header{grid-template-areas:". ." "search search";gap:1rem;will-change:auto}.page .container-header .search{grid-area:search}.page .container-header .search input{padding:1em;border:none;width:100%;background:var(--dark-shade);font-size:1rem;font-weight:500;color:rgba(var(--text-color),1);border-radius:.2em}.page .container-header .search input:focus{outline:0;background:rgba(var(--text-color-light),.2)}.copy-row{align-items:center;gap:.5rem}.copy-row .icon{cursor:pointer;padding:.4rem;height:1.8rem;width:1.8rem}.copy-row .copy{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.time{margin-bottom:1.5rem!important;font-weight:500}#report_popup{width:32rem}#profile_page{display:flex;flex-direction:column}#profile_page button{align-self:flex-start}.complaint{display:grid;gap:1.5rem 0}.complaint .complaint-actions{align-items:center;margin:1.5rem 0 0}#helpline_page sm-select,.complaint .processed,.complaint .unprocessed{margin-bottom:1.5rem}.complaint .processed{color:#007732}.complaint .unprocessed{color:#d43125}.complaint button .icon{padding:.2rem;margin-right:.5rem;stroke:var(--accent-color);stroke-width:8}.complaints-container{padding-top:1.5rem;display:grid;align-items:flex-start;gap:1.5rem}.complaint-placeholder{animation:pulse infinite .6s alternate}.complaint-placeholder h5{background:rgba(var(--text-color),.1);padding:.5rem .6rem}.complaint-placeholder h4{background:rgba(var(--text-color),.2);padding:.8rem}.complaint-placeholder .demo-btn{padding:.8rem 3rem}@keyframes pulse{from{opacity:.4}to{opacity:1}}#main_loader{text-align:center;place-content:center;height:100vh;width:100vw;position:fixed;left:0}#main_loader sm-button{margin-left:0;margin-top:1rem}#main_loader svg{height:2rem;width:2rem;stroke:var(--accent-color);stroke-width:6;fill:none;overflow:visible;stroke-linecap:round;stroke-dashoffset:210;stroke-dasharray:210;justify-self:center;align-self:center;margin-bottom:2rem}#main_loader h3{width:100%;font-weight:400;word-spacing:.16em}#upi_txId_section .copy-row{margin-bottom:1.5rem}#send_amount_to_deposit{margin-bottom:0!important}@keyframes popup{0%{stroke-dashoffset:50;transform:translateY(4rem) scale(.2,.6)}40%,41%{transform:translateY(0) scale(.2)}50%{stroke-dashoffset:50;transform:translateY(0) scale(1)}100%{stroke-dashoffset:0}}#failure_section h4,#success_section h4{text-align:center;margin-top:1rem}#failure_svg,#success_svg{height:5rem;width:5rem;stroke-width:4;align-self:center;stroke:none;stroke-dasharray:50;fill:rgba(var(--text-color),.06);animation:popup 2s forwards infinite cubic-bezier(.175,.885,.32,1.275)}#success_svg polyline{fill:none;stroke:#00C853}#failure_svg line{stroke:#EF5350}@media only screen and (max-width:640px){#deposit,#home_page{display:grid;gap:1.5rem;grid-template-areas:"." "left";grid-template-columns:minmax(0,1fr)}#deposit .left,#home_page .left{grid-area:left}sm-select{width:100%}}@media only screen and (min-width:640px){body{padding:0 2rem;margin-left:6rem}#confirmation,sm-popup::part(popup){width:24rem}#navbar{justify-content:center;flex-direction:column;align-items:stretch;left:0;bottom:0;top:0;right:auto;width:6rem;border-top:none;border-right:solid 1px rgba(var(--text-color),.2)}#navbar .navbar-item{border-radius:.5rem;width:auto;padding:.5rem 0;margin:.5rem .6rem}#navbar .navbar-item .icon{height:1.4rem;width:1.4rem}#navbar .navbar-item:hover{background:rgba(var(--foreground-color),.2)}#navbar .navbar-item.active{background:rgba(var(--foreground-color),1);color:var(--accent-color)}#navbar .navbar-item.active .icon{stroke:var(--accent-color)}.page{padding-bottom:2em}#sign_in_popup{width:24rem}#profile_page .copy-row{display:inline-flex}#deposit,#home_page{display:grid;gap:1.5rem;grid-template-columns:minmax(0,1fr) 24rem}}@media only screen and (min-width:800px){.complaint{gap:0 1.5rem;grid-template-columns:1fr 1fr;grid-template-areas:". . " "header header"}.complaint .complaint-actions{grid-area:header}.complaint .left{border-right:1px solid rgba(var(--text-color),.2);padding-right:1.5rem}.complaint .right{display:flex;justify-content:center;flex-direction:column}.user-panel{position:sticky;top:1.5rem}}@media only screen and (min-width:1920px){body{font-size:24px}}@media only screen and (min-width:2048px){body{font-size:24px}}@media only screen and (max-width:320px){body{font-size:14px}}@media (prefers-color-scheme:dark){:root{--text-color:238,238,238;--text-color-light:170,170,170;--foreground-color:26,26,26;--background-color:#111;--dark-shade:#1a1a1a}}@media (prefers-color-scheme:light){:root{--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada}}@media (prefers-color-scheme:no-preference){:root{--text-color:17,17,17;--text-color-light:85,85,85;--foreground-color:255,255,255;--background-color:#e8e8e8;--dark-shade:#dadada}}@media (any-hover:hover){.option:hover{background:rgba(var(--text-color),.1)}} \ No newline at end of file diff --git a/css/main.scss b/css/main.scss index e29fe66..f98fb62 100644 --- a/css/main.scss +++ b/css/main.scss @@ -452,6 +452,12 @@ sm-popup{ p{ margin-block-end: 1rem; } + .action{ + margin-top: 1.5rem; + h4{ + padding: 0.8rem 1.6rem; + } + } } .popup-header{ diff --git a/index.html b/index.html index 24ff9cf..9f13fc2 100644 --- a/index.html +++ b/index.html @@ -53,7 +53,7 @@ Sign In - + +

+ Send +

+ + + +
deposit @@ -128,6 +120,14 @@ +

+ Continue +

+ + + +
withdraw @@ -163,6 +155,14 @@ +

+ withdraw +

+ + + +
+

+ request +

+ + + +
@@ -227,6 +219,14 @@ +

+ pay +

+ + + +
+
@@ -789,9 +789,9 @@ console.log("Starting the app! Please Wait!") floDapps.launchStartUp().then(async result => { console.log(`Welcome ${myFloID}`) + refresh_balance() await token_app.actions.doShreeGanesh(); userFloIdContainers.forEach(container => container.textContent = myFloID) - refresh_balance() hideLoader() }).catch(error => console.error(error)) } @@ -1269,19 +1269,11 @@ zIndex = 10; function showPopup(popup, permission) { - console.log(popupStack.peek()) - if (popupStack.peek() !== undefined){ - let prevPopup = document.getElementById(popupStack.peek().popup) - prevPopup.classList.add('stacked') - } + console.log(popupStack) let thisPopup = document.getElementById(popup); - popupStack.push({ - popup, - permission - }) zIndex++ thisPopup.setAttribute('style', `z-index: ${zIndex}`) - thisPopup.show(permission, popupStack) + popupStack = thisPopup.show(permission, popupStack) return thisPopup; } @@ -1289,51 +1281,45 @@ function hidePopup() { if (popupStack.peek() === undefined) return; - let { - permission, popup - } = popupStack.pop(); - let thisPopup = document.getElementById(popup), + thisPopup.hide() + } + + document.addEventListener('popupclosed', e => { + popupStack = e.detail.popupStack + let thisPopup = e.detail.popup, submitButton = thisPopup.querySelector('button[type="submit"]') if (submitButton) submitButton.disabled = true; - thisPopup.hide() - zIndex-- setTimeout(() => { if (thisPopup.querySelector('.action')) { btnLoading(thisPopup.querySelector('.action'), 'stop') thisPopup.querySelector("button[type='submit']").disabled = true; } }, 400) - if (popup === 'prompt') { - if (thisPopup.querySelector('sm-input').value == '') - thisPopup.querySelector('.cancel-btn').click() - } - } - - document.addEventListener('popupclosed', e => { - if (popupStack.peek() !== undefined){ - let prevPopup = document.getElementById(popupStack.peek().popup) - prevPopup.classList.remove('stacked') - } + zIndex-- switch(e.detail.popup.id){ case 'sign_in_popup' : loader.classList.remove('animate-loader') document.querySelector('main').classList.remove('hide-completely') document.querySelector('#navbar').classList.remove('hide-completely') document.querySelector('#main_header').classList.remove('hide-completely') - break; + break; case 'cash_transfer' : payingRequested = false; tokenReceiver.disabled = false tokenAmount.disabled = false - break; + break; case 'deposit_rupee': depositRequested = 0; document.getElementById('upi_txId_section').classList.add('hide-completely') document.getElementById('deposit_amount_section').classList.remove('hide-completely') depositedRupeeTxId.disabled = true document.getElementById('request_tokens_btn').children[0].textContent = 'Continue' - break; + break; + case 'prompt': + if (thisPopup.querySelector('sm-input').value == '') + thisPopup.querySelector('.cancel-btn').click() + break } }) @@ -10572,6 +10558,8 @@ deposits_flo_txids: {}, cash_sent_details: {}, pay_thru_cashier: {}, + //user UPIs + userUpis: {} } //add other given objectStores for (o in this.appObs) @@ -11086,32 +11074,32 @@ } function delay(t, v) { - return new Promise(function (resolve) { - setTimeout(resolve.bind(null, v), t); - }); + return new Promise(function(resolve) { + setTimeout(resolve.bind(null, v), t); + }); } - + function diff_hours(dt2, dt1) { - var diff = (dt2.getTime() - dt1.getTime()) / 1000; + var diff =(dt2.getTime() - dt1.getTime()) / 1000; diff /= (60 * 60); - return Math.abs(Math.round(diff)); + return Math.abs(Math.round(diff)); } -