A jQuery Plugin to create highly configurable floating panels, modals, tooltips and hints/notifiers
stimmt schon.... ich hatte bei v3 auch nicht so ganz den erfolg den ich wollte.... deswegen ging ich recht schnell zur alpha über und war davon sehr angetan...
ich versuche mir gerade eine neue version meines browsergames zu erstellen... und da möchte ich gerne solche fenster verwenden.... und bisher erfüllen deine panels genau das, was ich möchte....
zumal sie viele aha-effekte bei mir in den letzten tagen hervorgebracht hat und ich für mich persönlich sichtbare fortschritte erzielen konnte...
hier mal meine funktion die ich aufrufe um meine fenster variable zu erstellen...
function setContent(pagename){
//mit pagenameID kann ein Panel nur einmal geöffnet werden.... ohne mehrfach
if(pagename == 'main') {
var pagenameID = '';
}else{
var pagenameID = pagename;
}
jsPanel.create({
id: pagenameID,
theme: 'rebeccapurple',
contentSize: {
width: function() { return Math.min(730, window.innerWidth*0.9);},
height: function() { return Math.min(400, window.innerHeight*0.5);}
},
position: {my: "center-top", at: "center-top", offsetY: 15},
animateIn: 'jsPanelFadeIn', // wird die zeile auskommentiert, funktioniert die opacity
headerTitle: pagename,
contentAjax: 'content/' + pagename + '.html'
})
}
der link funktioniert im übrigen nicht ...
http://jspanel.de/demos/group-minimized.html
hier geklickt: http://jspanel.de/api/#option/minimizeTo
bei
Go to group-minimized.html for an example.
und bei der funktion fallen mir direkt 2 dinge auf....
während des normalen minimized reihen sich die minimierten fenster nacheinander ein.... bei der gruppierung, drängelt sich die gruppe vor das undefinierte minimierte fenster.... die reihenfolge wird somit verändert...
die gruppe lässt sich zwar per mouseover anzeigen, jedoch kann ich den 2. und 3. reiter nicht erreichen und muss demnach die jeweils erste öffnen...
function miniAll() {
var x = document.getElementsByClassName("jsPanel");
var i;
for (i = 0; i < x.length; i++) {
x[i].minimize();
}
}
document.querySelectorAll(".jsPanel").forEach(function(elmt){
elmt.minimize();
});
Sofern der browser NodeList.prototype.forEach() unterstützt https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach
Also wenn du im minimierten panel gar keine controls haben willst wäre mein Ansatz ein anderer. Nutze option.minimizeTo um das automatische Erstellen eines minimierten panels zu unterbinden und erstelle ein eigenes minimiertes panel in option.onminimized.
jsPanel.create({
minimizeTo: false,
onminimized: function(panel) {
var min = document.createElement('div');
min.textContent = 'TEST';
min.style.padding = '5px 10px';
min.style.backgroundColor = 'yellow';
min.style.cursor = 'pointer';
var minContainer = document.querySelector('#jsPanel-replacement-container');
minContainer.append(min);
min.addEventListener('click', function(){
panel.normalize();
minContainer.removeChild(min);
});
}
});
Das ist deutlich einfacher als mühsam das default minimierte panel zu bearbeiten.
minimizeTo: false
schaftt zwar das original panel aus dem Weg, erzeugt aber kein Ersatzelement.onminimized
wird zunächst das custom Ersatzelement erzeugt und dann in den entsprechenden container eingefügt.