mirror of https://github.com/Squidex/squidex.git
2 changed files with 156 additions and 0 deletions
@ -0,0 +1,100 @@ |
|||||
|
|
||||
|
function SquidexFormField() { |
||||
|
var disabledHandler; |
||||
|
var disabled; |
||||
|
var valueHandler; |
||||
|
var value; |
||||
|
var timer; |
||||
|
var height = document.body.offsetHeight; |
||||
|
|
||||
|
function eventListener(event) { |
||||
|
if (event.source !== window) { |
||||
|
if (event.data.type === 'disabled') { |
||||
|
disabled = event.data.isDisabled; |
||||
|
|
||||
|
if (disabledHandler) { |
||||
|
disabledHandler(disabled); |
||||
|
} |
||||
|
} else if (event.data.type === 'valueChanged') { |
||||
|
var value = event.data.value; |
||||
|
|
||||
|
if (valueHandler) { |
||||
|
valueHandler(value); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
document.body.style.margin = '0'; |
||||
|
document.body.style.padding = '0'; |
||||
|
|
||||
|
window.addEventListener('message', eventListener, false); |
||||
|
|
||||
|
window.parent.postMessage({ type: 'started' }, '*'); |
||||
|
window.parent.postMessage({ type: 'resize', height: height }, '*'); |
||||
|
|
||||
|
timer = setInterval(function () { |
||||
|
var newHeight = document.body.offsetHeight; |
||||
|
|
||||
|
if (height !== newHeight) { |
||||
|
height = newHeight; |
||||
|
|
||||
|
window.parent.postMessage({ type: 'resize', height: height }, '*') |
||||
|
} |
||||
|
}, 500); |
||||
|
|
||||
|
var editor = { |
||||
|
/* |
||||
|
* Notifies the control container that the editor has been touched. |
||||
|
*/ |
||||
|
touched: function () { |
||||
|
if (window.parent) { |
||||
|
window.parent.postMessage({ type: 'touched' }, '*'); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* |
||||
|
* Notifies the control container that the value has been changed. |
||||
|
*/ |
||||
|
valueChanged: function (value) { |
||||
|
if (window.parent) { |
||||
|
window.parent.postMessage({ type: 'valueChanged', value: value }, '*'); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* |
||||
|
* Register the disabled handler. |
||||
|
*/ |
||||
|
onDisabled: function (callback) { |
||||
|
disabledHandler = callback; |
||||
|
|
||||
|
if (callback) { |
||||
|
callback(disabled); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* |
||||
|
* Register the disabled handler. |
||||
|
*/ |
||||
|
onValueChanged: function (callback) { |
||||
|
valueHandler = callback; |
||||
|
|
||||
|
if (callback) { |
||||
|
callback(value); |
||||
|
} |
||||
|
}, |
||||
|
|
||||
|
/* |
||||
|
* Clean the editor SDK. |
||||
|
*/ |
||||
|
clean: function () { |
||||
|
if (timer) { |
||||
|
window.removeEventListener('message', eventListener); |
||||
|
|
||||
|
timer(); |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
|
||||
|
return editor; |
||||
|
}; |
||||
@ -0,0 +1,56 @@ |
|||||
|
<!DOCTYPE html> |
||||
|
<html> |
||||
|
|
||||
|
<head> |
||||
|
<meta charset="utf-8"> |
||||
|
|
||||
|
<script src="editor-sdk.js"></script> |
||||
|
<script src="https://cdn.ckeditor.com/ckeditor5/10.0.0/classic/ckeditor.js"></script> |
||||
|
|
||||
|
<style> |
||||
|
.ck-editor__editable { |
||||
|
min-height: 250px; |
||||
|
} |
||||
|
</style> |
||||
|
</head> |
||||
|
|
||||
|
<body> |
||||
|
<textarea name="content" id="editor"></textarea> |
||||
|
|
||||
|
<script> |
||||
|
var element = document.getElementById('editor'); |
||||
|
|
||||
|
ClassicEditor |
||||
|
.create(element) |
||||
|
.catch(error => { |
||||
|
console.error(error); |
||||
|
}) |
||||
|
.then(editor => { |
||||
|
var field = new SquidexFormField(); |
||||
|
|
||||
|
field.onValueChanged(function (value) { |
||||
|
if (value) { |
||||
|
editor.setData(value); |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
field.onDisabled(function (disabled) { |
||||
|
editor.set('isReadOnly', disabled); |
||||
|
}); |
||||
|
|
||||
|
editor.model.document.on('change', function () { |
||||
|
var data = editor.getData(); |
||||
|
|
||||
|
field.valueChanged(data); |
||||
|
}); |
||||
|
|
||||
|
editor.ui.focusTracker.on('change:isFocused', function (event, name, isFocused) { |
||||
|
if (!isFocused) { |
||||
|
field.touched(); |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
</script> |
||||
|
</body> |
||||
|
|
||||
|
</html> |
||||
Loading…
Reference in new issue