Merge pull request #1979 from cmgustavo/feature/wallet-bar-mobile

Feature/wallet bar mobile
This commit is contained in:
Matias Alejo Garcia 2014-12-04 23:46:22 -03:00
commit d4699d0ae6
19 changed files with 181 additions and 206 deletions

View file

@ -24,7 +24,6 @@
"angular-load": "0.2.0", "angular-load": "0.2.0",
"lodash": "~2.4.1", "lodash": "~2.4.1",
"angular-gravatar": "*", "angular-gravatar": "*",
"fastclick": "*",
"angular-touch": "~1.3.0" "angular-touch": "~1.3.0"
}, },
"resolutions": { "resolutions": {

View file

@ -25,9 +25,9 @@
.main { .main {
height: 92%; height: 92%;
margin-top: 40px; margin-top: 30px;
margin-left: 0; margin-left: 0;
margin-bottom: -40px; margin-bottom: -30px;
padding: 20px 0 80px 0; padding: 20px 0 80px 0;
} }
@ -53,6 +53,11 @@
line-height: 110%; line-height: 110%;
} }
header h1 {
color: #fff;
text-align: center;
}
.col3 a { .col3 a {
height: 45px; height: 45px;
padding: 12px 5px; padding: 12px 5px;
@ -63,6 +68,10 @@
left: 0; left: 0;
} }
.right-off-canvas-menu {
background-color: #213140 ;
}
.left-off-canvas-menu { .left-off-canvas-menu {
background: #E4E8EC; background: #E4E8EC;
line-height: 24px; line-height: 24px;
@ -178,11 +187,6 @@
font-size: 14px; font-size: 14px;
} }
.top-balance {
width: auto;
padding: 0 5px;
}
a.missing-copayers { a.missing-copayers {
bottom: -34px; bottom: -34px;
text-align: center; text-align: center;
@ -206,13 +210,6 @@
margin-bottom: 50px; margin-bottom: 50px;
} }
.side-nav.wallets {
padding: 0;
height: 100%;
left: 0;
top: 45px;
}
ul.off-canvas-list li a:hover { ul.off-canvas-list li a:hover {
background: transparent; background: transparent;
} }
@ -222,6 +219,18 @@
padding: 0.15rem 0.2rem; padding: 0.15rem 0.2rem;
} }
.side-nav.wallets {
z-index: 100;
overflow-y: inherit;
position: inherit;
height: auto;
border-bottom: none;
}
.side-nav li.nav-item.selected {
background-color: #3C4E60;
}
} }
@media (max-width: 640px) { @media (max-width: 640px) {

View file

@ -38,7 +38,7 @@
</div> </div>
<div ng-show="sessionExpired" class="session-expired"> <div ng-show="sessionExpired" class="session-expired">
<i class="fi-battery-empty size-72 text-gray"></i> <i class="fi-clock size-72 text-gray"></i>
<p class="text-gray size-18">Your session is about to expire due to inactivity in {{countdown}} seconds</p> <p class="text-gray size-18">Your session is about to expire due to inactivity in {{countdown}} seconds</p>
</div> </div>
@ -56,37 +56,40 @@
</span> </span>
</span> </span>
<nav class="tab-bar" ng-if="$root.iden && !$root.hideNavigation" > <div ng-controller="SidebarController" ng-init="init()" ng-if="$root.iden && !$root.hideNavigation">
<nav class="tab-bar" >
<section class="left-small"> <section class="left-small">
<a class="left-off-canvas-toggle menu-icon" ><span></span></a> <a class="left-off-canvas-toggle menu-icon" ><span></span></a>
</section> </section>
<section class="right-small text-center top-balance" ng-if="$root.wallet && $root.wallet.isComplete() && !$root.wallet.isLocked" > <section class="right-small">
<span ng-if="$root.updatingBalance"> <a class="right-off-canvas-toggle p10"><i class="icon-wallet size-24"></i></a>
<i class="fi-bitcoin-circle icon-rotate spinner"></i>
</span>
<span class="size-14" ng-if="!$root.updatingBalance">
{{$root.wallet.balanceInfo.totalBalance || 0}} {{$root.wallet.settings.unitName}}
</span>
</section> </section>
<section class="middle tab-bar-section"> <section class="middle tab-bar-section">
<h1 class="title ellipsis"> <h1 class="title">
{{$root.wallet.getName()}} <img src="img/logo-negative-beta.svg" alt="Copay" width="60">
</h1> </h1>
</section> </section>
</nav> </nav>
<aside class="left-off-canvas-menu" ng-if="$root.iden"> <aside class="left-off-canvas-menu">
<div ng-include="'views/includes/sidebar-mobile.html'"></div> <div ng-include="'views/includes/sidebar-mobile.html'"></div>
</aside> </aside>
<div notifications="right top"></div> <aside class="right-off-canvas-menu">
<div ng-include="'views/includes/walletbar-mobile.html'"></div>
</aside>
<div <div
ng-include="'views/includes/sidebar.html'" ng-include="'views/includes/sidebar.html'"
role='navigation' role='navigation'
class="sidebar" class="sidebar"></div>
ng-if="$root.iden"></div> <div class="bottom-bar" ng-if="$root.wallet &&
$root.wallet.isComplete() && !$root.wallet.isLocked">
<div ng-include="'views/includes/bottombar-mobile.html'"></div>
</div>
</div>
<div notifications="right top"></div>
<div <div
ng-controller="HeadController" ng-controller="HeadController"
@ -98,11 +101,6 @@
<section ng-class="{'main':$root.iden && !$root.starting}" ng-view></section> <section ng-class="{'main':$root.iden && !$root.starting}" ng-view></section>
<div class="bottom-bar" ng-if="$root.wallet &&
$root.wallet.isComplete() && !$root.wallet.isLocked">
<div ng-include="'views/includes/bottombar-mobile.html'"></div>
</div>
<a class="exit-off-canvas"></a> <a class="exit-off-canvas"></a>
</div> </div>

View file

@ -1,11 +1,12 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService, pinService) { angular.module('copayApp.controllers').controller('CreateProfileController', function($scope, $rootScope, $location, $timeout, notification, pluginManager, identityService, pinService, isMobile) {
var _credentials, _firstpin; var _credentials, _firstpin;
$scope.init = function() { $scope.init = function() {
identityService.goWalletHome(); identityService.goWalletHome();
$scope.isMobile = isMobile.any();
pinService.makePinInput($scope, 'newpin', function(newValue) { pinService.makePinInput($scope, 'newpin', function(newValue) {
_firstpin = newValue; _firstpin = newValue;
@ -88,7 +89,7 @@ angular.module('copayApp.controllers').controller('CreateProfileController', fun
} else { } else {
$scope.error = null; $scope.error = null;
// mobile // mobile
if (isMobile.any()) { if ($scope.isMobile) {
_credentials = { _credentials = {
email: form.email.$modelValue, email: form.email.$modelValue,
password: form.password.$modelValue, password: form.password.$modelValue,

View file

@ -6,6 +6,8 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
var _credentials, _firstpin; var _credentials, _firstpin;
$scope.init = function() { $scope.init = function() {
$scope.isMobile = isMobile.any();
// This is only for backwards compat, insight api should link to #!/confirmed directly // This is only for backwards compat, insight api should link to #!/confirmed directly
if (getParam('confirmed')) { if (getParam('confirmed')) {
var hashIndex = window.location.href.indexOf('/?'); var hashIndex = window.location.href.indexOf('/?');
@ -158,7 +160,7 @@ angular.module('copayApp.controllers').controller('HomeController', function($sc
$scope.confirmedEmail = false; $scope.confirmedEmail = false;
// mobile // mobile
if (isMobile.any() && !$rootScope.hasPin) { if ($scope.isMobile && !$rootScope.hasPin) {
$scope.done(); $scope.done();
_credentials = { _credentials = {
email: email, email: email,

View file

@ -1,9 +1,16 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('HomeWalletController', function($scope, $rootScope, $timeout, $filter, rateService, notification) { angular.module('copayApp.controllers').controller('HomeWalletController', function($scope, $rootScope, $timeout, $filter, $location, rateService, notification, identityService) {
$scope.init = function() { $scope.init = function() {
$rootScope.title = 'Home'; $rootScope.title = 'Home';
// fix for Safari and mobile devices
var walletId = $location.hash();
if (walletId) {
$location.hash('');
identityService.setFocusedWallet(walletId);
}
$scope.rateService = rateService; $scope.rateService = rateService;
$scope.isRateAvailable = false; $scope.isRateAvailable = false;
@ -100,8 +107,6 @@ angular.module('copayApp.controllers').controller('HomeWalletController', functi
},1) },1)
}, 100); }, 100);
$scope.sign = function(ntxid) { $scope.sign = function(ntxid) {
var w = $rootScope.wallet; var w = $rootScope.wallet;
$scope.loading = true; $scope.loading = true;

View file

@ -1,6 +1,8 @@
'use strict'; 'use strict';
angular.module('copayApp.controllers').controller('SidebarController', function($scope, $rootScope, $location, $timeout, identityService) { angular.module('copayApp.controllers').controller('SidebarController', function($scope, $rootScope, $location, $timeout, identityService, isMobile) {
$scope.isMobile = isMobile.any()
$scope.menu = [{ $scope.menu = [{
'title': 'Home', 'title': 'Home',
@ -49,7 +51,6 @@ angular.module('copayApp.controllers').controller('SidebarController', function(
$scope.setWallets(); $scope.setWallets();
}; };
$scope.init = function() { $scope.init = function() {
// This should be called only once. // This should be called only once.
@ -61,7 +62,7 @@ angular.module('copayApp.controllers').controller('SidebarController', function(
}); });
} }
// wallet list chane // wallet list change
if ($rootScope.iden) { if ($rootScope.iden) {
var iden = $rootScope.iden; var iden = $rootScope.iden;
iden.on('newWallet', function() { iden.on('newWallet', function() {
@ -90,8 +91,8 @@ angular.module('copayApp.controllers').controller('SidebarController', function(
$scope.setWallets = function() { $scope.setWallets = function() {
if (!$rootScope.iden) return; if (!$rootScope.iden) return;
var ret = _.filter($rootScope.iden.listWallets(), function(w) { var ret = _.filter($rootScope.iden.listWallets(), function(w) {
return !identityService.isFocused(w.getId()); return w;
}); });
$scope.wallets = ret; $scope.wallets = _.sortBy(ret, 'name');
}; };
}); });

View file

@ -280,16 +280,6 @@ angular.module('copayApp.directives')
} }
} }
]) ])
.directive('autoFocus', function($timeout) {
return {
restrict: 'AC',
link: function(_scope, _element) {
$timeout(function() {
_element[0].focus();
});
}
};
})
.directive('showFocus', function($timeout) { .directive('showFocus', function($timeout) {
return function(scope, element, attrs) { return function(scope, element, attrs) {
scope.$watch(attrs.showFocus, scope.$watch(attrs.showFocus,

View file

@ -24,7 +24,8 @@ angular.module('copayApp.services')
r.availableBalanceBTC = (safeBalanceSat / COIN); r.availableBalanceBTC = (safeBalanceSat / COIN);
r.safeUnspentCount = safeUnspentCount; r.safeUnspentCount = safeUnspentCount;
r.lockedBalance = (balanceSat - safeBalanceSat) * satToUnit; var lockedBalance = (balanceSat - safeBalanceSat) * satToUnit;
r.lockedBalance = lockedBalance ? $filter('noFractionNumber')(lockedBalance) : null;
r.lockedBalanceBTC = (balanceSat - safeBalanceSat) / COIN; r.lockedBalanceBTC = (balanceSat - safeBalanceSat) / COIN;

View file

@ -86,7 +86,7 @@ describe("Angular services", function() {
expect(b.totalBalance).to.be.equal('1,000,000.01'); expect(b.totalBalance).to.be.equal('1,000,000.01');
expect(b.availableBalance).to.be.equal('900,000.02'); expect(b.availableBalance).to.be.equal('900,000.02');
expect(b.lockedBalance).to.be.equal(99999.99); expect(b.lockedBalance).to.be.equal('99,999.99');
expect(b.balanceByAddr[Waddr]).to.equal(2); expect(b.balanceByAddr[Waddr]).to.equal(2);
expect(b.safeUnspentCount).to.equal(5); expect(b.safeUnspentCount).to.equal(5);

View file

@ -32,7 +32,7 @@
<div class="panel"> <div class="panel">
<label><span translate>Wallet name</span> <label><span translate>Wallet name</span>
<div class="input"> <div class="input">
<input type="text" placeholder="{{'Family vacation funds'|translate}}" class="form-control" ng-model="walletName" auto-focus> <input type="text" placeholder="{{'Family vacation funds'|translate}}" class="form-control" ng-model="walletName">
<i class="icon-wallet"></i> <i class="icon-wallet"></i>
</div> </div>
</label> </label>

View file

@ -46,7 +46,8 @@
!profileForm.email.$pristine"><i class="fi-check"></i></span> !profileForm.email.$pristine"><i class="fi-check"></i></span>
</div> </div>
<div class="input"> <div class="input">
<input type="email" ng-model="email" class="form-control fi-email" name="email" placeholder="Email" required auto-focus> <input type="email" ng-model="email" class="form-control fi-email" name="email" placeholder="Email"
show-focus="!isMobile" required>
<i class="icon-email"></i> <i class="icon-email"></i>
</div> </div>

View file

@ -110,7 +110,7 @@
<input id="pin" type="tel" ng-model="pin" class="form-control" <input id="pin" type="tel" ng-model="pin" class="form-control"
ng-maxlength="4" ng-minlength="4" maxlength="4" ng-maxlength="4" ng-minlength="4" maxlength="4"
ng-pattern="/^[0-9]{1,4}$/" ng-pattern="/^[0-9]{1,4}$/"
placeholder="Pin number" name="pin" required auto-focus> placeholder="Pin number" name="pin" required>
<i class="icon-locked"></i> <i class="icon-locked"></i>
</div> </div>
@ -142,7 +142,7 @@
</p> </p>
<div class="input"> <div class="input">
<input type="email" ng-model="email" class="form-control" <input type="email" ng-model="email" class="form-control"
name="email" placeholder="Email" required auto-focus> name="email" placeholder="Email" required show-focus="!isMobile">
<i class="icon-email"></i> <i class="icon-email"></i>
</div> </div>
<div class="input"> <div class="input">

View file

@ -9,11 +9,13 @@
<div class="large-12 columns"> <div class="large-12 columns">
<div class="panel oh"> <div class="panel oh">
<div class="row"> <div class="row">
<div class="large-8 medium-6 small-3 columns"> <div class="large-8 medium-6 small-12 columns">
<div class="ellipsis oh">
<div class="avatar-wallet left">{{$root.wallet.getName() | limitTo: 1}}</div> <div class="avatar-wallet left">{{$root.wallet.getName() | limitTo: 1}}</div>
<h2 class="ellipsis m10t left hide-for-small-only">{{$root.wallet.getName()}}</h2> <h2 class="m10t left">{{$root.wallet.getName()}}</h2>
</div> </div>
<div class="large-4 medium-6 small-9 columns"> </div>
<div class="large-4 medium-6 small-12 columns">
<div class="text-right"> <div class="text-right">
<span class="size-21"> <span class="size-21">
<strong> <strong>

View file

@ -1,4 +1,4 @@
<div class="row collapse" ng-controller="SidebarController"> <div class="row collapse">
<div class="medium-3 small-3 columns text-center bottombar-item" ng-repeat="item in menu" ui-route="{{item.link}}" ng-if="item.link!='more'"> <div class="medium-3 small-3 columns text-center bottombar-item" ng-repeat="item in menu" ui-route="{{item.link}}" ng-if="item.link!='more'">
<a ng-click="go(item.link)" ng-class="{active: isActive(item)}"> <a ng-click="go(item.link)" ng-class="{active: isActive(item)}">
<i class="size-36 {{item.icon}} db"></i> <i class="size-36 {{item.icon}} db"></i>

View file

@ -1,78 +1,6 @@
<div ng-controller="SidebarController" ng-init="init()"> <div ng-init="username = $root.iden.getName()">
<header> <div class="text-center off-canvas-list">
<div ng-click="toggleWalletSelection()" ng-if="$root.wallet"> <a href="#!/profile" class="columns m10v" title="Profile">
<div class="col1">
<div class="avatar-wallet">{{$root.wallet.getName() | limitTo: 1}}</div>
</div>
<div class="col2">
<div class="oh m5t m10r">
<div class="right size-10 text-white">[ {{$root.wallet.requiredCopayers}} of {{$root.wallet.totalCopayers}} ]</div>
<div class="name-wallet">
<div class="ellipsis">{{$root.wallet.getName()}}</div>
</div>
</div>
<div class="founds size-12">
<span ng-if="!$root.wallet.isComplete()">Waiting for copayers...</span>
<div ng-if="$root.wallet.isComplete()">
<span ng-if="$root.wallet.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span>
<div ng-if="$root.wallet && !$root.wallet.balanceInfo.updatingBalance" data-options="disable_for_touch:true">
<b class="m5r">{{$root.wallet.balanceInfo.totalBalance || 0}} {{$root.wallet.settings.unitName}}</b>
<span ng-if="$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency">{{$root.wallet.balanceInfo.totalBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}}</span>
<span ng-if="!$root.wallet.balanceInfo.alternativeBalanceAvailable" class="alt-currency">N/A</span>
</div>
</div>
</div>
</div>
<div class="col3">
<a ng-class="{'selected':walletSelection}">
<span ng-show="!walletSelection">
<i class="icon-arrow-down2"></i>
</span>
<span ng-show="walletSelection">
<i class="icon-arrow-up2"></i>
</span>
</a>
</div>
</div>
<div ng-show="walletSelection">
<div class="side-nav wallets text-center off-canvas-list" ng-show="!wallets[0]">
<p class="size-12 text-gray m10t" translate>You do not have another wallets.</p>
<a href="#!/create" class="db button secondary tiny" title="Create new wallet">
<i class="m10r fi-plus"></i> {{'Create new wallet' | translate }} </a>
</div>
<ul class="side-nav wallets off-canvas-list" ng-show="wallets[0]">
<li data-ng-repeat="item in wallets track by $index"
class="nav-item"
ng-if="item.id != $root.wallet.id"
ng-click="toggleWalletSelection(); switchWallet(item.id)">
<div class="col1">
<div class="avatar-wallet">{{(item.name || item.id) | limitTo: 1}}</div>
</div>
<div class="col2">
<a class="size-12 wallet-item">
<div class="oh">
<div class="right size-10 type-wallet">
[ {{item.requiredCopayers}} of {{item.totalCopayers}} ]</div>
<div class="ellipsis name-wallet">{{item.name || item.id}}</div>
</div>
<div class="oh">
<span ng-if="item.isComplete() && item.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span>
<div ng-if="item.isComplete() && !item.balanceInfo.updatingBalance" data-options="disable_for_touch:true">
<b class="m5r size-12">{{item.balanceInfo.totalBalance || 0}} {{item.settings.unitName}}</b>
<span class="alt-currency size-10">{{item.balanceInfo.totalBalanceAlternative}} {{item.balanceInfo.alternativeIsoCode}}</span>
</div>
<span ng-if="!item.isComplete()">Waiting for copayers...</span>
</div>
</a>
</div>
</li>
</ul>
</div>
</header>
<div ng-show="!walletSelection" ng-init="username = $root.iden.getName()">
<div class="off-canvas-list">
<a href="#!/profile" class="columns text-center m10v" title="Profile">
<div class="photo-container"> <div class="photo-container">
<img gravatar-src="'{{username}}'" gravatar-size="35"> <img gravatar-src="'{{username}}'" gravatar-size="35">
</div> </div>
@ -82,7 +10,7 @@
</span> </span>
</a> </a>
</div> </div>
<ul class="off-canvas-list columns"> <ul class="off-canvas-list">
<li> <li>
<a href="#!/create" class="db p20h nav-item" title="Create new wallet"> <a href="#!/create" class="db p20h nav-item" title="Create new wallet">
<i class="size-24 m20r fi-plus"></i> {{'Create new wallet' | translate }} </a> <i class="size-24 m20r fi-plus"></i> {{'Create new wallet' | translate }} </a>
@ -111,5 +39,4 @@
<div ng-include="'views/includes/version.html'"></div> <div ng-include="'views/includes/version.html'"></div>
</div> </div>
</div> </div>
</div>

View file

@ -1,4 +1,4 @@
<div ng-controller="SidebarController" ng-init="init()"> <div>
<header ng-show="$root.wallet"> <header ng-show="$root.wallet">
<div class="col1"> <div class="col1">
<div class="avatar-wallet">{{$root.wallet.getName() | limitTo: 1}}</div> <div class="avatar-wallet">{{$root.wallet.getName() | limitTo: 1}}</div>
@ -39,7 +39,9 @@
<i class="fi-lock"></i> {{'Locked'|translate}} &nbsp; <i class="fi-lock"></i> {{'Locked'|translate}} &nbsp;
</span> </span>
<span ng-if="$root.wallet.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span> <span ng-if="$root.wallet.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span>
<span ng-if="$root.wallet && !$root.wallet.balanceInfo.updatingBalance" class="text-gray"><b>{{$root.wallet.balanceInfo.lockedBalance || 0}} {{$root.wallet.settings.unitName}} </b> - {{$root.wallet.balanceInfo.lockedBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}} <span ng-if="$root.wallet && !$root.wallet.balanceInfo.updatingBalance" class="text-gray">
<b>{{$root.wallet.balanceInfo.lockedBalance}} {{$root.wallet.settings.unitName}} </b>
- {{$root.wallet.balanceInfo.lockedBalanceAlternative}} {{$root.wallet.balanceInfo.alternativeIsoCode}}
</span> </span>
<i class="fi-info medium right text-gray size-14" <i class="fi-info medium right text-gray size-14"
tooltip="{{'Balance locked in pending transaction proposals'|translate}}" tooltip="{{'Balance locked in pending transaction proposals'|translate}}"
@ -51,7 +53,11 @@
<div> <div>
<ul class="side-nav wallets" ng-class="{'pullDown': walletSelection}" ng-show="wallets[0]"> <ul class="side-nav wallets" ng-class="{'pullDown': walletSelection}" ng-show="wallets[0]">
<li data-ng-repeat="item in wallets track by $index" class="nav-item" ng-if="item.id != $root.wallet.id" ng-click="switchWallet(item.id)"> <li
ng-repeat="item in wallets track by $index"
class="nav-item"
ng-if="item.id != $root.wallet.id"
ng-click="switchWallet(item.id)">
<div class="col1"> <div class="col1">
<div class="avatar-wallet">{{(item.name || item.id) | limitTo: 1}}</div> <div class="avatar-wallet">{{(item.name || item.id) | limitTo: 1}}</div>
</div> </div>

View file

@ -0,0 +1,37 @@
<div>
<header ng-show="$root.wallet">
<h1>My wallets</h1>
</header>
<div class="side-nav text-center off-canvas-list" ng-show="!wallets[0]">
<p class="size-12 text-gray m10t" translate>You do not have another wallets.</p>
<a href="#!/create" class="db button secondary tiny" title="Create new wallet">
<i class="m10r fi-plus"></i> {{'Create new wallet' | translate }} </a>
</div>
<ul class="side-nav wallets off-canvas-list" ng-show="wallets[0]">
<li
ng-repeat="item in wallets track by $index"
ng-class="{'selected': item.id == $root.wallet.id}"
class="nav-item">
<div class="col1">
<div class="avatar-wallet">{{(item.name || item.id) | limitTo: 1}}</div>
</div>
<div class="col2">
<a href="#!/homeWallet#{{item.id}}" class="size-12 wallet-item">
<div class="oh">
<div class="right size-10 type-wallet">
[ {{item.requiredCopayers}} of {{item.totalCopayers}} ]</div>
<div class="ellipsis name-wallet">{{item.name || item.id}}</div>
</div>
<div class="oh">
<span ng-if="item.isComplete() && item.balanceInfo.updatingBalance"><i class="fi-bitcoin-circle icon-rotate spinner"></i></span>
<div ng-if="item.isComplete() && !item.balanceInfo.updatingBalance" data-options="disable_for_touch:true">
<b class="m5r size-12">{{item.balanceInfo.totalBalance || 0}} {{item.settings.unitName}}</b>
<span class="alt-currency size-10">{{item.balanceInfo.totalBalanceAlternative}} {{item.balanceInfo.alternativeIsoCode}}</span>
</div>
<span ng-if="!item.isComplete()">Waiting for copayers...</span>
</div>
</a>
</div>
</li>
</ul>
</div>

View file

@ -8,8 +8,7 @@
<div class="row"> <div class="row">
<!-- Address--> <!-- Address-->
<div class="large-12 columns" ng-if="addr"> <div class="large-12 columns" ng-if="addr">
<div class="panel oh"> <div class="panel">
<div class="row">
<h2 class="line-b" translate>My Bitcoin address:</h2> <h2 class="line-b" translate>My Bitcoin address:</h2>
<div class="text-center" ng-if="!loading"> <div class="text-center" ng-if="!loading">
<qrcode size="220" data="bitcoin:{{addr}}"></qrcode> <qrcode size="220" data="bitcoin:{{addr}}"></qrcode>
@ -20,15 +19,12 @@
<div class="text-center" ng-if="loading"> <div class="text-center" ng-if="loading">
Generating new address... Generating new address...
</div> </div>
</div> <div class="line-t m10t size-12">
<div class="row">
<div class="large-12 columns line-t m10t size-12">
Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them. Share this with anyone to have them send you payments. To protect your privacy, new addresses are generated automatically once you use them.
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="row"> <div class="row">
<div class="large-12 columns" ng-if="addresses.length"> <div class="large-12 columns" ng-if="addresses.length">
<div ng-repeat="addr in addresses"> <div ng-repeat="addr in addresses">