dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
55 lines (49 loc) • 1.74 kB
JavaScript
define([
"dojo/_base/array",
"dojo/_base/declare",
"./common"
], function(array, declare, common){
// module:
// dojox/mobile/bidi/Tooltip
return declare(null, {
// summary:
// Support for control over text direction for mobile Tooltip widget, using Unicode Control Characters to control text direction.
// description:
// Implementation for text direction support for Tooltip's text containing embedded nodes.
// Complicated embedded nodes (like tables) are not supported.
// This class should not be used directly.
// Mobile Tooltip widget loads this module when user sets "has: {'dojo-bidi': true }" in data-dojo-config.
postCreate: function(){
this.inherited(arguments);
if(this.textDir){
this._applyTextDirToTextElements();
}
},
buildRendering: function(){
this.inherited(arguments);
//dojox.mobile mirroring support
if(!this.isLeftToRight()){
this.arrow.style.left = "0px";
}
},
_setTextDirAttr: function(textDir){
if(textDir && this.textDir !== textDir){
this.textDir = textDir;
this._applyTextDirToTextElements();
}
},
_applyTextDirToTextElements: function(){
// summary:
// Wrap relevant child text nodes in directional UCC marks
array.forEach(this.domNode.childNodes, function(node){
var currentNode = (node.nodeType === 1 && node.childNodes.length === 1) ? node.firstChild : node;
if(currentNode.nodeType === 3 && currentNode.nodeValue){
if(currentNode.nodeValue.search(/[.\S]/) != -1){
currentNode.nodeValue = common.removeUCCFromText(currentNode.nodeValue);
currentNode.nodeValue = common.enforceTextDirWithUcc(currentNode.nodeValue, this.textDir);
}
}
}, this);
}
});
});