ajax_error_renderer 0.1.1 → 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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb95969d3e15f4fb26de26dace8633b060866fc03b3df37dab175a70a05478ee
|
4
|
+
data.tar.gz: 0f4f489ec92dc0b6535fa47ac97db4460aa663d3a0daee56776ec3af49f78dd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2dc7bc27ffb17acd7a32abb0aad2c9f24785a4092f8bb20b46aa4cf1bf95c6b15a7f49a04e9eba0bcbc0176428ca7423ca2b63eedf89ecb87ffd01cd14f8e57
|
7
|
+
data.tar.gz: 41910fff2e590bae123c5f0f6efbd1576f17945376ea20f5d4a38e41b98d3c0588565eb90b6cecbd9cdd78cfa63193ba4130a5a8d784b59b2623b606c8bdc67c
|
data/README.md
CHANGED
@@ -77,6 +77,16 @@ If you want to display the messages in other place, you can do it by passing `lo
|
|
77
77
|
render_ajax_error model: @user, location: '.error_messages'
|
78
78
|
```
|
79
79
|
|
80
|
+
### Scroll to error messages
|
81
|
+
|
82
|
+
If you have a large form, users can miss validation error messages because the messages display above user screen. To solve the problem, render_ajax_error method has move option to scroll to error messages. It defaults to true.
|
83
|
+
|
84
|
+
If you won't scroll, you can write like following.
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
render_ajax_error model: @user, move: false
|
88
|
+
```
|
89
|
+
|
80
90
|
### Custom Template
|
81
91
|
|
82
92
|
You can create custome template with a generator like following.
|
@@ -1 +1,5 @@
|
|
1
|
-
document.querySelector('<%= @location %>')
|
1
|
+
var element = document.querySelector('<%= @location %>');
|
2
|
+
element.innerHTML = "<%= j(render('ajax_errors/error', model: @model)) %>";
|
3
|
+
<% if @move %>
|
4
|
+
element.scrollIntoView(true);
|
5
|
+
<% end %>
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Reform::Form::MultiParameterAttributes
|
2
|
+
# TODO: implement this with parse_filter, so we don't have to manually walk through the hash, etc.
|
3
|
+
class DateTimeParamsFilter
|
4
|
+
def call(params)
|
5
|
+
params = params.dup # DISCUSS: not sure if that slows down form processing?
|
6
|
+
date_attributes = {}
|
7
|
+
|
8
|
+
params.each do |attribute, value|
|
9
|
+
if value.is_a?(Hash)
|
10
|
+
params[attribute] = call(value) # TODO: #validate should only handle local form params.
|
11
|
+
elsif matches = attribute.match(/^(\w+)\(.i\)$/)
|
12
|
+
date_attribute = matches[1]
|
13
|
+
date_attributes[date_attribute] = params_to_date(
|
14
|
+
params.delete("#{date_attribute}(1i)"),
|
15
|
+
params.delete("#{date_attribute}(2i)"),
|
16
|
+
params.delete("#{date_attribute}(3i)"),
|
17
|
+
params.delete("#{date_attribute}(4i)"),
|
18
|
+
params.delete("#{date_attribute}(5i)")
|
19
|
+
)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
date_attributes.each do |attribute, date|
|
24
|
+
params[attribute] = date
|
25
|
+
end
|
26
|
+
params
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
def params_to_date(year, month, day, hour, minute)
|
31
|
+
date_fields = [year, month, day].map!(&:to_i)
|
32
|
+
time_fields = [hour, minute].map!(&:to_i)
|
33
|
+
|
34
|
+
if date_fields.any?(&:zero?) || !Date.valid_date?(*date_fields)
|
35
|
+
return nil
|
36
|
+
end
|
37
|
+
|
38
|
+
if hour.blank? && minute.blank?
|
39
|
+
Date.new(*date_fields)
|
40
|
+
else
|
41
|
+
args = date_fields + time_fields
|
42
|
+
Time.zone ? Time.zone.local(*args) :
|
43
|
+
Time.new(*args)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
# this hooks into the format-specific #deserialize! method.
|
49
|
+
def deserialize!(params)
|
50
|
+
super DateTimeParamsFilter.new.call(params) # if params.is_a?(Hash) # this currently works for hash, only.
|
51
|
+
end
|
52
|
+
end
|
data/lib/ajax_error_renderer.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
require "ajax_error_renderer/engine"
|
2
2
|
|
3
3
|
module AjaxErrorRenderer
|
4
|
-
|
4
|
+
private
|
5
|
+
|
6
|
+
def render_ajax_error(location: '#error', model:, status: 422, move: true)
|
5
7
|
@location = location
|
6
8
|
@model = model
|
9
|
+
@move = move
|
7
10
|
render 'ajax_errors/error', formats: :js, status: status
|
8
11
|
end
|
9
12
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ajax_error_renderer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- willnet
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -36,6 +36,7 @@ files:
|
|
36
36
|
- Rakefile
|
37
37
|
- app/views/ajax_errors/_error.html.erb
|
38
38
|
- app/views/ajax_errors/error.js.erb
|
39
|
+
- app/views/ajax_errors/multi_parameter_attributes.rb
|
39
40
|
- lib/ajax_error_renderer.rb
|
40
41
|
- lib/ajax_error_renderer/engine.rb
|
41
42
|
- lib/ajax_error_renderer/version.rb
|
@@ -62,8 +63,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
62
63
|
- !ruby/object:Gem::Version
|
63
64
|
version: '0'
|
64
65
|
requirements: []
|
65
|
-
|
66
|
-
rubygems_version: 2.7.6
|
66
|
+
rubygems_version: 3.0.3
|
67
67
|
signing_key:
|
68
68
|
specification_version: 4
|
69
69
|
summary: a friend with turbolinks and form_with
|