tao_form 0.1.3 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (29) hide show
  1. checksums.yaml +4 -4
  2. data/lib/assets/javascripts/tao/form/shared/fields/datetime_picker.coffee +1 -0
  3. data/lib/assets/stylesheets/tao/form/fields/select/multiple_result.scss +4 -0
  4. data/lib/assets/stylesheets/tao/form/layout.scss +1 -2
  5. data/lib/assets/stylesheets/tao/form/shared/fields/select/_multiple_result.scss +4 -0
  6. data/lib/tao_form/components/check_box_component.rb +10 -6
  7. data/lib/tao_form/components/datetime_picker_component.rb +37 -16
  8. data/lib/tao_form/components/field_component.rb +7 -1
  9. data/lib/tao_form/components/moment_picker/base.rb +16 -16
  10. data/lib/tao_form/components/moment_picker/result_component.rb +6 -4
  11. data/lib/tao_form/components/moment_picker/segments/minute_segment_component.rb +1 -1
  12. data/lib/tao_form/components/radio_button_component.rb +9 -5
  13. data/lib/tao_form/components/select/list_component.rb +6 -10
  14. data/lib/tao_form/components/select/multiple_result_component.rb +29 -3
  15. data/lib/tao_form/components/select/result_component.rb +22 -10
  16. data/lib/tao_form/components/select_component.rb +42 -33
  17. data/lib/tao_form/components/time_picker_component.rb +1 -1
  18. data/lib/tao_form/inputs/boolean_input.rb +13 -12
  19. data/lib/tao_form/inputs/collection_select_input.rb +23 -6
  20. data/lib/tao_form/inputs/date_time_input.rb +11 -4
  21. data/lib/tao_form/inputs/grouped_collection_select_input.rb +23 -6
  22. data/lib/tao_form/version.rb +1 -1
  23. data/lib/views/components/tao_form/components/_moment_picker.html+mobile.erb +1 -1
  24. data/lib/views/components/tao_form/components/_select.html+mobile.erb +2 -2
  25. data/lib/views/components/tao_form/components/moment_picker/_result.html.erb +2 -2
  26. data/lib/views/components/tao_form/components/select/_multiple_result.html.erb +1 -1
  27. data/lib/views/components/tao_form/components/select/_result.html+mobile.erb +1 -1
  28. data/lib/views/components/tao_form/components/select/_result.html.erb +1 -1
  29. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d96005eb91438b5a448dc3f866d0a295f3ebf431
4
- data.tar.gz: 6ca595c40e534aab13fa386bbacbde325ce7c5c7
3
+ metadata.gz: 619ace8cb3ec0b3a47a26c5db99922704ba92a9f
4
+ data.tar.gz: 4e7e50d1316526a50555152e64e0c12223283af3
5
5
  SHA512:
6
- metadata.gz: 205f4bbfa701369898fec6afbf39de7df13c8e96636708d459fa4777fbc8a086ed2ec51fc38194bbc19e0a1de1378b0d8ee5a2f2ab1679a8d335a90e8d3fd944
7
- data.tar.gz: 48e6b9d3e5288fc6df5e7f3489071715daddf42a7f9d70e1875cae85d14d6853b84f416c612289201a80d0c6b450e3ad92bb8ccb21de791ab4ba06a0a262f26d
6
+ metadata.gz: f2db8ed70e5763f6bc141ca73e780ff257f99888bf79de1df59ca23656544afa571c6d8e95a40f4e651f6036ab6f9a2029ad8936376d2859b0c9ebc85453094d
7
+ data.tar.gz: f3380c92cacad1677c1fde7145dba3a89b51358061f794e1ff6a5ab10ca5565d49bf845b50463191f1e569a3721b0bd0d8c382aac444e97716d23979dc05077e
@@ -22,6 +22,7 @@ class Tao.Form.DatetimePicker extends TaoComponent
22
22
  _bind: ->
23
23
  @on 'tao:change', '.moment-picker', (e, m) =>
24
24
  @_syncMoment()
25
+ @trigger 'tao:change', [@moment]
25
26
 
26
27
  datePickerDeferred = $.Deferred()
27
28
  timePickerDeferred = $.Deferred()
@@ -42,6 +42,10 @@ tao-multiple-select-result {
42
42
  margin: 0 0.25rem 0 0;
43
43
  }
44
44
 
45
+ .text {
46
+ line-height: 1.5rem;
47
+ }
48
+
45
49
  &:focus {
46
50
  box-shadow: 0px 0px 2px 0px rgba($border-color, 0.5);
47
51
  }
@@ -2,10 +2,9 @@
2
2
 
3
3
  tao-form {
4
4
  display: block;
5
+ margin: 2em 0 0 0;
5
6
 
6
7
  form {
7
- margin: 2em 0 0 0;
8
-
9
8
  fieldset {
10
9
  border: none;
11
10
  padding: 0;
@@ -30,6 +30,10 @@ tao-multiple-select-result {
30
30
  margin: 0 0 0 0.5rem;
31
31
  fill: $lighter-grey-color;
32
32
  }
33
+
34
+ .name {
35
+ line-height: 1.5rem;
36
+ }
33
37
  }
34
38
 
35
39
  &.disabled {
@@ -2,13 +2,14 @@ module TaoForm
2
2
  module Components
3
3
  class CheckBoxComponent < FieldComponent
4
4
 
5
- attr_reader :checked_value, :unchecked_value, :checked
5
+ attr_reader :checked_value, :unchecked_value, :checked, :disabled
6
6
 
7
- def initialize view, builder = nil, attribute_name = nil, options = {}, checked_value = '1', unchecked_value = '0'
7
+ def initialize view, builder = nil, attribute_name = nil, options = {}
8
8
  super view, builder, attribute_name, options
9
+ @checked_value = @options.delete(:checked_value)
10
+ @unchecked_value = @options.delete(:unchecked_value)
9
11
  @checked = @options.delete(:checked)
10
- @checked_value = checked_value
11
- @unchecked_value = unchecked_value
12
+ @disabled = @options.delete(:disabled)
12
13
  end
13
14
 
14
15
  def self.component_name
@@ -18,9 +19,12 @@ module TaoForm
18
19
  def render &block
19
20
  if block_given?
20
21
  super
21
- else
22
+ elsif builder && attribute_name
22
23
  super {
23
- builder.check_box attribute_name, {checked: checked}, checked_value, unchecked_value
24
+ builder.check_box attribute_name, {
25
+ checked: checked,
26
+ disabled: disabled
27
+ }, checked_value, unchecked_value
24
28
  }
25
29
  end
26
30
  end
@@ -2,13 +2,15 @@ module TaoForm
2
2
  module Components
3
3
  class DatetimePickerComponent < FieldComponent
4
4
 
5
- attr_reader :html_options, :disabled, :value
5
+ attr_reader :disabled, :value, :date_picker_options, :time_picker_options
6
6
 
7
- def initialize view, builder, attribute_name, options = {}, html_options = {}
7
+ def initialize view, builder, attribute_name, options = {}
8
8
  super view, builder, attribute_name, options
9
- @html_options = transform_html_options html_options
10
- @value = @html_options.delete(:value)
11
- @disabled = @html_options[:disabled].presence || false
9
+ @value = @options.delete(:value)
10
+ @disabled = @options[:disabled].presence || false
11
+
12
+ init_date_picker_options
13
+ init_time_picker_options
12
14
  end
13
15
 
14
16
  def render &block
@@ -22,22 +24,13 @@ module TaoForm
22
24
  end
23
25
 
24
26
  def render_date_picker
25
- date_options = {
26
- placeholder: options[:date_placeholder]
27
- }
28
- date_html_options = {disabled: disabled}
29
- view.tao_date_picker nil, nil, date_options, date_html_options do
27
+ view.tao_date_picker date_picker_options do
30
28
  view.date_field_tag nil, nil, class: 'date-field', disabled: disabled
31
29
  end
32
30
  end
33
31
 
34
32
  def render_time_picker
35
- time_options = {
36
- placeholder: options[:time_placeholder],
37
- minute_step: options[:minute_step]
38
- }
39
- time_html_options = {disabled: disabled}
40
- view.tao_time_picker nil, nil, time_options, time_html_options do
33
+ view.tao_time_picker time_picker_options do
41
34
  view.time_field_tag nil, nil, class: 'time-field', disabled: disabled
42
35
  end
43
36
  end
@@ -46,6 +39,34 @@ module TaoForm
46
39
  :datetime_picker
47
40
  end
48
41
 
42
+ private
43
+
44
+ def init_date_picker_options
45
+ @date_picker_options = {
46
+ placeholder: options.delete(:date_placeholder),
47
+ disabled: disabled
48
+ }
49
+
50
+ if options.key?(:date_icon)
51
+ @date_picker_options[:date_icon] = options.delete(:date_icon)
52
+ end
53
+ end
54
+
55
+ def init_time_picker_options
56
+ @time_picker_options = {
57
+ placeholder: options.delete(:time_placeholder),
58
+ disabled: disabled
59
+ }
60
+
61
+ if options.key?(:time_icon)
62
+ @time_picker_options[:time_icon] = options.delete(:time_icon)
63
+ end
64
+
65
+ if options.key?(:minute_step)
66
+ @time_picker_options[:minute_step] = options.delete(:minute_step)
67
+ end
68
+ end
69
+
49
70
  end
50
71
  end
51
72
  end
@@ -4,7 +4,13 @@ module TaoForm
4
4
 
5
5
  attr_reader :builder, :attribute_name
6
6
 
7
- def initialize view, builder, attribute_name, options = {}
7
+ def initialize view, builder = nil, attribute_name = nil, options = {}
8
+ if builder.is_a? Hash
9
+ options = builder
10
+ builder = nil
11
+ attribute_name = nil
12
+ end
13
+
8
14
  super view, options
9
15
  @builder = builder
10
16
  @attribute_name = attribute_name
@@ -7,15 +7,14 @@ module TaoForm
7
7
  module MomentPicker
8
8
  class Base < TaoForm::Components::FieldComponent
9
9
 
10
- attr_reader :placeholder, :disabled, :html_options, :block_for_render, :value
10
+ attr_reader :block_for_render, :result_options
11
11
 
12
- def initialize view, builder, attribute_name, options = {}, html_options = {}
12
+ def initialize view, builder = nil, attribute_name = nil, options = {}
13
13
  super view, builder, attribute_name, options
14
- @html_options = transform_html_options default_html_options, html_options
15
- @value = @html_options.delete(:value)
16
- @disabled = @html_options[:disabled].presence || false
14
+ init_result_options
17
15
  end
18
16
 
17
+
19
18
  def input_type
20
19
  # to be implemented
21
20
  end
@@ -35,8 +34,7 @@ module TaoForm
35
34
 
36
35
  def render_result
37
36
  view.tao_moment_picker_result(
38
- builder, attribute_name, input_type: input_type, icon: options[:icon],
39
- placeholder: placeholder, disabled: disabled, value: value, &block_for_render
37
+ builder, attribute_name, result_options, &block_for_render
40
38
  )
41
39
  end
42
40
 
@@ -46,21 +44,23 @@ module TaoForm
46
44
  end
47
45
 
48
46
  def placeholder
49
- @placeholder ||= if options[:placeholder].present?
50
- options[:placeholder]
51
- else
52
- t :placeholder
53
- end
47
+ @placeholder ||= options.delete(:placeholder) || t(:placeholder)
54
48
  end
55
49
 
56
50
  private
57
51
 
58
- def default_options
59
- {icon: :calendar}
52
+ def init_result_options
53
+ @result_options = {
54
+ input_type: input_type,
55
+ placeholder: placeholder,
56
+ icon: options.delete(:icon),
57
+ disabled: options[:disabled],
58
+ value: options.delete(:value)
59
+ }
60
60
  end
61
61
 
62
- def default_html_options
63
- {class: 'moment-picker'}
62
+ def default_options
63
+ {icon: :calendar, class: 'moment-picker'}
64
64
  end
65
65
 
66
66
  end
@@ -3,18 +3,20 @@ module TaoForm
3
3
  module MomentPicker
4
4
  class ResultComponent < TaoForm::Components::FieldComponent
5
5
 
6
- attr_reader :input_type, :value
6
+ attr_reader :input_type, :value, :icon, :placeholder
7
7
 
8
- def initialize view, builder, attribute_name, options = {}
8
+ def initialize view, builder = nil, attribute_name = nil, options = {}
9
+ super view, builder, attribute_name, options
9
10
  @input_type = options.delete(:input_type)
10
11
  @value = options.delete(:value)
11
- super view, builder, attribute_name, options
12
+ @icon = options.delete(:icon)
13
+ @placeholder = options.delete(:placeholder)
12
14
  end
13
15
 
14
16
  def render &block
15
17
  if block_given?
16
18
  super
17
- else
19
+ elsif builder && attribute_name
18
20
  super {
19
21
  builder.send :"#{input_type}_field", attribute_name,
20
22
  {disabled: options[:disabled], value: value}
@@ -8,7 +8,7 @@ module TaoForm
8
8
 
9
9
  def initialize view, options = {}
10
10
  super view, options
11
- @step = options[:step].presence || 5
11
+ @step = options.delete(:step)
12
12
  end
13
13
 
14
14
  def self.component_name
@@ -2,13 +2,14 @@ module TaoForm
2
2
  module Components
3
3
  class RadioButtonComponent < FieldComponent
4
4
 
5
- attr_reader :checked_value, :unchecked_value, :checked
5
+ attr_reader :checked_value, :unchecked_value, :checked, :disabled
6
6
 
7
- def initialize view, builder = nil, attribute_name = nil, options = {}, checked_value = '1', unchecked_value = '0'
7
+ def initialize view, builder = nil, attribute_name = nil, options = {}
8
8
  super view, builder, attribute_name, options
9
+ @checked_value = @options.delete(:checked_value)
10
+ @unchecked_value = @options.delete(:unchecked_value)
9
11
  @checked = @options.delete(:checked)
10
- @checked_value = checked_value
11
- @unchecked_value = unchecked_value
12
+ @disabled = @options.delete(:disabled)
12
13
  end
13
14
 
14
15
  def self.component_name
@@ -20,7 +21,10 @@ module TaoForm
20
21
  super
21
22
  else
22
23
  super {
23
- builder.radio_button attribute_name, {checked: checked}, checked_value, unchecked_value
24
+ builder.radio_button attribute_name, {
25
+ checked: checked,
26
+ disabled: disabled
27
+ }, checked_value, unchecked_value
24
28
  }
25
29
  end
26
30
  end
@@ -3,20 +3,16 @@ module TaoForm
3
3
  module Select
4
4
  class ListComponent < TaoOnRails::Components::Base
5
5
 
6
- def initialize view, options = {}
7
- super view, options
8
-
9
- if html_options[:class].present?
10
- html_options[:class] += " select-list"
11
- else
12
- html_options[:class] = "select-list"
13
- end
14
- end
15
-
16
6
  def self.component_name
17
7
  :select_list
18
8
  end
19
9
 
10
+ private
11
+
12
+ def default_options
13
+ {class: 'select-list'}
14
+ end
15
+
20
16
  end
21
17
  end
22
18
  end
@@ -1,14 +1,26 @@
1
1
  module TaoForm
2
2
  module Components
3
3
  module Select
4
- class MultipleResultComponent < ResultComponent
4
+ class MultipleResultComponent < TaoForm::Components::FieldComponent
5
+
6
+ attr_reader :choices, :field_options
7
+
8
+ def initialize view, builder, attribute_name, choices = nil, options = {}
9
+ super view, builder, attribute_name, options
10
+ @choices = choices
11
+
12
+ init_field_options
13
+ end
5
14
 
6
15
  def render &block
7
16
  if block_given?
8
17
  super
9
- else
18
+ elsif builder && attribute_name
10
19
  super {
11
- builder.select attribute_name, choices, options, {multiple: true}
20
+ builder.select attribute_name, choices, field_options, {
21
+ disabled: options[:disabled],
22
+ multiple: true
23
+ }
12
24
  }
13
25
  end
14
26
  end
@@ -17,6 +29,20 @@ module TaoForm
17
29
  :multiple_select_result
18
30
  end
19
31
 
32
+ private
33
+
34
+ def init_field_options
35
+ @field_options = {
36
+ disabled: options.delete(:option_disabled),
37
+ include_blank: options.delete(:include_blank),
38
+ prompt: options.delete(:prompt)
39
+ }
40
+ end
41
+
42
+ def default_options
43
+ {class: 'select-result'}
44
+ end
45
+
20
46
  end
21
47
  end
22
48
  end
@@ -3,25 +3,23 @@ module TaoForm
3
3
  module Select
4
4
  class ResultComponent < TaoForm::Components::FieldComponent
5
5
 
6
- attr_reader :choices, :html_options
6
+ attr_reader :choices, :field_options, :placeholder
7
7
 
8
- def initialize view, builder, attribute_name, choices = nil, options = {}, html_options
8
+ def initialize view, builder, attribute_name, choices = nil, options = {}
9
9
  super view, builder, attribute_name, options
10
10
  @choices = choices
11
- @html_options = transform_html_options html_options
11
+ @placeholder = options.delete(:placeholder)
12
12
 
13
- if @html_options[:class].present?
14
- @html_options[:class] += " select-result"
15
- else
16
- @html_options[:class] = "select-result"
17
- end
13
+ init_field_options
18
14
  end
19
15
 
20
16
  def render &block
21
17
  if block_given?
22
18
  super
23
- else
24
- super {builder.select attribute_name, choices, options}
19
+ elsif builder && attribute_name
20
+ super {
21
+ builder.select attribute_name, choices, field_options, {disabled: options[:disabled]}
22
+ }
25
23
  end
26
24
  end
27
25
 
@@ -29,6 +27,20 @@ module TaoForm
29
27
  :select_result
30
28
  end
31
29
 
30
+ private
31
+
32
+ def init_field_options
33
+ @field_options = {
34
+ disabled: options.delete(:option_disabled),
35
+ include_blank: options.delete(:include_blank),
36
+ prompt: options.delete(:prompt)
37
+ }
38
+ end
39
+
40
+ def default_options
41
+ {class: 'select-result'}
42
+ end
43
+
32
44
  end
33
45
  end
34
46
  end
@@ -6,23 +6,16 @@ module TaoForm
6
6
  module Components
7
7
  class SelectComponent < FieldComponent
8
8
 
9
- attr_reader :choices, :html_options, :disabled, :multiple, :max_list_size, :block_for_render
9
+ attr_reader :choices, :multiple, :result_options, :list_options, :block_for_render
10
10
 
11
- def initialize view, builder, attribute_name, choices = nil, options = {}, html_options = {}
11
+ def initialize view, builder = nil, attribute_name = nil, choices = nil, options = {}
12
12
  super view, builder, attribute_name, options
13
13
  @choices = choices
14
- @max_list_size = html_options.delete(:max_list_size)
15
- @disabled = html_options[:disabled].presence || false
16
- @multiple = @options.delete(:multiple) || html_options.delete(:multiple) || false
14
+ @multiple = @options[:multiple].presence || false
17
15
 
18
- html_options[:multiple] = @multiple
19
- html_options[:remote] = @options.delete(:remote)
20
-
21
- if html_options[:remote].present? && html_options[:remote].is_a?(Hash)
22
- html_options[:remote] = html_options[:remote].to_json
23
- end
24
-
25
- @html_options = transform_html_options html_options
16
+ init_result_options
17
+ init_list_options
18
+ init_remote_options
26
19
  end
27
20
 
28
21
  def render &block
@@ -31,33 +24,25 @@ module TaoForm
31
24
  end
32
25
 
33
26
  def render_result
34
- if multiple
35
- view.tao_multiple_select_result(
36
- builder, attribute_name, choices, options, disabled: disabled, &block_for_render
37
- )
38
- else
39
- view.tao_select_result(
40
- builder, attribute_name, choices, options,
41
- placeholder: placeholder, clearable: clearable, disabled: disabled, &block_for_render
42
- )
43
- end
27
+ result_method = multiple ? :tao_multiple_select_result : :tao_select_result
28
+ view.send(result_method, builder, attribute_name, choices, result_options, &block_for_render)
44
29
  end
45
30
 
46
31
  def render_list
47
- view.tao_select_list max_list_size: max_list_size
32
+ view.tao_select_list list_options
48
33
  end
49
34
 
50
35
  def clearable
51
- @clearable ||= options[:include_blank].present? || options[:prompt].present?
36
+ @clearable ||= options.delete(:clearable) || result_options[:include_blank].present? || result_options[:prompt].present?
52
37
  end
53
38
 
54
39
  def placeholder
55
- @placeholder ||= if options[:placeholder].present?
56
- options[:placeholder]
57
- elsif options[:include_blank].present? && options[:include_blank].is_a?(String)
58
- options[:include_blank]
59
- elsif options[:prompt].present? && options[:prompt].is_a?(String)
60
- options[:prompt]
40
+ @placeholder ||= if (text = options.delete(:placeholder))
41
+ text
42
+ elsif result_options[:include_blank].present? && result_options[:include_blank].is_a?(String)
43
+ result_options[:include_blank]
44
+ elsif result_options[:prompt].present? && result_options[:prompt].is_a?(String)
45
+ result_options[:prompt]
61
46
  else
62
47
  t :placeholder
63
48
  end
@@ -69,8 +54,32 @@ module TaoForm
69
54
 
70
55
  private
71
56
 
72
- def default_options
73
- {icon: :arrow_down}
57
+ def init_result_options
58
+ @result_options = {
59
+ disabled: options.delete(:disabled),
60
+ option_disabled: options.delete(:option_disabled),
61
+ include_blank: options.delete(:include_blank),
62
+ prompt: options.delete(:prompt)
63
+ }
64
+
65
+ unless multiple
66
+ @result_options.merge!({
67
+ placeholder: placeholder,
68
+ clearable: clearable
69
+ })
70
+ end
71
+ end
72
+
73
+ def init_list_options
74
+ @list_options = {
75
+ max_list_size: options.delete(:max_list_size)
76
+ }
77
+ end
78
+
79
+ def init_remote_options
80
+ if options[:remote].present? && options[:remote].is_a?(Hash)
81
+ options[:remote] = options[:remote].to_json
82
+ end
74
83
  end
75
84
 
76
85
  end
@@ -21,7 +21,7 @@ module TaoForm
21
21
  private
22
22
 
23
23
  def default_options
24
- super.merge({icon: :clock})
24
+ super.merge({icon: :clock, minute_step: 5})
25
25
  end
26
26
 
27
27
  end
@@ -3,19 +3,12 @@ module TaoForm
3
3
  class BooleanInput < ::SimpleForm::Inputs::BooleanInput
4
4
 
5
5
  def input(wrapper_options = nil)
6
- merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
6
+ merged_html_options = merge_wrapper_options(input_html_options, wrapper_options)
7
+ merged_component_options = component_options.merge(merged_html_options)
7
8
 
8
- if switch?
9
- input_content = template.tao_switch(
10
- @builder, attribute_name, merged_input_options,
11
- checked_value, unchecked_value
12
- )
13
- else
14
- input_content = template.tao_check_box(
15
- @builder, attribute_name, merged_input_options,
16
- checked_value, unchecked_value
17
- )
18
- end
9
+ input_content = template.send(switch? ? :tao_switch : :tao_check_box,
10
+ @builder, attribute_name, merged_component_options
11
+ )
19
12
 
20
13
  template.content_tag(:div, input_content, class: 'boolean-field')
21
14
  end
@@ -25,6 +18,14 @@ module TaoForm
25
18
  def switch?
26
19
  input_options[:switch]
27
20
  end
21
+
22
+ def component_options
23
+ @component_options ||= {
24
+ disabled: input_options[:disabled],
25
+ checked_value: checked_value,
26
+ unchecked_value: unchecked_value
27
+ }
28
+ end
28
29
  end
29
30
  end
30
31
  end
@@ -4,18 +4,35 @@ module TaoForm
4
4
 
5
5
  def input(wrapper_options = nil)
6
6
  label_method, value_method = detect_collection_methods
7
+ merged_html_options = merge_wrapper_options(input_html_options, wrapper_options)
8
+ merged_component_options = component_options.merge(merged_html_options)
7
9
 
8
- merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
9
- multiple = input_options[:multiple] || merged_input_options[:multiple] || false
10
- input_options[:icon] = :arrow_right
11
-
12
- template.send :tao_select, @builder, attribute_name, nil, input_options, merged_input_options do
10
+ template.send :tao_select, merged_component_options do
13
11
  @builder.collection_select(
14
- attribute_name, collection, value_method, label_method, input_options, {multiple: multiple}
12
+ attribute_name, collection, value_method, label_method, field_options, {
13
+ multiple: merged_component_options[:multiple],
14
+ disabled: merged_component_options[:disabled]
15
+ }
15
16
  )
16
17
  end
17
18
  end
18
19
 
20
+ private
21
+
22
+ def component_options
23
+ @component_options ||= input_options.slice(:multiple, :remote, :max_list_size,
24
+ :searchable_size, :clearable, :placeholder, :disabled, :option_disabled,
25
+ :include_blank, :prompt)
26
+ end
27
+
28
+ def field_options
29
+ @field_options ||= begin
30
+ opts = input_options.slice(:selected, :option_disabled, :include_blank, :prompt)
31
+ opts[:disabled] = opts.delete(:option_disabled)
32
+ opts
33
+ end
34
+ end
35
+
19
36
  end
20
37
  end
21
38
  end
@@ -3,11 +3,10 @@ module TaoForm
3
3
  class DateTimeInput < ::SimpleForm::Inputs::DateTimeInput
4
4
 
5
5
  def input(wrapper_options = nil)
6
- merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
7
-
6
+ merged_html_options = merge_wrapper_options(input_html_options, wrapper_options)
7
+ merged_component_options = component_options.merge(merged_html_options)
8
8
  template.send(
9
- :"tao_#{input_type}_picker", @builder, attribute_name,
10
- input_options, merged_input_options
9
+ :"tao_#{input_type}_picker", @builder, attribute_name, merged_component_options
11
10
  )
12
11
  end
13
12
 
@@ -17,6 +16,14 @@ module TaoForm
17
16
  true
18
17
  end
19
18
 
19
+ def component_options
20
+ @component_options ||= input_options.slice(
21
+ :value_format, :display_format, :date_display_format, :time_display_format,
22
+ :date_placeholder, :time_placeholder, :placeholder, :icon, :disabled,
23
+ :value, :minute_step, :date_icon, :time_icon
24
+ )
25
+ end
26
+
20
27
  end
21
28
  end
22
29
  end
@@ -4,19 +4,36 @@ module TaoForm
4
4
 
5
5
  def input(wrapper_options = nil)
6
6
  label_method, value_method = detect_collection_methods
7
+ merged_html_options = merge_wrapper_options(input_html_options, wrapper_options)
8
+ merged_component_options = component_options.merge(merged_html_options)
7
9
 
8
- merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
9
- multiple = input_options[:multiple] || merged_input_options[:multiple] || false
10
- input_options[:icon] = :arrow_right
11
-
12
- template.send :tao_select, @builder, attribute_name, nil, input_options, merged_input_options do
10
+ template.send :tao_select, merged_component_options do
13
11
  @builder.grouped_collection_select(
14
12
  attribute_name, grouped_collection, group_method, group_label_method,
15
- value_method, label_method, input_options, {multiple: multiple}
13
+ value_method, label_method, field_options, {
14
+ multiple: merged_component_options[:multiple],
15
+ disabled: merged_component_options[:disabled]
16
+ }
16
17
  )
17
18
  end
18
19
  end
19
20
 
21
+ private
22
+
23
+ def component_options
24
+ @component_options ||= input_options.slice(:multiple, :remote, :max_list_size,
25
+ :searchable_size, :clearable, :placeholder, :disabled, :option_disabled,
26
+ :include_blank, :prompt, :icon)
27
+ end
28
+
29
+ def field_options
30
+ @field_options ||= begin
31
+ opts = input_options.slice(:selected, :option_disabled, :include_blank, :prompt)
32
+ opts[:disabled] = opts.delete(:option_disabled)
33
+ opts
34
+ end
35
+ end
36
+
20
37
  end
21
38
  end
22
39
  end
@@ -1,3 +1,3 @@
1
1
  module TaoForm
2
- VERSION = '0.1.3'
2
+ VERSION = '0.1.4'
3
3
  end
@@ -1,7 +1,7 @@
1
1
  <%= content_tag component.tag_name, component.html_options do %>
2
2
  <%= component.render_result %>
3
3
 
4
- <%= tao_slide_box direction: 'rtl', size: '-40', with_close_button: false, class: 'slide-box' do %>
4
+ <%= tao_slide_box direction: 'rtl', size: '-40', without_padding: true, modal: true, class: 'slide-box' do %>
5
5
  <div class="header">
6
6
  <div class="left">
7
7
  <%= link_to 'javascript:;', class: 'link-close', title: I18n.t('tao_form.components.moment_picker.close') do %>
@@ -3,11 +3,11 @@
3
3
  <div class="selected-text"></div>
4
4
  <div class="placeholder"><%= component.placeholder %></div>
5
5
  <div class="icon-wrapper">
6
- <%= tao_icon component.options[:icon] %>
6
+ <%= tao_icon :arrow_right %>
7
7
  </div>
8
8
  </div>
9
9
 
10
- <%= tao_slide_box direction: 'rtl', size: '-40', with_close_button: false, class: 'slide-box' do %>
10
+ <%= tao_slide_box direction: 'rtl', size: '-40', without_padding: true, modal: true, class: 'slide-box' do %>
11
11
  <div class="header">
12
12
  <div class="left">
13
13
  <%= link_to 'javascript:;', class: 'link-close', title: component.t(:close) do %>
@@ -1,12 +1,12 @@
1
1
  <%= content_tag component.tag_name, component.html_options do %>
2
2
  <%= yield %>
3
3
  <div class="icon-wrapper">
4
- <%= tao_icon component.options[:icon] %>
4
+ <%= tao_icon component.icon %>
5
5
  </div>
6
6
  <div class="result-text">
7
7
  </div>
8
8
  <div class="placeholder">
9
- <%= component.html_options[:placeholder].presence %>
9
+ <%= component.placeholder %>
10
10
  </div>
11
11
  <%= link_to 'javascript:;', tabindex: '-1', class: 'link-clear', title: component.t(:clear_option) do %>
12
12
  <%= tao_icon :close %>
@@ -2,6 +2,6 @@
2
2
  <%= yield %>
3
3
  <%= link_to 'javascript:;', class: 'link-add' do %>
4
4
  <span class="icon-add">&#65291;</span>
5
- <%= component.t(:add) %>
5
+ <span class="text"><%= component.t(:add) %></span>
6
6
  <% end %>
7
7
  <% end %>
@@ -2,7 +2,7 @@
2
2
  <%= yield %>
3
3
  <%= link_to 'javascript:;', class: 'link-clear' do %>
4
4
  <span>
5
- <%= component.t :clear_selected %>:
5
+ <%= component.t :clear_selected %>:
6
6
  <span class="selected-text"></span>
7
7
  </span>
8
8
  <%= tao_icon :close %>
@@ -3,7 +3,7 @@
3
3
  <div class="selected-text">
4
4
  </div>
5
5
  <div class="placeholder">
6
- <%= component.html_options[:placeholder].presence %>
6
+ <%= component.placeholder %>
7
7
  </div>
8
8
  <div class="icon-wrapper">
9
9
  <%= tao_icon :arrow_down %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tao_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - your name
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-06-15 00:00:00.000000000 Z
11
+ date: 2017-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: tao_on_rails