UNPKG

@ckeditor/ckeditor5-revision-history

Version:

Document revision history feature for CKEditor 5.

588 lines (483 loc) • 21.2 kB
/** * @license 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 */ .ck{ --ck-revision-history-loading-overlay-transition-duration:.2s; --ck-revision-history-loading-overlay-transition-delay:0s; --ck-revision-history-loading-overlay-spinner-rotation-duration:1s; --ck-revision-history-loading-overlay-spinner-size:60px; --ck-revision-history-loading-overlay-visible-background:hsla(0, 0%, 100%, 1); } .ck.ck-editor__editable::before, .ck.ck-editor__editable::after{ visibility:hidden; transition:opacity var(--ck-revision-history-loading-overlay-transition-duration) ease; opacity:0; content:''; position:absolute; transition-delay:0; } @media (prefers-reduced-motion: reduce){ .ck.ck-editor__editable::before, .ck.ck-editor__editable::after{ transition:none; } } .ck.ck-editor__editable::before{ top:0; left:0; width:100%; height:100%; background:var(--ck-revision-history-loading-overlay-visible-background); z-index:var(--ck-z-default); } .ck.ck-editor__editable::after{ box-sizing:border-box; top:50%; left:50%; width:var(--ck-revision-history-loading-overlay-spinner-size); height:var(--ck-revision-history-loading-overlay-spinner-size); transform:translate(-50%, -50%); border-radius:50%; border-top:3px solid var(--ck-color-base-text); border-right:3px solid transparent; animation:ck-revision-history-spinner-animation var(--ck-revision-history-loading-overlay-spinner-rotation-duration) linear infinite; z-index:var(--ck-z-default); } .ck.ck-editor__editable.ck-editor__editable__loading-overlay, .ck.ck-editor__editable.ck-editor__editable__overlay{ position:relative; min-height:calc(var(--ck-revision-history-loading-overlay-spinner-size) + 2 * var(--ck-spacing-large)); } .ck.ck-editor__editable.ck-editor__editable__loading-overlay::before, .ck.ck-editor__editable.ck-editor__editable__overlay::before, .ck.ck-editor__editable.ck-editor__editable__loading-overlay::after, .ck.ck-editor__editable.ck-editor__editable__overlay::after{ visibility:visible; z-index:2; opacity:.8; transition-delay:var(--ck-revision-history-loading-overlay-transition-delay); } .ck.ck-editor__editable.ck-editor__editable__overlay::after{ visibility:hidden; } @keyframes ck-revision-history-spinner-animation{ from{ transform:translate(-50%, -50%) rotate(0deg); } to{ transform:translate(-50%, -50%) rotate(360deg); } } .ck.ck-revision-history-save-revision-form{ display:flex; align-items:flex-start; flex-direction:row; flex-wrap:nowrap; width:400px; } .ck.ck-revision-history-save-revision-form .ck-labeled-field-view{ width:100%; } .ck.ck-revision-history-save-revision-form .ck-label{ display:none; } .ck.ck-revision-history-save-revision-form .ck-input{ width:100%; } .ck-vertical-form .ck-button::after{ content:""; width:0; position:absolute; right:-1px; top:-1px; bottom:-1px; z-index:1; } .ck-vertical-form .ck-button:focus::after{ display:none; } @media screen and (max-width: 600px){ .ck.ck-responsive-form .ck-button::after{ content:""; width:0; position:absolute; right:-1px; top:-1px; bottom:-1px; z-index:1; } .ck.ck-responsive-form .ck-button:focus::after{ display:none; } } .ck.ck-revision-history-sidebar__revision-name{ display:block; font-size:1.2em; font-weight:bold; position:relative; left:calc(-1 * var(--ck-spacing-small)); margin-right:30px; } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-label{ display:none; } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input{ padding:var(--ck-spacing-tiny) var(--ck-spacing-small); min-height:auto; color:inherit; font-family:inherit; font-weight:bold; font-size:var(--ck-font-size-normal); min-width:auto; width:100%; border-radius:var(--ck-border-radius); transition:var(--ck-revision-history-revision-transitions); background:transparent; text-overflow:ellipsis; } @media (prefers-reduced-motion: reduce){ .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input{ transition:none; } } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input, .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input:focus, .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input[readonly]{ background:transparent; } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input:not(.ck-input_focused){ border-color:transparent; } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input::placeholder{ color:inherit; } .ck.ck-revision-history-sidebar__revision-name > .ck-labeled-field-view__input-wrapper > .ck-input[readonly]{ pointer-events:none; } .ck.ck-revision-history-sidebar__revision-author{ display:block; position:relative; transition:var(--ck-revision-history-revision-transitions); } @media (prefers-reduced-motion: reduce){ .ck.ck-revision-history-sidebar__revision-author{ transition:none; } } .ck.ck-revision-history-sidebar__revision-author .ck-revision-history-sidebar__revision-author__name{ overflow:hidden; text-overflow:ellipsis; width:100%; white-space:nowrap; display:block; font-weight:bold; } .ck.ck-revision-history-sidebar__revision-author .ck-icon{ position:absolute; left:calc(-1 * var(--ck-revision-history-revision-author-icon-offset)); top:3px; width:11px; height:10px; } .ck.ck-revision-history-sidebar__revision-author:not(:first-of-type) .ck-icon{ display:none; } .ck.ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__actions{ display:none; position:absolute; top:var(--ck-spacing-small); right:var(--ck-spacing-small); } .ck.ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__actions .ck-dropdown__button{ min-width:unset; min-height:unset; } .ck.ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__actions .ck-dropdown__button .ck-button__icon{ transform:scale( .7); } .ck.ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__actions .ck-dropdown__arrow{ display:none; } .ck.ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__actions .ck-list__item__danger{ color:var(--ck-color-button-cancel); } .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision__actions .ck-dropdown__button{ color:var(--ck-color-base-background); } .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision__actions .ck-dropdown__button:hover, .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision__actions .ck-dropdown__button.ck-on{ background:var(--ck-color-base-active-focus); } .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision__actions .ck-dropdown__button:hover:hover, .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision__actions .ck-dropdown__button.ck-on:hover{ filter:brightness(95%); } .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted .ck-revision-history-sidebar__revision__actions .ck-dropdown__button:hover, .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted .ck-revision-history-sidebar__revision__actions .ck-dropdown__button.ck-on{ background:var(--ck-revision-history-revision-highlighted-background-color-hover); } .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted .ck-revision-history-sidebar__revision__actions .ck-dropdown__button:hover:hover, .ck.ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted .ck-revision-history-sidebar__revision__actions .ck-dropdown__button.ck-on:hover{ filter:brightness(95%); } .ck.ck-revision-history-sidebar__revision:hover:not(.ck-disabled) .ck-revision-history-sidebar__revision__actions, .ck.ck-revision-history-sidebar__revision:not(.ck-disabled) .ck-revision-history-sidebar__revision__actions.ck-on{ display:block; } .ck{ --ck-revision-history-revision-background-color:var(--ck-color-base-background); --ck-revision-history-revision-border-color:hsl(213deg 20% 35%); --ck-revision-history-revision-box-shadow:0 1px 1px 1px hsl(0deg 0% 90%); --ck-revision-history-revision-author-icon-offset:20px; --ck-revision-history-revision-transitions:background 100ms ease-in, border 100ms ease-in; --ck-revision-history-revision-selected-text-color:var(--ck-color-base-background); --ck-revision-history-revision-selected-input-text-color-empty:var(--ck-color-base-background); --ck-revision-history-revision-selected-background-color:var(--ck-color-base-active); --ck-revision-history-revision-highlighted-background-color:hsl(208deg 100% 94%); --ck-revision-history-revision-highlighted-background-color-hover:hsl(208deg 100% 90%); --ck-revision-history-revision-delete-confirmation-background:hsl(0deg 100% 90%); --ck-revision-history-revision-delete-confirmation-active-button-background:hsl(0deg 100% 85%); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision{ position:relative; display:block; background:var(--ck-revision-history-revision-background-color); padding:var(--ck-spacing-large) calc(2 * var(--ck-spacing-standard)); border-radius:var(--ck-border-radius); border-left:3px solid var(--ck-revision-history-revision-border-color); box-shadow:var(--ck-revision-history-revision-box-shadow); width:100%; transition:transform .3s ease; } @media (prefers-reduced-motion: reduce){ .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision{ transition:none; } } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision:last-child{ margin-bottom:0; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__date{ display:block; font-size:var(--ck-font-size-small); font-weight:bold; opacity:.8; overflow:hidden; text-overflow:ellipsis; width:100%; white-space:nowrap; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision__controls-wrapper{ display:flex; flex-direction:row; align-items:flex-start; margin:var(--ck-spacing-standard) 0 0; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision .ck-revision-history-sidebar__revision-authors{ padding:0; margin:0 0 0 var(--ck-revision-history-revision-author-icon-offset); flex:0 1 auto; min-width:0; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected, .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted{ border-left-color:transparent; transform:translateX(calc(-1 * var(--ck-revision-history-sidebar-timeline-padding))); border-top-left-radius:0; border-bottom-left-radius:0; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected{ background:var(--ck-revision-history-revision-selected-background-color); color:var(--ck-revision-history-revision-selected-text-color); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision-name .ck-input{ color:var(--ck-revision-history-revision-selected-text-color); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_selected .ck-revision-history-sidebar__revision-name .ck-input.ck-input-text_empty::placeholder{ opacity:.7; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__revision_highlighted{ background:var(--ck-revision-history-revision-highlighted-background-color); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__revision.ck-revision-history-sidebar__actions_dropdown_open{ z-index:var(--ck-z-default); } .ck.ck-revision-history-sidebar__revision-wrapper.ck-revision-history-sidebar__revision-wrapper_confirmation_visible .ck-revision-history-sidebar__revision{ box-shadow:none; position:relative; transform:translate3d( -100%, 0, 0); } .ck.ck-revision-history-sidebar__revision-wrapper.ck-revision-history-sidebar__revision-wrapper_confirmation_visible .ck-revision-history-sidebar__revision, .ck.ck-revision-history-sidebar__revision-wrapper.ck-revision-history-sidebar__revision-wrapper_confirmation_visible .ck-revision-history-sidebar__revision *{ --ck-revision-history-revision-background-color:transparent; --ck-revision-history-revision-selected-background-color:transparent; --ck-revision-history-revision-highlighted-background-color:transparent; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm{ display:flex; flex-direction:row; justify-content:space-around; align-items:center; position:absolute; top:0; left:100%; width:100%; height:100%; border-radius:var(--ck-border-radius); box-shadow:var(--ck-revision-history-revision-box-shadow); background:var(--ck-revision-history-revision-delete-confirmation-background); user-select:none; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner{ text-align:center; margin-top:var(--ck-spacing-small); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner p{ margin:0; font-weight:bold; color:var(--ck-color-text); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions{ display:flex; flex-direction:row; justify-content:space-evenly; } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions .ck.ck-button:hover, .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions .ck.ck-button:focus, .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions .ck.ck-button:active{ background:var(--ck-revision-history-revision-delete-confirmation-active-button-background); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions .ck.ck-button.ck-thread__remove-confirm-submit{ color:var(--ck-color-button-save); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-thread__remove-confirm .ck-thread__remove-confirm-inner .ck-thread__remove-confirm-actions .ck.ck-button.ck-thread__remove-confirm-cancel{ color:var(--ck-color-button-cancel); } .ck.ck-revision-history-sidebar__revision-wrapper .ck-revision-history-sidebar__subrevisions{ margin-left:var(--ck-spacing-large); } .ck{ --ck-revision-history-sidebar-revision-vertical-spacing:calc(2 * var(--ck-spacing-standard)); } .ck.ck-revision-history-sidebar__time-period{ width:100%; } .ck.ck-revision-history-sidebar__time-period .ck-revision-history-sidebar__time-period__label{ background:var(--ck-revision-history-sidebar-period-background); font-size:9px; font-weight:bold; padding:var(--ck-spacing-tiny) var(--ck-spacing-standard); border-radius:var(--ck-border-radius); color:var(--ck-color-base-background); text-transform:uppercase; } .ck.ck-revision-history-sidebar__time-period .ck-revision-history-sidebar__time-period__label:first-child{ margin-top:var(--ck-spacing-standard); } .ck.ck-revision-history-sidebar__time-period .ck-revision-history-sidebar__time-period__revisions{ display:flex; flex-direction:column; } .ck.ck-revision-history-sidebar__time-period .ck-revision-history-sidebar__time-period__revisions .ck-revision-history-sidebar__revision-wrapper{ margin-top:var(--ck-revision-history-sidebar-revision-vertical-spacing); } .ck.ck-revision-history-sidebar__time-period:not(.ck-hidden) + .ck-revision-history-sidebar__time-period{ margin-top:var(--ck-revision-history-sidebar-revision-vertical-spacing); } .ck.ck-revision-history-sidebar__header{ --header-height:max( calc(var(--ck-ui-component-min-height) + 2 * var(--ck-spacing-small) + 1px), calc(var(--ck-icon-size) + 2 * var(--ck-spacing-small) + 2 * var(--ck-spacing-small) + 1px)); height:var(--header-height); min-height:var(--header-height); line-height:var(--header-height); border-bottom:1px solid var(--ck-color-toolbar-border); overflow:hidden; font-family:inherit; font-weight:bold; color:inherit; padding:0 var(--ck-revision-history-sidebar-timeline-padding); display:flex; flex-direction:row; align-items:center; } .ck.ck-revision-history-sidebar__header .ck-revision-history-sidebar__header__label{ font-family:inherit; font-weight:bold; color:inherit; font-size:1.2em; } .ck.ck-revision-history-sidebar__header .ck-icon{ margin-right:var(--ck-spacing-large); } .ck{ --ck-revision-history-sidebar-period-background:hsl(14deg 100% 57%); --ck-revision-history-sidebar-timeline-padding:var(--ck-spacing-large); } .ck.ck-revision-history-sidebar{ display:flex; flex-direction:column; } .ck.ck-revision-history-sidebar .ck-revision-history-sidebar__timeline{ display:flex; flex-direction:column; align-items:start; padding:var(--ck-revision-history-sidebar-timeline-padding); font-size:var(--ck-font-size-base); overflow-y:auto; height:100%; overflow-x:hidden; } .ck.ck-revision-history-sidebar .ck-revision-history-sidebar__timeline.ck-disabled{ filter:grayscale(1) opacity(var(--ck-disabled-opacity)); } .ck.ck-revision-history-ui.ck-revision-history-ui__changes-navigation{ display:flex; align-items:center; margin-left:auto; } .ck.ck-revision-history-ui.ck-revision-history-ui__changes-navigation .ck-revision-history-ui__changes-navigation__wrapper{ display:flex; margin-right:var(--ck-spacing-standard); } .ck.ck-revision-history-ui.ck-revision-history-ui__changes-navigation .ck-revision-history-ui__changes-navigation__label{ font-weight:bold; white-space:pre; } .ck.ck-revision-history-ui.ck-revision-history-ui__changes-navigation .ck-revision-history-ui__changes-navigation__navigation{ margin-left:var(--ck-spacing-small); } .ck .ck-revision-change{ padding:var(--ck-spacing-small) var(--ck-spacing-large); border-top-left-radius:var(--ck-border-radius); outline:0; } .ck .ck-revision-change > *{ vertical-align:bottom; font-size:var(--ck-font-size-standard); } .ck .ck-revision-change.ck-revision-change__add{ border-left-color:var(--ck-color-suggestion-box-insertion-border); } .ck .ck-revision-change.ck-revision-change__remove{ border-left-color:var(--ck-color-suggestion-box-deletion-border); } .ck .ck-revision-change .ck-revision-change__label{ font-weight:bold; font-size:inherit; vertical-align:inherit; } .ck.ck-button.ck-revision-history-ui__back-to-editing{ background:var(--ck-color-base-active); color:var(--ck-color-base-background); } .ck.ck-button.ck-revision-history-ui__back-to-editing:hover:not(.ck-disabled){ background:var(--ck-color-base-active-focus); } .ck.ck-editor__editable_inline.ck-revision-history-root-add{ border:3px solid var(--ck-color-suggestion-marker-insertion-border); } .ck.ck-editor__editable_inline.ck-revision-history-root-add.ck-revision-history-root--active{ border-color:var(--ck-color-suggestion-marker-insertion-border-active); } .ck.ck-editor__editable_inline.ck-revision-history-root-remove{ border:3px solid var(--ck-color-suggestion-marker-deletion-border); } .ck.ck-editor__editable_inline.ck-revision-history-root-remove.ck-revision-history-root--active{ border-color:var(--ck-color-suggestion-marker-deletion-border-active); } .ck.ck-editor{ position:relative; } .ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{ z-index:var(--ck-z-panel); }