da-js 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -29,11 +29,16 @@
29
29
  <label for="message">Message</label>
30
30
  <textarea id="message"></textarea>
31
31
  </div>
32
-
32
+
33
+ <div class="field">
34
+ <label for="amount">Amount</label>
35
+ <input type="string" id="amount">
36
+ <span id="amount_info" data-visible-if="$('#amount').val() != ''">You’ve entered something!</span>
37
+ </div>
33
38
  </form>
34
39
 
35
40
  <script>
36
- $("form").conditionalVisibility();
41
+ $("form").conditionalVisibility(<%= params[:options] %>);
37
42
  </script>
38
43
 
39
44
 
@@ -0,0 +1,17 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Test</title>
5
+ <%= "<script src='../vendor/jquery-#{@jquery_version}.js'></script>" %>
6
+ <script src="/assets/javascripts/da-js.js"></script>
7
+ <script>$.fx.off = true;</script>
8
+ </head>
9
+ <body>
10
+ <h1>Test: Numeric Value</h1>
11
+ <form>
12
+ <input id="textfield">
13
+ </form>
14
+ <span id="non_input_element_english"> 1,234.56 </span>
15
+ <span id="non_input_element_german"> 5.678,9 </span>
16
+ </body>
17
+ </html>
@@ -1,13 +1,17 @@
1
1
  # Hide/show elements dynamically according to their data-visible-if attribute.
2
2
  #
3
- # All elements with a data-visible-if attribute are checked on each change/focusout/click event:
3
+ # All elements with a data-visible-if attribute are checked on change, focusout and click events:
4
4
  # For each element, the content of its data-visible-if attribute is eval'd. If the eval'd code returns true, the element is shown – otherwise it is hidden.
5
5
  # (The data-visible-if attributes must contain valid JavaScript code.)
6
+ #
7
+ # Events `shown.conditionalVisibility` / `hidden.conditionalVisibility` are triggered everytime an element has been shown or hidden.
6
8
  #
7
9
  # Calling conditionalVisibility() also sets up the correct initial state (shown/hidden) of each element (again according to the result of the eval'd code in its dava-visible-if attribute).
8
10
  #
9
11
  # Use $("body").conditionalVisibility() to enable the functionality for the whole document, or use a more specific selector to enable it only for some elements.
10
12
  #
13
+ # Use $(…).conditionalVisibility({events: "keypress click"}) to customize the events wich trigger re-evaluation of visibilites (defaults to "change focusout click").
14
+ #
11
15
  # If you want to force an update of the visibilites, use $(…).trigger("updateVisibilites").
12
16
  #
13
17
  # Example:
@@ -20,21 +24,29 @@
20
24
  # $("#myform").conditionalVisibility()
21
25
  # </script>
22
26
 
23
- $.fn.conditionalVisibility = ->
27
+ $.fn.conditionalVisibility = (options = {}) ->
28
+
29
+ events = options.events || "change focusout click"
30
+ events += " updateVisibilities"
24
31
 
25
32
  updateVisibilities = (event, options) ->
26
33
  $(this).find("[data-visible-if]").each ->
27
- if eval($(this).data("visible-if"))
28
- if options?.skipAnimations
29
- $(this).show()
30
- else
31
- $(this).slideDown(100)
34
+ $this = $(this)
35
+ if eval($this.data("visible-if"))
36
+ if $this.is(":hidden")
37
+ if options?.skipAnimations
38
+ $this.show()
39
+ else
40
+ $this.slideDown(100)
41
+ $this.promise().done -> $this.trigger("shown.conditionalVisibility")
32
42
  else
33
- if options?.skipAnimations
34
- $(this).hide()
35
- else
36
- $(this).slideUp(100)
43
+ if $this.is(":visible")
44
+ if options?.skipAnimations
45
+ $this.hide()
46
+ else
47
+ $this.slideUp(100)
48
+ $this.promise().done -> $this.trigger("hidden.conditionalVisibility")
37
49
 
38
- this.on("change focusout click updateVisibilities", updateVisibilities).trigger("updateVisibilities", {skipAnimations: true})
50
+ this.on(events, updateVisibilities).trigger("updateVisibilities", {skipAnimations: true})
39
51
 
40
52
 
@@ -0,0 +1,24 @@
1
+ # Like val(), but return the value parsed as float (or 0, if the value is not numeric). Also works for non-input elements (using the element's text content as value).
2
+ #
3
+ # Thousands delimiters (",") are handled correctly.
4
+ # German thousands delimiters (".") and separators (",") are handled correctly if the lang attribute of the HTML element is set to "de".
5
+ #
6
+ # Options:
7
+ # ignoreCurrencySign: If true, values with leading currency signs (€, $) are considered numeric and parsed correctly.
8
+ # nullOnError: If true, null is returned (instead of 0) if the value is not numeric.
9
+
10
+ $.fn.numericValue = (options = {}) ->
11
+
12
+ delocalize = (val) ->
13
+ if $("html").attr("lang") == "de"
14
+ val.replace(".", "").replace(",", ".")
15
+ else
16
+ val.replace(",", "")
17
+
18
+ $this = $(this)
19
+ val = delocalize(if $this.is(":input") then $this.val() else $this.text())
20
+ val = val.replace(/^\s*[€$]\s*/, "") if options.ignoreCurrencySign
21
+ if $.isNumeric(val)
22
+ parseFloat(val)
23
+ else
24
+ if options.nullOnError then null else 0
data/lib/da-js/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Da
2
2
  module Js
3
- VERSION = "0.1.0"
3
+ VERSION = "0.2.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,169 +1,155 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: da-js
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 0
10
- version: 0.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Stefan Daschek
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2012-03-29 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2014-09-17 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: railties
22
- prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
26
17
  - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 3
31
- - 1
32
- - 0
18
+ - !ruby/object:Gem::Version
33
19
  version: 3.1.0
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5'
34
23
  type: :runtime
35
- version_requirements: *id001
36
- - !ruby/object:Gem::Dependency
37
- name: sprockets
38
24
  prerelease: false
39
- requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
- requirements:
42
- - - ~>
43
- - !ruby/object:Gem::Version
44
- hash: 3
45
- segments:
46
- - 2
47
- - 0
48
- version: "2.0"
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 3.1.0
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5'
33
+ - !ruby/object:Gem::Dependency
34
+ name: sprockets
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.0'
49
40
  type: :runtime
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- name: coffee-script
53
41
  prerelease: false
54
- requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
- requirements:
57
- - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 7
60
- segments:
61
- - 2
62
- - 2
63
- version: "2.2"
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '2.0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: coffee-script
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '2.2'
64
54
  type: :runtime
65
- version_requirements: *id003
66
- - !ruby/object:Gem::Dependency
67
- name: cucumber
68
55
  prerelease: false
69
- requirement: &id004 !ruby/object:Gem::Requirement
70
- none: false
71
- requirements:
72
- - - ">="
73
- - !ruby/object:Gem::Version
74
- hash: 27
75
- segments:
76
- - 1
77
- - 1
78
- - 4
79
- version: 1.1.4
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.2'
61
+ - !ruby/object:Gem::Dependency
62
+ name: cucumber
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.3'
80
68
  type: :development
81
- version_requirements: *id004
82
- - !ruby/object:Gem::Dependency
83
- name: rspec-expectations
84
69
  prerelease: false
85
- requirement: &id005 !ruby/object:Gem::Requirement
86
- none: false
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- hash: 19
91
- segments:
92
- - 2
93
- - 7
94
- - 0
95
- version: 2.7.0
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ - !ruby/object:Gem::Dependency
76
+ name: rspec-expectations
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '2.7'
96
82
  type: :development
97
- version_requirements: *id005
98
- - !ruby/object:Gem::Dependency
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '2.7'
89
+ - !ruby/object:Gem::Dependency
99
90
  name: sinatra
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.4'
96
+ type: :development
100
97
  prerelease: false
101
- requirement: &id006 !ruby/object:Gem::Requirement
102
- none: false
103
- requirements:
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.4'
103
+ - !ruby/object:Gem::Dependency
104
+ name: sinatra-contrib
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
104
107
  - - ">="
105
- - !ruby/object:Gem::Version
106
- hash: 3
107
- segments:
108
- - 0
109
- version: "0"
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
110
  type: :development
111
- version_requirements: *id006
112
- - !ruby/object:Gem::Dependency
113
- name: sinatra-contrib
114
111
  prerelease: false
115
- requirement: &id007 !ruby/object:Gem::Requirement
116
- none: false
117
- requirements:
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
118
114
  - - ">="
119
- - !ruby/object:Gem::Version
120
- hash: 3
121
- segments:
122
- - 0
123
- version: "0"
124
- type: :development
125
- version_requirements: *id007
126
- - !ruby/object:Gem::Dependency
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
127
118
  name: capybara-webkit
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '1.3'
124
+ type: :development
128
125
  prerelease: false
129
- requirement: &id008 !ruby/object:Gem::Requirement
130
- none: false
131
- requirements:
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - "~>"
129
+ - !ruby/object:Gem::Version
130
+ version: '1.3'
131
+ - !ruby/object:Gem::Dependency
132
+ name: launchy
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
132
135
  - - ">="
133
- - !ruby/object:Gem::Version
134
- hash: 51
135
- segments:
136
- - 0
137
- - 11
138
- - 0
139
- version: 0.11.0
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
140
138
  type: :development
141
- version_requirements: *id008
142
- - !ruby/object:Gem::Dependency
143
- name: launchy
144
139
  prerelease: false
145
- requirement: &id009 !ruby/object:Gem::Requirement
146
- none: false
147
- requirements:
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
148
142
  - - ">="
149
- - !ruby/object:Gem::Version
150
- hash: 3
151
- segments:
152
- - 0
153
- version: "0"
154
- type: :development
155
- version_requirements: *id009
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
156
145
  description: Some jQuery extensions we tend to use in almost all our projects.
157
- email:
146
+ email:
158
147
  - stefan@die-antwort.eu
159
148
  executables: []
160
-
161
149
  extensions: []
162
-
163
150
  extra_rdoc_files: []
164
-
165
- files:
166
- - .gitignore
151
+ files:
152
+ - ".gitignore"
167
153
  - CHANGELOG.md
168
154
  - Gemfile
169
155
  - README.md
@@ -171,62 +157,59 @@ files:
171
157
  - da-js.gemspec
172
158
  - features/change_tracker.feature
173
159
  - features/conditional_visibility.feature
160
+ - features/numeric_value.feature
174
161
  - features/step_definitions/change_tracker_steps.rb
175
162
  - features/step_definitions/conditional_visibility_steps.rb
163
+ - features/step_definitions/numeric_value_steps.rb
176
164
  - features/step_definitions/shared_steps.rb
177
165
  - features/support/env.rb
178
166
  - features/support/testapp/config.ru
179
167
  - features/support/testapp/testapp.rb
180
- - features/support/testapp/vendor/jquery-1.7.1.js
168
+ - features/support/testapp/vendor/jquery-1.11.1.js
181
169
  - features/support/testapp/views/conditional_visibility.erb
182
170
  - features/support/testapp/views/form_change_tracker.erb
171
+ - features/support/testapp/views/numeric_value.erb
183
172
  - lib/assets/javascripts/da-js.js
184
173
  - lib/assets/javascripts/da-js/conditional_visibility.js.coffee
185
174
  - lib/assets/javascripts/da-js/form_change_tracker.js
175
+ - lib/assets/javascripts/da-js/numeric_value.js.coffee
186
176
  - lib/da-js.rb
187
177
  - lib/da-js/version.rb
188
178
  homepage: https://github.com/die-antwort/da-js
189
179
  licenses: []
190
-
180
+ metadata: {}
191
181
  post_install_message:
192
182
  rdoc_options: []
193
-
194
- require_paths:
183
+ require_paths:
195
184
  - lib
196
- required_ruby_version: !ruby/object:Gem::Requirement
197
- none: false
198
- requirements:
185
+ required_ruby_version: !ruby/object:Gem::Requirement
186
+ requirements:
199
187
  - - ">="
200
- - !ruby/object:Gem::Version
201
- hash: 3
202
- segments:
203
- - 0
204
- version: "0"
205
- required_rubygems_version: !ruby/object:Gem::Requirement
206
- none: false
207
- requirements:
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ required_rubygems_version: !ruby/object:Gem::Requirement
191
+ requirements:
208
192
  - - ">="
209
- - !ruby/object:Gem::Version
210
- hash: 3
211
- segments:
212
- - 0
213
- version: "0"
193
+ - !ruby/object:Gem::Version
194
+ version: '0'
214
195
  requirements: []
215
-
216
196
  rubyforge_project: da-js
217
- rubygems_version: 1.8.11
197
+ rubygems_version: 2.2.2
218
198
  signing_key:
219
- specification_version: 3
199
+ specification_version: 4
220
200
  summary: Mixed jQuery extensions
221
- test_files:
201
+ test_files:
222
202
  - features/change_tracker.feature
223
203
  - features/conditional_visibility.feature
204
+ - features/numeric_value.feature
224
205
  - features/step_definitions/change_tracker_steps.rb
225
206
  - features/step_definitions/conditional_visibility_steps.rb
207
+ - features/step_definitions/numeric_value_steps.rb
226
208
  - features/step_definitions/shared_steps.rb
227
209
  - features/support/env.rb
228
210
  - features/support/testapp/config.ru
229
211
  - features/support/testapp/testapp.rb
230
- - features/support/testapp/vendor/jquery-1.7.1.js
212
+ - features/support/testapp/vendor/jquery-1.11.1.js
231
213
  - features/support/testapp/views/conditional_visibility.erb
232
214
  - features/support/testapp/views/form_change_tracker.erb
215
+ - features/support/testapp/views/numeric_value.erb