897d391817
Clicking on a key conflict message opens the message detail view, which displays the contact(s) in this conversation. If the message contains a key conflict with any of these contacts, a button is displayed which attempts to resolve that conflict and any other conflicts in the conversation that are related to that contact.
365 lines
5.3 KiB
SCSS
365 lines
5.3 KiB
SCSS
.conversation {
|
|
padding: $header-height 0;
|
|
|
|
.file-input .close {
|
|
top: -10px;
|
|
}
|
|
}
|
|
|
|
.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;
|
|
}
|
|
}
|
|
|
|
.avatar img {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.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;
|
|
|
|
&::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;
|
|
}
|
|
}
|
|
|
|
.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;
|
|
}
|
|
}
|
|
}
|
|
|
|
.attachments {
|
|
img, audio, video {
|
|
max-width: 100%;
|
|
}
|
|
|
|
video {
|
|
background: black;
|
|
}
|
|
}
|
|
|
|
.outgoing .avatar {
|
|
display: none;
|
|
}
|
|
|
|
.avatar img {
|
|
height: 36px;
|
|
width: 36px;
|
|
background: $grey_l;
|
|
border-radius: (36px / 2);
|
|
}
|
|
|
|
.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: 0;
|
|
height: 36px;
|
|
width: 100%;
|
|
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;
|
|
}
|
|
|