@ckeditor/ckeditor5-real-time-collaboration
Version:
A set of CKEditor 5 features enabling real-time collaboration within the editor using CKEditor Cloud Services.
329 lines (282 loc) • 7.94 kB
CSS
/**
* @license Copyright (c) 2003-2026, CKSource Holding sp. z o.o. All rights reserved.
* For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options
*/
.ck .ck-user__marker-dot{
left:50%;
top:calc(( var(--ck-user-dot-size) / 2) * -1);
width:var(--ck-user-dot-size);
height:var(--ck-user-dot-size);
cursor:default;
border-radius:50%;
display:block;
position:absolute;
transform:translate(-50%, -50%);
}
.ck .ck-user__marker-tooltip{
font-family:var(--ck-font-face);
font-size:var(--ck-font-size-base);
line-height:1;
font-style:initial;
font-weight:initial;
opacity:0;
padding:var(--ck-spacing-small);
color:#fff;
white-space:nowrap;
z-index:99999;
transition:opacity .2s linear, transform .3s ease-in-out;
display:none;
position:absolute;
top:-20px;
left:0;
}
@media (prefers-reduced-motion: reduce){
.ck .ck-user__marker-tooltip{
transition:none;
}
}
.ck .ck-user__marker-line{
width:0;
height:100%;
position:absolute;
bottom:0;
}
.ck .ck-user__marker{
cursor:default;
display:inline;
position:relative;
}
.ck .ck-user__marker.ck-user__marker_hovered .ck-user__marker-dot{
width:0;
}
.ck .ck-user__marker.ck-user__marker_hovered .ck-user__marker-tooltip{
opacity:1;
animation:.3s ease-in-out userMarkersFadeInLeft;
display:block;
}
.ck .ck-placeholder .ck-user__marker{
display:none;
}
@media (prefers-reduced-motion: reduce){
.ck .ck-user__marker, .ck .ck-user__marker *, .ck .ck-user__marker:after{
animation:none ;
}
}
@keyframes userMarkersFadeInLeft{
from{
opacity:0;
transform:translateX(-10px);
}
to{
opacity:1;
transform:translateX(0);
}
}
:root{
--ck-color-presence-list-dropdown-background:#fff;
--ck-color-presence-list-dropdown-arrow-border:#ebebeb;
--ck-presence-list-dropdown-list-max-width:250px;
--ck-presence-list-dropdown-list-min-width:180px;
--ck-presence-list-users-tooltip-max-width:120px;
--ck-presence-list-users-tooltip-min-width:25px;
}
.ck.ck-presence-list{
margin-right:var(--ck-spacing-standard);
font-size:var(--ck-font-size-base);
align-items:center;
transition:margin-right .2s ease-in-out;
display:inline-flex;
}
.ck.ck-presence-list *{
box-sizing:border-box;
}
.ck.ck-presence-list__list{
flex-direction:row;
justify-content:flex-end;
display:flex;
position:relative;
}
.ck.ck-presence-list__list:after{
content:"";
background:none;
width:100%;
height:15px;
position:absolute;
bottom:-15px;
left:0;
}
.ck.ck-presence-list__counter--hidden{
display:none;
}
.ck.ck-presence-list__list-item{
font:inherit;
color:inherit;
margin-left:var(--ck-spacing-medium);
background:none;
border:1px solid #0000;
outline:none;
padding:0;
position:relative;
}
.ck.ck-presence-list__list-item:focus{
border-radius:var(--ck-rounded-corners-radius);
border:var(--ck-focus-ring);
box-shadow:var(--ck-focus-outer-shadow), 0 0;
outline:none;
}
.ck.ck-presence-list__list-item .ck-label{
width:0;
height:0;
overflow:hidden;
}
.ck.ck-presence-list__list-item:first-child{
margin-left:0;
}
.ck.ck-tooltip.ck-presence-list__list-item__tooltip > .ck-tooltip__text{
max-width:var(--ck-presence-list-users-tooltip-max-width);
text-align:center;
text-overflow:ellipsis;
white-space:nowrap;
display:inline-block;
overflow:hidden;
}
.ck.ck-presence-list__marker{
width:100%;
height:3px;
margin-top:5px;
display:block;
position:relative;
}
.ck-presence-list__list button.ck-presence-list__list-item *, .ck-presence-list__balloon button.ck-presence-list__dropdown-list-item *{
cursor:pointer;
}
.ck.ck-presence-list--collapsed .ck-presence-list__list{
min-width:calc(var(--ck-user-avatar-size) * 2);
border:1px solid #0000;
padding-left:1px;
}
.ck.ck-presence-list--collapsed .ck-presence-list__list *{
cursor:pointer;
transition:all .4s ease-in-out;
}
.ck.ck-presence-list--collapsed .ck-presence-list__list:focus{
border-radius:var(--ck-rounded-corners-radius);
border:var(--ck-focus-ring);
box-shadow:var(--ck-focus-outer-shadow), 0 0;
outline:none;
}
.ck.ck-presence-list--collapsed .ck.ck-presence-list__list-item{
margin-left:calc(var(--ck-user-avatar-size) * -.35);
border:0;
padding:0;
}
.ck.ck-presence-list--collapsed .ck.ck-presence-list__list-item:first-child{
margin-left:0;
}
.ck.ck-presence-list--collapsed .ck.ck-presence-list__list-item:last-child{
order:unset;
}
.ck.ck-presence-list--collapsed .ck.ck-presence-list__list-item .ck-user{
--ck-presence-list-avatar-border-color:var(--ck-color-base-foreground);
border:2px solid var(--ck-presence-list-avatar-border-color);
margin-left:0;
margin-right:0;
}
.ck.ck-presence-list--collapsed .ck.ck-presence-list__list-item.ck-presence-list__users-counter{
margin-left:0;
margin-right:0;
}
.ck.ck-presence-list__balloon{
--ck-color-panel-border:var(--ck-color-presence-list-dropdown-arrow-border);
--ck-color-panel-background:var(--ck-color-presence-list-dropdown-background);
background-color:var(--ck-color-presence-list-dropdown-background);
opacity:1;
border:0;
animation:.3s ease-in-out fadeIn;
}
@media (prefers-reduced-motion: reduce){
.ck.ck-presence-list__balloon{
animation:none;
}
}
.ck.ck-presence-list__balloon ul{
background-color:var(--ck-color-presence-list-dropdown-background);
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-wrapper{
min-width:var(--ck-presence-list-dropdown-list-min-width);
max-width:var(--ck-presence-list-dropdown-list-max-width);
border-radius:var(--ck-border-radius);
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-wrapper.ck-presence-list__dropdown-list-wrapper_scrollable{
max-height:80vh;
overflow:hidden auto;
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-item{
font:inherit;
color:inherit;
padding:var(--ck-spacing-standard);
background:none;
border:0;
outline:none;
align-items:center;
display:flex;
position:relative;
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-item:focus{
z-index:1;
outline:var(--ck-focus-ring);
outline-offset:-1px;
box-shadow:var(--ck-focus-outer-shadow), 0 0;
position:relative;
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-item:first-of-type .ck-presence-list__marker{
border-top-left-radius:var(--ck-border-radius);
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list-item:last-of-type .ck-presence-list__marker{
border-bottom-left-radius:var(--ck-border-radius);
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list .ck-user__full-name{
white-space:nowrap;
text-overflow:ellipsis;
color:var(--ck-color-base-text);
margin-left:var(--ck-spacing-standard);
overflow:hidden;
}
.ck.ck-presence-list__balloon .ck.ck-presence-list__dropdown-list .ck.ck-presence-list__marker{
width:3px;
height:100%;
margin:0;
position:absolute;
left:0;
}
.ck.ck-presence-list__users-counter{
--ck-presence-list-counter-border-color:var(--ck-user-avatar-background);
--ck-presence-list-counter-background-color:var(--ck-user-avatar-color);
border:2px solid var(--ck-presence-list-counter-border-color);
background-color:var(--ck-presence-list-counter-background-color);
box-sizing:border-box;
height:calc(var(--ck-user-avatar-size) - 4px);
width:calc(var(--ck-user-avatar-size) - 4px);
border-radius:50%;
justify-content:center;
align-items:center;
margin:4px 2px 2px;
line-height:100%;
display:flex;
position:relative;
}
.ck.ck-presence-list__users-counter__text{
--ck-presence-list-counter-text-color:var(--ck-user-avatar-background);
color:var(--ck-presence-list-counter-text-color);
cursor:default;
-webkit-user-select:none;
user-select:none;
}
@keyframes fadeIn{
from{
opacity:0;
}
to{
opacity:1;
}
}