From 70774eca83ff3f612c2725b8c58aa54fd99c3c8d Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 9 Nov 2023 18:34:41 +0000 Subject: [PATCH] Refactor ready for making mechanism more generic --- core/modules/widgets/button.js | 22 ++++++++-------------- 1 file changed, 8 insertions(+), 14 deletions(-) diff --git a/core/modules/widgets/button.js b/core/modules/widgets/button.js index e1256ec30..eec57ba7b 100644 --- a/core/modules/widgets/button.js +++ b/core/modules/widgets/button.js @@ -16,8 +16,6 @@ var Widget = require("$:/core/modules/widgets/widget.js").widget; var Popup = require("$:/core/modules/utils/dom/popup.js"); -var DATA_ATTRIBUTE_PREFIX = "data-"; - var ButtonWidget = function(parseTreeNode,options) { this.initialise(parseTreeNode,options); }; @@ -256,11 +254,15 @@ ButtonWidget.prototype.updateDomNodeClasses = function() { this.domNode.className = domNodeClasses.join(" "); }; -ButtonWidget.prototype.updateDomNodeDataAttributes = function() { +ButtonWidget.prototype.updateDomNodeDataAttributes = function(changedAttributes,domNode) { var self = this; - $tw.utils.each(this.attributes,function(value,name) { + changedAttributes = changedAttributes || this.attributes; + domNode = domNode || this.domNode; + var DATA_ATTRIBUTE_PREFIX = "data-"; + $tw.utils.each(changedAttributes,function(value,name) { + value = self.getAttribute(name); if(name.substr(0,DATA_ATTRIBUTE_PREFIX.length) === DATA_ATTRIBUTE_PREFIX) { - self.domNode.setAttribute(name,value); + domNode.setAttribute(name,value); } }); }; @@ -277,15 +279,7 @@ ButtonWidget.prototype.refresh = function(changedTiddlers) { if(changedAttributes["class"]) { this.updateDomNodeClasses(); } - var gotDataAttribute = false; - $tw.utils.each(changedAttributes,function(value,name) { - if(name.substr(0,DATA_ATTRIBUTE_PREFIX.length) === DATA_ATTRIBUTE_PREFIX) { - gotDataAttribute = true; - } - }); - if(gotDataAttribute) { - this.updateDomNodeDataAttributes(); - } + this.updateDomNodeDataAttributes(changedAttributes); } return this.refreshChildren(changedTiddlers); };