X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/c6ad16dba657c82512ae495a4a38b99b8cfa9eeb..refs/pull/5685/head:/resources/sass/_tinymce.scss diff --git a/resources/sass/_tinymce.scss b/resources/sass/_tinymce.scss index 642598496..8cc96df41 100644 --- a/resources/sass/_tinymce.scss +++ b/resources/sass/_tinymce.scss @@ -1,3 +1,6 @@ +@use "mixins"; +@use "vars"; + // Custom full screen mode .tox.tox-fullscreen { @@ -9,22 +12,51 @@ z-index: 100; } +// Editor wrapper edits +.tox.tox-tinymce { + border-inline: 0; + border-bottom: 0; +} + // In editor body overrides .page-content.mce-content-body { padding-block-start: 1rem; padding-block-end: 1rem; outline: 0; display: block; + max-width: 870px; } -// In editor line height override -.page-content.mce-content-body p { - line-height: 1.6; +.wysiwyg-input.mce-content-body { + padding-block-start: 1rem; + padding-block-end: 1rem; + outline: 0; + display: block; +} + +.wysiwyg-input.mce-content-body:before { + padding: 1rem; + top: 4px; + font-style: italic; + @include mixins.lightDark(color, rgba(34,47,62,.5), rgba(155,155,155,.5)) +} + +// Default styles for our custom root nodes +.page-content.mce-content-body doc-root { + display: block; +} +.page-content.mce-content-body code-block { + display: block; } // Pad out bottom of editor -.page-content.mce-content-body > :last-child { - margin-bottom: 5rem; +body.page-content.mce-content-body { + padding-bottom: 5rem; +} + +// Remove svg background line in toolbar items +.tox .tox-pop__dialog .tox-toolbar { + background: transparent !important; } // Center toolbar items @@ -33,9 +65,59 @@ } // Prevent scroll jumps on codemirror clicks -.page-content.mce-content-body .CodeMirror { +.page-content.mce-content-body code-block > * { pointer-events: none; } +.page-content.mce-content-body code-block pre { + display: none; +} + +// Details/summary editor usability +.page-content.mce-content-body details summary { + pointer-events: none; +} +.page-content.mce-content-body details doc-root { + padding: vars.$s; + margin-left: (2px - vars.$s); + margin-right: (2px - vars.$s); + margin-bottom: (2px - vars.$s); + margin-top: (2px - vars.$s); + overflow: hidden; +} + +// Allow alignment to be reflected in media embed wrappers +.page-content.mce-content-body .mce-preview-object.align-right { + float: right !important; + margin: vars.$xs 0 vars.$xs vars.$s; +} + +.page-content.mce-content-body .mce-preview-object.align-left { + float: left !important; + margin: vars.$xs vars.$m vars.$m 0; +} + +.page-content.mce-content-body .mce-preview-object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +.page-content.mce-content-body .mce-preview-object iframe, +.page-content.mce-content-body .mce-preview-object video { + display: block; + margin: 0 !important; + float: none !important; +} + +.page-content.mce-content-body td[data-mce-selected]::after, +.page-content.mce-content-body th[data-mce-selected]::after { + top: 1px; + left: 1px; + bottom: 1px; + right: 1px; + outline: 1px dashed #1a85ff; + outline-offset: 0; +} /** * Dark Mode Overrides @@ -47,7 +129,7 @@ .dark-mode .tox .tox-dialog__footer, .dark-mode .tox .tox-pop__dialog, .dark-mode .tox.tox-tinymce-aux .tox-toolbar__overflow { - background-color: #333; + background-color: #333 !important; } .dark-mode .tox .tox-tbtn svg, .dark-mode .tox .tox-tbtn, @@ -81,11 +163,43 @@ border-left: 3px solid currentColor !important; } .tox-menu .tox-collection__item[title^="<"] > div > div { - font-family: $mono !important; + font-family: var(--font-code) !important; border: 1px solid #DDD !important; background-color: #EEE !important; padding: 4px 6px !important; } .tox-menu .tox-collection__item-label { line-height: normal !important; +} + +/** + * Fake task list checkboxes + */ +.page-content.mce-content-body .task-list-item { + margin-inline-start: 0; + position: relative; +} +.page-content.mce-content-body .task-list-item > input[type="checkbox"] { + display: none; +} +.page-content.mce-content-body .task-list-item:before { + content: ''; + display: inline-block; + border: 2px solid #CCC; + width: 12px; + height: 12px; + border-radius: 2px; + margin-inline-end: 8px; + vertical-align: text-top; + cursor: pointer; + position: absolute; + inset-inline-start: -24px; + top: 4px; +} + +.page-content.mce-content-body .task-list-item[checked]:before { + background-color: #CCC; + background-image: url('data:image/svg+xml;utf8,'); + background-position: 50% 50%; + background-size: 100% 100%; } \ No newline at end of file