Telegram Web K with changes to work inside I2P https://web.telegram.i2p/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

2393 lines
44 KiB

$bubble-margin: .25rem;
@keyframes bubbleSelected {
0% {
opacity: 0;
}
25% {
opacity: 1;
}
to {
opacity: 0;
}
}
.bubbles-date-group {
position: relative;
/* .sticky_sentinel {
visibility: visible;
background: #000;
} */
.sticky_sentinel--top {
/* Adjust the height and top values based on your on your sticky top position.
e.g. make the height bigger and adjust the top so observeHeaders()'s
IntersectionObserver fires as soon as the bottom of the sentinel crosses the
top of the intersection container. */
height: $bubble-margin;
top: 0;
}
// .sticky_sentinel--bottom {
// /* Height should match the top of the header when it's at the bottom of the
// intersection container. */
// height: 1px;
// bottom: 0;
// }
}
.bubble {
position: relative;
z-index: 1;
margin: 0 auto $bubble-margin;
user-select: none;
display: flex;
flex-wrap: wrap;
//flex-direction: column; // fix 'Unread messages', still need to refactor it
--background-color: #fff;
--accent-color: #{$color-blue};
--secondary-color: #{$color-gray};
&.is-highlighted, &.is-selected, /* .bubbles.is-selecting */ & {
&:after {
position: absolute;
left: -50%;
/* top: 0;
bottom: 0; */
top: -#{$bubble-margin / 2};
bottom: -#{$bubble-margin / 2};
content: " ";
z-index: -1;
}
}
/* &.is-highlighted, &.is-selected {
&:not(.is-group-last):after {
height: calc(100% + #{$bubble-margin / 2}) !important;
}
& + &:not(.is-group-last) {
&:after {
top: .125rem !important;
height: calc(100% - #{$bubble-margin / 2}) !important;
}
}
} */
// ! if turn this on, there will be an empty space
/* &.is-highlighted, &.is-selected {
&.is-group-last:after {
bottom: #{$bubble-margin / 2} !important;
}
} */
&.is-highlighted:after {
//background-color: rgba(0, 132, 255, .3);
background-color: var(--message-highlightning-color);
body:not(.animation-level-0) & {
animation: bubbleSelected 2s linear;
}
}
&.is-first-unread {
@include respond-to(handhelds) {
max-width: unset;
}
&:before {
content: "Unread messages";
height: 30px;
margin-bottom: $bubble-margin;
margin-left: -50%;
margin-right: -50%;
text-align: center;
color: #538BCC;
line-height: 2.1;
font-weight: 500;
font-size: 15px;
background-color: rgba(255, 255, 255, .95);
z-index: 2;
position: relative;
}
&.is-highlighted, &.is-selected {
&:after {
top: calc(#{$bubble-margin / 2} + 30px);
}
}
}
&.is-selected {
&:after {
background-color: var(--message-highlightning-color);
}
body:not(.animation-level-0) & {
&:after {
animation: fade-in-opacity .2s linear forwards;
}
&.backwards:after {
animation: fade-in-backwards-opacity .2s linear forwards;
}
}
}
//&.is-highlighted:after, &.is-first-unread:before, &.is-selected:after {
&:after, &:before {
width: 200%;
display: block;
}
&.is-multiple-documents {
&:before, &:after {
display: none;
}
}
&.channel-post {
.message.poll-message {
.time {
position: unset;
}
}
poll-element .poll-footer {
height: auto;
}
}
&-select-checkbox {
z-index: 3;
position: absolute;
left: 0;
display: flex;
margin: 0;
.checkbox-box-background {
background-color: #61c642;
}
.checkbox-box-check {
use {
stroke-width: 3.5;
}
}
}
& > &-select-checkbox {
//bottom: .75rem; // * by avatar
bottom: .3125rem; // * by middle of one-line message
/* left: 0;
top: 50%;
transform: translateY(-50%); */
.checkbox-box {
box-shadow: 0px 0px 3px 0px rgba(0, 0, 0, .4);
}
}
.bubbles.is-selecting &:not(.is-album) {
.audio, .document, .attachment, poll-element {
pointer-events: none !important;
}
}
// ! hide context menu for media on android
.bubbles.is-selecting & {
img, video {
pointer-events: none;
}
}
&-content {
//min-width: 60px;
min-width: 56px;
max-width: 100%;
border-radius: 12px;
box-shadow: 0 1px 2px 0 rgba(16, 35, 47, .15);
position: relative;
display: flex;
flex-direction: column-reverse;
/* font-size: 0; */
width: max-content;
height: fit-content;
z-index: 2;
user-select: none;
background-color: var(--background-color);
body.animation-level-0 & {
transition: none;
}
/* html.no-touch .bubbles:not(.is-selecting) &,
html.is-touch .bubbles.is-selecting:not(.no-select) & {
user-select: text;
} */
html.no-touch .bubbles:not(.is-selecting) &,
html.is-touch body:not(.no-select) .bubbles.is-selecting & { // * need no-select on body because chat-input transforms in channels
user-select: text;
}
}
/* &.with-beside-button &-content {
@include respond-to(handhelds) {
max-width: calc(100% - var(--message-handhelds-margin)) !important;
}
} */
&.service {
//padding: 1rem 0;
//padding: $bubble-margin 0;
max-width: var(--messages-container-width);
.bubble-content {
/* justify-self: center; */
margin: 0 auto;
max-width: 100%;
box-shadow: none;
}
}
&.is-date {
position: sticky;
top: $bubble-margin;
padding-bottom: $bubble-margin;
//z-index: 3;
z-index: 2;
transition: opacity .3s ease;
opacity: .99999; // for safari
pointer-events: none;
&:before, &:after {
display: none;
}
body.animation-level-0 & {
transition: none;
}
&.is-sticky {
opacity: .00001; // for safari
.bubbles-inner:not(.is-scrolling) & {
//transition-delay: 1.35s;
.bubble-content {
cursor: default;
}
}
/* .bubbles-inner.is-scrolling & {
transition-delay: 0;
} */
}
.chat.type-chat & .bubble-content,
.chat.type-discussion & .bubble-content {
cursor: pointer;
pointer-events: all;
}
}
&-beside-button {
//opacity: 0;
//transition: .2s opacity;
position: absolute;
right: -46px;
bottom: 0;
width: 38px;
height: 38px;
font-size: 1.5rem;
align-items: center;
display: flex;
justify-content: center;
color: #fff;
border-radius: 50%;
//background: rgba(0, 0, 0, .16);
background: var(--message-highlightning-color);
cursor: pointer;
}
.forward {
svg {
width: 22px;
height: 22px;
}
}
/* &.is-group-first {
padding-top: 10px;
} */
&.is-group-last {
margin-bottom: #{$bubble-margin * 2};
&:after {
bottom: -#{$bubble-margin};
}
/* > .bubble-select-checkbox {
bottom: .3125rem;
} */
.bubbles-inner.is-chat &.is-in {
> .bubble-select-checkbox {
bottom: .1875rem;
}
}
}
&.is-group-first {
&:after {
top: -#{$bubble-margin};
}
}
&:not(.forwarded) {
&:not(.is-group-first) {
.bubble-content > .name, .document-wrapper > .name {
display: none;
}
&:not(.is-message-empty):not(.is-reply) .message {
padding-top: 6px;
}
}
}
&:not(.is-group-last) .bubble-content-wrapper > .user-avatar {
display: none;
}
&:not(.hide-name) {
.audio {
margin: 4px 0;
}
}
/* .goto-original {
opacity: 1;
} */
.reply {
width: auto;
.reply-content {
height: auto;
min-height: 32px;
}
}
&.photo, &.video {
.bubble-content {
width: min-content;
}
.web {
/* width: max-content; */ // commented 10.02.2020
/* width: min-content; */
max-width: 100%;
}
}
&.webpage {
.preview-with-document {
margin-bottom: 0 !important;
}
.document {
height: 3.375rem;
@include respond-to(handhelds) {
padding-left: 44px;
}
}
}
.preview-resizer {
display: flex;
}
img.emoji {
height: 18px;
width: 18px;
margin: 0 .05rem;
vertical-align: bottom;
}
.thumbnail {
position: absolute;
}
&.emoji-big {
font-size: 0;
.bubble-content {
background: none!important;
box-shadow: none;
line-height: 1;
user-select: none;
}
&:not(.sticker) .attachment {
padding-top: .5rem;
padding-bottom: 1.5rem;
//max-width: fit-content!important;
max-height: fit-content!important;
span.emoji {
height: auto;
width: auto;
}
}
&.sticker .bubble-content {
max-width: 140px !important;
max-height: 140px !important;
}
}
&.emoji-1x .attachment {
font-size: 96px;
img.emoji {
height: 64px;
width: 64px;
}
}
&.emoji-2x .attachment {
font-size: 64px;
img.emoji {
height: 48px;
width: 48px;
}
}
&.emoji-3x .attachment {
font-size: 52px;
img.emoji {
height: 32px;
width: 32px;
}
}
&.sticker, &.round, &.emoji-big {
.bubble-content {
cursor: pointer;
background: none!important;
box-shadow: none;
/* max-width: 300px;
max-height: 300px; */
}
img {
object-fit: contain;
}
&.is-message-empty .message {
//background-color: rgba(0, 0, 0, .23);
background: var(--message-highlightning-color);
}
/* &.is-message-empty .message {
display: none;
}
&.is-message-empty:hover .message {
display: block;
} */
}
&.sticker {
.attachment {
border-radius: 0;
z-index: 1;
}
.bubble-content {
max-width: 200px !important;
max-height: 200px !important;
}
}
&.round {
.attachment {
max-width: 200px !important;
max-height: 200px !important;
.media-photo, .media-video {
border-radius: 50%;
pointer-events: none;
}
}
}
&:not(.is-message-empty) .attachment/* ,
&:not(.is-message-empty).is-reply .attachment */ {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
&:not(.emoji-big) .attachment {
font-size: 0;
}
.attachment {
max-width: 100%;
border-radius: inherit;
overflow: hidden;
user-select: none;
//-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); // fix safari overflow
display: flex; // lol
justify-content: center;
position: relative;
cursor: pointer;
img, video {
max-width: 100%;
}
.download {
position: absolute;
left: 0;
top: 0;
height: 100%;
width: 100%;
cursor: pointer;
display: flex;
justify-content: center;
align-items: center;
span {
background-color: var(--message-time-background);
font-size: 23px;
color: #fff;
text-align: center;
}
}
.download, .preloader-container {
& ~ .video-play {
display: none;
}
}
}
.preloader-container {
z-index: 2;
}
&:not(.sticker) {
.attachment {
max-width: unquote('min(480px, 100%)');
max-height: unquote('min(480px, 100%)');
width: max-content;
}
}
img:not(.emoji), video {
/* object-fit: contain; */
object-fit: cover;
width: 100%;
height: 100%;
}
html.is-safari &:not(.round) {
img:not(.emoji), video {
border-radius: inherit;
}
}
&.is-album {
.attachment {
max-width: unquote('min(451px, 100%)');
max-height: none;
//overflow: hidden;
}
}
.album-item {
background-color: rgba(0, 0, 0, .06);
max-width: 100%;
cursor: pointer;
position: absolute;
overflow: hidden;
/* .bubbles.is-selecting & {
-webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); // fix safari overflow
} */
img, video {
border-radius: inherit;
}
&-media { // * fix overflow for handhelds
border-radius: inherit;
}
.bubble-select-checkbox {
bottom: auto !important;
left: auto;
right: .5rem;
top: .5rem;
}
&.is-selected {
border-radius: 0;
.album-item-media {
transform: scale(1);
}
&.animating {
transition: border-radius var(--layer-transition);
.album-item-media {
transition: transform var(--layer-transition), border-radius var(--layer-transition);
}
}
&:not(.backwards) {
.album-item-media {
transform: scale(.883333);
}
&, .album-item-media {
//border-radius: .5rem;
border-radius: 0;
}
}
}
}
.web {
padding-top: 1px;
margin: 4px 0 -5px 1px;
// margin-bottom: 5px;
max-width: 100%;
overflow: hidden;
.preview {
max-height: unquote('min(400px, 100%)');
max-width: unquote('min(480px, 100%)');
border-radius: 4px;
margin-bottom: 3px;
overflow: hidden;
user-select: none;
cursor: pointer;
position: relative;
width: max-content;
img, video {
max-width: 100%;
}
}
.title {
letter-spacing: -.2px;
line-height: 1.2;
font-weight: 500 !important;
}
.name {
letter-spacing: -.3px;
display: block;
font-size: calc(1rem - 1px);
@include hover() {
text-decoration: underline;
}
}
.text {
overflow: hidden;
text-overflow: ellipsis;
line-height: 1.2;
letter-spacing: -.3px;
margin-top: 2px;
font-size: var(--messages-secondary-text-size);
}
.quote {
// padding-left: .5rem;
padding-left: .55rem;
max-width: 100%;
overflow: hidden;
width: 100%;
}
}
.web, .reply {
font-size: var(--messages-secondary-text-size);
.name, .reply-title {
font-weight: 500 !important;
display: inline!important;
}
}
&.is-square-photo {
.bubble-content {
width: fit-content;
}
.web {
.quote {
display: flex;
justify-content: space-between;
}
.preview-resizer {
order: 2;
flex-shrink: 0;
max-width: 5rem;
max-height: 5rem;
.preview {
max-width: unquote('min(5rem, 100%)');
max-height: unquote('min(5rem, 100%)');
}
}
.quote-text {
order: 1;
padding-right: 1rem;
}
}
}
&.is-vertical-photo {
.bubble-content {
width: fit-content;
}
}
.reply {
padding: 4px;
margin: 0 4px 6px 4px;
cursor: pointer;
border-radius: 4px;
&-content {
max-width: 300px;
}
}
&.is-reply {
&.emoji-big, &.sticker {
.reply {
padding: 10px;
border-radius: 12px;
border: 1px solid #ccc;
max-width: 300px;
height: 54px;
max-height: 54px;
white-space: nowrap;
position: absolute;
top: 0;
margin-bottom: 0;
@include respond-to(handhelds) {
padding: 8px 6px 8px 8px;
max-width: 94px;
}
.reply-content {
margin-top: 0;
}
}
}
.reply-content {
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
}
.message {
font-size: var(--messages-text-size);
padding: 0 9px 6px 9px;
max-width: 100%;
color: #000;
line-height: 1.3125; // 21 / 16
word-break: break-word;
white-space: pre-wrap; // * fix spaces on line begin
position: relative;
&:last-child {
padding-top: 6px;
}
}
.audio {
padding-right: 2px;
$parent: ".audio";
#{$parent} {
&-title {
font-weight: 500;
}
&-ico {
font-size: 0;
}
}
@include respond-to(handhelds) {
height: 42px;
padding-left: 47px;
.audio-details {
margin-top: 2px;
margin-bottom: 0;
}
.audio-subtitle {
margin-top: -1px;
}
}
}
// all for audio (not voice)
.message.audio-message {
min-width: 335px;
max-width: 335px !important;
@include respond-to(handhelds) {
min-width: 280px;
max-width: 300px !important;
}
}
.message.audio-message, .message.voice-message {
padding: 8px !important;
//padding: 4px 6px 4px 8px !important;
}
.message.contact-message {
min-width: 200px;
padding-left: 8px;
.contact {
display: flex;
padding: 2px 0;
cursor: pointer;
&-avatar {
color: #fff;
}
&-details {
padding-left: 12px;
margin-top: 8px;
display: flex;
flex-direction: column;
}
&-name {
font-size: 1rem;
font-weight: 500;
}
&-number {
font-size: 14px;
line-height: 1.4;
}
}
}
.message.poll-message {
max-width: 400px;
}
.message.document-message {
max-width: 325px !important;
.document {
padding-left: 66px;
height: 58px;
@include respond-to(handhelds) {
padding-left: 44px; //было 44
}
&-name {
line-height: 1.4;
margin-top: 1px;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
.document-wrapper {
display: flex;
flex-direction: column-reverse;
.document-message {
margin-top: .25rem;
}
}
.document-container .time.tgico {
position: relative !important;
height: 0px !important;
visibility: hidden !important;
.inner {
visibility: hidden !important;
}
}
&.is-multiple-documents {
/* .bubble-content {
position: unset;
} */
.message {
padding: 0 !important;
border-radius: inherit;
}
.document-container {
position: relative;
border-radius: inherit;
.document-selection {
position: absolute;
top: 0;
bottom: 0;
z-index: -1;
width: 200vw;
left: -75vw;
}
&.is-highlighted, &.is-selected {
.document-wrapper {
&:before {
content: " ";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
background-color: rgba(0, 0, 0, .06);
border-radius: inherit;
}
}
}
&.is-highlighted {
.document-selection {
background-color: var(--message-highlightning-color);
}
body:not(.animation-level-0) & {
.document-selection, .document-wrapper:before {
animation: bubbleSelected 2s linear;
}
}
}
&.is-selected {
.document-selection {
background-color: var(--message-highlightning-color);
}
body:not(.animation-level-0) & {
.document-selection, .document-wrapper:before {
animation: fade-in-opacity .2s linear forwards;
}
&.backwards {
.document-selection, .document-wrapper:before {
animation: fade-in-backwards-opacity .2s linear forwards;
}
}
}
}
.bubble-select-checkbox {
left: 2rem;
top: 2rem;
width: 1.5rem;
height: 1.5rem;
background: #fff;
border-radius: 50%;
@include respond-to(handhelds) {
left: 20px;
top: 25px;
}
&:before {
content: " ";
position: absolute;
width: 1.25rem;
height: 1.25rem;
left: .125rem;
top: .125rem;
border: 2px solid #c4c9cc;
border-radius: inherit;
}
}
&:first-of-type {
.document-selection {
top: -#{$bubble-margin / 2}; // * padding inner + half padding outer
}
.document-wrapper {
padding-top: .5rem;
border-top-left-radius: inherit;
border-top-right-radius: inherit;
}
}
&:last-of-type {
.document-selection {
bottom: -#{$bubble-margin / 2};
}
.document-wrapper {
padding-bottom: .5rem;
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
}
}
}
&.is-group-first .document-container {
&:first-of-type {
.document-selection {
top: -$bubble-margin;
}
}
}
&.is-group-last .document-container {
&:last-of-type {
.document-selection {
bottom: -$bubble-margin;
}
}
}
.document {
height: 54px !important;
}
.document-wrapper {
background-color: #fff;
padding: .25rem .5rem;
> .name {
padding: 0 0 .25rem 0;
margin-top: -.25rem;
}
}
// * if have name
/* .bubbles-inner.is-chat &.is-in.is-group-first {
.document-container:first-of-type {
.document-selection {
top: -30px;
}
.document-wrapper {
border-top-left-radius: 0;
border-top-right-radius: 0;
&:before {
top: -26px;
border-top-left-radius: $border-radius-big;
border-top-right-radius: $border-radius-big;
}
}
}
} */
}
.message {
&.document-message, &.audio-message, &.voice-message, &.poll-message, &.contact-message {
.time {
position: absolute;
right: 0;
bottom: 0;
}
}
}
.message.voice-message {
// ! SAFARI FIX BLINK ON SELECTION TRANSFORM !
overflow: visible !important;
}
&.is-message-empty {
.message {
position: absolute;
/* position: relative;
width: max-content; */
bottom: .1rem;
right: .2rem;
border-radius: 12px;
background-color: var(--message-time-background);
padding: 0 .2rem;
z-index: 2;
.time {
margin-left: 0;
color: #fff;
visibility: visible;
display: flex;
align-items: center;
padding: 0 2.5px;
line-height: 18px;
pointer-events: all; // show title
white-space: nowrap;
height: 18px;
.inner {
display: none;
}
}
}
&.with-replies:not(.sticker) .message {
bottom: 55px;
}
&.sticker, &.with-replies.round, &.emoji-big {
.message {
bottom: 0;
}
}
}
&.with-replies .attachment {
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
.time {
visibility: hidden; // * can't use color transparent here, because in name can be emoji
font-size: 12px;
user-select: none;
line-height: 1;
vertical-align: middle;
pointer-events: none; // do not show title
display: inline-flex;
z-index: 1;
cursor: default;
/* display: inline-flex;
align-items: center; */
height: 12px;
i {
font-size: 1.15rem;
margin-right: .4rem;
}
&-icon {
margin-left: 2px;
}
i.edited {
overflow: visible;
font-size: .8rem;
}
.inner {
pointer-events: all;
position: absolute;
bottom: 0;
right: 0;
display: flex;
align-items: center;
line-height: 1;
padding: inherit;
white-space: nowrap;
height: 12px; // * as font-size
visibility: visible;
}
.tgico-pinnedchat:before {
font-weight: bold;
}
}
.video-time {
position: absolute;
top: 3px;
left: 3px;
border-radius: 12px;
background-color: var(--message-time-background);
padding: 0px 6px 0px 6px;
z-index: 2;
font-size: 12px;
color: white;
display: flex;
align-items: center;
cursor: pointer;
user-select: none;
height: 1.125rem;
&.can-autoplay:after {
content: $tgico-nosound;
// * same as .iconVolume
padding: 0 1px 0 3px;
font-size: 1.25rem;
color: #fff;
}
}
pre {
display: inline;
margin: 0;
}
.video-play {
background-color: var(--message-time-background);
color: #fff;
text-align: center;
font-size: 2.125rem;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
z-index: 1;
}
.ckin__player.circle {
z-index: 1;
}
&:not(.forwarded).hide-name, &.emoji-big {
.name {
display: none;
}
}
.name {
cursor: pointer;
user-select: none;
}
&-content > .name, .document-wrapper > .name {
/* padding: .2675rem 9px 0 9px; */
/* padding: .32rem 9px 0 9px; */
padding: 5px 9px 0 9px;
font-weight: 500 !important;
/* padding-bottom: 4px; */
color: $color-blue;
font-size: .9rem;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
order: 1;
//width: max-content;
//white-space: nowrap;
}
&:not(.is-group-first) .bubble-content > .name .name {
display: none;
}
&:not(.webpage) {
&.photo, &.video {
.bubble-content > .name {
//padding-bottom: .2675rem;
padding-bottom: 6px;
}
&:not(.is-message-empty) .message {
//padding-top: .2675rem;
padding-top: 6px;
}
}
}
&:not(.webpage):not(.is-album):not(.sticker):not(.round):not(.emoji-big) .attachment {
background-color: #000;
}
&.hide-name:not(.is-reply):not(.is-message-empty) .message {
//padding-top: .2675rem;
padding-top: 6px;
}
&:not(.sticker):not(.emoji-big) {
&.hide-name, &:not(.is-group-first)/* , &.is-out */ {
.reply {
margin-top: 6px;
}
}
}
&.can-have-tail.is-group-last .bubble-content:after {
position: absolute;
//bottom: 0;
width: 11px;
height: 20px;
background-repeat: no-repeat no-repeat;
content: '';
background-size: 11px 20px;
background-position-y: 1px;
z-index: -2;
}
&.photo, &.video {
&.is-message-empty.is-group-last:not(.with-replies) {
.bubble-content:after {
display: none;
}
}
}
&.is-message-empty.is-group-last.with-media-tail {
.bubble-content:after {
display: none;
}
.attachment {
overflow: visible;
}
}
&__media-container {
cursor: pointer;
border-radius: inherit;
}
audio-element, poll-element {
white-space: normal; // * fix due to .message white-space prewrap
}
.replies {
user-select: none;
.rp {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
overflow: hidden;
border-radius: inherit;
cursor: pointer;
}
&-beside {
flex-direction: column;
width: 36px;
min-height: 36px;
height: auto;
max-height: 52px;
bottom: 47px; // * forward button + 9px margin
border-radius: 2rem;
right: -44px; // * because not 38px, as forward button
padding: 5.5px 0;
.tgico-commentssticker {
font-size: 23px;
}
&-text {
font-size: .75rem;
}
}
&-footer {
height: 51px;
border-top: 2px solid #e6e7ea;
position: relative;
display: flex;
align-items: center;
padding: 0 .5rem;
border-bottom-left-radius: inherit;
border-bottom-right-radius: inherit;
color: $color-blue;
min-width: 15rem;
.tgico-comments, .tgico-next {
font-size: 1.4375rem;
}
&-text {
font-weight: 500;
font-size: 15px;
margin-left: 9px;
display: flex;
align-items: center;
color: #1f88e3;
}
&-avatars {
display: flex;
flex-direction: row-reverse;
avatar-element {
width: 34px;
height: 34px;
border: 2px solid #fff;
cursor: pointer;
z-index: 0; // * fix border blinking
&:not(:first-child) {
margin-right: -14px;
}
}
}
.tgico-next {
position: absolute;
right: 4px;
}
&.is-unread {
.replies-footer-text {
&:after {
content: " ";
background-color: $color-blue;
width: .5rem;
height: .5rem;
margin-left: .75rem;
border-radius: 50%;
}
}
}
}
}
&.is-thread-starter {
.user-avatar {
display: none;
}
&.is-in .bubble-content-wrapper {
margin-left: 0;
}
}
}
// * fix scroll with only 1 bubble
.bubbles-date-group:last-of-type {
.bubble:last-of-type {
margin-bottom: $bubble-margin;
/* &:after, .document-container:last-of-type .document-selection {
bottom: 0 !important;
} */
}
}
.bubble-content-wrapper {
transition: transform var(--layer-transition), opacity var(--layer-transition);
transform: scale(1) translateX(0);
transform-origin: center;
opacity: 1;
&.zoom-fade /* .bubble-content */ {
//transform: scale(.8) translateZ(0);
transform: scale3d(.8, .8, 1) translateX(0);
//transform: scale(.8) translateX(0);
opacity: 0;
}
@include respond-to(not-handhelds) {
max-width: 85%;
}
@include respond-to(handhelds) {
max-width: calc(100% - var(--message-handhelds-margin));
}
> .user-avatar {
position: absolute;
margin-left: -45px;
//left: -3rem; # DO JS3
bottom: 0;
cursor: pointer;
.bubbles.is-selecting & {
transform: scale3d(1, 1, 1);
transform-origin: bottom;
transition: transform var(--layer-transition);
body.animation-level-0 & {
transition: none;
}
}
.bubbles.is-selecting:not(.backwards) & {
transform: scale3d(.76, .76, 1);
}
// @include respond-to(handhelds) {
// left: -45px;
// }
}
}
.bubble.service {
align-self: center;
justify-content: center;
.bubble-content {
background-color: transparent;
}
.service-msg {
color: #fff;
//background-color: rgba(0, 0, 0, .24);
background-color: var(--message-highlightning-color);
font-size: .9375rem;
padding: 0 .5rem;
line-height: 1.5rem;
border-radius: .75rem;
user-select: none;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
i {
font-style: normal;
}
a {
color: #fff;
}
a, .peer-title {
&:hover {
text-decoration: underline;
}
}
.peer-title {
cursor: pointer;
//margin-right: 5px;
}
img.emoji {
margin-bottom: 3px;
}
}
}
.bubble.is-in {
.bubble-content {
&, .poll-footer-button {
border-radius: 6px 12px 12px 6px;
}
}
&.is-group-first {
.bubble-content, .poll-footer-button {
border-top-left-radius: 12px;
}
}
&.is-group-last {
&.can-have-tail {
.bubble-content, .poll-footer-button {
border-bottom-left-radius: 0;
}
.bubble-content:after {
margin-left: -8.4px;
background-image: url('assets/img/msg-tail-left.svg');
}
}
&:not(.can-have-tail) {
.bubble-content, .poll-footer-button {
border-bottom-left-radius: 12px;
}
}
}
&.forwarded .attachment,
&.is-reply .attachment,
&:not(.hide-name).is-message-empty .attachment/* ,
&:not(.hide-name):not(.sticker) .attachment */ {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
a {
color: $color-blue;
}
.quote {
@include hover() {
background-color: $light;
}
}
&.is-reply {
&.emoji-big, &.sticker {
.reply {
left: calc(100% + 10px);
background-color: #fff;
@include respond-to(handhelds) {
left: calc(100% + 1px);
}
}
}
}
.quote {
border-left: 2px $color-blue solid;
}
.quote .name, .reply-title/* , .reply i */ {
color: $color-blue;
}
.time {
margin-left: -1px;
padding-right: 8px;
.inner {
color: #a3adb6;
margin-bottom: 4px;
}
}
&.is-message-empty.is-group-last {
/* &:not(.with-media-tail):not(.with-replies) {
&.photo, &.video {
.bubble-content {
border-bottom-left-radius: 6px;
}
}
} */
&.with-media-tail {
.attachment {
border-bottom-left-radius: 0;
}
.bubble__media-container {
margin-left: -9px;
}
}
}
.audio-subtitle, .contact-number, .audio-time {
color: #707579 !important;
}
/* .poll {
&-answer-selected {
&:before {
margin-left: -1px;
}
}
} */
}
.bubble.is-out {
flex-direction: row-reverse;
--background-color: #eeffde;
.bubble-content {
&, .poll-footer-button {
border-radius: 12px 6px 6px 12px;
}
.name {
color: #50af4f;
}
}
/* .bubble-content-wrapper {
> .user-avatar {
left: auto;
right: -2.5rem;
}
} */
&.is-group-first {
.bubble-content, .poll-footer-button {
border-top-right-radius: 12px;
}
}
&.is-group-last {
&.can-have-tail {
.bubble-content, .poll-footer-button {
border-bottom-right-radius: 0;
}
.bubble-content:after {
right: -8.4px;
background-image: url('assets/img/msg-tail-right.svg');
}
}
&:not(.can-have-tail) {
.bubble-content, .poll-footer-button {
border-bottom-right-radius: 12px;
}
}
}
&.forwarded .attachment,
&.is-reply .attachment {
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.quote {
@include hover() {
background-color: rgba($color-green, .12);
}
}
&.is-reply {
&.emoji-big, &.sticker {
.web, .reply {
background-color: #eeffde;
right: calc(100% + 10px);
border-color: rgba($color-green, .12);
}
}
}
.quote {
border-left: 2px $darkgreen solid;
}
.reply-border {
background-color: $darkgreen;
}
.quote .name, .reply-title, .reply i {
color: $darkgreen;
}
.time {
padding-right: 4px;
margin-left: -3px;
.inner {
color: $darkgreen;
bottom: 4px;
}
&:after, .inner:after {
font-size: 19px;
//vertical-align: middle;
margin-left: 1px;
line-height: 16px; // of message
}
}
/* &.is-message-empty .time:after {
margin-bottom: 1px;
} */
&.forwarded {
.name {
color: $darkgreen;
}
}
&.is-read {
.time:after, .time .inner:after {
content: $tgico-checks;
}
}
&.is-sent {
.time:after, .time .inner:after {
content: $tgico-check;
}
}
&.is-sending {
.time:after, .time .inner:after {
content: $tgico-sending;
}
}
/* &.is-reply .name {
display: none;
} */
.document-ico:after {
border-top-color: #eeffde;
border-right-color: #eeffde;
}
.audio {
&-waveform {
rect {
fill: #B8DDA9;
&.active {
fill: #68AB5A !important;
}
}
}
&-time, &-subtitle {
color: #68AB5A;
}
&-toggle, &-download {
background-color: #4FAE4E;
}
&-download:empty {
display: none;
}
&.is-unread {
rect {
//fill: #68AB5A;
fill: #B8DDA9;
}
.audio-time:after {
background-color: #68AB5A;
}
}
}
&.is-message-empty.is-group-last {
/* &:not(.with-media-tail) {
&.photo, &.video {
.bubble-content {
border-bottom-right-radius: 6px;
}
}
} */
&.with-media-tail {
.attachment {
border-bottom-right-radius: 0;
}
.bubble__media-container {
margin-right: -9px;
}
}
}
.audio-subtitle, .contact-number, .document-size {
color: #4FAE4E;
}
poll-element {
.poll {
&-desc, &-votes-count {
color: $color-text-green;
}
&-line use {
stroke: #4fae4e;
}
&-answer-selected {
background-color: #4fae4e;
}
html.no-touch &-answer:hover {
.animation-ring {
background-color: rgba(79, 174, 78, .08);
}
}
&-footer-button, &-hint {
color: #4fae4e;
}
}
.progress-ring__circle {
stroke: #4fae4e;
}
}
&.is-sending poll-element {
pointer-events: none;
}
.audio:not(.is-voice) {
.progress-line {
&__loaded {
background-color: #90e18d !important;
}
&__filled {
background-color: #47aa41;
}
&__seek {
--thumb-color: #47aa41;
background-color: rgba(124, 195, 107, .52);
}
}
}
.bubble-beside-button {
right: auto;
left: -46px;
//transform: scaleX(-1);
&.goto-original {
transform: rotate(180deg);
}
}
&.is-multiple-documents {
.document-container {
.bubble-select-checkbox {
background-color: #eeffde;
&:before {
border-color: #9ed695;
}
.checkbox-box-border {
border-color: #eeffde;
}
}
/* &:after {
left: -50vw;
} */
}
.document-wrapper {
background-color: #eeffde;
}
}
}
.reply-markup {
width: 100%;
&-row {
margin-top: 5px;
overflow: hidden;
height: 40px;
display: flex;
&:last-child {
border-bottom-left-radius: $border-radius-big;
border-bottom-right-radius: $border-radius-big;
}
}
&-button {
display: flex;
justify-content: center;
align-items: center;
border-radius: 6px;
//background-color: rgba(0, 0, 0, .23);
background: var(--message-highlightning-color);
z-index: 2;
font-size: 14px;
user-select: none;
text-align: center;
color: white !important;
outline: none;
border: none;
width: 100%;
cursor: pointer;
position: relative;
transition: background-color .35s ease;
overflow: hidden;
@include hover() {
background-color: rgba(0, 0, 0, .06);
}
& + & {
margin-left: 5px;
}
&.is-link:before {
content: $tgico-arrow-next;
position: absolute;
right: 2px;
top: 2px;
display: block;
transform: rotate(-45deg);
}
/* img.emoji {
vertical-align: middle !important;
} */
}
}
poll-element {
margin-top: -1px;
display: block;
//min-width: 280px;
min-width: 330px;
user-select: none;
@include respond-to(handhelds) {
min-width: 240px;
}
&:not(.is-closed):not(.is-voted) .poll-answer {
cursor: pointer;
}
.poll {
&-title {
font-weight: 500;
@include respond-to(handhelds) {
max-width: 88%;
white-space: normal;
}
}
&-desc {
font-size: 14px;
color: #707579;
margin-top: 2px;
margin-bottom: 5px;
display: flex;
position: relative;
// @include respond-to(handhelds) {
// max-width: 280px;
// }
}
&-type {
margin-top: 2px;
}
&-hint {
position: absolute;
font-size: 1.5rem;
top: -4px;
right: 2px;
color: #50a2e9;
cursor: pointer;
transform: scale(1);
transition: transform .2s ease;
body.animation-level-0 & {
transition: none;
}
// @include respond-to(handhelds) {
// right: 16px;
// }
&.active {
transform: scale(0);
pointer-events: none;
}
}
&-send-vote {
cursor: default;
}
&-avatars {
display: flex;
margin-left: 18px;
}
&-answer {
display: flex;
position: relative;
padding-bottom: 20px;
padding-left: 28px;
margin-top: 1px;
&-text {
margin-top: 6px;
margin-left: 12px;
}
&-percents {
position: absolute;
left: 0;
top: 0;
opacity: 0;
font-weight: 500;
margin-top: 7px;
font-size: 14px;
transition: .34s opacity;
margin-left: -9px;
text-align: right;
width: 40px;
}
&-selected {
position: absolute;
bottom: 1px;
left: 15px;
color: #fff;
background: #50a2e9;
border-radius: 50%;
height: 16px;
width: 16px;
font-weight: bold;
font-size: .75rem;
opacity: 0;
animation: fade-in-opacity .1s ease forwards;
animation-direction: reverse;
animation-delay: .24s;
display: flex;
align-items: center;
justify-content: center;
&:before {
content: $tgico-check;
//margin-left: 1px;
font-weight: bold;
}
}
@include hover() {
.animation-ring {
visibility: visible;
transform: scale(1);
}
}
&.is-voting {
.progress-ring__circle {
stroke-dashoffset: -19.792;
animation: pollAnswerRotate .65s linear infinite;
}
}
&:not(.is-correct):not(.is-chosen) {
.poll-answer-selected {
display: none;
}
}
// Multiple answers
&.is-chosing {
.poll-answer-selected {
opacity: 1;
}
& ~ .poll-footer {
.poll-send-vote {
cursor: pointer;
}
}
}
}
&-votes-count {
color: #707579;
font-size: 14px;
padding-top: 1px;
}
&-line {
height: 35px;
position: absolute;
left: 10px;
bottom: 2px;
transition: stroke-dashoffset .34s linear, stroke-dasharray .34s linear;
stroke-dashoffset: 0;
stroke-dasharray: 0, 485.9;
use {
stroke-width: 4px;
stroke-linecap: round;
stroke: #50a2e9;
fill: none;
}
}
&-footer {
text-align: center;
margin-top: 7px;
height: 27px;
}
&-footer-button {
cursor: pointer;
position: absolute;
left: 0;
margin-top: -7px;
width: 100%;
height: 41px;
color: #50a2e9;
//text-transform: uppercase;
font-weight: 500;
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
//border-bottom-left-radius: 6px;
//border-bottom-right-radius: 12px;
font-size: 1rem;
line-height: 37px;
overflow: hidden;
}
&-quiz-timer {
width: 32px;
height: 32px;
stroke: #a3adb6;
transform: rotate(270deg);
top: -7px;
fill: none;
position: absolute;
right: -2px;
stroke-linecap: round;
}
&-time {
font-size: 12px;
font-weight: 500;
position: absolute;
right: 27px;
color: #a3adb6;
}
}
&.is-quiz .poll {
&-answer {
&.is-chosen:not(.is-correct) {
use {
stroke: #DF3F40;
}
.poll-answer-selected {
background: #DF3F40;
//line-height: 16px;
&:before {
content: $tgico-close;
font-size: 12px;
//margin-left: 2.5px;
}
}
}
}
/* &-line {
use {
}
} */
}
avatar-element {
border: 1px solid #fff;
cursor: pointer;
width: 18px;
height: 18px;
}
.circle-hover {
display: flex;
justify-content: center;
align-items: center;
width: 34px;
height: 34px;
position: absolute;
left: -1px;
top: -1px;
transform: scale(1);
transition: .1s transform;
.poll-answer-selected {
display: flex!important;
opacity: 0;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
width: 20px;
height: 20px;
font-size: 20px;
line-height: 16px;
animation: none;
transition: opacity .2s ease;
}
}
.animation-ring {
display: block;
border-radius: 50%;
height: 34px;
width: 34px;
transition: transform .12s;
background-color: #f4f4f4;
transform: scale(.1);
visibility: hidden;
}
.progress-ring {
height: 26px;
width: 26px;
top: unset;
left: unset;
&__circle {
transform-origin: center;
transform: rotate(-90deg);
transition: stroke-dashoffset .15s;
stroke-dasharray: 56.5487, 56.5487;
stroke-dashoffset: 0;
stroke-opacity: 1;
stroke-width: 2;
stroke: #dadbdc;
fill: transparent;
}
}
&.is-voted {
.circle-hover, .animation-ring {
transform: scale(0);
}
.poll-answer-percents {
opacity: 1;
}
.poll-answer-selected {
animation-direction: normal;
}
}
&.is-retracting {
.circle-hover {
transition-delay: .24s;
}
.animation-ring {
transition-delay: .22s;
}
}
}
@keyframes pollAnswerRotate {
to {
transform: rotate(270deg);
}
}