mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2024-09-27 14:48:19 +00:00
Feat: dynamically refresh class for draggable widget DOM node instead of re-rendering the widget (#6787)
This commit is contained in:
parent
2da117484c
commit
f6e021d70f
@ -87,12 +87,32 @@ DraggableWidget.prototype.execute = function() {
|
|||||||
this.makeChildWidgets();
|
this.makeChildWidgets();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
DraggableWidget.prototype.updateDomNodeClasses = function() {
|
||||||
|
var domNodeClasses = this.domNodes[0].className.split(" "),
|
||||||
|
oldClasses = this.draggableClasses.split(" ");
|
||||||
|
this.draggableClasses = this.getAttribute("class");
|
||||||
|
//Remove classes assigned from the old value of class attribute
|
||||||
|
$tw.utils.each(oldClasses,function(oldClass){
|
||||||
|
var i = domNodeClasses.indexOf(oldClass);
|
||||||
|
if(i !== -1) {
|
||||||
|
domNodeClasses.splice(i,1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
//Add new classes from updated class attribute.
|
||||||
|
$tw.utils.pushTop(domNodeClasses,this.draggableClasses);
|
||||||
|
this.domNodes[0].setAttribute("class",domNodeClasses.join(" "))
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
Selectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering
|
||||||
*/
|
*/
|
||||||
DraggableWidget.prototype.refresh = function(changedTiddlers) {
|
DraggableWidget.prototype.refresh = function(changedTiddlers) {
|
||||||
var changedAttributes = this.computeAttributes();
|
var changedAttributes = this.computeAttributes(),
|
||||||
if($tw.utils.count(changedAttributes) > 0) {
|
changedAttributesCount = $tw.utils.count(changedAttributes);
|
||||||
|
if(changedAttributesCount === 1 && changedAttributes["class"]) {
|
||||||
|
this.updateDomNodeClasses();
|
||||||
|
} else if(changedAttributesCount > 0) {
|
||||||
this.refreshSelf();
|
this.refreshSelf();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -101,4 +121,4 @@ DraggableWidget.prototype.refresh = function(changedTiddlers) {
|
|||||||
|
|
||||||
exports.draggable = DraggableWidget;
|
exports.draggable = DraggableWidget;
|
||||||
|
|
||||||
})();
|
})();
|
Loading…
Reference in New Issue
Block a user