UNPKG

@ckeditor/ckeditor5-list

Version:

Ordered and unordered lists feature to CKEditor 5.

141 lines (119 loc) 2.83 kB
/* * Copyright (c) 2003-2025, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-licensing-options */ :root { --ck-todo-list-checkmark-size: 16px; } @define-mixin todo-list-checkbox { -webkit-appearance: none; display: inline-block; position: relative; width: var(--ck-todo-list-checkmark-size); height: var(--ck-todo-list-checkmark-size); vertical-align: middle; /* Needed on iOS */ border: 0; /* LTR styles */ left: -25px; margin-right: -15px; right: 0; margin-left: 0; /* RTL styles */ [dir=rtl]& { left: 0; margin-right: 0; right: -25px; margin-left: -15px; } &::before { display: block; position: absolute; box-sizing: border-box; content: ''; width: 100%; height: 100%; border: 1px solid hsl(0, 0%, 20%); border-radius: 2px; transition: 250ms ease-in-out box-shadow; @media (prefers-reduced-motion: reduce) { transition: none; } } &::after { display: block; position: absolute; box-sizing: content-box; pointer-events: none; content: ''; /* Calculate tick position, size and border-width proportional to the checkmark size. */ left: calc( var(--ck-todo-list-checkmark-size) / 3 ); top: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); width: calc( var(--ck-todo-list-checkmark-size) / 5.3 ); height: calc( var(--ck-todo-list-checkmark-size) / 2.6 ); border-style: solid; border-color: transparent; border-width: 0 calc( var(--ck-todo-list-checkmark-size) / 8 ) calc( var(--ck-todo-list-checkmark-size) / 8 ) 0; transform: rotate(45deg); } &[checked] { &::before { background: hsl(126, 64%, 41%); border-color: hsl(126, 64%, 41%); } &::after { border-color: hsl(0, 0%, 100%); } } } /* * To-do list content styles. */ .ck-content .todo-list { list-style: none; & li { position: relative; margin-bottom: 5px; & .todo-list { margin-top: 5px; } } & .todo-list__label { & > input { @mixin todo-list-checkbox; } & .todo-list__label__description { vertical-align: middle; } &.todo-list__label_without-description input[type=checkbox] { position: absolute; } } } /* * To-do list editing view styles. */ .ck-editor__editable.ck-content .todo-list .todo-list__label { /* * To-do list should be interactive only during the editing * (https://github.com/ckeditor/ckeditor5/issues/2090). */ & > input, & > span[contenteditable=false] > input { cursor: pointer; &:hover::before { box-shadow: 0 0 0 5px hsla(0, 0%, 0%, 0.1); } } /* * Document Lists - editing view has an additional span around checkbox. */ & > span[contenteditable=false] > input { @mixin todo-list-checkbox; } &.todo-list__label_without-description { & input[type=checkbox] { position: absolute; } } }