compass_formalize 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +5 -4
  4. data/README.md +31 -0
  5. data/compass_formalize.gemspec +2 -2
  6. data/stylesheets/_formalize.sass +226 -170
  7. data/templates/{dojo → common}/button.png +0 -0
  8. data/templates/{dojo → common}/select_arrow.gif +0 -0
  9. data/templates/dojo/dojo.formalize.js +46 -19
  10. data/templates/dojo/dojo.formalize.min.js +1 -1
  11. data/templates/dojo/manifest.rb +5 -0
  12. data/templates/extjs/extjs.formalize.js +48 -25
  13. data/templates/extjs/extjs.formalize.min.js +1 -1
  14. data/templates/jquery-legacy/jquery.formalize.legacy.js +187 -0
  15. data/templates/jquery-legacy/jquery.formalize.legacy.min.js +1 -0
  16. data/templates/jquery-legacy/manifest.rb +42 -0
  17. data/templates/jquery/jquery.formalize.js +42 -20
  18. data/templates/jquery/jquery.formalize.min.js +1 -1
  19. data/templates/jquery/manifest.rb +6 -1
  20. data/templates/mootools/manifest.rb +5 -0
  21. data/templates/mootools/mootools.formalize.js +49 -20
  22. data/templates/mootools/mootools.formalize.min.js +1 -1
  23. data/templates/prototype/manifest.rb +5 -0
  24. data/templates/prototype/prototype.formalize.js +43 -23
  25. data/templates/prototype/prototype.formalize.min.js +1 -1
  26. data/templates/yui/manifest.rb +5 -0
  27. data/templates/yui/yui.formalize.js +57 -43
  28. data/templates/yui/yui.formalize.min.js +1 -1
  29. metadata +11 -40
  30. data/templates/extjs/button.png +0 -0
  31. data/templates/extjs/select_arrow.gif +0 -0
  32. data/templates/jquery/button.png +0 -0
  33. data/templates/jquery/select_arrow.gif +0 -0
  34. data/templates/mootools/button.png +0 -0
  35. data/templates/mootools/select_arrow.gif +0 -0
  36. data/templates/prototype/button.png +0 -0
  37. data/templates/prototype/select_arrow.gif +0 -0
  38. data/templates/yui/button.png +0 -0
  39. data/templates/yui/select_arrow.gif +0 -0
File without changes
@@ -1,36 +1,47 @@
1
- //
2
- // Note: This file depends on the Dojo library.
3
- //
1
+ /*
2
+ Formalize - version 1.2
3
+
4
+ Note: This file depends on the Dojo library.
5
+ */
4
6
 
5
7
  // Module pattern:
6
- // http://yuiblog.com/blog/2007/06/12/module-pattern/
8
+ // http://yuiblog.com/blog/2007/06/12/module-pattern
7
9
  var FORMALIZE = (function(window, document, undefined) {
10
+ // Internet Explorer detection.
11
+ function IE(version) {
12
+ var b = document.createElement('b');
13
+ b.innerHTML = '<!--[if IE ' + version + ']><br><![endif]-->';
14
+ return !!b.getElementsByTagName('br').length;
15
+ }
16
+
8
17
  // Private constants.
9
18
  var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input');
10
19
  var AUTOFOCUS_SUPPORTED = 'autofocus' in document.createElement('input');
11
- var WEBKIT = 'webkitAppearance' in document.createElement('select').style;
12
- var IE6 = parseInt(dojo.isIE, 10) === 6;
13
- var IE7 = parseInt(dojo.isIE, 10) === 7;
20
+ var IE6 = IE(6);
21
+ var IE7 = IE(7);
14
22
 
15
23
  // Expose innards of FORMALIZE.
16
24
  return {
17
25
  // FORMALIZE.go
18
26
  go: function() {
19
- for (var i in FORMALIZE.init) {
20
- FORMALIZE.init[i]();
27
+ var i, j = this.init;
28
+
29
+ for (i in j) {
30
+ j.hasOwnProperty(i) && j[i]();
21
31
  }
22
32
  },
23
33
  // FORMALIZE.init
24
34
  init: {
25
- // FORMALIZE.init.detect_webkit
26
- detect_webkit: function() {
27
- if (!WEBKIT) {
28
- return;
29
- }
30
-
31
- // Tweaks for Safari + Chrome.
32
- // <html class="is_webkit">
33
- dojo.addClass(document.documentElement, 'is_webkit');
35
+ // FORMALIZE.init.disable_link_button
36
+ disable_link_button: function() {
37
+ dojo.connect(document.documentElement, 'click', function(ev) {
38
+ var el = ev.target;
39
+ var is_disabled = el.tagName.toLowerCase() === 'a' && el.className.match('button_disabled');
40
+
41
+ if (is_disabled) {
42
+ ev.preventDefault();
43
+ }
44
+ });
34
45
  },
35
46
  // FORMALIZE.init.full_input_size
36
47
  full_input_size: function() {
@@ -98,7 +109,11 @@ var FORMALIZE = (function(window, document, undefined) {
98
109
  return;
99
110
  }
100
111
 
101
- dojo.query('[autofocus]')[0].focus();
112
+ var el = dojo.query('[autofocus]')[0];
113
+
114
+ if (!el.disabled) {
115
+ el.focus();
116
+ }
102
117
  },
103
118
  // FORMALIZE.init.placeholder
104
119
  placeholder: function() {
@@ -111,6 +126,12 @@ var FORMALIZE = (function(window, document, undefined) {
111
126
  FORMALIZE.misc.add_placeholder();
112
127
 
113
128
  dojo.query('[placeholder]').forEach(function(el) {
129
+ // Placeholder obscured in older browsers,
130
+ // so there's no point adding to password.
131
+ if (el.type === 'password') {
132
+ return;
133
+ }
134
+
114
135
  dojo.connect(el, 'onfocus', function() {
115
136
  var text = el.getAttribute('placeholder');
116
137
 
@@ -156,6 +177,12 @@ var FORMALIZE = (function(window, document, undefined) {
156
177
  }
157
178
 
158
179
  dojo.query('[placeholder]').forEach(function(el) {
180
+ // Placeholder obscured in older browsers,
181
+ // so there's no point adding to password.
182
+ if (el.type === 'password') {
183
+ return;
184
+ }
185
+
159
186
  var text = el.getAttribute('placeholder');
160
187
 
161
188
  if (!el.value || el.value === text) {
@@ -1 +1 @@
1
- var FORMALIZE=function(a,b,c){var d="placeholder"in b.createElement("input"),e="autofocus"in b.createElement("input"),f="webkitAppearance"in b.createElement("select").style,g=parseInt(dojo.isIE,10)===6,h=parseInt(dojo.isIE,10)===7;return{go:function(){for(var a in FORMALIZE.init)FORMALIZE.init[a]()},init:{detect_webkit:function(){!f||dojo.addClass(b.documentElement,"is_webkit")},full_input_size:function(){!!h&&!!dojo.query("textarea, input.input_full").length&&dojo.query("textarea, input.input_full").forEach(function(a){var c=a.cloneNode(!1),d=b.createElement("span");d.className="input_full_wrap",d.appendChild(c),a.parentNode.replaceChild(d,a)})},ie6_skin_inputs:function(){if(!!g&&!!dojo.query("input, select, textarea").length){var a=/button|submit|reset/,b=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;dojo.query("input").forEach(function(c){c.getAttribute("type").match(a)?(dojo.addClass(c,"ie6_button"),c.disabled&&dojo.addClass(c,"ie6_button_disabled")):c.getAttribute("type").match(b)&&(dojo.addClass(c,"ie6_input"),c.disabled&&dojo.addClass(c,"ie6_input_disabled"))}),dojo.query("textarea, select").forEach(function(a){a.disabled&&dojo.addClass(a,"ie6_input_disabled")})}},autofocus:function(){!e&&!!dojo.query("[autofocus]").length&&dojo.query("[autofocus]")[0].focus()},placeholder:function(){!d&&!!dojo.query("[placeholder]").length&&(FORMALIZE.misc.add_placeholder(),dojo.query("[placeholder]").forEach(function(a){dojo.connect(a,"onfocus",function(){var b=a.getAttribute("placeholder");a.value===b&&(a.value="",dojo.removeClass(a,"placeholder_text"))}),dojo.connect(a,"onblur",function(){FORMALIZE.misc.add_placeholder()})}),dojo.query("form").forEach(function(a){dojo.connect(a,"onsubmit",function(){dojo.query("[placeholder]",a).forEach(function(a){var b=a.getAttribute("placeholder");a.value===b&&(a.value="",dojo.removeClass(a,"placeholder_text"))})}),dojo.connect(a,"onreset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})}))}},misc:{add_placeholder:function(){!d&&!!dojo.query("[placeholder]").length&&dojo.query("[placeholder]").forEach(function(a){var b=a.getAttribute("placeholder");if(!a.value||a.value===b)a.value=b,dojo.addClass(a,"placeholder_text")})}}}}(this,this.document);dojo.addOnLoad(function(){FORMALIZE.go()})
1
+ var FORMALIZE=function(e,t,n){function r(e){var n=t.createElement("b");return n.innerHTML="<!--[if IE "+e+"]><br><![endif]-->",!!n.getElementsByTagName("br").length}var i="placeholder"in t.createElement("input"),s="autofocus"in t.createElement("input"),o=r(6),u=r(7);return{go:function(){var e,t=this.init;for(e in t)t.hasOwnProperty(e)&&t[e]()},init:{disable_link_button:function(){dojo.connect(t.documentElement,"click",function(e){var t=e.target,n=t.tagName.toLowerCase()==="a"&&t.className.match("button_disabled");n&&e.preventDefault()})},full_input_size:function(){if(!u||!dojo.query("textarea, input.input_full").length)return;dojo.query("textarea, input.input_full").forEach(function(e){var n=e.cloneNode(!1),r=t.createElement("span");r.className="input_full_wrap",r.appendChild(n),e.parentNode.replaceChild(r,e)})},ie6_skin_inputs:function(){if(!o||!dojo.query("input, select, textarea").length)return;var e=/button|submit|reset/,t=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;dojo.query("input").forEach(function(n){n.getAttribute("type").match(e)?(dojo.addClass(n,"ie6_button"),n.disabled&&dojo.addClass(n,"ie6_button_disabled")):n.getAttribute("type").match(t)&&(dojo.addClass(n,"ie6_input"),n.disabled&&dojo.addClass(n,"ie6_input_disabled"))}),dojo.query("textarea, select").forEach(function(e){e.disabled&&dojo.addClass(e,"ie6_input_disabled")})},autofocus:function(){if(s||!dojo.query("[autofocus]").length)return;var e=dojo.query("[autofocus]")[0];e.disabled||e.focus()},placeholder:function(){if(i||!dojo.query("[placeholder]").length)return;FORMALIZE.misc.add_placeholder(),dojo.query("[placeholder]").forEach(function(e){if(e.type==="password")return;dojo.connect(e,"onfocus",function(){var t=e.getAttribute("placeholder");e.value===t&&(e.value="",dojo.removeClass(e,"placeholder_text"))}),dojo.connect(e,"onblur",function(){FORMALIZE.misc.add_placeholder()})}),dojo.query("form").forEach(function(e){dojo.connect(e,"onsubmit",function(){dojo.query("[placeholder]",e).forEach(function(e){var t=e.getAttribute("placeholder");e.value===t&&(e.value="",dojo.removeClass(e,"placeholder_text"))})}),dojo.connect(e,"onreset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})})}},misc:{add_placeholder:function(){if(i||!dojo.query("[placeholder]").length)return;dojo.query("[placeholder]").forEach(function(e){if(e.type==="password")return;var t=e.getAttribute("placeholder");if(!e.value||e.value===t)e.value=t,dojo.addClass(e,"placeholder_text")})}}}}(this,this.document);dojo.addOnLoad(function(){FORMALIZE.go()})
@@ -1,4 +1,9 @@
1
1
  # Make sure you list all the project template files here in the manifest.
2
+
3
+ # Image Import
4
+ file '../common/button.png', :like => :image, :to => 'button.png'
5
+ file '../common/select_arrow.gif', :like => :image, :to => 'select_arrow.gif'
6
+
2
7
  discover :all
3
8
 
4
9
  description "Teach your forms some manners."
@@ -1,33 +1,47 @@
1
- //
2
- // Note: This file depends on the ExtJS 3.x library.
3
- //
1
+ /*
2
+ Formalize - version 1.2
3
+
4
+ Note: This file depends on the ExtJS 3.x library.
5
+ */
6
+
7
+ // Module pattern:
8
+ // http://yuiblog.com/blog/2007/06/12/module-pattern
4
9
  var FORMALIZE = (function(window, document, undefined) {
10
+ // Internet Explorer detection.
11
+ function IE(version) {
12
+ var b = document.createElement('b');
13
+ b.innerHTML = '<!--[if IE ' + version + ']><br><![endif]-->';
14
+ return !!b.getElementsByTagName('br').length;
15
+ }
16
+
5
17
  // Private constants.
6
18
  var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input');
7
19
  var AUTOFOCUS_SUPPORTED = 'autofocus' in document.createElement('input');
8
- var WEBKIT = 'webkitAppearance' in document.createElement('select').style;
9
- var IE6 = Ext.isIE6;
10
- var IE7 = Ext.isIE7;
20
+ var IE6 = IE(6);
21
+ var IE7 = IE(7);
11
22
 
12
23
  // Expose innards of FORMALIZE.
13
24
  return {
14
25
  // FORMALIZE.go
15
26
  go: function() {
16
- for (var i in FORMALIZE.init) {
17
- FORMALIZE.init[i]();
27
+ var i, j = this.init;
28
+
29
+ for (i in j) {
30
+ j.hasOwnProperty(i) && j[i]();
18
31
  }
19
32
  },
20
33
  // FORMALIZE.init
21
34
  init: {
22
- // FORMALIZE.init.detect_webkit
23
- detect_webkit: function() {
24
- if (!WEBKIT) {
25
- return;
26
- }
27
-
28
- // Tweaks for Safari + Chrome.
29
- // <html class="is_webkit">
30
- Ext.get(document.documentElement).addClass('is_webkit');
35
+ // FORMALIZE.init.disable_link_button
36
+ disable_link_button: function() {
37
+ Ext.getBody().on('click', function(ev) {
38
+ var el = ev.target;
39
+ var is_disabled = el.tagName.toLowerCase() === 'a' && el.className.match('button_disabled');
40
+
41
+ if (is_disabled) {
42
+ ev.preventDefault();
43
+ }
44
+ });
31
45
  },
32
46
  // FORMALIZE.init.full_input_size
33
47
  full_input_size: function() {
@@ -90,7 +104,11 @@ var FORMALIZE = (function(window, document, undefined) {
90
104
  return;
91
105
  }
92
106
 
93
- Ext.query('[autofocus]')[0].focus();
107
+ var el = Ext.query('[autofocus]')[0];
108
+
109
+ if (!el.disabled) {
110
+ el.focus();
111
+ }
94
112
  },
95
113
  // FORMALIZE.init.placeholder
96
114
  placeholder: function() {
@@ -103,16 +121,15 @@ var FORMALIZE = (function(window, document, undefined) {
103
121
  FORMALIZE.misc.add_placeholder();
104
122
 
105
123
  Ext.each(Ext.query('[placeholder]'), function(el) {
124
+ // Placeholder obscured in older browsers,
125
+ // so there's no point adding to password.
126
+ if (el.type === 'password') {
127
+ return;
128
+ }
129
+
106
130
  var text = el.getAttribute('placeholder');
107
131
  var form = Ext.get(el).parent('form');
108
132
 
109
- function add_placeholder() {
110
- if (!el.value || el.value === text) {
111
- el.value = text;
112
- Ext.get(el).addClass('placeholder_text');
113
- }
114
- }
115
-
116
133
  Ext.get(el).on('focus', function() {
117
134
  if (el.value === text) {
118
135
  el.value = '';
@@ -150,6 +167,12 @@ var FORMALIZE = (function(window, document, undefined) {
150
167
  }
151
168
 
152
169
  Ext.each(Ext.query('[placeholder]'), function(el) {
170
+ // Placeholder obscured in older browsers,
171
+ // so there's no point adding to password.
172
+ if (el.type === 'password') {
173
+ return;
174
+ }
175
+
153
176
  var text = el.getAttribute('placeholder');
154
177
 
155
178
  if (!el.value || el.value === text) {
@@ -1 +1 @@
1
- var FORMALIZE=function(a,b,c){var d="placeholder"in b.createElement("input"),e="autofocus"in b.createElement("input"),f="webkitAppearance"in b.createElement("select").style,g=Ext.isIE6,h=Ext.isIE7;return{go:function(){for(var a in FORMALIZE.init)FORMALIZE.init[a]()},init:{detect_webkit:function(){!f||Ext.get(b.documentElement).addClass("is_webkit")},full_input_size:function(){!!h&&!!Ext.query("textarea, input.input_full")&&Ext.each(Ext.query("textarea, input.input_full"),function(a){Ext.get(a).wrap('<span class="input_full_wrap"></span>')})},ie6_skin_inputs:function(){if(!!g&&!!Ext.query("input, select, textarea")){var a=/button|submit|reset/,b=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;Ext.each(Ext.query("input"),function(c){c.getAttribute("type").match(a)?(Ext.get(c).addClass("ie6_button"),c.disabled&&Ext.get(c).addClass("ie6_button_disabled")):c.getAttribute("type").match(b)&&(Ext.get(c).addClass("ie6_input"),c.disabled&&Ext.get(c).addClass("ie6_input_disabled"))}),Ext.each(Ext.query("textarea, select"),function(a){a.disabled&&Ext.get(a).addClass("ie6_input_disabled")})}},autofocus:function(){!e&&!!Ext.query("[autofocus]")&&Ext.query("[autofocus]")[0].focus()},placeholder:function(){!d&&!!Ext.query("[placeholder]")&&(FORMALIZE.misc.add_placeholder(),Ext.each(Ext.query("[placeholder]"),function(a){function d(){if(!a.value||a.value===b)a.value=b,Ext.get(a).addClass("placeholder_text")}var b=a.getAttribute("placeholder"),c=Ext.get(a).parent("form");Ext.get(a).on("focus",function(){a.value===b&&(a.value="",Ext.get(a).removeClass("placeholder_text"))}),Ext.get(a).on("blur",function(){FORMALIZE.misc.add_placeholder()}),c.on("submit",function(){a.value===b&&(a.value="",Ext.get(a).removeClass("placeholder_text"))}),c.on("reset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})}))}},misc:{add_placeholder:function(){!d&&!!Ext.query("[placeholder]")&&Ext.each(Ext.query("[placeholder]"),function(a){var b=a.getAttribute("placeholder");if(!a.value||a.value===b)a.value=b,Ext.get(a).addClass("placeholder_text")})}}}}(this,this.document);Ext.onReady(function(){FORMALIZE.go()})
1
+ var FORMALIZE=function(e,t,n){function r(e){var n=t.createElement("b");return n.innerHTML="<!--[if IE "+e+"]><br><![endif]-->",!!n.getElementsByTagName("br").length}var i="placeholder"in t.createElement("input"),s="autofocus"in t.createElement("input"),o=r(6),u=r(7);return{go:function(){var e,t=this.init;for(e in t)t.hasOwnProperty(e)&&t[e]()},init:{disable_link_button:function(){Ext.getBody().on("click",function(e){var t=e.target,n=t.tagName.toLowerCase()==="a"&&t.className.match("button_disabled");n&&e.preventDefault()})},full_input_size:function(){if(!u||!Ext.query("textarea, input.input_full"))return;Ext.each(Ext.query("textarea, input.input_full"),function(e){Ext.get(e).wrap('<span class="input_full_wrap"></span>')})},ie6_skin_inputs:function(){if(!o||!Ext.query("input, select, textarea"))return;var e=/button|submit|reset/,t=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;Ext.each(Ext.query("input"),function(n){n.getAttribute("type").match(e)?(Ext.get(n).addClass("ie6_button"),n.disabled&&Ext.get(n).addClass("ie6_button_disabled")):n.getAttribute("type").match(t)&&(Ext.get(n).addClass("ie6_input"),n.disabled&&Ext.get(n).addClass("ie6_input_disabled"))}),Ext.each(Ext.query("textarea, select"),function(e){e.disabled&&Ext.get(e).addClass("ie6_input_disabled")})},autofocus:function(){if(s||!Ext.query("[autofocus]"))return;var e=Ext.query("[autofocus]")[0];e.disabled||e.focus()},placeholder:function(){if(i||!Ext.query("[placeholder]"))return;FORMALIZE.misc.add_placeholder(),Ext.each(Ext.query("[placeholder]"),function(e){if(e.type==="password")return;var t=e.getAttribute("placeholder"),n=Ext.get(e).parent("form");Ext.get(e).on("focus",function(){e.value===t&&(e.value="",Ext.get(e).removeClass("placeholder_text"))}),Ext.get(e).on("blur",function(){FORMALIZE.misc.add_placeholder()}),n.on("submit",function(){e.value===t&&(e.value="",Ext.get(e).removeClass("placeholder_text"))}),n.on("reset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})})}},misc:{add_placeholder:function(){if(i||!Ext.query("[placeholder]"))return;Ext.each(Ext.query("[placeholder]"),function(e){if(e.type==="password")return;var t=e.getAttribute("placeholder");if(!e.value||e.value===t)e.value=t,Ext.get(e).addClass("placeholder_text")})}}}}(this,this.document);Ext.onReady(function(){FORMALIZE.go()})
@@ -0,0 +1,187 @@
1
+ /*
2
+ Formalize - version 1.2
3
+
4
+ Note: This file depends on the jQuery library.
5
+
6
+ This version of Formalize, "jquery.formalize.legacy.js"
7
+ is intended for use with jQuery version 1.4, and exists
8
+ because Drupal 7 ships with jQuery 1.4.4. When you are
9
+ starting a new project with a current version of jQuery,
10
+ you should simply use the "jquery.formalize.js" instead.
11
+ */
12
+
13
+ // Module pattern:
14
+ // http://yuiblog.com/blog/2007/06/12/module-pattern
15
+ var FORMALIZE = (function($, window, document, undefined) {
16
+ // Internet Explorer detection.
17
+ function IE(version) {
18
+ var b = document.createElement('b');
19
+ b.innerHTML = '<!--[if IE ' + version + ']><br><![endif]-->';
20
+ return !!b.getElementsByTagName('br').length;
21
+ }
22
+
23
+ // Private constants.
24
+ var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input');
25
+ var AUTOFOCUS_SUPPORTED = 'autofocus' in document.createElement('input');
26
+ var IE6 = IE(6);
27
+ var IE7 = IE(7);
28
+
29
+ // Expose innards of FORMALIZE.
30
+ return {
31
+ // FORMALIZE.go
32
+ go: function() {
33
+ var i, j = this.init;
34
+
35
+ for (i in j) {
36
+ j.hasOwnProperty(i) && j[i]();
37
+ }
38
+ },
39
+ // FORMALIZE.init
40
+ init: {
41
+ // FORMALIZE.init.disable_link_button
42
+ disable_link_button: function() {
43
+ $(document.documentElement).delegate('a.button_disabled', 'click', function() {
44
+ return false;
45
+ });
46
+ },
47
+ // FORMALIZE.init.full_input_size
48
+ full_input_size: function() {
49
+ if (!IE7 || !$('textarea, input.input_full').length) {
50
+ return;
51
+ }
52
+
53
+ // This fixes width: 100% on <textarea> and class="input_full".
54
+ // It ensures that form elements don't go wider than container.
55
+ $('textarea, input.input_full').wrap('<span class="input_full_wrap"></span>');
56
+ },
57
+ // FORMALIZE.init.ie6_skin_inputs
58
+ ie6_skin_inputs: function() {
59
+ // Test for Internet Explorer 6.
60
+ if (!IE6 || !$('input, select, textarea').length) {
61
+ // Exit if the browser is not IE6,
62
+ // or if no form elements exist.
63
+ return;
64
+ }
65
+
66
+ // For <input type="submit" />, etc.
67
+ var button_regex = /button|submit|reset/;
68
+
69
+ // For <input type="text" />, etc.
70
+ var type_regex = /date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;
71
+
72
+ $('input').each(function() {
73
+ var el = $(this);
74
+
75
+ // Is it a button?
76
+ if (this.getAttribute('type').match(button_regex)) {
77
+ el.addClass('ie6_button');
78
+
79
+ /* Is it disabled? */
80
+ if (this.disabled) {
81
+ el.addClass('ie6_button_disabled');
82
+ }
83
+ }
84
+ // Or is it a textual input?
85
+ else if (this.getAttribute('type').match(type_regex)) {
86
+ el.addClass('ie6_input');
87
+
88
+ /* Is it disabled? */
89
+ if (this.disabled) {
90
+ el.addClass('ie6_input_disabled');
91
+ }
92
+ }
93
+ });
94
+
95
+ $('textarea, select').each(function() {
96
+ /* Is it disabled? */
97
+ if (this.disabled) {
98
+ $(this).addClass('ie6_input_disabled');
99
+ }
100
+ });
101
+ },
102
+ // FORMALIZE.init.autofocus
103
+ autofocus: function() {
104
+ if (AUTOFOCUS_SUPPORTED || !$(':input[autofocus]').length) {
105
+ return;
106
+ }
107
+
108
+ var el = $('[autofocus]')[0];
109
+
110
+ if (!el.disabled) {
111
+ el.focus();
112
+ }
113
+ },
114
+ // FORMALIZE.init.placeholder
115
+ placeholder: function() {
116
+ if (PLACEHOLDER_SUPPORTED || !$(':input[placeholder]').length) {
117
+ // Exit if placeholder is supported natively,
118
+ // or if page does not have any placeholder.
119
+ return;
120
+ }
121
+
122
+ FORMALIZE.misc.add_placeholder();
123
+
124
+ $(':input[placeholder]').each(function() {
125
+ // Placeholder obscured in older browsers,
126
+ // so there's no point adding to password.
127
+ if (this.type === 'password') {
128
+ return;
129
+ }
130
+
131
+ var el = $(this);
132
+ var text = el.attr('placeholder');
133
+
134
+ el.focus(function() {
135
+ if (el.val() === text) {
136
+ el.val('').removeClass('placeholder_text');
137
+ }
138
+ }).blur(function() {
139
+ FORMALIZE.misc.add_placeholder();
140
+ });
141
+
142
+ // Prevent <form> from accidentally
143
+ // submitting the placeholder text.
144
+ el.closest('form').submit(function() {
145
+ if (el.val() === text) {
146
+ el.val('').removeClass('placeholder_text');
147
+ }
148
+ }).bind('reset', function() {
149
+ setTimeout(FORMALIZE.misc.add_placeholder, 50);
150
+ });
151
+ });
152
+ }
153
+ },
154
+ // FORMALIZE.misc
155
+ misc: {
156
+ // FORMALIZE.misc.add_placeholder
157
+ add_placeholder: function() {
158
+ if (PLACEHOLDER_SUPPORTED || !$(':input[placeholder]').length) {
159
+ // Exit if placeholder is supported natively,
160
+ // or if page does not have any placeholder.
161
+ return;
162
+ }
163
+
164
+ $(':input[placeholder]').each(function() {
165
+ // Placeholder obscured in older browsers,
166
+ // so there's no point adding to password.
167
+ if (this.type === 'password') {
168
+ return;
169
+ }
170
+
171
+ var el = $(this);
172
+ var text = el.attr('placeholder');
173
+
174
+ if (!el.val() || el.val() === text) {
175
+ el.val(text).addClass('placeholder_text');
176
+ }
177
+ });
178
+ }
179
+ }
180
+ };
181
+ // Alias jQuery, window, document.
182
+ })(jQuery, this, this.document);
183
+
184
+ // Automatically calls all functions in FORMALIZE.init
185
+ jQuery(document).ready(function() {
186
+ FORMALIZE.go();
187
+ });
@@ -0,0 +1 @@
1
+ var FORMALIZE=function(a,b,c){function e(a){var b=c.createElement("b");return b.innerHTML="<!--[if IE "+a+"]><br><![endif]-->",!!b.getElementsByTagName("br").length}var f="placeholder"in c.createElement("input"),g="autofocus"in c.createElement("input"),h=e(6),i=e(7);return{go:function(){var a,b=this.init;for(a in b)b.hasOwnProperty(a)&&b[a]()},init:{disable_link_button:function(){a(c.documentElement).delegate("a.button_disabled","click",function(){return!1})},full_input_size:function(){i&&a("textarea, input.input_full").length&&a("textarea, input.input_full").wrap('<span class="input_full_wrap"></span>')},ie6_skin_inputs:function(){if(h&&a("input, select, textarea").length){var b=/button|submit|reset/,c=/date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;a("input").each(function(){var d=a(this);this.getAttribute("type").match(b)?(d.addClass("ie6_button"),this.disabled&&d.addClass("ie6_button_disabled")):this.getAttribute("type").match(c)&&(d.addClass("ie6_input"),this.disabled&&d.addClass("ie6_input_disabled"))}),a("textarea, select").each(function(){this.disabled&&a(this).addClass("ie6_input_disabled")})}},autofocus:function(){if(!g&&a(":input[autofocus]").length){var b=a("[autofocus]")[0];b.disabled||b.focus()}},placeholder:function(){!f&&a(":input[placeholder]").length&&(FORMALIZE.misc.add_placeholder(),a(":input[placeholder]").each(function(){if("password"!==this.type){var b=a(this),c=b.attr("placeholder");b.focus(function(){b.val()===c&&b.val("").removeClass("placeholder_text")}).blur(function(){FORMALIZE.misc.add_placeholder()}),b.closest("form").submit(function(){b.val()===c&&b.val("").removeClass("placeholder_text")}).bind("reset",function(){setTimeout(FORMALIZE.misc.add_placeholder,50)})}}))}},misc:{add_placeholder:function(){!f&&a(":input[placeholder]").length&&a(":input[placeholder]").each(function(){if("password"!==this.type){var b=a(this),c=b.attr("placeholder");b.val()&&b.val()!==c||b.val(c).addClass("placeholder_text")}})}}}}(jQuery,this,this.document);jQuery(document).ready(function(){FORMALIZE.go()});
@@ -0,0 +1,42 @@
1
+ # Make sure you list all the project template files here in the manifest.
2
+
3
+ # Image Import
4
+ file '../common/button.png', :like => :image, :to => 'button.png'
5
+ file '../common/select_arrow.gif', :like => :image, :to => 'select_arrow.gif'
6
+
7
+ discover :all
8
+
9
+ description "Teach your forms some manners."
10
+
11
+ help %Q{
12
+ Please see the Formalize website for documentation:
13
+
14
+ http://formalize.me/
15
+ }
16
+
17
+ welcome_message %Q{
18
+
19
+ Formalize assets have been copied to the proper asset folders
20
+ based on your Compass configuration.
21
+
22
+ Usage:
23
+
24
+ If you're using SCSS syntax, in your stylesheet:
25
+
26
+ @import "formalize";
27
+
28
+ or if you're using indented syntax
29
+
30
+ @import "formalize"
31
+
32
+ In your HTML markup, include the JavaScript implementation of
33
+ your choice:
34
+
35
+ // a jQuery example
36
+ <script src="/javascripts/jquery.formalize.legacy.js"></script>
37
+
38
+ Please see the Formalize website for documentation:
39
+
40
+ http://formalize.me/
41
+ }
42
+