Merge pull request #4604 from BookStackApp/editor_trim_enhancement
Editor design update
This commit is contained in:
		
						commit
						3274181e14
					
				| 
						 | 
				
			
			@ -295,6 +295,7 @@ return [
 | 
			
		|||
    'pages_is_template' => 'Page Template',
 | 
			
		||||
 | 
			
		||||
    // Editor Sidebar
 | 
			
		||||
    'toggle_sidebar' => 'Toggle Sidebar',
 | 
			
		||||
    'page_tags' => 'Page Tags',
 | 
			
		||||
    'chapter_tags' => 'Chapter Tags',
 | 
			
		||||
    'book_tags' => 'Book Tags',
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,6 +8,7 @@ export class EditorToolbox extends Component {
 | 
			
		|||
        this.buttons = this.$manyRefs.tabButton;
 | 
			
		||||
        this.contentElements = this.$manyRefs.tabContent;
 | 
			
		||||
        this.toggleButton = this.$refs.toggle;
 | 
			
		||||
        this.editorWrapEl = this.container.closest('.page-editor');
 | 
			
		||||
 | 
			
		||||
        this.setupListeners();
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -30,8 +31,9 @@ export class EditorToolbox extends Component {
 | 
			
		|||
 | 
			
		||||
    toggle() {
 | 
			
		||||
        this.container.classList.toggle('open');
 | 
			
		||||
        const expanded = this.container.classList.contains('open') ? 'true' : 'false';
 | 
			
		||||
        this.toggleButton.setAttribute('aria-expanded', expanded);
 | 
			
		||||
        const isOpen = this.container.classList.contains('open');
 | 
			
		||||
        this.toggleButton.setAttribute('aria-expanded', isOpen ? 'true' : 'false');
 | 
			
		||||
        this.editorWrapEl.classList.toggle('toolbox-open', isOpen);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    setActiveTab(tabName, openToolbox = false) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -155,6 +155,7 @@
 | 
			
		|||
  margin-bottom: $-l;
 | 
			
		||||
  overflow: initial;
 | 
			
		||||
  min-height: 60vh;
 | 
			
		||||
  border-radius: 8px;
 | 
			
		||||
  &.auto-height {
 | 
			
		||||
    min-height: 0;
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -148,10 +148,9 @@ html.markdown-editor-display.dark-mode {
 | 
			
		|||
  width: 100%;
 | 
			
		||||
  font-size: 11px;
 | 
			
		||||
  line-height: 1.6;
 | 
			
		||||
  border-bottom: 1px solid #DDD;
 | 
			
		||||
  background-color: #EEE;
 | 
			
		||||
  @include lightDark(background-color, #eee, #111);
 | 
			
		||||
  @include lightDark(border-color, #ddd, #000);
 | 
			
		||||
  border-bottom: 1px solid #CCC;
 | 
			
		||||
  //background-color: var(--color-primary-light);
 | 
			
		||||
  @include lightDark(border-color, #CCC, #000);
 | 
			
		||||
  flex: none;
 | 
			
		||||
  @include whenDark {
 | 
			
		||||
    button {
 | 
			
		||||
| 
						 | 
				
			
			@ -398,27 +397,6 @@ input[type=color] {
 | 
			
		|||
  height: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.title-input.page-title {
 | 
			
		||||
  font-size: 0.8em;
 | 
			
		||||
  @include lightDark(background-color, #fff, #333);
 | 
			
		||||
  .input {
 | 
			
		||||
    border: 0;
 | 
			
		||||
    margin-bottom: -1px;
 | 
			
		||||
  }
 | 
			
		||||
  input[type="text"] {
 | 
			
		||||
    max-width: 840px;
 | 
			
		||||
    margin: 0 auto;
 | 
			
		||||
    border: none;
 | 
			
		||||
    height: auto;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-title input {
 | 
			
		||||
  display: block;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  font-size: 1.4em;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.description-input textarea {
 | 
			
		||||
  display: block;
 | 
			
		||||
  width: 100%;
 | 
			
		||||
| 
						 | 
				
			
			@ -428,11 +406,6 @@ input[type=color] {
 | 
			
		|||
  height: auto;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
div[editor-type="markdown"] .title-input.page-title input[type="text"] {
 | 
			
		||||
  max-width: 100%;
 | 
			
		||||
  border-radius: 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.search-box {
 | 
			
		||||
  max-width: 100%;
 | 
			
		||||
  position: relative;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -364,43 +364,4 @@ header .search-box.search-active:focus-within {
 | 
			
		|||
.faded span.faded-text {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  padding: $-s;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.action-buttons .text-button {
 | 
			
		||||
  display: inline-block;
 | 
			
		||||
  padding: $-xs $-s;
 | 
			
		||||
  &:last-child {
 | 
			
		||||
    padding-inline-end: 0;
 | 
			
		||||
  }
 | 
			
		||||
  &:first-child {
 | 
			
		||||
    padding-inline-start: 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
.action-buttons .dropdown-container:last-child a {
 | 
			
		||||
  padding-inline-end: 0;
 | 
			
		||||
  padding-inline-start: $-s;
 | 
			
		||||
}
 | 
			
		||||
.action-buttons {
 | 
			
		||||
  text-align: end;
 | 
			
		||||
  &.text-left {
 | 
			
		||||
    text-align: start;
 | 
			
		||||
    .text-button {
 | 
			
		||||
      padding-inline-end: $-m;
 | 
			
		||||
      padding-inline-start: 0;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  &.text-center {
 | 
			
		||||
    text-align: center;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include smaller-than($m) {
 | 
			
		||||
  .action-buttons .text-button {
 | 
			
		||||
    padding: $-xs $-xs;
 | 
			
		||||
  }
 | 
			
		||||
  .action-buttons .dropdown-container:last-child a {
 | 
			
		||||
    padding-inline-start: $-xs;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -8,6 +8,8 @@
 | 
			
		|||
    flex: 1;
 | 
			
		||||
    flex-direction: column;
 | 
			
		||||
    z-index: 10;
 | 
			
		||||
    overflow: hidden;
 | 
			
		||||
    border-radius: 0 0 8px 8px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .mce-tinymce {
 | 
			
		||||
| 
						 | 
				
			
			@ -19,6 +21,69 @@
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-editor-page-area {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  border-radius: 8px;
 | 
			
		||||
  box-shadow: $bs-card;
 | 
			
		||||
  @include lightDark(background-color, #FFF, #333)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-edit-toolbar {
 | 
			
		||||
  width: 100%;
 | 
			
		||||
  margin: 0 auto;
 | 
			
		||||
  display: grid;
 | 
			
		||||
  grid-template-columns: minmax(max-content, 2fr) 1.5fr minmax(max-content, 2fr);
 | 
			
		||||
  align-items: center;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include larger-than($xxl) {
 | 
			
		||||
  .page-editor-wysiwyg .page-edit-toolbar,
 | 
			
		||||
  .page-editor-wysiwyg .page-editor-page-area {
 | 
			
		||||
    max-width: 1140px;
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  .page-editor-wysiwyg .floating-toolbox {
 | 
			
		||||
    position: absolute;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include smaller-than($m) {
 | 
			
		||||
  .page-edit-toolbar {
 | 
			
		||||
    display: flex;
 | 
			
		||||
    flex-direction: row;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.title-input.page-title {
 | 
			
		||||
  font-size: 0.8em;
 | 
			
		||||
  .input {
 | 
			
		||||
    border: 0;
 | 
			
		||||
    margin-bottom: -1px;
 | 
			
		||||
  }
 | 
			
		||||
  input[type="text"] {
 | 
			
		||||
    max-width: 840px;
 | 
			
		||||
    margin: 0 auto;
 | 
			
		||||
    border: none;
 | 
			
		||||
    height: auto;
 | 
			
		||||
    display: block;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    font-size: 20px;
 | 
			
		||||
    border-radius: 8px;
 | 
			
		||||
  }
 | 
			
		||||
  input[type="text"]:focus {
 | 
			
		||||
    position: relative;
 | 
			
		||||
    outline-offset: -1px;
 | 
			
		||||
    outline: 1px dashed var(--color-primary);
 | 
			
		||||
    box-shadow: $bs-card;
 | 
			
		||||
    z-index: 50;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.page-editor-markdown .title-input.page-title input[type="text"] {
 | 
			
		||||
  max-width: 100%;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
body.tox-fullscreen .page-editor .edit-area,
 | 
			
		||||
body.markdown-fullscreen .page-editor .edit-area {
 | 
			
		||||
  z-index: 12;
 | 
			
		||||
| 
						 | 
				
			
			@ -35,8 +100,7 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
    overflow-x: scroll;
 | 
			
		||||
    overflow-y: visible;
 | 
			
		||||
  }
 | 
			
		||||
  .page-edit-toolbar .grid.third {
 | 
			
		||||
    display: block;
 | 
			
		||||
  .page-edit-toolbar {
 | 
			
		||||
    white-space: nowrap;
 | 
			
		||||
    > div {
 | 
			
		||||
      display: inline-block;
 | 
			
		||||
| 
						 | 
				
			
			@ -48,10 +112,10 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
  position: fixed;
 | 
			
		||||
  z-index: 30;
 | 
			
		||||
  border-radius: 50%;
 | 
			
		||||
  width: 56px;
 | 
			
		||||
  height: 56px;
 | 
			
		||||
  font-size: 24px;
 | 
			
		||||
  right: $-m;
 | 
			
		||||
  width: 52px;
 | 
			
		||||
  height: 52px;
 | 
			
		||||
  font-size: 26px;
 | 
			
		||||
  right: $-xs;
 | 
			
		||||
  bottom: $-s;
 | 
			
		||||
  box-shadow: $bs-hover;
 | 
			
		||||
  background-color: currentColor;
 | 
			
		||||
| 
						 | 
				
			
			@ -149,22 +213,27 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Attribute form
 | 
			
		||||
// Page editor sidebar toolbox
 | 
			
		||||
.floating-toolbox {
 | 
			
		||||
  border: 1px solid #DDD;
 | 
			
		||||
  @include lightDark(background-color, #fff, #222);
 | 
			
		||||
  @include lightDark(border-color, #DDD, #000);
 | 
			
		||||
  right: $-xl*2;
 | 
			
		||||
  width: 48px;
 | 
			
		||||
  @include lightDark(background-color, #FFF, #222);
 | 
			
		||||
  overflow: hidden;
 | 
			
		||||
  align-items: stretch;
 | 
			
		||||
  flex-direction: row;
 | 
			
		||||
  display: flex;
 | 
			
		||||
  transition: width ease-in-out 180ms;
 | 
			
		||||
  margin-top: -1px;
 | 
			
		||||
  min-height: 0;
 | 
			
		||||
  max-height: 100%;
 | 
			
		||||
  border-radius: 8px;
 | 
			
		||||
  box-shadow: $bs-card;
 | 
			
		||||
  margin-bottom: auto;
 | 
			
		||||
  margin-left: $-l;
 | 
			
		||||
  position: relative;
 | 
			
		||||
  &.open {
 | 
			
		||||
    width: 480px;
 | 
			
		||||
    position: relative;
 | 
			
		||||
    right: 0;
 | 
			
		||||
    max-width: 480px;
 | 
			
		||||
    margin-bottom: 0;
 | 
			
		||||
  }
 | 
			
		||||
  &:not(.open) .toolbox-tab-content {
 | 
			
		||||
    display: none !important;
 | 
			
		||||
  }
 | 
			
		||||
  .toolbox-toggle svg {
 | 
			
		||||
    transition: transform ease-in-out 180ms;
 | 
			
		||||
| 
						 | 
				
			
			@ -173,7 +242,7 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
    transition: background-color ease-in-out 180ms;
 | 
			
		||||
  }
 | 
			
		||||
  &.open .toolbox-toggle {
 | 
			
		||||
    background-color: rgba(255, 0, 0, 0.29);
 | 
			
		||||
    background-color: rgba(255, 0, 0, 0.20);
 | 
			
		||||
  }
 | 
			
		||||
  &.open .toolbox-toggle svg {
 | 
			
		||||
    transform: rotate(180deg);
 | 
			
		||||
| 
						 | 
				
			
			@ -183,28 +252,34 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
    position: relative;
 | 
			
		||||
  }
 | 
			
		||||
  .tabs {
 | 
			
		||||
    display: block;
 | 
			
		||||
    border-inline-end: 1px solid #DDD;
 | 
			
		||||
    @include lightDark(border-color, #ddd, #000);
 | 
			
		||||
    width: 48px;
 | 
			
		||||
    border-right: 1px solid #DDD;
 | 
			
		||||
    @include lightDark(border-right-color, #DDD, #000);
 | 
			
		||||
    width: 40px;
 | 
			
		||||
    flex: 0 1 auto;
 | 
			
		||||
    margin-right: -1px;
 | 
			
		||||
  }
 | 
			
		||||
  .tabs-inner {
 | 
			
		||||
    @include lightDark(background-color, #FFFFFF, #222);
 | 
			
		||||
  }
 | 
			
		||||
  .tabs svg {
 | 
			
		||||
    padding: 0;
 | 
			
		||||
    margin: 0;
 | 
			
		||||
  }
 | 
			
		||||
  .tabs > button {
 | 
			
		||||
    @include lightDark(color, rgba(0, 0, 0, 0.5), rgba(255, 255, 255, 0.5));
 | 
			
		||||
  .tabs-inner > button {
 | 
			
		||||
    @include lightDark(color, rgba(0, 0, 0, 0.7), rgba(255, 255, 255, 0.5));
 | 
			
		||||
    display: block;
 | 
			
		||||
    cursor: pointer;
 | 
			
		||||
    padding: $-s $-m;
 | 
			
		||||
    font-size: 16px;
 | 
			
		||||
    padding: 10px $-xs;
 | 
			
		||||
    font-size: 18px;
 | 
			
		||||
    line-height: 1.6;
 | 
			
		||||
    border-bottom: 1px solid rgba(255, 255, 255, 0.3);
 | 
			
		||||
  }
 | 
			
		||||
  &.open .tabs > button.active {
 | 
			
		||||
    @include lightDark(color, #444, #EEE);
 | 
			
		||||
    background-color: rgba(0, 0, 0, 0.1);
 | 
			
		||||
  .tabs-inner > button:hover,  &.open .tabs-inner > button.active {
 | 
			
		||||
    background-color: var(--color-primary-light);
 | 
			
		||||
    color: var(--color-primary);
 | 
			
		||||
  }
 | 
			
		||||
  &.open .tabs-inner > button.active {
 | 
			
		||||
    border-inline-end: 1px solid var(--color-primary);
 | 
			
		||||
    margin-inline-end: -1px;
 | 
			
		||||
  }
 | 
			
		||||
  h4 {
 | 
			
		||||
    font-size: 24px;
 | 
			
		||||
| 
						 | 
				
			
			@ -237,6 +312,33 @@ body.tox-fullscreen, body.markdown-fullscreen {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include smaller-than($xxl) {
 | 
			
		||||
  .floating-toolbox {
 | 
			
		||||
    margin-left: $-s;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@include smaller-than($s) {
 | 
			
		||||
  .page-editor-page-area-wrap {
 | 
			
		||||
    margin: 4px !important;
 | 
			
		||||
  }
 | 
			
		||||
  .floating-toolbox {
 | 
			
		||||
    margin-left: 4px;
 | 
			
		||||
  }
 | 
			
		||||
  .floating-toolbox .tabs {
 | 
			
		||||
    width: 32px;
 | 
			
		||||
  }
 | 
			
		||||
  .floating-toolbox .tabs-inner > button {
 | 
			
		||||
    font-size: 12px;
 | 
			
		||||
  }
 | 
			
		||||
  .page-edit-toolbar {
 | 
			
		||||
    padding-block: 0 !important;
 | 
			
		||||
  }
 | 
			
		||||
  .page-editor.toolbox-open .page-editor-page-area {
 | 
			
		||||
    display: none;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.toolbox-tab-content {
 | 
			
		||||
  display: none;
 | 
			
		||||
  overflow-y: auto;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,6 +9,12 @@
 | 
			
		|||
  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;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -10,7 +10,6 @@
 | 
			
		|||
 | 
			
		||||
            @if(!$isDraft) {{ method_field('PUT') }} @endif
 | 
			
		||||
            @include('pages.parts.form', ['model' => $page])
 | 
			
		||||
            @include('pages.parts.editor-toolbox')
 | 
			
		||||
        </form>
 | 
			
		||||
    </div>
 | 
			
		||||
    
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,97 +1,116 @@
 | 
			
		|||
<div class="primary-background-light toolbar page-edit-toolbar">
 | 
			
		||||
    <div class="grid third no-break v-center">
 | 
			
		||||
<div class="toolbar page-edit-toolbar py-xs">
 | 
			
		||||
 | 
			
		||||
        <div class="action-buttons text-left px-m py-xs">
 | 
			
		||||
    <div>
 | 
			
		||||
        <div class="inline block">
 | 
			
		||||
            <a href="{{ $isDraft ? $page->getParent()->getUrl() : $page->getUrl() }}"
 | 
			
		||||
               class="text-button text-link">@icon('back')<span class="hide-under-l">{{ trans('common.back') }}</span></a>
 | 
			
		||||
               class="icon-list-item text-link"><span>@icon('back')</span><span class="hide-under-l">{{ trans('common.back') }}</span></a>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
        <div class="text-center px-m">
 | 
			
		||||
            <div component="dropdown"
 | 
			
		||||
                 option:dropdown:move-menu="true"
 | 
			
		||||
                 class="dropdown-container draft-display text {{ $draftsEnabled ? '' : 'hidden' }}">
 | 
			
		||||
                <button type="button" refs="dropdown@toggle" aria-haspopup="true" aria-expanded="false" title="{{ trans('entities.pages_edit_draft_options') }}" class="text-link text-button py-s px-m"><span refs="page-editor@draftDisplay" class="faded-text"></span>  @icon('more')</button>
 | 
			
		||||
    <div class="text-center">
 | 
			
		||||
        <div component="dropdown"
 | 
			
		||||
             option:dropdown:move-menu="true"
 | 
			
		||||
             class="dropdown-container  draft-display text {{ $draftsEnabled ? '' : 'hidden' }}">
 | 
			
		||||
            <div class="flex-container-row items-center justify-center">
 | 
			
		||||
                <button type="button"
 | 
			
		||||
                        refs="dropdown@toggle"
 | 
			
		||||
                        aria-haspopup="true"
 | 
			
		||||
                        aria-expanded="false"
 | 
			
		||||
                        title="{{ trans('entities.pages_edit_draft_options') }}"
 | 
			
		||||
                        class="text-link icon-list-item">
 | 
			
		||||
                    <span>@icon('time')</span>
 | 
			
		||||
                    <span><span refs="page-editor@draftDisplay" class="faded-text"></span>  @icon('more')</span>
 | 
			
		||||
                </button>
 | 
			
		||||
                @icon('check-circle', ['class' => 'text-pos draft-notification svg-icon', 'refs' => 'page-editor@draftDisplayIcon'])
 | 
			
		||||
                <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <button refs="page-editor@saveDraft" type="button" class="text-pos icon-item">
 | 
			
		||||
                            @icon('save')
 | 
			
		||||
                            <div>{{ trans('entities.pages_edit_save_draft') }}</div>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    @if($isDraft)
 | 
			
		||||
                        <li>
 | 
			
		||||
                            <a href="{{ $model->getUrl('/delete') }}" class="text-neg icon-item">
 | 
			
		||||
                                @icon('delete')
 | 
			
		||||
                                {{ trans('entities.pages_edit_delete_draft') }}
 | 
			
		||||
                            </a>
 | 
			
		||||
                        </li>
 | 
			
		||||
                    @endif
 | 
			
		||||
                    <li refs="page-editor@discard-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
 | 
			
		||||
                        <button refs="page-editor@discard-draft" type="button" class="text-warn icon-item">
 | 
			
		||||
                            @icon('cancel')
 | 
			
		||||
                            <div>{{ trans('entities.pages_edit_discard_draft') }}</div>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li refs="page-editor@delete-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
 | 
			
		||||
                        <button refs="page-editor@delete-draft" type="button" class="text-neg icon-item">
 | 
			
		||||
                            @icon('delete')
 | 
			
		||||
                            <div>{{ trans('entities.pages_edit_delete_draft') }}</div>
 | 
			
		||||
                        </button>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    @if(userCan('editor-change'))
 | 
			
		||||
                        <li>
 | 
			
		||||
                            <hr>
 | 
			
		||||
                        </li>
 | 
			
		||||
                        <li>
 | 
			
		||||
                            @if($editor === 'wysiwyg')
 | 
			
		||||
                                <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-clean" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                    @icon('swap-horizontal')
 | 
			
		||||
                                    <div>
 | 
			
		||||
                                        {{ trans('entities.pages_edit_switch_to_markdown') }}
 | 
			
		||||
                                        <br>
 | 
			
		||||
                                        <small>{{ trans('entities.pages_edit_switch_to_markdown_clean') }}</small>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </a>
 | 
			
		||||
                                <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-stable" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                    @icon('swap-horizontal')
 | 
			
		||||
                                    <div>
 | 
			
		||||
                                        {{ trans('entities.pages_edit_switch_to_markdown') }}
 | 
			
		||||
                                        <br>
 | 
			
		||||
                                        <small>{{ trans('entities.pages_edit_switch_to_markdown_stable') }}</small>
 | 
			
		||||
                                    </div>
 | 
			
		||||
                                </a>
 | 
			
		||||
                            @else
 | 
			
		||||
                                <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                    @icon('swap-horizontal')
 | 
			
		||||
                                    <div>{{ trans('entities.pages_edit_switch_to_wysiwyg') }}</div>
 | 
			
		||||
                                </a>
 | 
			
		||||
                            @endif
 | 
			
		||||
                        </li>
 | 
			
		||||
                    @endif
 | 
			
		||||
                </ul>
 | 
			
		||||
            </div>
 | 
			
		||||
            <ul refs="dropdown@menu" class="dropdown-menu" role="menu">
 | 
			
		||||
                <li>
 | 
			
		||||
                    <button refs="page-editor@saveDraft" type="button" class="text-pos icon-item">
 | 
			
		||||
                        @icon('save')
 | 
			
		||||
                        <div>{{ trans('entities.pages_edit_save_draft') }}</div>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </li>
 | 
			
		||||
                @if($isDraft)
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <a href="{{ $model->getUrl('/delete') }}" class="text-neg icon-item">
 | 
			
		||||
                            @icon('delete')
 | 
			
		||||
                            {{ trans('entities.pages_edit_delete_draft') }}
 | 
			
		||||
                        </a>
 | 
			
		||||
                    </li>
 | 
			
		||||
                @endif
 | 
			
		||||
                <li refs="page-editor@discard-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
 | 
			
		||||
                    <button refs="page-editor@discard-draft" type="button" class="text-warn icon-item">
 | 
			
		||||
                        @icon('cancel')
 | 
			
		||||
                        <div>{{ trans('entities.pages_edit_discard_draft') }}</div>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </li>
 | 
			
		||||
                <li refs="page-editor@delete-draft-wrap" {{ $isDraftRevision ? '' : 'hidden' }}>
 | 
			
		||||
                    <button refs="page-editor@delete-draft" type="button" class="text-neg icon-item">
 | 
			
		||||
                        @icon('delete')
 | 
			
		||||
                        <div>{{ trans('entities.pages_edit_delete_draft') }}</div>
 | 
			
		||||
                    </button>
 | 
			
		||||
                </li>
 | 
			
		||||
                @if(userCan('editor-change'))
 | 
			
		||||
                    <li>
 | 
			
		||||
                        <hr>
 | 
			
		||||
                    </li>
 | 
			
		||||
                    <li>
 | 
			
		||||
                        @if($editor === 'wysiwyg')
 | 
			
		||||
                            <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-clean" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                @icon('swap-horizontal')
 | 
			
		||||
                                <div>
 | 
			
		||||
                                    {{ trans('entities.pages_edit_switch_to_markdown') }}
 | 
			
		||||
                                    <br>
 | 
			
		||||
                                    <small>{{ trans('entities.pages_edit_switch_to_markdown_clean') }}</small>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </a>
 | 
			
		||||
                            <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=markdown-stable" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                @icon('swap-horizontal')
 | 
			
		||||
                                <div>
 | 
			
		||||
                                    {{ trans('entities.pages_edit_switch_to_markdown') }}
 | 
			
		||||
                                    <br>
 | 
			
		||||
                                    <small>{{ trans('entities.pages_edit_switch_to_markdown_stable') }}</small>
 | 
			
		||||
                                </div>
 | 
			
		||||
                            </a>
 | 
			
		||||
                        @else
 | 
			
		||||
                            <a href="{{ $model->getUrl($isDraft ? '' : '/edit') }}?editor=wysiwyg" refs="page-editor@changeEditor" class="icon-item">
 | 
			
		||||
                                @icon('swap-horizontal')
 | 
			
		||||
                                <div>{{ trans('entities.pages_edit_switch_to_wysiwyg') }}</div>
 | 
			
		||||
                            </a>
 | 
			
		||||
                        @endif
 | 
			
		||||
                    </li>
 | 
			
		||||
                @endif
 | 
			
		||||
            </ul>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div class="flex-container-row justify-flex-end gap-x-m items-center">
 | 
			
		||||
        <div component="dropdown"
 | 
			
		||||
             option:dropdown:move-menu="true"
 | 
			
		||||
             class="dropdown-container">
 | 
			
		||||
            <button refs="dropdown@toggle" type="button" aria-haspopup="true" aria-expanded="false" class="icon-list-item text-link">
 | 
			
		||||
                <span>@icon('edit')</span>
 | 
			
		||||
                <span refs="page-editor@changelogDisplay">{{ trans('entities.pages_edit_set_changelog') }}</span>
 | 
			
		||||
            </button>
 | 
			
		||||
            <ul refs="dropdown@menu" class="wide dropdown-menu">
 | 
			
		||||
                <li class="px-l py-m">
 | 
			
		||||
                    <p class="text-muted pb-s">{{ trans('entities.pages_edit_enter_changelog_desc') }}</p>
 | 
			
		||||
                    <input refs="page-editor@changelogInput"
 | 
			
		||||
                           name="summary"
 | 
			
		||||
                           id="summary-input"
 | 
			
		||||
                           type="text"
 | 
			
		||||
                           placeholder="{{ trans('entities.pages_edit_enter_changelog') }}" />
 | 
			
		||||
                </li>
 | 
			
		||||
            </ul>
 | 
			
		||||
            <span>{{-- Prevents button jumping on menu show --}}</span>
 | 
			
		||||
        </div>
 | 
			
		||||
 | 
			
		||||
        <div class="action-buttons px-m py-xs">
 | 
			
		||||
            <div component="dropdown"
 | 
			
		||||
                 option:dropdown:move-menu="true"
 | 
			
		||||
                 class="dropdown-container">
 | 
			
		||||
                <button refs="dropdown@toggle" type="button" aria-haspopup="true" aria-expanded="false" class="text-link text-button">@icon('edit') <span refs="page-editor@changelogDisplay">{{ trans('entities.pages_edit_set_changelog') }}</span></button>
 | 
			
		||||
                <ul refs="dropdown@menu" class="wide dropdown-menu">
 | 
			
		||||
                    <li class="px-l py-m">
 | 
			
		||||
                        <p class="text-muted pb-s">{{ trans('entities.pages_edit_enter_changelog_desc') }}</p>
 | 
			
		||||
                        <input refs="page-editor@changelogInput"
 | 
			
		||||
                               name="summary"
 | 
			
		||||
                               id="summary-input"
 | 
			
		||||
                               type="text"
 | 
			
		||||
                               placeholder="{{ trans('entities.pages_edit_enter_changelog') }}" />
 | 
			
		||||
                    </li>
 | 
			
		||||
                </ul>
 | 
			
		||||
                <span>{{-- Prevents button jumping on menu show --}}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <button type="submit" id="save-button" class="float-left text-link text-button text-pos-hover hide-under-m">@icon('save')<span>{{ trans('entities.pages_save') }}</span></button>
 | 
			
		||||
        <div class="inline block">
 | 
			
		||||
            <button type="submit" id="save-button"
 | 
			
		||||
                    class="icon-list-item hide-under-m text-pos fill-width">
 | 
			
		||||
                <span>@icon('save')</span>
 | 
			
		||||
                <span>{{ trans('entities.pages_save') }}</span>
 | 
			
		||||
            </button>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
</div>
 | 
			
		||||
| 
						 | 
				
			
			@ -1,15 +1,17 @@
 | 
			
		|||
<div component="editor-toolbox" class="floating-toolbox">
 | 
			
		||||
 | 
			
		||||
    <div class="tabs primary-background-light">
 | 
			
		||||
        <button type="button" refs="editor-toolbox@toggle" aria-expanded="false" class="toolbox-toggle">@icon('caret-left-circle')</button>
 | 
			
		||||
        <button type="button" refs="editor-toolbox@tab-button" data-tab="tags" title="{{ trans('entities.page_tags') }}" class="active">@icon('tag')</button>
 | 
			
		||||
        @if(userCan('attachment-create-all'))
 | 
			
		||||
            <button type="button" refs="editor-toolbox@tab-button" data-tab="files" title="{{ trans('entities.attachments') }}">@icon('attach')</button>
 | 
			
		||||
        @endif
 | 
			
		||||
        <button type="button" refs="editor-toolbox@tab-button" data-tab="templates" title="{{ trans('entities.templates') }}">@icon('template')</button>
 | 
			
		||||
        @if($comments->enabled())
 | 
			
		||||
            <button type="button" refs="editor-toolbox@tab-button" data-tab="comments" title="{{ trans('entities.comments') }}">@icon('comment')</button>
 | 
			
		||||
        @endif
 | 
			
		||||
    <div class="tabs flex-container-column justify-flex-start">
 | 
			
		||||
        <div class="tabs-inner flex-container-column justify-center">
 | 
			
		||||
            <button type="button" refs="editor-toolbox@toggle" title="{{ trans('entities.toggle_sidebar') }}" aria-expanded="false" class="toolbox-toggle">@icon('caret-left-circle')</button>
 | 
			
		||||
            <button type="button" refs="editor-toolbox@tab-button" data-tab="tags" title="{{ trans('entities.page_tags') }}" class="active">@icon('tag')</button>
 | 
			
		||||
            @if(userCan('attachment-create-all'))
 | 
			
		||||
                <button type="button" refs="editor-toolbox@tab-button" data-tab="files" title="{{ trans('entities.attachments') }}">@icon('attach')</button>
 | 
			
		||||
            @endif
 | 
			
		||||
            <button type="button" refs="editor-toolbox@tab-button" data-tab="templates" title="{{ trans('entities.templates') }}">@icon('template')</button>
 | 
			
		||||
            @if($comments->enabled())
 | 
			
		||||
                <button type="button" refs="editor-toolbox@tab-button" data-tab="comments" title="{{ trans('entities.comments') }}">@icon('comment')</button>
 | 
			
		||||
            @endif
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    <div refs="editor-toolbox@tab-content" data-tab-content="tags" class="toolbox-tab-content">
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,4 +1,4 @@
 | 
			
		|||
<div component="page-editor" class="page-editor flex-fill flex"
 | 
			
		||||
<div component="page-editor" class="page-editor page-editor-{{ $editor }} flex-fill flex"
 | 
			
		||||
     option:page-editor:drafts-enabled="{{ $draftsEnabled ? 'true' : 'false' }}"
 | 
			
		||||
     @if(config('services.drawio'))
 | 
			
		||||
        drawio-url="{{ is_string(config('services.drawio')) ? config('services.drawio') : 'https://embed.diagrams.net/?embed=1&proto=json&spin=1&configure=1' }}"
 | 
			
		||||
| 
						 | 
				
			
			@ -20,26 +20,37 @@
 | 
			
		|||
    {{--Header Toolbar--}}
 | 
			
		||||
    @include('pages.parts.editor-toolbar', ['model' => $model, 'editor' => $editor, 'isDraft' => $isDraft, 'draftsEnabled' => $draftsEnabled])
 | 
			
		||||
 | 
			
		||||
    {{--Title input--}}
 | 
			
		||||
    <div class="title-input page-title clearfix">
 | 
			
		||||
        <div refs="page-editor@titleContainer" class="input">
 | 
			
		||||
            @include('form.text', ['name' => 'name', 'model' => $model, 'placeholder' => trans('entities.pages_title')])
 | 
			
		||||
    <div class="flex flex-fill mx-s mb-s justify-center page-editor-page-area-wrap">
 | 
			
		||||
        <div class="page-editor-page-area flex-container-column flex flex-fill">
 | 
			
		||||
            {{--Title input--}}
 | 
			
		||||
            <div class="title-input page-title clearfix">
 | 
			
		||||
                <div refs="page-editor@titleContainer" class="input">
 | 
			
		||||
                    @include('form.text', ['name' => 'name', 'model' => $model, 'placeholder' => trans('entities.pages_title')])
 | 
			
		||||
                </div>
 | 
			
		||||
            </div>
 | 
			
		||||
 | 
			
		||||
            <div class="flex-fill flex">
 | 
			
		||||
                {{--Editors--}}
 | 
			
		||||
                <div class="edit-area flex-fill flex">
 | 
			
		||||
 | 
			
		||||
                    {{--WYSIWYG Editor--}}
 | 
			
		||||
                    @if($editor === 'wysiwyg')
 | 
			
		||||
                        @include('pages.parts.wysiwyg-editor', ['model' => $model])
 | 
			
		||||
                    @endif
 | 
			
		||||
 | 
			
		||||
                    {{--Markdown Editor--}}
 | 
			
		||||
                    @if($editor === 'markdown')
 | 
			
		||||
                        @include('pages.parts.markdown-editor', ['model' => $model])
 | 
			
		||||
                    @endif
 | 
			
		||||
 | 
			
		||||
                </div>
 | 
			
		||||
 | 
			
		||||
            </div>
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{--Editors--}}
 | 
			
		||||
    <div class="edit-area flex-fill flex">
 | 
			
		||||
 | 
			
		||||
        {{--WYSIWYG Editor--}}
 | 
			
		||||
        @if($editor === 'wysiwyg')
 | 
			
		||||
            @include('pages.parts.wysiwyg-editor', ['model' => $model])
 | 
			
		||||
        @endif
 | 
			
		||||
 | 
			
		||||
        {{--Markdown Editor--}}
 | 
			
		||||
        @if($editor === 'markdown')
 | 
			
		||||
            @include('pages.parts.markdown-editor', ['model' => $model])
 | 
			
		||||
        @endif
 | 
			
		||||
 | 
			
		||||
        <div class="relative flex-fill">
 | 
			
		||||
            @include('pages.parts.editor-toolbox')
 | 
			
		||||
        </div>
 | 
			
		||||
    </div>
 | 
			
		||||
 | 
			
		||||
    {{--Mobile Save Button--}}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -7,7 +7,7 @@
 | 
			
		|||
 | 
			
		||||
    <div class="markdown-editor-wrap active flex-container-column">
 | 
			
		||||
        <div class="editor-toolbar flex-container-row items-stretch justify-space-between">
 | 
			
		||||
            <div class="editor-toolbar-label text-mono px-m py-xs flex-container-row items-center flex">
 | 
			
		||||
            <div class="editor-toolbar-label text-mono bold px-m py-xs flex-container-row items-center flex">
 | 
			
		||||
                <span>{{ trans('entities.pages_md_editor') }}</span>
 | 
			
		||||
            </div>
 | 
			
		||||
            <div component="dropdown" class="buttons flex-container-row items-stretch">
 | 
			
		||||
| 
						 | 
				
			
			@ -44,7 +44,7 @@
 | 
			
		|||
        <div refs="markdown-editor@divider" class="markdown-panel-divider flex-fill"></div>
 | 
			
		||||
        <div class="flex-container-column flex flex-fill">
 | 
			
		||||
            <div class="editor-toolbar">
 | 
			
		||||
                <div class="editor-toolbar-label text-mono px-m py-xs">{{ trans('entities.pages_md_preview') }}</div>
 | 
			
		||||
                <div class="editor-toolbar-label text-mono bold px-m py-xs">{{ trans('entities.pages_md_preview') }}</div>
 | 
			
		||||
            </div>
 | 
			
		||||
            <iframe src="about:blank"
 | 
			
		||||
                    refs="markdown-editor@display"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue