tao_form 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +28 -0
  4. data/Rakefile +10 -0
  5. data/lib/assets/icons/arrow-down.svg +12 -0
  6. data/lib/assets/icons/arrow-left.svg +12 -0
  7. data/lib/assets/icons/arrow-right.svg +12 -0
  8. data/lib/assets/icons/calendar.svg +12 -0
  9. data/lib/assets/icons/checkbox.svg +12 -0
  10. data/lib/assets/icons/clock.svg +12 -0
  11. data/lib/assets/icons/search.svg +12 -0
  12. data/lib/assets/icons/success.svg +12 -0
  13. data/lib/assets/javascripts/tao/form/element.coffee +16 -0
  14. data/lib/assets/javascripts/tao/form/fields/checkbox.coffee +14 -0
  15. data/lib/assets/javascripts/tao/form/fields/index.coffee +9 -0
  16. data/lib/assets/javascripts/tao/form/fields/moment_picker/element.coffee +38 -0
  17. data/lib/assets/javascripts/tao/form/fields/moment_picker/index.coffee +7 -0
  18. data/lib/assets/javascripts/tao/form/fields/moment_picker/result.coffee +25 -0
  19. data/lib/assets/javascripts/tao/form/fields/moment_picker/segment_list.coffee +14 -0
  20. data/lib/assets/javascripts/tao/form/fields/radio.coffee +14 -0
  21. data/lib/assets/javascripts/tao/form/fields/select/element.coffee +79 -0
  22. data/lib/assets/javascripts/tao/form/fields/select/index.coffee +8 -0
  23. data/lib/assets/javascripts/tao/form/fields/select/list.coffee +98 -0
  24. data/lib/assets/javascripts/tao/form/fields/select/multiple_result.coffee +41 -0
  25. data/lib/assets/javascripts/tao/form/fields/select/result.coffee +39 -0
  26. data/lib/assets/javascripts/tao/form/fields/switch.coffee +14 -0
  27. data/lib/assets/javascripts/tao/form/index.coffee +17 -0
  28. data/lib/assets/javascripts/tao/form/mobile/element.coffee +5 -0
  29. data/lib/assets/javascripts/tao/form/mobile/fields/checkbox.coffee +5 -0
  30. data/lib/assets/javascripts/tao/form/mobile/fields/index.coffee +9 -0
  31. data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/element.coffee +36 -0
  32. data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/index.coffee +7 -0
  33. data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/result.coffee +5 -0
  34. data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/segment_list.coffee +24 -0
  35. data/lib/assets/javascripts/tao/form/mobile/fields/radio.coffee +5 -0
  36. data/lib/assets/javascripts/tao/form/mobile/fields/select/element.coffee +61 -0
  37. data/lib/assets/javascripts/tao/form/mobile/fields/select/index.coffee +8 -0
  38. data/lib/assets/javascripts/tao/form/mobile/fields/select/list.coffee +13 -0
  39. data/lib/assets/javascripts/tao/form/mobile/fields/select/multiple_result.coffee +5 -0
  40. data/lib/assets/javascripts/tao/form/mobile/fields/select/result.coffee +5 -0
  41. data/lib/assets/javascripts/tao/form/mobile/fields/switch.coffee +5 -0
  42. data/lib/assets/javascripts/tao/form/mobile/index.coffee +10 -0
  43. data/lib/assets/javascripts/tao/form/shared/element/base.coffee +48 -0
  44. data/lib/assets/javascripts/tao/form/shared/fields/checkbox.coffee +21 -0
  45. data/lib/assets/javascripts/tao/form/shared/fields/date_picker.coffee +10 -0
  46. data/lib/assets/javascripts/tao/form/shared/fields/datetime_picker.coffee +62 -0
  47. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/element/base.coffee +52 -0
  48. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/result/base.coffee +39 -0
  49. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segment_list/base.coffee +85 -0
  50. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/base.coffee +25 -0
  51. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/date_segment.coffee +95 -0
  52. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/hour_segment.coffee +28 -0
  53. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/index.coffee +1 -0
  54. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/minute_segment.coffee +28 -0
  55. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/month_segment.coffee +46 -0
  56. data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/year_segment.coffee +57 -0
  57. data/lib/assets/javascripts/tao/form/shared/fields/month_picker.coffee +10 -0
  58. data/lib/assets/javascripts/tao/form/shared/fields/radio.coffee +19 -0
  59. data/lib/assets/javascripts/tao/form/shared/fields/select/element/base.coffee +122 -0
  60. data/lib/assets/javascripts/tao/form/shared/fields/select/list/base.coffee +79 -0
  61. data/lib/assets/javascripts/tao/form/shared/fields/select/models/data_provider.coffee +75 -0
  62. data/lib/assets/javascripts/tao/form/shared/fields/select/models/index.coffee +2 -0
  63. data/lib/assets/javascripts/tao/form/shared/fields/select/models/option.coffee +37 -0
  64. data/lib/assets/javascripts/tao/form/shared/fields/select/multiple_result/base.coffee +81 -0
  65. data/lib/assets/javascripts/tao/form/shared/fields/select/result/base.coffee +57 -0
  66. data/lib/assets/javascripts/tao/form/shared/fields/switch.coffee +19 -0
  67. data/lib/assets/javascripts/tao/form/shared/fields/time_picker.coffee +10 -0
  68. data/lib/assets/javascripts/tao/form/shared/mixins/checkable.coffee +11 -0
  69. data/lib/assets/javascripts/tao/ui/icons/form.coffee +11 -0
  70. data/lib/assets/stylesheets/tao/form/_globals.scss +3 -0
  71. data/lib/assets/stylesheets/tao/form/_mixins.scss +28 -0
  72. data/lib/assets/stylesheets/tao/form/_variables.scss +3 -0
  73. data/lib/assets/stylesheets/tao/form/fields/checkbox.scss +36 -0
  74. data/lib/assets/stylesheets/tao/form/fields/datetime_picker.scss +22 -0
  75. data/lib/assets/stylesheets/tao/form/fields/index.scss +6 -0
  76. data/lib/assets/stylesheets/tao/form/fields/moment_picker/index.scss +10 -0
  77. data/lib/assets/stylesheets/tao/form/fields/moment_picker/result.scss +61 -0
  78. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segment_list.scss +53 -0
  79. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/date_segment.scss +17 -0
  80. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/hour_segment.scss +15 -0
  81. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/minute_segment.scss +17 -0
  82. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/month_segment.scss +15 -0
  83. data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/year_segment.scss +15 -0
  84. data/lib/assets/stylesheets/tao/form/fields/radio.scss +33 -0
  85. data/lib/assets/stylesheets/tao/form/fields/select/index.scss +10 -0
  86. data/lib/assets/stylesheets/tao/form/fields/select/list.scss +61 -0
  87. data/lib/assets/stylesheets/tao/form/fields/select/multiple_result.scss +72 -0
  88. data/lib/assets/stylesheets/tao/form/fields/select/result.scss +101 -0
  89. data/lib/assets/stylesheets/tao/form/fields/switch.scss +12 -0
  90. data/lib/assets/stylesheets/tao/form/index.scss +5 -0
  91. data/lib/assets/stylesheets/tao/form/inputs/boolean.scss +8 -0
  92. data/lib/assets/stylesheets/tao/form/inputs/group.scss +2 -0
  93. data/lib/assets/stylesheets/tao/form/inputs/index.scss +1 -0
  94. data/lib/assets/stylesheets/tao/form/inputs/text.scss +2 -0
  95. data/lib/assets/stylesheets/tao/form/layout.scss +148 -0
  96. data/lib/assets/stylesheets/tao/form/mobile/_globals.scss +3 -0
  97. data/lib/assets/stylesheets/tao/form/mobile/_mixins.scss +22 -0
  98. data/lib/assets/stylesheets/tao/form/mobile/_variables.scss +3 -0
  99. data/lib/assets/stylesheets/tao/form/mobile/fields/checkbox.scss +2 -0
  100. data/lib/assets/stylesheets/tao/form/mobile/fields/datetime_picker.scss +18 -0
  101. data/lib/assets/stylesheets/tao/form/mobile/fields/index.scss +1 -0
  102. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/index.scss +9 -0
  103. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/result.scss +19 -0
  104. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segment_list.scss +52 -0
  105. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/date_segment.scss +14 -0
  106. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/hour_segment.scss +14 -0
  107. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/minute_segment.scss +14 -0
  108. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/month_segment.scss +14 -0
  109. data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/year_segment.scss +14 -0
  110. data/lib/assets/stylesheets/tao/form/mobile/fields/radio.scss +2 -0
  111. data/lib/assets/stylesheets/tao/form/mobile/fields/select/index.scss +66 -0
  112. data/lib/assets/stylesheets/tao/form/mobile/fields/select/list.scss +10 -0
  113. data/lib/assets/stylesheets/tao/form/mobile/fields/select/multiple_result.scss +12 -0
  114. data/lib/assets/stylesheets/tao/form/mobile/fields/select/result.scss +28 -0
  115. data/lib/assets/stylesheets/tao/form/mobile/fields/switch.scss +2 -0
  116. data/lib/assets/stylesheets/tao/form/mobile/index.scss +5 -0
  117. data/lib/assets/stylesheets/tao/form/mobile/inputs/boolean.scss +7 -0
  118. data/lib/assets/stylesheets/tao/form/mobile/inputs/group.scss +6 -0
  119. data/lib/assets/stylesheets/tao/form/mobile/inputs/index.scss +1 -0
  120. data/lib/assets/stylesheets/tao/form/mobile/inputs/text.scss +2 -0
  121. data/lib/assets/stylesheets/tao/form/mobile/layout.scss +137 -0
  122. data/lib/assets/stylesheets/tao/form/mobile/reset.scss +30 -0
  123. data/lib/assets/stylesheets/tao/form/mobile/variables/_base.scss +12 -0
  124. data/lib/assets/stylesheets/tao/form/mobile/variables/_moment_picker.scss +9 -0
  125. data/lib/assets/stylesheets/tao/form/mobile/variables/_select.scss +9 -0
  126. data/lib/assets/stylesheets/tao/form/reset.scss +30 -0
  127. data/lib/assets/stylesheets/tao/form/shared/fields/_checkbox.scss +61 -0
  128. data/lib/assets/stylesheets/tao/form/shared/fields/_radio.scss +53 -0
  129. data/lib/assets/stylesheets/tao/form/shared/fields/_switch.scss +56 -0
  130. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/_result.scss +46 -0
  131. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/_segment_list.scss +93 -0
  132. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_date_segment.scss +50 -0
  133. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_hour_segment.scss +35 -0
  134. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_minute_segment.scss +23 -0
  135. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_month_segment.scss +27 -0
  136. data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_year_segment.scss +27 -0
  137. data/lib/assets/stylesheets/tao/form/shared/fields/select/_list.scss +136 -0
  138. data/lib/assets/stylesheets/tao/form/shared/fields/select/_multiple_result.scss +46 -0
  139. data/lib/assets/stylesheets/tao/form/shared/inputs/_boolean.scss +5 -0
  140. data/lib/assets/stylesheets/tao/form/shared/inputs/_group.scss +25 -0
  141. data/lib/assets/stylesheets/tao/form/shared/inputs/_text.scss +33 -0
  142. data/lib/assets/stylesheets/tao/form/variables/_base.scss +15 -0
  143. data/lib/assets/stylesheets/tao/form/variables/_moment_picker.scss +9 -0
  144. data/lib/assets/stylesheets/tao/form/variables/_select.scss +10 -0
  145. data/lib/tao_form.rb +5 -0
  146. data/lib/tao_form/components.rb +10 -0
  147. data/lib/tao_form/components/check_box_component.rb +29 -0
  148. data/lib/tao_form/components/date_picker_component.rb +25 -0
  149. data/lib/tao_form/components/datetime_picker_component.rb +50 -0
  150. data/lib/tao_form/components/field_component.rb +15 -0
  151. data/lib/tao_form/components/form_component.rb +24 -0
  152. data/lib/tao_form/components/moment_picker/base.rb +68 -0
  153. data/lib/tao_form/components/moment_picker/result_component.rb +31 -0
  154. data/lib/tao_form/components/moment_picker/segment_list_component.rb +36 -0
  155. data/lib/tao_form/components/moment_picker/segments.rb +6 -0
  156. data/lib/tao_form/components/moment_picker/segments/base.rb +17 -0
  157. data/lib/tao_form/components/moment_picker/segments/date_segment_component.rb +21 -0
  158. data/lib/tao_form/components/moment_picker/segments/hour_segment_component.rb +21 -0
  159. data/lib/tao_form/components/moment_picker/segments/minute_segment_component.rb +28 -0
  160. data/lib/tao_form/components/moment_picker/segments/month_segment_component.rb +15 -0
  161. data/lib/tao_form/components/moment_picker/segments/year_segment_component.rb +21 -0
  162. data/lib/tao_form/components/month_picker_component.rb +23 -0
  163. data/lib/tao_form/components/radio_button_component.rb +29 -0
  164. data/lib/tao_form/components/select/list_component.rb +23 -0
  165. data/lib/tao_form/components/select/multiple_result_component.rb +23 -0
  166. data/lib/tao_form/components/select/result_component.rb +35 -0
  167. data/lib/tao_form/components/select_component.rb +78 -0
  168. data/lib/tao_form/components/switch_component.rb +11 -0
  169. data/lib/tao_form/components/time_picker_component.rb +29 -0
  170. data/lib/tao_form/engine.rb +15 -0
  171. data/lib/tao_form/inputs.rb +9 -0
  172. data/lib/tao_form/inputs/boolean_input.rb +30 -0
  173. data/lib/tao_form/inputs/collection_check_boxes_input.rb +19 -0
  174. data/lib/tao_form/inputs/collection_radio_buttons_input.rb +19 -0
  175. data/lib/tao_form/inputs/collection_select_input.rb +21 -0
  176. data/lib/tao_form/inputs/date_time_input.rb +22 -0
  177. data/lib/tao_form/inputs/grouped_collection_select_input.rb +22 -0
  178. data/lib/tao_form/inputs/month_input.rb +7 -0
  179. data/lib/tao_form/inputs/numeric_input.rb +19 -0
  180. data/lib/tao_form/inputs/string_input.rb +19 -0
  181. data/lib/tao_form/version.rb +3 -0
  182. data/lib/views/components/tao_form/components/_check_box.html.erb +10 -0
  183. data/lib/views/components/tao_form/components/_datetime_picker.html.erb +7 -0
  184. data/lib/views/components/tao_form/components/_moment_picker.html+mobile.erb +17 -0
  185. data/lib/views/components/tao_form/components/_moment_picker.html.erb +4 -0
  186. data/lib/views/components/tao_form/components/_radio_button.html.erb +9 -0
  187. data/lib/views/components/tao_form/components/_select.html+mobile.erb +27 -0
  188. data/lib/views/components/tao_form/components/_select.html.erb +4 -0
  189. data/lib/views/components/tao_form/components/_switch.html.erb +10 -0
  190. data/lib/views/components/tao_form/components/moment_picker/_result.html+mobile.erb +11 -0
  191. data/lib/views/components/tao_form/components/moment_picker/_result.html.erb +14 -0
  192. data/lib/views/components/tao_form/components/moment_picker/_segment_list.html+mobile.erb +8 -0
  193. data/lib/views/components/tao_form/components/moment_picker/_segment_list.html.erb +4 -0
  194. data/lib/views/components/tao_form/components/moment_picker/segment_list/_labels.html.erb +13 -0
  195. data/lib/views/components/tao_form/components/moment_picker/segment_list/_segments.html.erb +7 -0
  196. data/lib/views/components/tao_form/components/moment_picker/segments/_date_segment.html.erb +14 -0
  197. data/lib/views/components/tao_form/components/moment_picker/segments/_hour_segment.html.erb +14 -0
  198. data/lib/views/components/tao_form/components/moment_picker/segments/_minute_segment.html.erb +9 -0
  199. data/lib/views/components/tao_form/components/moment_picker/segments/_month_segment.html.erb +16 -0
  200. data/lib/views/components/tao_form/components/moment_picker/segments/_year_segment.html.erb +10 -0
  201. data/lib/views/components/tao_form/components/select/_list.html.erb +18 -0
  202. data/lib/views/components/tao_form/components/select/_multiple_result.html+mobile.erb +3 -0
  203. data/lib/views/components/tao_form/components/select/_multiple_result.html.erb +7 -0
  204. data/lib/views/components/tao_form/components/select/_result.html+mobile.erb +10 -0
  205. data/lib/views/components/tao_form/components/select/_result.html.erb +14 -0
  206. data/vendor/assets/javascripts/moment.js +4463 -0
  207. data/vendor/assets/javascripts/moment/zh-cn.js +112 -0
  208. metadata +334 -0
@@ -0,0 +1,50 @@
1
+ module TaoForm
2
+ module Components
3
+ class DatetimePickerComponent < FieldComponent
4
+
5
+ attr_reader :html_options, :disabled
6
+
7
+ def initialize view, builder, attribute_name, options = {}, html_options = {}
8
+ super view, builder, attribute_name, options
9
+ @html_options = transform_html_options html_options
10
+ @disabled = @html_options[:disabled].presence || false
11
+ end
12
+
13
+ def render &block
14
+ if block_given?
15
+ super
16
+ else
17
+ super {
18
+ builder.send :datetime_field, attribute_name, {disabled: disabled}
19
+ }
20
+ end
21
+ end
22
+
23
+ def render_date_picker
24
+ date_options = {
25
+ placeholder: options[:date_placeholder]
26
+ }
27
+ date_html_options = {disabled: disabled}
28
+ view.tao_date_picker nil, nil, date_options, date_html_options do
29
+ view.date_field_tag nil, nil, class: 'date-field', disabled: disabled
30
+ end
31
+ end
32
+
33
+ def render_time_picker
34
+ time_options = {
35
+ placeholder: options[:time_placeholder],
36
+ minute_step: options[:minute_step]
37
+ }
38
+ time_html_options = {disabled: disabled}
39
+ view.tao_time_picker nil, nil, time_options, time_html_options do
40
+ view.time_field_tag nil, nil, class: 'time-field', disabled: disabled
41
+ end
42
+ end
43
+
44
+ def self.component_name
45
+ :datetime_picker
46
+ end
47
+
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,15 @@
1
+ module TaoForm
2
+ module Components
3
+ class FieldComponent < TaoOnRails::Components::Base
4
+
5
+ attr_reader :builder, :attribute_name
6
+
7
+ def initialize view, builder, attribute_name, options = {}
8
+ super view, options
9
+ @builder = builder
10
+ @attribute_name = attribute_name
11
+ end
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ module TaoForm
2
+ module Components
3
+ class FormComponent < TaoOnRails::Components::Base
4
+
5
+ attr_reader :record, :html_options
6
+
7
+ def initialize view, record, options
8
+ super view, options
9
+ @record = record
10
+ @html_options = transform_html_options(@options.delete(:html) || {})
11
+ @options[:wrapper] = :tao_mobile if view.request.variant.mobile?
12
+ end
13
+
14
+ def render &block
15
+ view.content_tag tag_name, view.simple_form_for(record, options, &block), html_options
16
+ end
17
+
18
+ def self.component_name
19
+ :form
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,68 @@
1
+ require 'tao_form/components/moment_picker/segments'
2
+ require 'tao_form/components/moment_picker/result_component'
3
+ require 'tao_form/components/moment_picker/segment_list_component'
4
+
5
+ module TaoForm
6
+ module Components
7
+ module MomentPicker
8
+ class Base < TaoForm::Components::FieldComponent
9
+
10
+ attr_reader :placeholder, :disabled, :html_options, :block_for_render
11
+
12
+ def initialize view, builder, attribute_name, options = {}, html_options = {}
13
+ super view, builder, attribute_name, options
14
+ @html_options = transform_html_options default_html_options, html_options
15
+ @disabled = @html_options[:disabled].presence || false
16
+ end
17
+
18
+ def input_type
19
+ # to be implemented
20
+ end
21
+
22
+ def segments
23
+ # to be implemented
24
+ end
25
+
26
+ def default_segment
27
+ # to be implemented
28
+ end
29
+
30
+ def render &block
31
+ @block_for_render = block
32
+ render_template 'moment_picker', &block
33
+ end
34
+
35
+ def render_result
36
+ view.tao_moment_picker_result(
37
+ builder, attribute_name, input_type: input_type, icon: options[:icon],
38
+ placeholder: placeholder, disabled: disabled, &block_for_render
39
+ )
40
+ end
41
+
42
+ def render_segment_list
43
+ view.tao_moment_picker_segment_list segments: segments,
44
+ default_segment: default_segment
45
+ end
46
+
47
+ def placeholder
48
+ @placeholder ||= if options[:placeholder].present?
49
+ options[:placeholder]
50
+ else
51
+ t :placeholder
52
+ end
53
+ end
54
+
55
+ private
56
+
57
+ def default_options
58
+ {icon: :calendar}
59
+ end
60
+
61
+ def default_html_options
62
+ {class: 'moment-picker'}
63
+ end
64
+
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,31 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ class ResultComponent < TaoForm::Components::FieldComponent
5
+
6
+ attr_reader :input_type
7
+
8
+ def initialize view, builder, attribute_name, options = {}
9
+ @input_type = options.delete(:input_type)
10
+ super view, builder, attribute_name, options
11
+ end
12
+
13
+ def render &block
14
+ if block_given?
15
+ super
16
+ else
17
+ super {
18
+ builder.send :"#{input_type}_field", attribute_name,
19
+ {disabled: options[:disabled]}
20
+ }
21
+ end
22
+ end
23
+
24
+ def self.component_name
25
+ :moment_picker_result
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ class SegmentListComponent < TaoOnRails::Components::Base
5
+
6
+ attr_reader :segments
7
+
8
+ def initialize view, options = {}
9
+ @segments = options.delete(:segments)
10
+ super view, options
11
+ end
12
+
13
+ def separator_segment? segment
14
+ segment.is_a?(Hash) && segment[:separator].present?
15
+ end
16
+
17
+ def render_segment segment
18
+ if segment.is_a? Hash
19
+ options = segment
20
+ name = segment.delete(:name)
21
+ else
22
+ options = {}
23
+ name = segment
24
+ end
25
+
26
+ view.send :"tao_moment_picker_#{name}_segment", options
27
+ end
28
+
29
+ def self.component_name
30
+ :moment_picker_segment_list
31
+ end
32
+
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,6 @@
1
+ require 'tao_form/components/moment_picker/segments/base'
2
+ require 'tao_form/components/moment_picker/segments/date_segment_component'
3
+ require 'tao_form/components/moment_picker/segments/month_segment_component'
4
+ require 'tao_form/components/moment_picker/segments/year_segment_component'
5
+ require 'tao_form/components/moment_picker/segments/hour_segment_component'
6
+ require 'tao_form/components/moment_picker/segments/minute_segment_component'
@@ -0,0 +1,17 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class Base < TaoOnRails::Components::Base
6
+
7
+ private
8
+
9
+ def default_options
10
+ {class: 'segment'}
11
+ end
12
+
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,21 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class DateSegmentComponent < Base
6
+
7
+ def self.component_name
8
+ :moment_picker_date_segment
9
+ end
10
+
11
+ private
12
+
13
+ def default_options
14
+ super.merge({label_format: t(:label, date: '{{ date }}')})
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class HourSegmentComponent < Base
6
+
7
+ def self.component_name
8
+ :moment_picker_hour_segment
9
+ end
10
+
11
+ private
12
+
13
+ def default_options
14
+ super.merge({label_format: t(:label, hour: '{{ hour }}')})
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,28 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class MinuteSegmentComponent < Base
6
+
7
+ attr_reader :step
8
+
9
+ def initialize view, options = {}
10
+ super view, options
11
+ @step = options[:step].presence || 5
12
+ end
13
+
14
+ def self.component_name
15
+ :moment_picker_minute_segment
16
+ end
17
+
18
+ private
19
+
20
+ def default_options
21
+ super.merge({label_format: t(:label, minute: '{{ minute }}')})
22
+ end
23
+
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class MonthSegmentComponent < Base
6
+
7
+ def self.component_name
8
+ :moment_picker_month_segment
9
+ end
10
+
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,21 @@
1
+ module TaoForm
2
+ module Components
3
+ module MomentPicker
4
+ module Segments
5
+ class YearSegmentComponent < Base
6
+
7
+ def self.component_name
8
+ :moment_picker_year_segment
9
+ end
10
+
11
+ private
12
+
13
+ def default_options
14
+ super.merge({label_format: t(:label, year: '{{ year }}')})
15
+ end
16
+
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,23 @@
1
+ module TaoForm
2
+ module Components
3
+ class MonthPickerComponent < MomentPicker::Base
4
+
5
+ def input_type
6
+ @input_type ||= :month
7
+ end
8
+
9
+ def segments
10
+ @segments ||= %w(year month)
11
+ end
12
+
13
+ def default_segment
14
+ @default_segment ||= :month
15
+ end
16
+
17
+ def self.component_name
18
+ :month_picker
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,29 @@
1
+ module TaoForm
2
+ module Components
3
+ class RadioButtonComponent < FieldComponent
4
+
5
+ attr_reader :checked_value, :unchecked_value
6
+
7
+ def initialize view, builder = nil, attribute_name = nil, options = {}, checked_value = '1', unchecked_value = '0'
8
+ super view, builder, attribute_name, options
9
+ @checked_value = checked_value
10
+ @unchecked_value = unchecked_value
11
+ end
12
+
13
+ def self.component_name
14
+ :radio_button
15
+ end
16
+
17
+ def render &block
18
+ if block_given?
19
+ super
20
+ else
21
+ super {
22
+ builder.radio_button attribute_name, {}, checked_value, unchecked_value
23
+ }
24
+ end
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,23 @@
1
+ module TaoForm
2
+ module Components
3
+ module Select
4
+ class ListComponent < TaoOnRails::Components::Base
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
+ def self.component_name
17
+ :select_list
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end