UI improvements

* Implement visibility choice on board creation;

* Rework the board header bar. Remove links to un-implemented
features;

* Implement a board star counter (visible if the board have >2 stars);

* Define a new icon (a thin cross) to close elements;

* Remove $(document).on('mouseover') event handlers that were
basically fired hundreds of times for nothing, we now define a proper
Tracker dependency to execute jquery-ui plugin initialization only
when something has changed;

* Bug fixes related to list scrolling.
This commit is contained in:
Maxime Quandalle 2015-05-27 17:17:00 +02:00
parent 42f6dc686f
commit dcc64f44f9
51 changed files with 644 additions and 990 deletions

View file

@ -1,7 +1,5 @@
@import 'nib'
global-reset()
#header
color: white
transition: background-color 0.4s
@ -9,15 +7,16 @@ global-reset()
#header-quick-access
background-color: rgba(0, 0, 0, 0.2)
padding: 4px 10px
height: 16px
padding: 0px 10px
height: 28px
font-size: 12px
display: flex
ul li, #header-user-bar
#header-user-bar
ul li
color: darken(white, 17%)
a
a, .fa
color: inherit
text-decoration: none
@ -27,240 +26,101 @@ global-reset()
ul
flex: 1
transition: opacity 0.2s
margin-left: 5px
margin: 4px 0 0 5px
li
display: block
float: left
width: auto
color: darken(white, 15%)
padding: 0 4px 1px 4px
&.separator
padding: 0 2px 1px 2px
padding: 2px 5px 0
&.current
font-style: italic
color: darken(white, 5%)
&:first-child .fa-home
margin-right: 5px
#header-main-bar
height: 30px
padding: 8px
h1
font-size: 19px
line-height: 1.7em
margin: 0 20px 0 10px
float: left
&.header-board-menu
cursor: pointer
.fa-angle-down
font-size: 0.8em
// line-height: 1.1em
a.js-create-board
margin-left: 5px
.board-header-starred .fa
color: yellow
.board-header-members
float: right
#header-user-bar
margin: 2px 0
.member
display: block
width: 32px
width: 24px
height: @width
float: left
margin: 0
margin-top: 1px
.add-board-member
color: white
display: flex
align-items: center
justify-content: center
border: 1px solid white
height: 32px - 2px
width: @height
.header-user-bar-name
margin: 4px 8px 0 0
float: left
i.fa-plus
margin-top: 2px
#header-main-bar
height: 28px * 1.618034 - 6px
padding: 7px 10px 0
.header-btn:last-child
margin-right: 0
h1
font-size: 20px
line-height: 1.7em
padding: 0 10px
margin: 0
margin-right: 10px
float: left
border-radius: 3px
&.is-clickable
cursor: pointer
.board-header-btns
display: block
margin-top: 3px
width: auto
// #header {
// background: #138871;
// height: 30px;
// overflow: hidden;
// padding: 5px;
// position: relative;
// z-index: 10;
// }
// XXX Use a flexbox instead of floats?
&.left
float: left
// .header-logo {
// bottom: 0;
// display: block;
// height: 25px;
// left: 50%;
// position: absolute;
// top: 8px;
// width: 80px;
// margin-left: - @width/2;
// text-align: center;
// z-index: 2;
// opacity: .5;
// transition: opacity ease-in 85ms;
// color: white;
// font-size: 22px;
// text-decoration: none;
// background-image: url('/logos/white_logo.png');
&.right
float: right
// &:hover {
// opacity: .8;
// color: white;
// }
// }
.board-header-btn
border-radius: 3px
color: darken(white, 5%)
padding: 0
height: 28px
font-size: 13px
float: left
overflow: hidden
line-height: @height
margin: 0 2px
// .header-btn.header-btn-feedback {
// background: rgba(255, 255, 255, .1);
// background: linear-gradient(to bottom, rgba(255, 255, 255, .1) 0, rgba(255, 255, 255, .05) 100%);
// padding-left: 22px;
// margin-right: 16px;
i.fa
float: left
display: block
line-height: 28px
color: darken(white, 5%)
margin: 0 10px
// .header-btn-icon {
// top: 1px;
// }
// }
+ span
margin-right: 10px
.header-btn {
border-radius: 3px;
user-select: none;
background: rgba(255, 255, 255, .3);
background: linear-gradient(to bottom, rgba(255, 255, 255, .3) 0, rgba(255, 255, 255, .2) 100%);
color: #f3f3f3;
display: block;
float: left;
font-weight: 700;
height: 30px;
line-height: 30px;
padding: 0 10px;
position: relative;
margin-right: 8px;
min-width: 30px;
text-decoration: none;
cursor: pointer;
.board-header-btn-close
float: right
.header-btn-icon {
font-size: 16px;
line-height: 28px;
position: absolute;
top: 0;
left: 0;
}
i.fa
margin: 0 6px
&.new-notifications {
background: #ba1212;
.board-header-btn,
h1.is-clickable
&.is-hovered,
&:hover
background: rgba(0, 0, 0, .15)
&:hover {
background: #d11515;
}
}
&.header-member .member {
margin: 0;
border-top-left-radius: 3px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 3px;
&:hover .member-avatar {
opacity: 1;
}
}
&:hover {
background: rgba(255, 255, 255, .4);
background: linear-gradient(to bottom, rgba(255, 255, 255, .4) 0, rgba(255, 255, 255, .3) 100%);
color: #fff;
.header-btn-count {
background: #d11515;
}
}
&:active {
background: rgba(255, 255, 255, .4);
background: linear-gradient(to bottom, rgba(255, 255, 255, .4) 0, rgba(255, 255, 255, .3) 100%);
}
&.upgrade {
margin-right: 16px;
.icon-sm {
padding: 6px 2px 6px 4px;
}
}
&.upgrade,
&.header-boards {
padding-left: 4px;
}
&.header-boards {
padding-right: 4px;
}
&.header-login,
&.header-signup {
padding: 0 12px;
}
&.header-signup {
background: #48b512;
background: linear-gradient(to bottom, #48b512 0, #3d990f 100%);
&:hover {
background: #3d990f;
background: linear-gradient(to bottom, #3d990f 0, #327d0c 100%);
}
&:active {
background: #327d0c;
}
}
&.header-go-to-boards {
padding: 0 8px 0 38px;
}
&.header-go-to-boards .member {
border-top-left-radius: 3px;
border-top-right-radius: 0;
border-bottom-right-radius: 0;
border-bottom-left-radius: 3px;
position: absolute;
left: 0;
}
}
// .header-btn-text {
// padding: 0 8px;
// }
// .header-notification-list ul {
// margin-top: 8px;
// }
// .header-notification-list .action-comment {
// max-height: 250px;
// overflow-y: auto;
// }
// .header-user {
// position: absolute;
// top: 5px;
// right: 0;
// }
.separator
margin: 2px 4px
border-left: 1px solid rgba(255, 255, 255, .3)
height: 24px
float: left

View file

@ -1,11 +1,21 @@
// XXX This event list must be abstracted somewhere else.
var endTransitionEvents = [
'webkitTransitionEnd',
'otransitionend',
'oTransitionEnd',
'msTransitionEnd',
'transitionend'
].join(' ');
function whichTransitionEvent() {
var t;
var el = document.createElement('fakeelement');
var transitions = {
transition:'transitionend',
OTransition:'oTransitionEnd',
MozTransition:'transitionend',
WebkitTransition:'webkitTransitionEnd'
};
for (t in transitions) {
if (el.style[t] !== undefined) {
return transitions[t];
}
}
}
var transitionEvent = whichTransitionEvent();
Popup.template.events({
click: function(evt) {
@ -32,7 +42,7 @@ Popup.template.onRendered(function() {
container._uihooks = {
removeElement: function(node) {
$(node).addClass('no-height');
$(container).one(endTransitionEvents, function() {
$(container).one(transitionEvent, function() {
node.parentNode.removeChild(node);
});
}

View file

@ -91,6 +91,10 @@
top: 0
right: 0
&.no-title .header
background: none
.content-wrapper
width: 100%
@ -527,78 +531,3 @@
&.limited li.exceeds-limit
display: none
.pop-over-emoji-list li > a
padding: 2px 4px
.emoji
margin: 0 6px
.pop-over-card-list li > a
padding: 2px 4px
.login-signup-popover
padding: 15px
.form-tabs
display: none
h1
margin-bottom: 15px
p
margin: 8px 0
.form-parts-container
position: relative
.active-box
position: absolute
top: 0
background: #e2e2e2
border: 1px solid #c9c9c9
border-radius: 3px
z-index: 1
height: 100%
width: 49%
transition-property: all
transition-duration: .4s
opacity: 1
&.start
opacity: 0
left: 25%
.signup-form,
.login-form
position: relative
box-sizing: border-box
padding: 20px
width: 50%
z-index: 2
opacity: .3
transition-property: opacity
transition-duration: .2s
.active
opacity: 1
.js-signup-form-pos
left: 0
.login-form
position: absolute
top: 0
.login-form .icon-google
position: absolute
left: 5px
top: 3px
.login-form .button.google
padding-left: 40px
margin: 0 0 15px 0
.js-login-form-pos
left: 50%

View file

@ -1,13 +1,14 @@
.pop-over.clearfix(
class="{{#unless title}}miniprofile{{/unless}}"
class=currentBoard.colorClass
class="{{#unless title}}no-title{{/unless}}"
style="display:block; left:{{offset.left}}px; top:{{offset.top}}px;")
.header.clearfix
.header
a.back-btn.js-back-view(class="{{#unless hasPopupParent}}is-hidden{{/unless}}")
i.fa.fa-chevron-left
span.header-title= title
a.close-btn.js-close-pop-over
i.fa.fa-times
i.fa.fa-times-thin
.content-wrapper
//-
We display the all stack of popup content next to each other and move