tao_form 0.1.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.
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