da-js 1.0.0 → 1.2.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.
- 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:
|