From 735d76b978d4c22a52dad0c56e5d675643e90a24 Mon Sep 17 00:00:00 2001 From: tolya-yanot <1449561+tolya-yanot@users.noreply.github.com> Date: Sat, 26 Feb 2022 19:58:15 +0300 Subject: [PATCH] big UI update by @Zavtramen (https://github.com/Zavtramen/ton-wallet) - check that amount + fee <= balance at send popup - disable inputs autocomplete - show loader after click buttons - recovery words confirm screen - animations - back buttons - alert css - "Delete wallet" -> "Logout" --- src/assets/arrow.svg | 7 + src/assets/lottie/confirm.tgs | Bin 0 -> 14815 bytes src/css/main.css | 223 ++++++++++++++++++-- src/index.html | 345 ++++++++++++++++++------------- src/js/Controller.js | 48 ++++- src/js/view/Utils.js | 30 ++- src/js/view/View.js | 371 +++++++++++++++++++++++++++++----- 7 files changed, 800 insertions(+), 224 deletions(-) create mode 100644 src/assets/arrow.svg create mode 100644 src/assets/lottie/confirm.tgs diff --git a/src/assets/arrow.svg b/src/assets/arrow.svg new file mode 100644 index 0000000..00d62b6 --- /dev/null +++ b/src/assets/arrow.svg @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/src/assets/lottie/confirm.tgs b/src/assets/lottie/confirm.tgs new file mode 100644 index 0000000000000000000000000000000000000000..3a35762f4e9f297ad38e0e804ad0807ea5afb4f2 GIT binary patch literal 14815 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 F0syv6H8lVL literal 0 HcmV?d00001 diff --git a/src/css/main.css b/src/css/main.css index f773c54..3d5735e 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -10,6 +10,11 @@ body.plugin { min-height: 600px; } +body.disable-animations * { + transition-duration: 0s !important; + animation-duration: 0s !important; +} + .body-container { position: absolute; left: 0; @@ -35,7 +40,7 @@ a, a:focus, a:active, a:after { input { width: 100%; border: none; - border-bottom: 1px solid #e7e7e7; + border-bottom: 1px solid transparent; height: 40px; margin-top: 10px; margin-bottom: 10px; @@ -47,16 +52,27 @@ input { user-select: auto; -webkit-user-select: auto; -moz-user-select: auto; + + background-image: linear-gradient(rgba(215, 77, 77, 0), rgba(215, 77, 77, 0)), linear-gradient(rgba(60, 164, 219, 0), rgba(60, 164, 219, 0)), linear-gradient(#e7e7e7, #e7e7e7); + background-size: 0% 1px, 0% 1px, 100% 1px; + background-position: bottom center; + background-repeat: no-repeat; + transition: 0.2s background-image, 0s 0.2s background-size; } input:focus { - border-bottom: 1px solid #3CA4DB; + background-image: linear-gradient(rgba(215, 77, 77, 0), rgba(215, 77, 77, 0)), linear-gradient(rgba(60, 164, 219, 1), rgba(60, 164, 219, 1)), linear-gradient(#e7e7e7, #e7e7e7); + background-size: 100% 1px, 100% 1px, 100% 1px; + transition: 0.2s background-image, 0.2s background-size; } input.error { - border-bottom: 1px solid #D74D4D; + background-image: linear-gradient(rgba(215, 77, 77, 1), rgba(215, 77, 77, 1)), linear-gradient(rgba(60, 164, 219, 0), rgba(60, 164, 219, 0)), linear-gradient(#e7e7e7, #e7e7e7); + background-size: 100% 1px, 100% 1px, 100% 1px; + transition: 0.2s background-image, 0.2s background-size; } + ::-webkit-input-placeholder { /* Edge */ color: #999999; } @@ -119,6 +135,64 @@ button { background-color: #2E2F31; } +.btn-loader { + pointer-events: none; +} + +.btn-loader:after { + content: ''; + position: absolute; + transform: translate(8px, 2px); + width: 8px; + height: 8px; + border: 3px solid white; + border-left: 3px solid transparent; + border-radius: 50%; + animation: loading-animation-spin 2s infinite linear; +} + +.btn-lite.btn-loader:after { + transform: translate(6px, 3px); + width: 6px; + height: 6px; + border: 2px solid #3CA4DB; + border-left: 2px solid transparent; + animation: loading-animation-spin-small 2s infinite linear; +} + +.btn-back { + position: fixed; + top: 10px; + left: 10px; + width: 40px; + height: 40px; + background-position: center; + background-repeat: no-repeat; + background-size: 20px 20px; + border: none; + background-color: transparent; + background-image: url("../assets/arrow.svg"); + transform: scaleX(-1); + border-radius: 100%; + background-color: white; +} + +.btn-back:hover { + background-color: #F7F7F7; +} + +@keyframes loading-animation-spin { + to { + transform: translate(8px, 2px) rotate(1turn); + } +} + +@keyframes loading-animation-spin-small { + to { + transform: translate(6px, 3px) rotate(1turn); + } +} + .screen { position: absolute; left: 0; @@ -129,12 +203,82 @@ button { } .middle { - position: absolute; - text-align: center; - top: 50%; - left: 0; width: 100%; - transform: translate(0, -50%); + min-height: 100%; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; +} + +.middle-content { + text-align: center; +} + +.screen.faded-show { + opacity: 1; + visibility: inherit !important; + transition: 0.3s opacity, 0.3s visibility step-start; +} + +.screen.faded-hide { + opacity: 0; + visibility: hidden; + transition: 0.3s opacity, 0.3s visibility step-end; + animation: 99999999s 0.3s screen-delayed-overflow; +} + +.screen.faded-show .middle { + animation: screen-show-left 0.3s ease-out; +} + +.screen.faded-hide .middle { + animation: screen-hide-left 0.3s ease-in; +} + +.screen.faded-show.isBack .middle { + animation: screen-show-right 0.3s ease-out; +} + +.screen.faded-hide.isBack .middle { + animation: screen-hide-right 0.3s ease-in; +} + +.screen.faded-show .screen-lottie { + opacity: 1; + transform: scale(1); + transition: 0.2s opacity, transform 0.2s; +} + +.screen.faded-hide .screen-lottie { + opacity: 0; + transform: scale(0.3); + transition: 0.2s opacity, transform 0.25s; +} + + +@keyframes screen-delayed-overflow { + from { overflow: hidden } +} + +@keyframes screen-hide-left { + from { transform: translateX(0px) } + to { transform: translateX(-25px) } +} + +@keyframes screen-hide-right { + from { transform: translateX(0px) } + to { transform: translateX(25px) } +} + +@keyframes screen-show-left { + from { transform: translateX(25px) } + to { transform: translateX(0px) } +} + +@keyframes screen-show-right { + from { transform: translateX(-25px) } + to { transform: translateX(0px) } } .addr { @@ -187,6 +331,16 @@ button { color: white; font-size: 14px; text-align: center; + + opacity: 0; + visibility: hidden; + transition: 0.15s opacity, 0.15s visibility step-end; +} + +#notify.faded-show { + opacity: 1; + visibility: inherit !important; + transition: 0.15s opacity, 0.15s visibility step-start; } /* SET PASSWORD */ @@ -197,7 +351,7 @@ button { font-size: 15px; } -/* IMPORT */ +/* IMPORT && BACKUP && CONFIRM */ #import .btn-lite { font-weight: normal; @@ -205,13 +359,16 @@ button { margin-bottom: 10px; } -#importWords { +#importWords, +#confirmWords, +#createWords { max-width: 276px; margin-left: auto; margin-right: auto; } -#wordsPopup { +#wordsPopup, +#wordsConfirmPopup { position: absolute; background: white; padding-top: 4px; @@ -229,6 +386,10 @@ button { border: 1px solid #DCDCDC; } +#wordsConfirmPopup { + width: 190px; +} + .words-popup-item { font-size: 14px; line-height: 30px; @@ -245,13 +406,6 @@ button { background: #f0f0f0; } -#createWords { - margin-top: 10px; - max-width: 272px; - margin-left: auto; - margin-right: auto; -} - .word-item { float: left; } @@ -265,18 +419,24 @@ button { margin-right: 4px; } -#import .word-num { +#import .word-num, +#wordsConfirm .word-num { margin-right: 8px; margin-left: 16px; } -#import input { +#import input, +#wordsConfirm input { width: 92px; height: 32px; margin-top: 0; margin-bottom: 0; } +#wordsConfirm input { + width: 190px; +} + .create-word-item { float: left; width: 136px; @@ -520,7 +680,7 @@ button { /* POPUP */ #modal { - position: absolute; + position: fixed; left: 0; top: 0; width: 100%; @@ -533,6 +693,7 @@ button { left: 50%; top: 50%; transform: translate(-50%, -50%); + box-shadow: 0px 8px 24px rgba(0, 0, 0, .25); width: 320px; background-color: white; @@ -541,6 +702,26 @@ button { font-size: 14px; } +.popup#alert { + position: fixed; +} + +.popup.faded-show, +#menuDropdown.faded-show, +#modal.faded-show { + opacity: 1; + visibility: inherit !important; + transition: 0.15s opacity, 0.15s visibility step-start; +} + +.popup.faded-hide, +#menuDropdown.faded-hide, +#modal.faded-hide { + opacity: 0; + visibility: hidden; + transition: 0.15s opacity, 0.15s visibility step-end; +} + .popup-title { font-weight: bold; margin-bottom: 20px; diff --git a/src/index.html b/src/index.html index 4831660..f66eff6 100644 --- a/src/index.html +++ b/src/index.html @@ -19,190 +19,241 @@ -