j-Detach
Składnik może odłączyć/przyłączać wszystkie elementy (elementy HTML). Na przykład, jeśli masz elementy wewnątrz panelu, możesz przenieść elementy np. do j-Windows.
Składnik watch ścieżka {Boolean} i jeśli wartość zawiera true, elementy zostaną oddzielone inaczej przymocowane.
Konfiguracja:
detach {String}- link dofunction(children, element)attach {String}- link dofunction(children, element)remove {String}- link dofunction(children)
detachjest wykonywany, gdy zawartość jest wyłączonaattachjest wykonywany, gdy treść musi zostać zwróconaremovejest wykonywany, gdy składnik (lub element rodzinny) jest usunięty
Użyj go z <ui-component name="detach">Gdy element nie jest jeszcze ładowany, jComponent Pobierz go po pierwszym użyciu z adresu DEF.fallback (Wydaje się Componentator Autor: Peter Širka Źródło: Componentator Zestaw składników, licencja MIT.
<style>
body { padding: 0; margin: 0; overflow: hidden; }
</style>
<ui-component name="windows" path="common.windows"></ui-component>
<div class="center padding"><button onclick="togglewindow()">Toggle windowed mode</button></div>
<div style="margin:30px auto;border:1px solid #E0E0E0;max-width:500px;width:100%;min-height:100px;">
<ui-component name="detach" path="common.detach" config="detach:el_detach;attach:el_attach;remove:el_remove">
<div class="padding">
<h2>Your content</h2>
<div><img src="https://cdn.componentator.com/logo.svg" width="200" /></div>
</div>
</ui-component>
</div>
<script>
var common = {};
common.detach = false;
common.windows = [];
function el_detach(children, element) {
var id = 'mywin';
var div = document.createElement('DIV');
var win = {};
win.id = id;
win.cachekey = id;
win.offset = { x: 200, y: 100, width: 840, height: 500, minwidth: 450, minheight: 300 };
win.actions = { move: true, close: true, resize: true, maximize: true, minimize: false, autosave: true };
win.title = 'Example';
win.html = div;
win.close = function(next) {
SET('common.detach', false);
next();
};
for (var m of children)
div.appendChild(m);
PUSH('common.windows', win);
}
function el_attach(children, element) {
var id = 'mywin';
for (var m of children)
element[0].appendChild(m);
common.windows.splice(common.windows.findIndex('id', id), 1);
UPD('common.windows');
}
function el_remove(children) {
var id = 'mywin';
var index = common.windows.findIndex('id', id);
if (index !== -1) {
common.windows.splice(index, 1);
UPD('common.windows');
}
}
function togglewindow() {
var path = 'common.detach';
var val = GET(path);
SET(path, !val);
}
</script>