da-js 0.0.2 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +4 -0
- data/da-js.gemspec +2 -2
- data/features/conditional_visibility.feature +29 -0
- data/features/step_definitions/conditional_visibility_steps.rb +30 -0
- data/features/step_definitions/shared_steps.rb +5 -0
- data/features/support/testapp/testapp.rb +1 -0
- data/features/support/testapp/views/conditional_visibility.erb +41 -0
- data/lib/assets/javascripts/da-js/conditional_visibility.js.coffee +40 -0
- data/lib/da-js/version.rb +1 -1
- metadata +37 -29
data/CHANGELOG.md
CHANGED
data/da-js.gemspec
CHANGED
@@ -20,12 +20,12 @@ Gem::Specification.new do |s|
|
|
20
20
|
|
21
21
|
s.add_dependency "railties", ">= 3.1.0"
|
22
22
|
s.add_dependency "sprockets", "~> 2.0"
|
23
|
+
s.add_dependency "coffee-script", "~> 2.2"
|
23
24
|
|
24
25
|
s.add_development_dependency "cucumber", ">= 1.1.4"
|
25
26
|
s.add_development_dependency "rspec-expectations", ">= 2.7.0"
|
26
27
|
s.add_development_dependency "sinatra"
|
27
28
|
s.add_development_dependency "sinatra-contrib"
|
28
|
-
s.add_development_dependency "capybara", ">=
|
29
|
-
s.add_development_dependency "capybara-webkit", ">= 0.8.0"
|
29
|
+
s.add_development_dependency "capybara-webkit", ">= 0.11.0"
|
30
30
|
s.add_development_dependency "launchy"
|
31
31
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
@javascript
|
2
|
+
Feature: Conditional visibility for elements
|
3
|
+
|
4
|
+
Background:
|
5
|
+
Given I visit the test page for "conditional visibility"
|
6
|
+
|
7
|
+
Scenario: Basic functionality
|
8
|
+
Then the "Other Country" input should be hidden
|
9
|
+
But the "Message" input should be visible
|
10
|
+
|
11
|
+
When I select "Other …" from the "Country" select
|
12
|
+
Then the "Other Country" input should be visible
|
13
|
+
|
14
|
+
When I uncheck the "I want to leave a message" checkbox
|
15
|
+
Then the "Message" input should be hidden
|
16
|
+
|
17
|
+
When I select "Austria" from the "Country" select
|
18
|
+
Then the "Other Country" input should be hidden
|
19
|
+
|
20
|
+
When I check the "I want to leave a message" checkbox
|
21
|
+
Then the "Message" input should be visible
|
22
|
+
|
23
|
+
Scenario: Changing a field value via javascript and triggering the event manually
|
24
|
+
When I set the "I want to leave a message" checkbox to unchecked using JavaScript
|
25
|
+
Then the "Message" input should be visible
|
26
|
+
|
27
|
+
When I trigger the "updateVisibilities" event on the form
|
28
|
+
Then the "Message" input should be hidden
|
29
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Then /^the "([^"]*)" input should be hidden$/ do |input|
|
2
|
+
find_field(input).should_not be_visible
|
3
|
+
end
|
4
|
+
|
5
|
+
Then /^the "([^"]*)" input should be visible$/ do |input|
|
6
|
+
find_field(input).should be_visible
|
7
|
+
end
|
8
|
+
|
9
|
+
When /^I select "([^"]*)" from the "([^"]*)" select$/ do |option, input|
|
10
|
+
select option, :from => input
|
11
|
+
end
|
12
|
+
|
13
|
+
When /^I uncheck the "([^"]*)" checkbox$/ do |input|
|
14
|
+
uncheck input
|
15
|
+
end
|
16
|
+
|
17
|
+
When /^I check the "([^"]*)" checkbox$/ do |input|
|
18
|
+
check input
|
19
|
+
end
|
20
|
+
|
21
|
+
When /^I set the "([^"]*)" checkbox to unchecked using JavaScript$/ do |input|
|
22
|
+
id = find_field(input)["id"]
|
23
|
+
page.execute_script "$('##{id}')[0].checked = false"
|
24
|
+
end
|
25
|
+
|
26
|
+
When /^I trigger the "([^"]*)" event on the form$/ do |event|
|
27
|
+
page.execute_script "$('form').trigger('#{event}')"
|
28
|
+
end
|
29
|
+
|
30
|
+
|
@@ -0,0 +1,41 @@
|
|
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: Conditional Visibility</h1>
|
11
|
+
<form id="simple_form" action="">
|
12
|
+
<div class="field">
|
13
|
+
<label for="country">Country</label>
|
14
|
+
<select id="country">
|
15
|
+
<option></option>
|
16
|
+
<option>Austria</option>
|
17
|
+
<option>Other …</option>
|
18
|
+
</select>
|
19
|
+
</div>
|
20
|
+
<div class="field" data-visible-if="$('#country option:last').is(':selected')">
|
21
|
+
<label for="country_other">Other Country</label>
|
22
|
+
<input id="country_other">
|
23
|
+
</div>
|
24
|
+
<div class="field">
|
25
|
+
<label for="message_checkbox">I want to leave a message</label>
|
26
|
+
<input type="checkbox" id="message_checkbox" checked>
|
27
|
+
</div>
|
28
|
+
<div class="field" data-visible-if="$('#message_checkbox')[0].checked">
|
29
|
+
<label for="message">Message</label>
|
30
|
+
<textarea id="message"></textarea>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
</form>
|
34
|
+
|
35
|
+
<script>
|
36
|
+
$("form").conditionalVisibility();
|
37
|
+
</script>
|
38
|
+
|
39
|
+
|
40
|
+
</body>
|
41
|
+
</html>
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# Hide/show elements dynamically according to their data-visible-if attribute.
|
2
|
+
#
|
3
|
+
# All elements with a data-visible-if attribute are checked on each change/focusout/click event:
|
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
|
+
# (The data-visible-if attributes must contain valid JavaScript code.)
|
6
|
+
#
|
7
|
+
# 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
|
+
#
|
9
|
+
# 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
|
+
#
|
11
|
+
# If you want to force an update of the visibilites, use $(…).trigger("updateVisibilites").
|
12
|
+
#
|
13
|
+
# Example:
|
14
|
+
#
|
15
|
+
# <form id="myform">
|
16
|
+
# <input id="checkbox" type="checkbox" >
|
17
|
+
# <input id="text" data-visible-if="$('#checkbox')[0].checked">
|
18
|
+
# </form>
|
19
|
+
# <script>
|
20
|
+
# $("#myform").conditionalVisibility()
|
21
|
+
# </script>
|
22
|
+
|
23
|
+
$.fn.conditionalVisibility = ->
|
24
|
+
|
25
|
+
updateVisibilities = (event, options) ->
|
26
|
+
$(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)
|
32
|
+
else
|
33
|
+
if options?.skipAnimations
|
34
|
+
$(this).hide()
|
35
|
+
else
|
36
|
+
$(this).slideUp(100)
|
37
|
+
|
38
|
+
this.on("change focusout click updateVisibilities", updateVisibilities).trigger("updateVisibilities", {skipAnimations: true})
|
39
|
+
|
40
|
+
|
data/lib/da-js/version.rb
CHANGED
metadata
CHANGED
@@ -5,9 +5,9 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 0.0.2
|
10
|
+
version: 0.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Stefan Daschek
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2012-
|
18
|
+
date: 2012-03-29 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: railties
|
@@ -49,9 +49,24 @@ dependencies:
|
|
49
49
|
type: :runtime
|
50
50
|
version_requirements: *id002
|
51
51
|
- !ruby/object:Gem::Dependency
|
52
|
-
name:
|
52
|
+
name: coffee-script
|
53
53
|
prerelease: false
|
54
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"
|
64
|
+
type: :runtime
|
65
|
+
version_requirements: *id003
|
66
|
+
- !ruby/object:Gem::Dependency
|
67
|
+
name: cucumber
|
68
|
+
prerelease: false
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
55
70
|
none: false
|
56
71
|
requirements:
|
57
72
|
- - ">="
|
@@ -63,11 +78,11 @@ dependencies:
|
|
63
78
|
- 4
|
64
79
|
version: 1.1.4
|
65
80
|
type: :development
|
66
|
-
version_requirements: *
|
81
|
+
version_requirements: *id004
|
67
82
|
- !ruby/object:Gem::Dependency
|
68
83
|
name: rspec-expectations
|
69
84
|
prerelease: false
|
70
|
-
requirement: &
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
71
86
|
none: false
|
72
87
|
requirements:
|
73
88
|
- - ">="
|
@@ -79,11 +94,11 @@ dependencies:
|
|
79
94
|
- 0
|
80
95
|
version: 2.7.0
|
81
96
|
type: :development
|
82
|
-
version_requirements: *
|
97
|
+
version_requirements: *id005
|
83
98
|
- !ruby/object:Gem::Dependency
|
84
99
|
name: sinatra
|
85
100
|
prerelease: false
|
86
|
-
requirement: &
|
101
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
87
102
|
none: false
|
88
103
|
requirements:
|
89
104
|
- - ">="
|
@@ -93,11 +108,11 @@ dependencies:
|
|
93
108
|
- 0
|
94
109
|
version: "0"
|
95
110
|
type: :development
|
96
|
-
version_requirements: *
|
111
|
+
version_requirements: *id006
|
97
112
|
- !ruby/object:Gem::Dependency
|
98
113
|
name: sinatra-contrib
|
99
114
|
prerelease: false
|
100
|
-
requirement: &
|
115
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
101
116
|
none: false
|
102
117
|
requirements:
|
103
118
|
- - ">="
|
@@ -107,22 +122,6 @@ dependencies:
|
|
107
122
|
- 0
|
108
123
|
version: "0"
|
109
124
|
type: :development
|
110
|
-
version_requirements: *id006
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: capybara
|
113
|
-
prerelease: false
|
114
|
-
requirement: &id007 !ruby/object:Gem::Requirement
|
115
|
-
none: false
|
116
|
-
requirements:
|
117
|
-
- - ">="
|
118
|
-
- !ruby/object:Gem::Version
|
119
|
-
hash: 23
|
120
|
-
segments:
|
121
|
-
- 1
|
122
|
-
- 1
|
123
|
-
- 2
|
124
|
-
version: 1.1.2
|
125
|
-
type: :development
|
126
125
|
version_requirements: *id007
|
127
126
|
- !ruby/object:Gem::Dependency
|
128
127
|
name: capybara-webkit
|
@@ -132,12 +131,12 @@ dependencies:
|
|
132
131
|
requirements:
|
133
132
|
- - ">="
|
134
133
|
- !ruby/object:Gem::Version
|
135
|
-
hash:
|
134
|
+
hash: 51
|
136
135
|
segments:
|
137
136
|
- 0
|
138
|
-
-
|
137
|
+
- 11
|
139
138
|
- 0
|
140
|
-
version: 0.
|
139
|
+
version: 0.11.0
|
141
140
|
type: :development
|
142
141
|
version_requirements: *id008
|
143
142
|
- !ruby/object:Gem::Dependency
|
@@ -171,13 +170,18 @@ files:
|
|
171
170
|
- Rakefile
|
172
171
|
- da-js.gemspec
|
173
172
|
- features/change_tracker.feature
|
173
|
+
- features/conditional_visibility.feature
|
174
174
|
- features/step_definitions/change_tracker_steps.rb
|
175
|
+
- features/step_definitions/conditional_visibility_steps.rb
|
176
|
+
- features/step_definitions/shared_steps.rb
|
175
177
|
- features/support/env.rb
|
176
178
|
- features/support/testapp/config.ru
|
177
179
|
- features/support/testapp/testapp.rb
|
178
180
|
- features/support/testapp/vendor/jquery-1.7.1.js
|
181
|
+
- features/support/testapp/views/conditional_visibility.erb
|
179
182
|
- features/support/testapp/views/form_change_tracker.erb
|
180
183
|
- lib/assets/javascripts/da-js.js
|
184
|
+
- lib/assets/javascripts/da-js/conditional_visibility.js.coffee
|
181
185
|
- lib/assets/javascripts/da-js/form_change_tracker.js
|
182
186
|
- lib/da-js.rb
|
183
187
|
- lib/da-js/version.rb
|
@@ -216,9 +220,13 @@ specification_version: 3
|
|
216
220
|
summary: Mixed jQuery extensions
|
217
221
|
test_files:
|
218
222
|
- features/change_tracker.feature
|
223
|
+
- features/conditional_visibility.feature
|
219
224
|
- features/step_definitions/change_tracker_steps.rb
|
225
|
+
- features/step_definitions/conditional_visibility_steps.rb
|
226
|
+
- features/step_definitions/shared_steps.rb
|
220
227
|
- features/support/env.rb
|
221
228
|
- features/support/testapp/config.ru
|
222
229
|
- features/support/testapp/testapp.rb
|
223
230
|
- features/support/testapp/vendor/jquery-1.7.1.js
|
231
|
+
- features/support/testapp/views/conditional_visibility.erb
|
224
232
|
- features/support/testapp/views/form_change_tracker.erb
|