14
14
( function ( $ , undefined ) {
15
15
16
16
var uiInlineEditClasses = 'ui-inlineedit-content ui-widget ui-widget-content ui-corner-all' ,
17
- highlight = 'ui-state-highlight' ;
17
+ buttonClass = 'ui-inlineedit-button' ,
18
+ cancelClass = 'ui-inlineedit-cancel' ,
19
+ inputClass = 'ui-inlineedit-input' ,
20
+ placeholderClass = 'ui-inlineedit-placeholder' ,
21
+ saveClass = 'ui-inlineedit-save' ,
22
+ cancelIconClass = 'ui-icon ui-icon-cancel' ,
23
+ saveIconClass = 'ui-icon ui-icon-disk' ,
24
+ defaultStateClass = 'ui-state-default' ,
25
+ highlightStateClass = 'ui-state-highlight' ,
26
+ hoverStateClass = 'ui-state-hover' ;
18
27
19
28
$ . widget ( "ui.inlineedit" , {
20
29
version : "@VERSION" ,
21
30
widgetEventPrefix : "edit" ,
31
+
22
32
options : {
23
33
value : '' ,
24
34
saveButton : 'Save' ,
@@ -28,7 +38,7 @@ $.widget( "ui.inlineedit", {
28
38
29
39
_init : function ( ) {
30
40
if ( ! this . value ( $ . trim ( this . element . text ( ) ) || this . options . value ) ) {
31
- this . element . html ( $ ( this . _placeholderHtml ( ) ) ) ;
41
+ this . _show ( ) ;
32
42
}
33
43
this . _delegate ( ) ;
34
44
} ,
@@ -40,93 +50,116 @@ $.widget( "ui.inlineedit", {
40
50
. bind ( 'click' , function ( event ) {
41
51
var $this = $ ( event . target ) ;
42
52
43
- if ( $this . hasClass ( 'ui-inlineedit-save' ) || $this . parent ( ) . hasClass ( 'ui-inlineedit-save' ) ) {
44
- self . _save ( event , self . element . find ( '.ui-inlineedit-input' ) . val ( ) ) ;
53
+ if ( $this . hasClass ( saveClass ) || $this . parent ( ) . hasClass ( saveClass ) ) {
54
+ self . _save ( event , self . element . find ( '.' + inputClass ) . val ( ) ) ;
45
55
return ;
46
56
}
47
57
48
- if ( $this . hasClass ( 'ui-inlineedit-cancel' ) || $this . parent ( ) . hasClass ( 'ui-inlineedit-cancel' ) ) {
49
- self . _cancel ( event , self . element . find ( '.ui-inlineedit-input' ) . val ( ) ) ;
58
+ if ( $this . hasClass ( cancelClass ) || $this . parent ( ) . hasClass ( cancelClass ) ) {
59
+ self . _cancel ( event ) ;
50
60
return ;
51
61
}
52
62
53
- if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( 'ui-inlineedit-placeholder' ) ) {
54
- self . _render ( ) ;
63
+ if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( placeholderClass ) ) {
64
+ self . _edit ( ) ;
55
65
return ;
56
66
}
57
67
} )
58
68
. bind ( 'mouseover' , function ( event ) {
59
69
var $this = $ ( event . target ) ;
60
70
61
- self . element . removeClass ( highlight ) ;
62
- self . element . find ( '.ui-inlineedit-button' ) . removeClass ( 'ui-state-hover' ) ;
71
+ self . element . removeClass ( highlightStateClass ) ;
72
+ self . element . find ( '.' + buttonClass ) . removeClass ( hoverStateClass ) ;
63
73
64
- if ( $this . hasClass ( 'ui-inlineedit-save' ) || $this . parent ( ) . hasClass ( 'ui-inlineedit-save' ) ) {
65
- self . element . find ( '.ui-inlineedit-save' ) . addClass ( 'ui-state-hover' ) ;
74
+ if ( $this . hasClass ( saveClass ) || $this . parent ( ) . hasClass ( saveClass ) ) {
75
+ self . element . find ( '.' + saveClass ) . addClass ( hoverStateClass ) ;
66
76
return ;
67
77
}
68
78
69
- if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( 'ui-inlineedit-placeholder' ) ) {
70
- self . element . addClass ( highlight ) ;
79
+ if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( placeholderClass ) ) {
80
+ self . element . addClass ( highlightStateClass ) ;
71
81
return ;
72
82
}
73
83
} )
74
84
. bind ( 'mouseout' , function ( event ) {
75
85
var $this = $ ( event . target ) ;
76
86
77
- if ( $this . hasClass ( 'ui-inlineedit-save' ) || $this . parent ( ) . hasClass ( 'ui-inlineedit-save' ) ) {
78
- self . element . find ( '.ui-inlineedit-save' ) . removeClass ( 'ui-state-hover' ) ;
87
+ if ( $this . hasClass ( saveClass ) || $this . parent ( ) . hasClass ( saveClass ) ) {
88
+ self . element . find ( '.' + saveClass ) . removeClass ( hoverStateClass ) ;
79
89
return ;
80
90
}
81
91
82
- if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( 'ui-inlineedit-placeholder' ) ) {
83
- self . element . removeClass ( highlight ) ;
92
+ if ( $this . hasClass ( 'ui-inlineedit' ) || $this . hasClass ( placeholderClass ) ) {
93
+ self . element . removeClass ( highlightStateClass ) ;
84
94
return ;
85
95
}
86
96
} )
87
- . addClass ( 'ui-inlineedit' ) ;
97
+ . addClass ( 'ui-inlineedit' ) ;
88
98
} ,
89
99
90
- _uiInlineEditHtml : function ( ) {
91
- return '<form class="' + uiInlineEditClasses + '">' +
92
- '<input class="ui-inlineedit-input" type="text" value="' + this . value ( ) + '">' +
93
- '<a href="#" class="ui-inlineedit-save ui-inlineedit-button ui-state-default" title="' + this . options . saveButton + '"><span class="ui-icon ui-icon-disk">' + this . options . saveButton + '</span></a>' +
94
- '<a href="#" class="ui-inlineedit-cancel ui-inlineedit-button ui-state-default" title="' + this . options . cancelButton + '"><span class="ui-icon ui-icon-cancel">' + this . options . cancelButton + '</span></a>' +
95
- '</form>' ;
96
- } ,
100
+ _show : function ( ) {
101
+ this . element . html ( this . value ( ) || this . _placeholder ( ) ) ;
102
+ } ,
97
103
98
- _placeholderHtml : function ( ) {
99
- return '<span class="ui-inlineedit-placeholder">' + this . options . placeholder + '</span>' ;
104
+ _edit : function ( ) {
105
+ this . element
106
+ . html ( this . _form ( ) ) ;
107
+ this . _formDelegate ( ) ;
100
108
} ,
101
109
102
- _render : function ( ) {
103
- this . element
104
- . html ( this . _uiInlineEditHtml ( ) ) ;
105
- this . _complete ( ) ;
106
- this . _formSubmit ( ) ;
110
+ _placeholder : function ( ) {
111
+ return $ ( "<span></span>" )
112
+ . addClass ( placeholderClass )
113
+ . html ( this . options . placeholder ) ;
114
+ } ,
115
+
116
+ _form : function ( ) {
117
+ return $ ( "<form></form>" )
118
+ . addClass ( uiInlineEditClasses )
119
+ . append ( $ ( "<input/>" )
120
+ . attr ( "type" , "text" )
121
+ . attr ( "value" , this . value ( ) )
122
+ . addClass ( inputClass ) )
123
+ . append ( this . _saveButton ( ) )
124
+ . append ( this . _cancelButton ( ) ) ;
107
125
} ,
108
126
109
- _formSubmit : function ( ) {
127
+ _saveButton : function ( ) {
128
+ return $ ( "<a></a>" )
129
+ . attr ( "href" , "#" )
130
+ . attr ( "title" , this . options . saveButton )
131
+ . addClass ( saveClass + " " + buttonClass + " " + defaultStateClass )
132
+ . append ( $ ( "<span></span>" )
133
+ . addClass ( saveIconClass )
134
+ . html ( this . options . saveButton ) ) ;
135
+ } ,
136
+
137
+ _cancelButton : function ( ) {
138
+ return $ ( "<a></a>" )
139
+ . attr ( "href" , "#" )
140
+ . attr ( "title" , this . options . cancelButton )
141
+ . addClass ( cancelClass + " " + buttonClass + " " + defaultStateClass )
142
+ . append ( $ ( "<span></span>" )
143
+ . addClass ( cancelIconClass )
144
+ . html ( this . options . cancelButton ) ) ;
145
+ } ,
146
+
147
+ _formDelegate : function ( ) {
110
148
var self = this ;
111
149
this . element . find ( 'form' )
112
150
. submit ( function ( event ) {
113
151
self . _save ( event , $ ( 'input' , this ) . val ( ) ) ;
114
152
$ ( 'input' , this ) . blur ( ) ;
115
153
return false ;
116
154
} ) ;
117
- } ,
118
-
119
- _complete : function ( ) {
120
- var self = this ;
121
- self . element
122
- . find ( 'input' )
155
+ this . element . find ( 'input' )
123
156
. bind ( 'blur' , function ( ) {
124
157
if ( self . timer ) {
125
158
window . clearTimeout ( self . timer ) ;
126
159
}
127
160
self . timer = window . setTimeout ( function ( ) {
128
- self . element . html ( self . value ( ) || self . _placeholderHtml ( ) ) ;
129
- self . element . removeClass ( highlight ) ;
161
+ self . _show . call ( self ) ;
162
+ self . element . removeClass ( highlightStateClass ) ;
130
163
} , 200 ) ;
131
164
} )
132
165
. focus ( ) ;
@@ -148,7 +181,7 @@ $.widget( "ui.inlineedit", {
148
181
149
182
value : function ( newValue ) {
150
183
if ( arguments . length ) {
151
- this . options . value = $ ( newValue ) . hasClass ( 'ui-inline-edit-placeholder' ) ? '' : newValue ;
184
+ this . options . value = $ ( newValue ) . hasClass ( placeholderClass ) ? '' : newValue ;
152
185
}
153
186
return this . options . value ;
154
187
}
0 commit comments