forked from dojo/dojox-oldmirror
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Button.js
88 lines (78 loc) · 2.59 KB
/
Button.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
define([
"dojo/_base/array",
"dojo/_base/declare",
"dojo/dom-class",
"dojo/dom-construct",
"dijit/_WidgetBase",
"dijit/form/_ButtonMixin",
"dijit/form/_FormWidgetMixin"
],
function(array, declare, domClass, domConstruct, WidgetBase, ButtonMixin, FormWidgetMixin){
return declare("dojox.mobile.Button", [WidgetBase, FormWidgetMixin, ButtonMixin], {
// summary:
// Non-templated BUTTON widget with a thin API wrapper for click
// events and for setting the label.
// description:
// Buttons can display a label, an icon, or both.
// A label should always be specified (through innerHTML) or the label
// attribute. It can be hidden via showLabel=false.
// example:
// | <button data-dojo-type="dijit.form.Button" onClick="...">Hello world</button>
// baseClass: String
// The name of the CSS class of this widget.
baseClass: "mblButton",
// _setTypeAttr: [private] Function
// Overrides the automatic assignement of type to nodes, because it causes
// exception on IE. Instead, the type must be specified as this.type
// when the node is created, as part of the original DOM.
_setTypeAttr: null,
// duration: Number
// The duration of selection, in milliseconds, or -1 for no post-click CSS styling.
duration: 1000,
/*=====
// label: String
// The label of the button.
label: "",
=====*/
_onClick: function(e){
// tags:
// private
var ret = this.inherited(arguments);
if(ret && this.duration >= 0){ // if its not a button with a state, then emulate press styles
var button = this.focusNode || this.domNode;
var newStateClasses = (this.baseClass+' '+this["class"]).split(" ");
newStateClasses = array.map(newStateClasses, function(c){ return c+"Selected"; });
domClass.add(button, newStateClasses);
setTimeout(function(){
domClass.remove(button, newStateClasses);
}, this.duration);
}
return ret;
},
isFocusable: function(){
// Override of the method of dijit/_WidgetBase.
return false;
},
buildRendering: function(){
if(!this.srcNodeRef){
this.srcNodeRef = domConstruct.create("button", {"type": this.type});
}else if(this._cv){
var n = this.srcNodeRef.firstChild;
if(n && n.nodeType === 3){
n.nodeValue = this._cv(n.nodeValue);
}
}
this.inherited(arguments);
this.focusNode = this.domNode;
},
postCreate: function(){
this.inherited(arguments);
this.connect(this.domNode, "onclick", "_onClick");
},
_setLabelAttr: function(/*String*/ content){
// tags:
// private
this.inherited(arguments, [this._cv ? this._cv(content) : content]);
}
});
});