Browse Source

Fixes for fullscreen mode.

pull/588/head
Sebastian 5 years ago
parent
commit
109a0aaa03
  1. 25
      backend/src/Squidex/wwwroot/scripts/editor-sdk.js
  2. 32
      backend/src/Squidex/wwwroot/scripts/editor-simple.html
  3. 9
      frontend/app/framework/angular/forms/editors/iframe-editor.component.ts

25
backend/src/Squidex/wwwroot/scripts/editor-sdk.js

@ -124,6 +124,8 @@ function SquidexFormField() {
var initCalled = false; var initCalled = false;
var disabledHandler; var disabledHandler;
var disabled = false; var disabled = false;
var fullscreen = false;
var fullscreenHandler = false;
var valueHandler; var valueHandler;
var value; var value;
var formValueHandler; var formValueHandler;
@ -149,6 +151,12 @@ function SquidexFormField() {
} }
} }
function raiseFullscreen() {
if (fullscreenHandler) {
fullscreenHandler(fullscreen);
}
}
function raiseInit() { function raiseInit() {
if (initHandler && !initCalled && context) { if (initHandler && !initCalled && context) {
initHandler(context); initHandler(context);
@ -174,6 +182,10 @@ function SquidexFormField() {
formValue = event.data.formValue; formValue = event.data.formValue;
raiseFormValueChanged(); raiseFormValueChanged();
} else if (type === 'fullscreenChanged') {
fullscreen = event.data.fullscreen;
raiseFullscreen();
} else if (type === 'init') { } else if (type === 'init') {
context = event.data.context; context = event.data.context;
@ -233,9 +245,9 @@ function SquidexFormField() {
* *
* @params mode: boolean: The fullscreen mode. * @params mode: boolean: The fullscreen mode.
*/ */
fullscreen: function (mode) { toggleFullscreen: function () {
if (window.parent) { if (window.parent) {
window.parent.postMessage({ type: 'fullscreen', mode: mode }, '*'); window.parent.postMessage({ type: 'fullscreen', mode: !fullscreen }, '*');
} }
}, },
@ -287,6 +299,15 @@ function SquidexFormField() {
raiseFormValueChanged(); raiseFormValueChanged();
}, },
/**
* Register the fullscreen changed handler.
*/
onFullscreen: function (callback) {
fullscreenHandler = callback;
raiseFullscreen();
},
/** /**
* Clean the editor SDK. * Clean the editor SDK.

32
backend/src/Squidex/wwwroot/scripts/editor-simple.html

@ -13,6 +13,24 @@
min-height: 250px; min-height: 250px;
} }
.fullscreen {
height: 100vh;
}
.fullscreen .ck-editor {
position: fixed !important;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1000;
}
.fullscreen .ck-editor .ck-editor__editable.ck-rounded-corners.ck-editor__editable_inline,
.fullscreen .ck-editor .ck.ck-editor__main {
height: 100%;
}
#fullscreenButton { #fullscreenButton {
position: absolute; position: absolute;
z-index: 10000; z-index: 10000;
@ -28,8 +46,6 @@
<textarea name="content" id="editor"></textarea> <textarea name="content" id="editor"></textarea>
<script> <script>
var fullscreen = false;
var element = document.getElementById('editor'); var element = document.getElementById('editor');
ClassicEditor ClassicEditor
@ -55,6 +71,14 @@
editor.set('isReadOnly', disabled); editor.set('isReadOnly', disabled);
}); });
field.onFullscreen(function (fullscreen) {
if (fullscreen) {
document.body.classList.add('fullscreen');
} else {
document.body.classList.remove('fullscreen');
}
});
editor.model.document.on('change', function () { editor.model.document.on('change', function () {
var data = editor.getData(); var data = editor.getData();
@ -71,9 +95,7 @@
document.getElementById('fullscreenButton') document.getElementById('fullscreenButton')
.addEventListener('click', function () { .addEventListener('click', function () {
fullscreen = !fullscreen; field.toggleFullscreen();
field.fullscreen(fullscreen);
}); });
}); });
</script> </script>

9
frontend/app/framework/angular/forms/editors/iframe-editor.component.ts

@ -94,6 +94,7 @@ export class IFrameEditorComponent extends StatefulControlComponent<State, any>
this.isInitialized = true; this.isInitialized = true;
this.sendInit(); this.sendInit();
this.sendFullscreen();
this.sendFormValue(); this.sendFormValue();
this.sendDisabled(); this.sendDisabled();
this.sendValue(); this.sendValue();
@ -148,6 +149,10 @@ export class IFrameEditorComponent extends StatefulControlComponent<State, any>
this.sendMessage('valueChanged', { value: this.value }); this.sendMessage('valueChanged', { value: this.value });
} }
private sendFullscreen() {
this.sendMessage('fullscreenChanged', { fullscreen: this.snapshot.isFullscreen });
}
private sendDisabled() { private sendDisabled() {
this.sendMessage('disabled', { isDisabled: this.isDisabled }); this.sendMessage('disabled', { isDisabled: this.isDisabled });
} }
@ -157,6 +162,8 @@ export class IFrameEditorComponent extends StatefulControlComponent<State, any>
} }
private toggleFullscreen(isFullscreen: boolean) { private toggleFullscreen(isFullscreen: boolean) {
this.next(s => ({ ...s, isFullscreen }));
let target = this.container.nativeElement; let target = this.container.nativeElement;
if (isFullscreen) { if (isFullscreen) {
@ -165,7 +172,7 @@ export class IFrameEditorComponent extends StatefulControlComponent<State, any>
this.renderer.appendChild(target, this.inner.nativeElement); this.renderer.appendChild(target, this.inner.nativeElement);
this.next(s => ({ ...s, isFullscreen })); this.sendFullscreen();
} }
private sendMessage(type: string, payload: any) { private sendMessage(type: string, payload: any) {

Loading…
Cancel
Save