effective_form_inputs 1.1.10 → 1.1.11
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 +4 -4
- data/README.md +66 -0
- data/app/assets/javascripts/effective_form_inputs.js +1 -0
- data/app/assets/javascripts/effective_time_picker/initialize.js.coffee +17 -0
- data/app/assets/javascripts/effective_time_picker/input.js +4 -0
- data/app/assets/stylesheets/effective_time_picker/input.scss +1 -0
- data/app/models/effective/form_builder_inputs.rb +9 -0
- data/app/models/effective/form_input.rb +6 -6
- data/app/models/inputs/effective_time_picker/input.rb +43 -0
- data/app/models/inputs/effective_time_picker_input.rb +12 -0
- data/lib/effective_form_inputs/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49d3e07769895f8fe1d25f353f7cca1b796aa8c4
|
4
|
+
data.tar.gz: af46d954e2c058fab64aa2188efa4b8808cf6ede
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 12d3ccf450c2e837c8f75af3056ffbae1eb1ca4edd8966a6747b65099d18419978aa649a5cd9d6c24842ff0bbb1c55acc5c0b128850974db27278a8827bfade0
|
7
|
+
data.tar.gz: b4ea5cef5220ecc5fd2f7d34a0f52dfe3191c2f1b436229a02db49d43cf46eee7fc813ea25507de3b2f5469568f3c73b8fcc9dd24cb05e39203799770995f935
|
data/README.md
CHANGED
@@ -254,6 +254,15 @@ To disable this behaviour, call with `date_linked: false`.
|
|
254
254
|
= f.input :end_at, :as => :effective_date_time_picker, :date_linked => false
|
255
255
|
```
|
256
256
|
|
257
|
+
### Events
|
258
|
+
|
259
|
+
The date picker library doesn't trigger a regular `change`. Instead you must watch for the `dp.change` event.
|
260
|
+
|
261
|
+
More info is available here:
|
262
|
+
|
263
|
+
http://eonasdan.github.io/bootstrap-datetimepicker/Events/
|
264
|
+
|
265
|
+
|
257
266
|
## Effective Date Picker
|
258
267
|
|
259
268
|
This custom form input is based on the following awesome project:
|
@@ -879,6 +888,63 @@ validates :phone, format: { with: /\A\(\d{3}\) \d{3}-\d{4}( x\d+)?\Z/ }
|
|
879
888
|
validates :phone, effective_tel: true # Enforces same format as above
|
880
889
|
```
|
881
890
|
|
891
|
+
|
892
|
+
## Effective Time Picker
|
893
|
+
|
894
|
+
This custom form input is based on the following awesome project:
|
895
|
+
|
896
|
+
Bootstrap 3 Datepicker (https://github.com/Eonasdan/bootstrap-datetimepicker)
|
897
|
+
|
898
|
+
|
899
|
+
### Installation
|
900
|
+
|
901
|
+
If you've already installed the 'All Form Inputs' assets (see above), there are no additional installation steps.
|
902
|
+
|
903
|
+
To install this form input individually, add the following to your application.js:
|
904
|
+
|
905
|
+
```ruby
|
906
|
+
//= require effective_time_picker/input
|
907
|
+
```
|
908
|
+
|
909
|
+
and add the following to your application.css:
|
910
|
+
|
911
|
+
```ruby
|
912
|
+
*= require effective_time_picker/input
|
913
|
+
```
|
914
|
+
|
915
|
+
### Usage
|
916
|
+
|
917
|
+
As a Rails Form Helper input:
|
918
|
+
|
919
|
+
```ruby
|
920
|
+
= form_for @user do |f|
|
921
|
+
= f.effective_time_picker :started_at
|
922
|
+
```
|
923
|
+
|
924
|
+
As a SimpleForm input:
|
925
|
+
|
926
|
+
```ruby
|
927
|
+
= simple_form_for @user do |f|
|
928
|
+
= f.input :started_at, :as => :effective_time_picker
|
929
|
+
```
|
930
|
+
|
931
|
+
As a SimpleForm input without the input group (time glyphicon)
|
932
|
+
|
933
|
+
```ruby
|
934
|
+
= simple_form_for @user do |f|
|
935
|
+
= f.input :started_at, :as => :effective_time_picker, :input_group => false
|
936
|
+
```
|
937
|
+
|
938
|
+
### Options
|
939
|
+
|
940
|
+
The default `:input_js => options` used to initialize this form input are as follows:
|
941
|
+
|
942
|
+
```ruby
|
943
|
+
:input_js => {:format => ''%H:%M''}
|
944
|
+
```
|
945
|
+
|
946
|
+
For more options, please see Effective Date Time Picker above
|
947
|
+
|
882
948
|
## Effective URL
|
883
949
|
|
884
950
|
This custom form input enforces the url starts with http:// or https://
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# http://eonasdan.github.io/bootstrap-datetimepicker/Options/
|
2
|
+
|
3
|
+
initialize = ->
|
4
|
+
$('input.effective_time_picker:not(.initialized)').each (i, element) ->
|
5
|
+
element = $(element)
|
6
|
+
options = element.data('input-js-options') || {}
|
7
|
+
|
8
|
+
element.addClass('initialized').datetimepicker(options)
|
9
|
+
|
10
|
+
$ -> initialize()
|
11
|
+
$(document).on 'page:change', -> initialize()
|
12
|
+
$(document).on 'turbolinks:load', -> initialize()
|
13
|
+
$(document).on 'turbolinks:render', -> initialize()
|
14
|
+
$(document).on 'cocoon:after-insert', -> initialize()
|
15
|
+
$(document).on 'turbolinks:before-cache', ->
|
16
|
+
$('input.effective_time_picker.initialized').datetimepicker('destroy')
|
17
|
+
|
@@ -0,0 +1 @@
|
|
1
|
+
@import '../effective_date_time_picker/input';
|
@@ -37,5 +37,14 @@ module Effective
|
|
37
37
|
def effective_tel(method, options_tag = nil, options = {}, html_options = {})
|
38
38
|
Inputs::EffectiveTel::Input.new(@object, @object_name, @template, method, options, html_options).to_html
|
39
39
|
end
|
40
|
+
|
41
|
+
def effective_time_picker(method, options = {})
|
42
|
+
Inputs::EffectiveTimePicker::Input.new(@object, @object_name, @template, method, options, options).to_html
|
43
|
+
end
|
44
|
+
|
45
|
+
def effective_url(method, options_tag = nil, options = {}, html_options = {})
|
46
|
+
Inputs::EffectiveUrl::Input.new(@object, @object_name, @template, method, options, html_options).to_html
|
47
|
+
end
|
48
|
+
|
40
49
|
end
|
41
50
|
end
|
@@ -73,16 +73,16 @@ module Effective
|
|
73
73
|
private
|
74
74
|
|
75
75
|
# I'm passed something...I don't know what it is, but it needs to be an Array
|
76
|
-
def arrayize_html_class_key(
|
77
|
-
case
|
76
|
+
def arrayize_html_class_key(value)
|
77
|
+
case value
|
78
78
|
when Hash
|
79
|
-
arrayize_html_class_key(
|
79
|
+
arrayize_html_class_key(value[:class])
|
80
80
|
when Array
|
81
|
-
|
81
|
+
value.compact.map(&:to_s)
|
82
82
|
when String
|
83
|
-
|
83
|
+
value.split(' ')
|
84
84
|
when Symbol
|
85
|
-
[
|
85
|
+
[value.to_s]
|
86
86
|
else
|
87
87
|
[]
|
88
88
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module Inputs
|
2
|
+
module EffectiveTimePicker
|
3
|
+
class Input < Effective::FormInput
|
4
|
+
delegate :content_tag, :text_field_tag, :to => :@template
|
5
|
+
|
6
|
+
def default_input_js
|
7
|
+
{format: 'HH:mm', showClear: true}
|
8
|
+
end
|
9
|
+
|
10
|
+
def default_input_html
|
11
|
+
{class: 'effective_time_picker time'}
|
12
|
+
end
|
13
|
+
|
14
|
+
def to_html
|
15
|
+
if options[:input_group] == false
|
16
|
+
return text_field_tag(field_name, value, tag_options)
|
17
|
+
end
|
18
|
+
|
19
|
+
content_tag(:div, class: 'input-group') do
|
20
|
+
content_tag(:span, class: 'input-group-addon') do
|
21
|
+
content_tag(:i, '', class: 'glyphicon glyphicon-time').html_safe
|
22
|
+
end +
|
23
|
+
text_field_tag(field_name, value, tag_options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def value
|
28
|
+
val = super
|
29
|
+
val.respond_to?(:strftime) ? val.strftime('%H:%M') : val
|
30
|
+
end
|
31
|
+
|
32
|
+
def html_options
|
33
|
+
super.tap do |html_options|
|
34
|
+
if js_options[:format] == default_input_js[:format] # Unless someone changed from the default
|
35
|
+
html_options[:pattern] = '\d{2}:\d{2}' # Match default pattern defined above
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# = simple_form_for @thing do |f|
|
2
|
+
# = f.input :updated_at, :as => :effective_date_picker
|
3
|
+
|
4
|
+
if defined?(SimpleForm)
|
5
|
+
|
6
|
+
class EffectiveTimePickerInput < SimpleForm::Inputs::StringInput
|
7
|
+
def input(wrapper_options = nil)
|
8
|
+
Inputs::EffectiveTimePicker::Input.new(object, object_name, template, attribute_name, input_options, (merge_wrapper_options(input_html_options, wrapper_options) || {})).to_html
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_form_inputs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-10-
|
11
|
+
date: 2017-10-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -71,6 +71,8 @@ files:
|
|
71
71
|
- app/assets/javascripts/effective_tel/initialize.js.coffee
|
72
72
|
- app/assets/javascripts/effective_tel/input.js
|
73
73
|
- app/assets/javascripts/effective_tel/jquery.maskedInput.js
|
74
|
+
- app/assets/javascripts/effective_time_picker/initialize.js.coffee
|
75
|
+
- app/assets/javascripts/effective_time_picker/input.js
|
74
76
|
- app/assets/javascripts/effective_url/initialize.js.coffee
|
75
77
|
- app/assets/javascripts/effective_url/input.js
|
76
78
|
- app/assets/stylesheets/effective_date_picker/input.scss
|
@@ -84,6 +86,7 @@ files:
|
|
84
86
|
- app/assets/stylesheets/effective_select/input.scss
|
85
87
|
- app/assets/stylesheets/effective_select/overrides.scss
|
86
88
|
- app/assets/stylesheets/effective_select/select2.css
|
89
|
+
- app/assets/stylesheets/effective_time_picker/input.scss
|
87
90
|
- app/helpers/effective_form_inputs_helper.rb
|
88
91
|
- app/models/effective/form_builder_inputs.rb
|
89
92
|
- app/models/effective/form_input.rb
|
@@ -107,6 +110,8 @@ files:
|
|
107
110
|
- app/models/inputs/effective_static_control_input.rb
|
108
111
|
- app/models/inputs/effective_tel/input.rb
|
109
112
|
- app/models/inputs/effective_tel_input.rb
|
113
|
+
- app/models/inputs/effective_time_picker/input.rb
|
114
|
+
- app/models/inputs/effective_time_picker_input.rb
|
110
115
|
- app/models/inputs/effective_url/input.rb
|
111
116
|
- app/models/inputs/effective_url_input.rb
|
112
117
|
- app/validators/effective_email_validator.rb
|