da-js 0.1.0 → 0.2.0
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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +4 -1
- data/da-js.gemspec +5 -5
- data/features/conditional_visibility.feature +26 -0
- data/features/numeric_value.feature +60 -0
- data/features/step_definitions/change_tracker_steps.rb +1 -1
- data/features/step_definitions/conditional_visibility_steps.rb +37 -8
- data/features/step_definitions/numeric_value_steps.rb +21 -0
- data/features/step_definitions/shared_steps.rb +11 -1
- data/features/support/env.rb +1 -0
- data/features/support/testapp/testapp.rb +2 -1
- data/features/support/testapp/vendor/jquery-1.11.1.js +10308 -0
- data/features/support/testapp/views/conditional_visibility.erb +7 -2
- data/features/support/testapp/views/numeric_value.erb +17 -0
- data/lib/assets/javascripts/da-js/conditional_visibility.js.coffee +24 -12
- data/lib/assets/javascripts/da-js/numeric_value.js.coffee +24 -0
- data/lib/da-js/version.rb +1 -1
- metadata +139 -156
- data/features/support/testapp/vendor/jquery-1.7.1.js +0 -9266
@@ -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
|
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
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
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
|
34
|
-
|
35
|
-
|
36
|
-
|
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(
|
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
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
|
-
|
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
|
-
|
19
|
-
|
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
|
-
|
23
|
-
|
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
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
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
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
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
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
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
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
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
|
-
|
98
|
-
|
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
|
-
|
102
|
-
|
103
|
-
|
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
|
-
|
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
|
-
|
116
|
-
|
117
|
-
requirements:
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
118
114
|
- - ">="
|
119
|
-
- !ruby/object:Gem::Version
|
120
|
-
|
121
|
-
|
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
|
-
|
130
|
-
|
131
|
-
|
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
|
-
|
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
|
-
|
146
|
-
|
147
|
-
requirements:
|
140
|
+
version_requirements: !ruby/object:Gem::Requirement
|
141
|
+
requirements:
|
148
142
|
- - ">="
|
149
|
-
- !ruby/object:Gem::Version
|
150
|
-
|
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
|
-
|
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.
|
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
|
-
|
198
|
-
requirements:
|
185
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
186
|
+
requirements:
|
199
187
|
- - ">="
|
200
|
-
- !ruby/object:Gem::Version
|
201
|
-
|
202
|
-
|
203
|
-
|
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
|
-
|
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:
|
197
|
+
rubygems_version: 2.2.2
|
218
198
|
signing_key:
|
219
|
-
specification_version:
|
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.
|
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
|