da-js 1.0.0 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +32 -2
- data/da-js.gemspec +4 -4
- data/features/numeric_value.feature +6 -0
- data/features/step_definitions/numeric_value_steps.rb +4 -0
- data/lib/assets/javascripts/da-js/conditional_visibility.js.coffee +13 -1
- data/lib/assets/javascripts/da-js/numeric_value.js.coffee +6 -4
- data/lib/da-js/version.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 3ce2526b33932c7db329c1ba4cea698420694b9752a608b7471501379531be6a
|
4
|
+
data.tar.gz: 4c189b4f3a79d7c618d9b73c8ae98aa98992dc1b5425375b1651a3969979e042
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6052c825693cb2864d71207106a13c024683ee1a9035e145420d59263706ae1164a1798bf874a1411a0a3edcb68dbab5343234f38e488179df084d26e0f7176e
|
7
|
+
data.tar.gz: 55341ecbc4165e14ce29d08ecc403143ee9ba2025915eadbf2c595f3fd98bec16da8ca71148b958925df92d46623f99002ae6a4209925b073040d69a65b2a0a6
|
data/CHANGELOG.md
CHANGED
@@ -1,13 +1,43 @@
|
|
1
|
-
##
|
1
|
+
## Version 1.2.1
|
2
|
+
* Relax gemspec version requirements: Can now be used with Rails 6.
|
3
|
+
|
4
|
+
## Version 1.2
|
5
|
+
### Conditional Visibility
|
6
|
+
* The current state of an element with conditional visibility can now be queried with `$(...).data('visible-if-state')`.
|
7
|
+
|
8
|
+
## Version 1.1.2
|
9
|
+
* Relax gemspec version requirements: Can now be used with Rails 5.
|
10
|
+
|
11
|
+
## Version 1.1.1
|
12
|
+
* Relax gem version requirement for Sprockets: Can now be used with Sprockets 3.
|
13
|
+
|
14
|
+
## Version 1.1.0
|
15
|
+
### Numeric Value
|
16
|
+
* The rules for deciding if “german” parsing rules should be used have changed: Instead of only looking at the `lang` attribute of the `<html>` element, now the first `lang` attribute found on the input element itself or any of its parent elements is considered. (This means, that the `lang` attribute of `<html>` will only be used if there are no intermediate elements with different `lang` attributes.)
|
17
|
+
|
18
|
+
## Version 1.0.0
|
19
|
+
### Conditional Visibility
|
20
|
+
* Breaking: Option `skipAnimations` has been removed. To force re-evaluation of visibilities without animation (e.g. after the DOM has been modified), use `$(...).trigger("setVisibilities")` instead (this is already done automatically on `pageready`.)
|
21
|
+
* New option `animate`: Use `$(...).conditionalVisibility({animate: false})` if you want conditional visibility to work completely without animations.
|
22
|
+
|
23
|
+
|
24
|
+
## Version 0.2.0
|
2
25
|
* Add $.fn.numericValue().
|
3
26
|
|
27
|
+
### Conditional Visibility
|
28
|
+
* Make events triggering visibility re-calculation customizable.
|
29
|
+
* After an element is shown / hidden, a `shown.conditionalVisibility` / `hidden.conditionalVisibility` event is triggered.
|
30
|
+
|
31
|
+
|
4
32
|
## Version 0.1.0
|
5
33
|
* Add $.fn.conditionalVisibility().
|
6
34
|
* Now requires CoffeeScript.
|
7
35
|
|
36
|
+
|
8
37
|
## Version 0.0.2
|
9
38
|
* Now supports forms generated by Formtastic.
|
10
39
|
* Return 'this' from formChangeTracker() to make it chainable.
|
11
40
|
|
41
|
+
|
12
42
|
## Version 0.0.1
|
13
|
-
* Initial Version
|
43
|
+
* Initial Version
|
data/da-js.gemspec
CHANGED
@@ -18,10 +18,10 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
19
|
s.require_paths = ["lib"]
|
20
20
|
|
21
|
-
s.add_dependency "railties", ">= 3.1.0", "<
|
22
|
-
s.add_dependency "sprockets"
|
23
|
-
s.add_dependency "coffee-script"
|
24
|
-
|
21
|
+
s.add_dependency "railties", ">= 3.1.0", "< 7"
|
22
|
+
s.add_dependency "sprockets"
|
23
|
+
s.add_dependency "coffee-script"
|
24
|
+
|
25
25
|
s.add_development_dependency "cucumber", "~> 1.3"
|
26
26
|
s.add_development_dependency "rspec-expectations", "~> 2.7"
|
27
27
|
s.add_development_dependency "sinatra", "~> 1.4"
|
@@ -35,6 +35,12 @@ Feature: Numeric value of input elements
|
|
35
35
|
| € 5 | 0 |
|
36
36
|
| | 0 |
|
37
37
|
|
38
|
+
Scenario: Locale specified on the input element directly
|
39
|
+
Given the HTML element has a lang attribute set to "de"
|
40
|
+
And the element "textfield" has a lang attribute set to "en"
|
41
|
+
When I fill in "textfield" with "1,234.56"
|
42
|
+
Then the numeric value of "textfield" should be "1234.56"
|
43
|
+
|
38
44
|
Scenario: Reading value from non-input elements
|
39
45
|
Then the numeric value of "non_input_element_english" should be "1234.56"
|
40
46
|
Given the HTML element has a lang attribute set to "de"
|
@@ -2,6 +2,10 @@ Given %r{the HTML element has a lang attribute set to "([^"]*)"$} do |lang|
|
|
2
2
|
page.execute_script("$('html').attr('lang', '#{lang}')")
|
3
3
|
end
|
4
4
|
|
5
|
+
Given %r{the element "([^"]*)" has a lang attribute set to "([^"]*)"$} do |id, lang|
|
6
|
+
page.execute_script("$('##{id}').attr('lang', '#{lang}')")
|
7
|
+
end
|
8
|
+
|
5
9
|
Then %r{^the numeric value of "([^"]*)" should be "([^"]*)"$} do |input, value|
|
6
10
|
page.evaluate_script("$('##{input}').numericValue()").should be_within(0.0001).of value.to_f
|
7
11
|
end
|
@@ -25,6 +25,14 @@
|
|
25
25
|
# manually after new elements have been added to the DOM (eg a modal with content fetched via
|
26
26
|
# ajax).
|
27
27
|
#
|
28
|
+
# The current state of an element with conditional visibility can be queried using
|
29
|
+
# `$(...).data('visible-if-state')`, which returns either `'visible'` or `'hidden'`. This differs
|
30
|
+
# from using jQuery’s `:visible` or `:hidden` pseude-selectors on the element in that it has
|
31
|
+
# immediate effect, even if animations are used: When an element changes from being visible to being
|
32
|
+
# hidden, it is still `:visible` in the jQuery sense until the animation has completed. However,
|
33
|
+
# `data('visible-if-state')` will return `'hidden'` immediately after the evaluation of the
|
34
|
+
# visibility condition.
|
35
|
+
#
|
28
36
|
# Example:
|
29
37
|
#
|
30
38
|
# <form id="myform">
|
@@ -46,10 +54,12 @@ $.fn.conditionalVisibility = (options = {}) ->
|
|
46
54
|
$(this).find("[data-visible-if]").each ->
|
47
55
|
$this = $(this)
|
48
56
|
if eval($this.data("visible-if"))
|
57
|
+
$(this).data("visible-if-state", "visible")
|
49
58
|
if $this.is(":hidden")
|
50
59
|
if options.animate then $this.slideDown(100) else $this.show()
|
51
60
|
$this.promise().done -> $this.trigger("shown.conditionalVisibility")
|
52
61
|
else
|
62
|
+
$(this).data("visible-if-state", "hidden")
|
53
63
|
if $this.is(":visible")
|
54
64
|
if options.animate then $this.slideUp(100) else $this.hide()
|
55
65
|
$this.promise().done -> $this.trigger("hidden.conditionalVisibility")
|
@@ -57,7 +67,9 @@ $.fn.conditionalVisibility = (options = {}) ->
|
|
57
67
|
setVisibilities = (event) ->
|
58
68
|
$(this).find("[data-visible-if]").each ->
|
59
69
|
$this = $(this)
|
60
|
-
|
70
|
+
isVisible = !!eval($this.data("visible-if"))
|
71
|
+
$(this).data("visible-if-state", if isVisible then "visible" else "hidden")
|
72
|
+
$this.toggle isVisible
|
61
73
|
|
62
74
|
this
|
63
75
|
.on "#{options.events} updateVisibilities", updateVisibilities
|
@@ -1,7 +1,7 @@
|
|
1
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
2
|
#
|
3
3
|
# Thousands delimiters (",") are handled correctly.
|
4
|
-
# German thousands delimiters (".") and separators (",") are handled correctly if the lang attribute of the
|
4
|
+
# German thousands delimiters (".") and separators (",") are handled correctly if the lang attribute of the input element (or any of its parent elements) is set to "de".
|
5
5
|
#
|
6
6
|
# Options:
|
7
7
|
# ignoreCurrencySign: If true, values with leading currency signs (€, $) are considered numeric and parsed correctly.
|
@@ -9,14 +9,16 @@
|
|
9
9
|
|
10
10
|
$.fn.numericValue = (options = {}) ->
|
11
11
|
|
12
|
-
delocalize = (val) ->
|
13
|
-
if
|
12
|
+
delocalize = (val, locale) ->
|
13
|
+
if locale == "de"
|
14
14
|
val.replace(".", "").replace(",", ".")
|
15
15
|
else
|
16
16
|
val.replace(",", "")
|
17
17
|
|
18
18
|
$this = $(this)
|
19
|
-
|
19
|
+
locale = $this.closest("[lang]").attr("lang")
|
20
|
+
val = if $this.is(":input") then $this.val() else $this.text()
|
21
|
+
val = delocalize(val, locale)
|
20
22
|
val = val.replace(/^\s*[€$]\s*/, "") if options.ignoreCurrencySign
|
21
23
|
if $.isNumeric(val)
|
22
24
|
parseFloat(val)
|
data/lib/da-js/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: da-js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Daschek
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 3.1.0
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '7'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,35 +29,35 @@ dependencies:
|
|
29
29
|
version: 3.1.0
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '7'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: sprockets
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
-
- - "
|
37
|
+
- - ">="
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: '
|
39
|
+
version: '0'
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- - "
|
44
|
+
- - ">="
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
46
|
+
version: '0'
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: coffee-script
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- - "
|
51
|
+
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
53
|
+
version: '0'
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
requirements:
|
58
|
-
- - "
|
58
|
+
- - ">="
|
59
59
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
60
|
+
version: '0'
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
62
|
name: cucumber
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -178,7 +178,7 @@ files:
|
|
178
178
|
homepage: https://github.com/die-antwort/da-js
|
179
179
|
licenses: []
|
180
180
|
metadata: {}
|
181
|
-
post_install_message:
|
181
|
+
post_install_message:
|
182
182
|
rdoc_options: []
|
183
183
|
require_paths:
|
184
184
|
- lib
|
@@ -194,8 +194,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
196
|
rubyforge_project: da-js
|
197
|
-
rubygems_version: 2.
|
198
|
-
signing_key:
|
197
|
+
rubygems_version: 2.7.6.2
|
198
|
+
signing_key:
|
199
199
|
specification_version: 4
|
200
200
|
summary: Mixed jQuery extensions
|
201
201
|
test_files:
|