session-desktop/stylesheets/_conversation.scss
adambar ada8f77930 Improve behaviors around long messages display
On the conversations list, if the last message is too long, cut it with ellipsis (...) instead of going out of the screen.
On the single conversation view, if the message in the bubble contains a word that is longer than a bubble, break it anyway instead of going out of the screen.
2015-06-18 14:14:28 -07:00

391 lines
5.7 KiB
SCSS

.conversation {
padding: $header-height 0;
.file-input .close {
top: -10px;
}
.conversation-title {
line-height: $header-height;
}
}
.conversation + .new-group-update-form,
.conversation, .discussion-container, .message-list, .message-detail, .key-verification {
height: 100%;
}
.key-verification {
padding: $header-height 0 0;
.container {
height: 100%;
overflow: auto;
}
p {
padding: 1em;
}
.key {
font-family: monospace;
padding: 0 1em;
}
}
.message-detail {
padding: $header-height 0 0;
background: $grey_l;
.container {
height: 100%;
overflow: auto;
}
.message-container {
background: white;
padding: 1em 0;
.sender {
display: none;
}
}
.info {
padding: 1em;
.label {
text-align: right;
font-weight: bold;
padding-right: 1em;
}
}
.conflict {
border: none;
border-radius: 5px;
color: white;
padding: 0.5em;
font-weight: bold;
background: #d00;
&:before {
content: '';
display: inline-block;
vertical-align: middle;
width: 18px;
height: 18px;
background: url('/images/error.png') no-repeat center center;
background-size: 100%;
}
span {
vertical-align: middle;
padding-left: 5px;
}
}
}
.group-update {
font-size: smaller;
}
.new-group-update-form {
.container {
height: 100%;
padding-top: $header-height;
}
.scrollable {
padding: 0.5em;
}
}
.private .sender,
.outgoing .sender {
display: none;
}
.sender {
font-size: smaller;
opacity: 0.8;
}
.timestamp {
font-size: smaller;
}
.entry.delivered .checkmark {
display: inline;
}
.message-list {
margin: 0;
padding: 1em 0;
overflow-y: auto;
.timestamp {
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
}
.message-detail,
.message-list {
list-style: none;
li {
margin: 0 8px 16px;
&::after {
visibility: hidden;
display: block;
font-size: 0;
content: " ";
clear: both;
height: 0;
}
}
.bubble {
position: relative;
left: -2px;
display: inline-block;
vertical-align: top;
max-width: calc(100% - 20px - 2 * 12px);
padding: 9px 12px;
border-radius: 4px;
box-shadow: 0 3px 3px -4px black;
word-wrap: break-word;
&::before, &::after {
content: '';
position: absolute;
height: 0;
width: 0;
}
&::before {
top: (34px / 2) - 8px;
border-top: 8px solid transparent;
border-bottom: 8px solid transparent;
}
&::after {
top: (34px / 2) - 6px;
border-top: 6px solid transparent;
border-bottom: 6px solid transparent;
}
.content a {
word-break: break-all
}
p {
margin: 0;
}
}
.outgoing.pending .bubble {
opacity: 0.7;
}
.incoming {
.bubble {
color: $grey_d;
background: $grey_l;
&::before {
left: -10px;
border-right: 10px solid white;
}
&::after {
left: -8px;
border-right: 8px solid $grey_l;
}
}
}
.outgoing {
.avatar, .bubble {
float: right;
}
.bubble {
clear: left;
color: white;
background: $blue;
.meta {
color: $blue_l;
}
&::before {
right: -10px;
border-left: 10px solid white;
}
&::after {
right: -8px;
border-left: 8px solid $blue;
}
}
}
.control {
.bubble {
.content {
font-style: italic;
}
&::before, &::after { display: none; }
}
}
.attachments {
img, audio, video {
max-width: 100%;
}
video {
background: black;
}
}
.outgoing .avatar {
display: none;
}
.avatar {
height: 36px;
width: 36px;
}
.meta {
margin-top: 3px;
float: right;
}
.end-session {
font: small;
font-style: italic;
opacity: 0.8;
}
.error {
font-style: italic;
}
.key-conflict {
padding: 15px 10px;
button {
margin-top: 5px;
}
}
}
.key-conflict-dialogue {
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
padding: $header-height;
.content {
padding: 1em;
background: white;
color: black;
box-shadow: 0 0 5px 0 black;
}
.verify {
color: $blue;
text-decoration: underline;
cursor: pointer;
}
}
.bottom-bar {
position: fixed;
bottom: 1; // offset 1 for window frame.
height: 36px;
width: calc(100% - 2px);
border-top: 1px solid $grey_l;
background: white;
button, input {
color: $grey_d;
}
button {
position: absolute;
top: 0;
height: 100%;
width: 36px;
padding: 0;
border: 0;
outline: 0;
font-size: 24px;
background: transparent;
}
.attachments {
float: left;
height: 100%;
}
.send-btn {
float: right;
height: 100%;
width: 36px;
border: none;
outline: none;
background: url('/images/send.png') no-repeat;
background-size: 75%;
background-position: center center;
cursor: pointer;
&::before {
content: '+';
}
}
form, input {
height: 100%;
}
input[type=textarea] {
display: block;
height: 100%;
border: 0;
outline: 0;
z-index: 5;
}
}
.toast {
position: absolute;
bottom: 0;
margin: 0 2em 3em;
padding: 0.5em 1.5em;
background: rgba(0, 0, 0, 0.75);
color: white;
box-shadow: 0 0 5px 0 black;
border-radius: 20px;
font-size: small;
}
.confirmation-dialog {
position: absolute;
top: $header-height;
padding: 1em;
background: white;
border: solid 2px $blue;
.message { text-align: center; }
button {
float: right;
margin-left: 10px;
}
}