From 0c584c1cf20a4547de5033fac5281e29adaca8cc Mon Sep 17 00:00:00 2001 From: Brett Walker Date: Thu, 28 Aug 2025 12:56:51 -0500 Subject: [PATCH 1/3] Add fullscreen with toolbar for plan/rich editor Changelog: added --- .../components/content_editor.vue | 101 ++++++++------ .../components/formatting_toolbar.vue | 25 +++- .../vue_shared/components/markdown/field.vue | 127 ++++++++++-------- .../vue_shared/components/markdown/header.vue | 24 +++- app/assets/javascripts/zen_mode.js | 4 +- app/assets/stylesheets/framework/zen.scss | 52 +++++-- .../components/formatting_toolbar_spec.js | 51 ++++--- .../components/markdown/header_spec.js | 6 +- 8 files changed, 260 insertions(+), 130 deletions(-) diff --git a/app/assets/javascripts/content_editor/components/content_editor.vue b/app/assets/javascripts/content_editor/components/content_editor.vue index 50fce6e29b6a87..64beee4c21175e 100644 --- a/app/assets/javascripts/content_editor/components/content_editor.vue +++ b/app/assets/javascripts/content_editor/components/content_editor.vue @@ -127,6 +127,7 @@ export default { focused: false, isLoading: false, latestMarkdown: null, + isShowingFullscreen: false, }; }, computed: { @@ -200,6 +201,23 @@ export default { // Add event listener for custom resize event document.addEventListener('mousedown', this.handleManualResize); + + this.zen = document.querySelector('.zen-backdrop'); + + this.observer = new MutationObserver(() => { + if (this.zen && this.zen.classList.contains('fullscreen')) { + this.isShowingFullscreen = true; + } else { + this.isShowingFullscreen = false; + } + }); + + if (this.zen) { + this.observer.observe(this.zen, { + attributes: true, + attributeFilter: ['class'], + }); + } }, beforeDestroy() { markdownEditorEventHub.$off(CONTENT_EDITOR_PASTE, this.pasteContent); @@ -328,48 +346,51 @@ export default { @keydown="$emit('keydown', $event)" /> -
- +
+ + + +
+ {{ placeholder }} +
+ + + + + + + + +
+
- - -
- {{ placeholder }} + + +
- - - - - - - - -
-
- - -
diff --git a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue index da165935dcd260..1c0e913875a74c 100644 --- a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue +++ b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue @@ -1,5 +1,5 @@