151:0178573216e3
Anton Shestakov <av6@dwimlabs.net>, Thu, 14 Apr 2016 02:05:24 +0800
index: remove offline contacts only when they change to being offline Since new contacts are currently added while they still have the default presence of 'unavailable', add event sees them as offline and throws them away immediately, before their presence could change to something else.

next change 161:f4d47c72e93b
previous change 135:2406e8c6f282

css/tram-im.css

Permissions: -rw-r--r--

Other formats: Feeds:
.smart-container {
margin: 100px auto 0 auto;
max-width: 500px;
}
@media (min-width: 960px) {
.smart-container .uk-form-horizontal .uk-form-label {
width: 100px;
text-align: right;
}
.smart-container .uk-form-horizontal .uk-form-controls {
margin-left: 115px;
}
}
.uk-progress.page-progress {
background: transparent;
position: absolute;
left: 0;
right: 0;
top: 0;
z-index: 1000;
}
.uk-dropdown > ul {
padding-left: 0;
}
.has-sidebar {
padding-left: 200px;
transition: padding-left 0.1s ease-in-out;
}
.has-sidebar.mini {
padding-left: 42px;
}
.sidebar {
background: #333;
width: 200px;
position: fixed;
top: 0;
bottom: 0;
left: 0;
overflow-x: hidden;
overflow-y: auto;
transition: width 0.1s ease-in-out;
}
.sidebar .status-pip {
margin-right: 2px;
}
.sidebar .uk-panel {
color: #777;
margin: 20px 15px;
}
.sidebar.mini {
width: 42px;
}
.sidebar.mini .label,
.sidebar.mini .uk-panel {
display: none;
}
.main-grid {
margin: 0;
}
.uk-grid.main-grid > * {
padding: 0 15px;
}
.log {
height: 300px;
overflow: auto;
margin-top: 15px;
margin-bottom: 15px;
}
.input-group {
display: table;
}
.input-group > input {
display: table-cell;
width: 100%;
}
.input-group-button {
display: table-cell;
width: 1%;
vertical-align: middle;
}
.splitter {
border-top: 1px solid #ddd;
margin: 10px 0;
}
.message .presence {
color: darkmagenta;
}
.message .call {
color: darkgreen;
}
.message .chat {
color: midnightblue;
}
.message .self {
color: gray;
}
.message .info {
color: teal;
}
.message .xhtml-body p {
margin: 0;
}
.message .xhtml-body em {
color: inherit;
}
.column {
display: table-cell;
vertical-align: middle;
}
.avatar-column {
position: relative;
width: 56px;
}
.text-column {
width: 100%;
vertical-align: bottom;
}
.vignette {
border-radius: 50%;
overflow: hidden;
margin-right: 8px;
height: 48px;
width: 48px;
line-height: 48px;
text-align: center;
}
.avatar-column.uk-invisible .vignette {
max-height: 1px;
}
.avatar {
max-height: 48px;
max-width: 48px;
}
div.avatar {
height: 48px;
width: 48px;
font-size: 32px;
font-weight: 700;
}
.status-pip {
display: inline-block;
border-radius: 50%;
width: 11px;
height: 11px;
}
.avatar-column > .status-pip {
position: absolute;
right: 8px;
bottom: 0;
}
.contact-list-block {
border-right: 1px solid #ddd;
padding-right: 25px;
}
@media (min-width: 1220px) {
.contact-list-block {
padding-right: 35px;
}
}
.contact-list {
margin-top: 15px;
}
.contact-list > li:nth-child(n+2) {
border-top: 1px solid #ddd;
}
li.contact {
padding: 5px;
}
li.contact > .column {
vertical-align: middle;
}
.video-block {
position: relative;
max-width: 400px;
}
.video-block video {
display: block;
}
.video-block video.remote {
width: 100%;
background: dimgray;
}
.video-block video.local {
background: black;
position: absolute;
bottom: 0;
right: 0;
max-width: 30%;
max-height: 30%;
z-index: 1;
}
.video-block .buttons {
position: absolute;
bottom: 10px;
width: 100%;
z-index: 2;
}
.video-block .autofade {
transition: opacity 0.1s ease-in-out;
opacity: 0;
}
.video-block:hover .autofade {
opacity: 1;
}
@keyframes pulsation {
0% { opacity: 1; }
50% { opacity: 0; }
100% { opacity: 1; }
}
.calling-icon {
margin-right: 10px;
animation: pulsation 1s infinite;
}