compass_formalize 0.0.1

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 (45) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +2 -0
  3. data/README.md +6 -0
  4. data/Rakefile +4 -0
  5. data/compass_formalize.gemspec +20 -0
  6. data/lib/compass_formalize.rb +2 -0
  7. data/stylesheets/_formalize.sass +271 -0
  8. data/templates/.DS_Store +0 -0
  9. data/templates/dojo/button.png +0 -0
  10. data/templates/dojo/dojo.formalize.js +174 -0
  11. data/templates/dojo/dojo.formalize.min.js +1 -0
  12. data/templates/dojo/manifest.rb +37 -0
  13. data/templates/dojo/select_arrow.gif +0 -0
  14. data/templates/extjs/.DS_Store +0 -0
  15. data/templates/extjs/button.png +0 -0
  16. data/templates/extjs/extjs.formalize.js +168 -0
  17. data/templates/extjs/extjs.formalize.min.js +1 -0
  18. data/templates/extjs/manifest.rb +37 -0
  19. data/templates/extjs/select_arrow.gif +0 -0
  20. data/templates/jquery/.DS_Store +0 -0
  21. data/templates/jquery/button.png +0 -0
  22. data/templates/jquery/jquery.formalize.js +158 -0
  23. data/templates/jquery/jquery.formalize.min.js +1 -0
  24. data/templates/jquery/manifest.rb +37 -0
  25. data/templates/jquery/select_arrow.gif +0 -0
  26. data/templates/mootools/.DS_Store +0 -0
  27. data/templates/mootools/button.png +0 -0
  28. data/templates/mootools/manifest.rb +37 -0
  29. data/templates/mootools/mootools.formalize.js +163 -0
  30. data/templates/mootools/mootools.formalize.min.js +1 -0
  31. data/templates/mootools/select_arrow.gif +0 -0
  32. data/templates/project/manifest.rb +18 -0
  33. data/templates/prototype/.DS_Store +0 -0
  34. data/templates/prototype/button.png +0 -0
  35. data/templates/prototype/manifest.rb +37 -0
  36. data/templates/prototype/prototype.formalize.js +171 -0
  37. data/templates/prototype/prototype.formalize.min.js +1 -0
  38. data/templates/prototype/select_arrow.gif +0 -0
  39. data/templates/yui/.DS_Store +0 -0
  40. data/templates/yui/button.png +0 -0
  41. data/templates/yui/manifest.rb +37 -0
  42. data/templates/yui/select_arrow.gif +0 -0
  43. data/templates/yui/yui.formalize.js +168 -0
  44. data/templates/yui/yui.formalize.min.js +1 -0
  45. metadata +130 -0
data/.DS_Store ADDED
Binary file
data/.gitignore ADDED
@@ -0,0 +1,2 @@
1
+ pkg
2
+ .sass-cache
data/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # Compass Formalize
2
+
3
+ This is an extension for [Compass](http://beta.compass-style.org) for
4
+ [Formalize](http://formalize.me),
5
+ [Nathan Smith](http://sonspring.com)'s excellent HTML Form stylesheet
6
+ project.
data/Rakefile ADDED
@@ -0,0 +1,4 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{compass_formalize}
5
+ s.version = "0.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.3.5")
8
+ s.authors = ["Wynn Netherland", "Nathan Smith"]
9
+ s.date = %q{2011-04-19}
10
+ s.description = %q{Compass and Sass port of Nathan Smith's Formalize HTML form normalizer.}
11
+ s.email = %w{wynn.netherland@gmail.com nathan@sonspring.com}
12
+ s.has_rdoc = false
13
+ s.files = `git ls-files`.split("\n")
14
+ s.homepage = %q{http://github.com/pengwynn/compass_formalize}
15
+ s.require_paths = ["lib"]
16
+ s.rubyforge_project = %q{compass-960-plugin}
17
+ s.rubygems_version = %q{1.3.6}
18
+ s.summary = %q{Compass compatible Sass port of Formalize.}
19
+ s.add_dependency(%q<compass>, [">= 0.10.0"])
20
+ end
@@ -0,0 +1,2 @@
1
+ require 'compass'
2
+ Compass::Frameworks.register("formalize", :path => "#{File.dirname(__FILE__)}/..")
@@ -0,0 +1,271 @@
1
+ // `Widths
2
+ //----------------------------------------------------------------------------------------------------
3
+
4
+ .input_tiny
5
+ width: 50px
6
+
7
+ .input_small
8
+ width: 100px
9
+
10
+ .input_medium
11
+ width: 150px
12
+
13
+ .input_large
14
+ width: 200px
15
+
16
+ .input_xlarge
17
+ width: 250px
18
+
19
+ .input_xxlarge
20
+ width: 300px
21
+
22
+ .input_full
23
+ width: 100%
24
+
25
+ // Added via JS to <textarea> and class="input-full".
26
+ // Applies only to IE7. Other browsers don't need it.
27
+ .input_full_wrap
28
+ display: block
29
+ padding-right: 8px
30
+
31
+ // `UI Consistency
32
+ //----------------------------------------------------------------------------------------------------
33
+
34
+ ::-moz-focus-inner
35
+ border: 0
36
+ padding: 0
37
+
38
+ input[type="search"]::-webkit-search-decoration
39
+ display: none
40
+
41
+ input,
42
+ button,
43
+ select,
44
+ textarea
45
+ -moz-background-clip: padding
46
+ -webkit-background-clip: padding
47
+ background-clip: padding-box
48
+ margin: 0
49
+ vertical-align: middle
50
+
51
+ button,
52
+ input[type="reset"],
53
+ input[type="submit"],
54
+ input[type="button"]
55
+ -webkit-appearance: none
56
+ +border-radius(11px)
57
+ background: #ddd image-url(button.png) repeat-x
58
+ +linear-gradient(color-stops(#fff, #ddd))
59
+ border: 1px solid
60
+ border-color: #ddd #bbb #999
61
+ cursor: pointer
62
+ color: #333
63
+ font: bold 12px/1.2 Arial, sans-serif
64
+ outline: 0
65
+ overflow: visible
66
+ padding: 3px 10px 4px
67
+ text-shadow: #fff 0 1px 1px
68
+ width: auto
69
+
70
+ // IE7
71
+ *padding-top: 2px
72
+ *padding-bottom: 0px
73
+
74
+ button
75
+ // IE7
76
+ *padding-top: 1px
77
+ *padding-bottom: 1px
78
+
79
+ textarea,
80
+ select,
81
+ input[type="date"],
82
+ input[type="datetime"],
83
+ input[type="datetime-local"],
84
+ input[type="email"],
85
+ input[type="month"],
86
+ input[type="number"],
87
+ input[type="password"],
88
+ input[type="search"],
89
+ input[type="tel"],
90
+ input[type="text"],
91
+ input[type="time"],
92
+ input[type="url"],
93
+ input[type="week"]
94
+ -webkit-appearance: none
95
+ +border-radius(0)
96
+ +box-sizing(border-box)
97
+ background-color: #fff
98
+ border: 1px solid
99
+ border-color: #848484 #c1c1c1 #e1e1e1
100
+ color: #000
101
+ outline: 0
102
+ padding: 2px 3px
103
+ font:
104
+ size: 13px
105
+ family: Arial, sans-serif
106
+ height: 1.8em
107
+
108
+ // IE7
109
+ *padding-top: 2px
110
+ *padding-bottom: 1px
111
+ *height: auto
112
+
113
+ // Separate rule for Firefox.
114
+ // Cannot stack with WebKit's.
115
+
116
+ input.placeholder-text,
117
+ textarea.placeholder-text,
118
+ input:-moz-placeholder,
119
+ textarea:-moz-placeholder
120
+ color: #888
121
+
122
+ ::-webkit-input-placeholder
123
+ color: #888
124
+
125
+ button:focus,
126
+ button:active,
127
+ input:focus,
128
+ input:active,
129
+ select:focus,
130
+ select:active,
131
+ textarea:focus,
132
+ textarea:active
133
+ -moz-box-shadow: #06f 0 0 7px
134
+ -webkit-box-shadow: #06f 0 0 7px
135
+ box-shadow: #06f 0 0 7px
136
+
137
+ // for Opera
138
+ z-index: 1
139
+
140
+ input[type="file"]:focus,
141
+ input[type="file"]:active,
142
+ input[type="radio"]:focus,
143
+ input[type="radio"]:active,
144
+ input[type="checkbox"]:focus,
145
+ input[type="checkbox"]:active
146
+ -moz-box-shadow: none
147
+ -webkit-box-shadow: none
148
+ box-shadow: none
149
+
150
+ select[disabled],
151
+ textarea[disabled],
152
+ input[type="date"][disabled],
153
+ input[type="datetime"][disabled],
154
+ input[type="datetime-local"][disabled],
155
+ input[type="email"][disabled],
156
+ input[type="month"][disabled],
157
+ input[type="number"][disabled],
158
+ input[type="password"][disabled],
159
+ input[type="search"][disabled],
160
+ input[type="tel"][disabled],
161
+ input[type="text"][disabled],
162
+ input[type="time"][disabled],
163
+ input[type="url"][disabled],
164
+ input[type="week"][disabled]
165
+ background-color: #eee
166
+
167
+ button[disabled],
168
+ input[disabled],
169
+ select[disabled],
170
+ select[disabled] option,
171
+ select[disabled] optgroup,
172
+ textarea[disabled]
173
+ -moz-box-shadow: none
174
+ -webkit-box-shadow: none
175
+ box-shadow: none
176
+ -webkit-user-select: none
177
+ -moz-user-select: none
178
+ user-select: none
179
+ color: #888
180
+ cursor: default
181
+
182
+ .is_webkit select
183
+ // Tweaks for Safari + Chrome.
184
+ background:
185
+ image: image-url(select_arrow.gif)
186
+ repeat: no-repeat
187
+ position: right center
188
+ padding-right: 20px
189
+
190
+ textarea,
191
+ select[size],
192
+ select[multiple]
193
+ height: auto
194
+
195
+ .is_webkit select[size]
196
+ .is_webkit select[multiple]
197
+ background-image: none
198
+ padding: 0
199
+
200
+ textarea
201
+ min-height: 40px
202
+ overflow: auto
203
+ resize: vertical
204
+ width: 100%
205
+
206
+ optgroup
207
+ color: #000
208
+ font-style: normal
209
+ font-weight: normal
210
+
211
+ // `IE6
212
+ //----------------------------------------------------------------------------------------------------
213
+
214
+ // Everything below this line is for IE6.
215
+ // Delete it if you don't support it! :)
216
+
217
+ // Classes are added dynamically via JS,
218
+ // because IE6 doesn't support attribute
219
+ // selectors: .ie6_button, .ie6_input, etc.
220
+
221
+ // Note: These style rules are somewhat
222
+ // duplicated because IE6 bombs out when
223
+ // it sees attribute selectors. Example:
224
+
225
+ // .ie6_button {
226
+ // This works in IE6.
227
+ // }
228
+
229
+ // .ie6_button,
230
+ // input[type=submit] {
231
+ // This doesn't work.
232
+ // }
233
+
234
+ .ie6_button,
235
+ * html button
236
+ background: #ddd image-url(button.png) repeat-x
237
+ border: 1px solid
238
+ border-color: #ddd #bbb #999
239
+ cursor: pointer
240
+ color: #333
241
+ font: bold 12px/1.2 Arial, sans-serif
242
+ padding: 2px 10px 0px
243
+ overflow: visible
244
+ width: auto
245
+
246
+ * html button
247
+ padding-top: 1px
248
+ padding-bottom: 1px
249
+
250
+ .ie6_input,
251
+ * html textarea,
252
+ * html select
253
+ background: #fff
254
+ border: 1px solid
255
+ border-color: #848484 #c1c1c1 #e1e1e1
256
+ color: #000
257
+ padding: 2px 3px 1px
258
+ font-size: 13px
259
+ font-family: Arial, sans-serif
260
+ vertical-align: top
261
+
262
+ * html select
263
+ margin-top: 1px
264
+
265
+ .placeholder_text,
266
+ .ie6_input_disabled,
267
+ .ie6_button_disabled
268
+ color: #888
269
+
270
+ .ie6_input_disabled
271
+ background: #eee
Binary file
Binary file
@@ -0,0 +1,174 @@
1
+ //
2
+ // Note: This file depends on the Dojo library.
3
+ //
4
+
5
+ // Module pattern:
6
+ // http://yuiblog.com/blog/2007/06/12/module-pattern/
7
+ var FORMALIZE = (function(window, document, undefined) {
8
+ // Private constants.
9
+ var PLACEHOLDER_SUPPORTED = 'placeholder' in document.createElement('input');
10
+ 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;
14
+
15
+ // Expose innards of FORMALIZE.
16
+ return {
17
+ // FORMALIZE.go
18
+ go: function() {
19
+ for (var i in FORMALIZE.init) {
20
+ FORMALIZE.init[i]();
21
+ }
22
+ },
23
+ // FORMALIZE.init
24
+ init: {
25
+ // FORMALIZE.init.detect_webkit
26
+ detect_webkit: function() {
27
+ if (!WEBKIT) {
28
+ return;
29
+ }
30
+
31
+ // Tweaks for Safari + Chrome.
32
+ dojo.query('html').addClass('is_webkit');
33
+ },
34
+ // FORMALIZE.init.full_input_size
35
+ full_input_size: function() {
36
+ if (!IE7 || !dojo.query('textarea, input.input_full').length) {
37
+ return;
38
+ }
39
+
40
+ // This fixes width: 100% on <textarea> and class="input_full".
41
+ // It ensures that form elements don't go wider than container.
42
+ dojo.query('textarea, input.input_full').forEach(function(el) {
43
+ var new_el = el.cloneNode(false);
44
+ var span = document.createElement('span');
45
+
46
+ span.className = 'input_full_wrap';
47
+ span.appendChild(new_el);
48
+ el.parentNode.replaceChild(span, el);
49
+ });
50
+ },
51
+ // FORMALIZE.init.ie6_skin_inputs
52
+ ie6_skin_inputs: function() {
53
+ // Test for Internet Explorer 6.
54
+ if (!IE6 || !dojo.query('input, select, textarea').length) {
55
+ // Exit if the browser is not IE6,
56
+ // or if no form elements exist.
57
+ return;
58
+ }
59
+
60
+ // For <input type="submit" />, etc.
61
+ var button_regex = /button|submit|reset/;
62
+
63
+ // For <input type="text" />, etc.
64
+ var type_regex = /date|datetime|datetime-local|email|month|number|password|range|search|tel|text|time|url|week/;
65
+
66
+ dojo.query('input').forEach(function(el) {
67
+ // Is it a button?
68
+ if (el.getAttribute('type').match(button_regex)) {
69
+ dojo.addClass(el, 'ie6_button');
70
+
71
+ /* Is it disabled? */
72
+ if (el.disabled) {
73
+ dojo.addClass(el, 'ie6_button_disabled');
74
+ }
75
+ }
76
+ // Or is it a textual input?
77
+ else if (el.getAttribute('type').match(type_regex)) {
78
+ dojo.addClass(el, 'ie6_input');
79
+
80
+ /* Is it disabled? */
81
+ if (el.disabled) {
82
+ dojo.addClass(el, 'ie6_input_disabled');
83
+ }
84
+ }
85
+ });
86
+
87
+ dojo.query('textarea, select').forEach(function(el) {
88
+ /* Is it disabled? */
89
+ if (el.disabled) {
90
+ dojo.addClass(el, 'ie6_input_disabled');
91
+ }
92
+ });
93
+ },
94
+ // FORMALIZE.init.autofocus
95
+ autofocus: function() {
96
+ if (AUTOFOCUS_SUPPORTED || !dojo.query('[autofocus]').length) {
97
+ return;
98
+ }
99
+
100
+ dojo.query('[autofocus]')[0].focus();
101
+ },
102
+ // FORMALIZE.init.placeholder
103
+ placeholder: function() {
104
+ if (PLACEHOLDER_SUPPORTED || !dojo.query('[placeholder]').length) {
105
+ // Exit if placeholder is supported natively,
106
+ // or if page does not have any placeholder.
107
+ return;
108
+ }
109
+
110
+ FORMALIZE.misc.add_placeholder();
111
+
112
+ dojo.query('[placeholder]').forEach(function(el) {
113
+ dojo.connect(el, 'onfocus', function() {
114
+ var text = el.getAttribute('placeholder');
115
+
116
+ if (el.value === text) {
117
+ el.value = '';
118
+ dojo.removeClass(el, 'placeholder_text');
119
+ }
120
+ });
121
+
122
+ dojo.connect(el, 'onblur', function() {
123
+ FORMALIZE.misc.add_placeholder();
124
+ });
125
+ });
126
+
127
+ // Prevent <form> from accidentally
128
+ // submitting the placeholder text.
129
+ dojo.query('form').forEach(function(form) {
130
+ dojo.connect(form, 'onsubmit', function() {
131
+ dojo.query('[placeholder]', form).forEach(function(el) {
132
+ var text = el.getAttribute('placeholder');
133
+
134
+ if (el.value === text) {
135
+ el.value = '';
136
+ dojo.removeClass(el, 'placeholder_text');
137
+ }
138
+ });
139
+ });
140
+
141
+ dojo.connect(form, 'onreset', function() {
142
+ setTimeout(FORMALIZE.misc.add_placeholder, 50);
143
+ });
144
+ });
145
+ }
146
+ },
147
+ // FORMALIZE.misc
148
+ misc: {
149
+ // FORMALIZE.misc.add_placeholder
150
+ add_placeholder: function() {
151
+ if (PLACEHOLDER_SUPPORTED || !dojo.query('[placeholder]').length) {
152
+ // Exit if placeholder is supported natively,
153
+ // or if page does not have any placeholder.
154
+ return;
155
+ }
156
+
157
+ dojo.query('[placeholder]').forEach(function(el) {
158
+ var text = el.getAttribute('placeholder');
159
+
160
+ if (!el.value || el.value === text) {
161
+ el.value = text;
162
+ dojo.addClass(el, 'placeholder_text');
163
+ }
164
+ });
165
+ }
166
+ }
167
+ };
168
+ // Alias window, document.
169
+ })(this, this.document);
170
+
171
+ // Automatically calls all functions in FORMALIZE.init
172
+ dojo.addOnLoad(function() {
173
+ FORMALIZE.go();
174
+ });