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,23 @@
1
+ module TaoForm
2
+ module Components
3
+ module Select
4
+ class MultipleResultComponent < ResultComponent
5
+
6
+ def render &block
7
+ if block_given?
8
+ super
9
+ else
10
+ super {
11
+ builder.select attribute_name, choices, options, {multiple: true}
12
+ }
13
+ end
14
+ end
15
+
16
+ def self.component_name
17
+ :multiple_select_result
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,35 @@
1
+ module TaoForm
2
+ module Components
3
+ module Select
4
+ class ResultComponent < TaoForm::Components::FieldComponent
5
+
6
+ attr_reader :choices, :html_options
7
+
8
+ def initialize view, builder, attribute_name, choices = nil, options = {}, html_options
9
+ super view, builder, attribute_name, options
10
+ @choices = choices
11
+ @html_options = transform_html_options html_options
12
+
13
+ if @html_options[:class].present?
14
+ @html_options[:class] += " select-result"
15
+ else
16
+ @html_options[:class] = "select-result"
17
+ end
18
+ end
19
+
20
+ def render &block
21
+ if block_given?
22
+ super
23
+ else
24
+ super {builder.select attribute_name, choices, options}
25
+ end
26
+ end
27
+
28
+ def self.component_name
29
+ :select_result
30
+ end
31
+
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,78 @@
1
+ require 'tao_form/components/select/result_component'
2
+ require 'tao_form/components/select/multiple_result_component'
3
+ require 'tao_form/components/select/list_component'
4
+
5
+ module TaoForm
6
+ module Components
7
+ class SelectComponent < FieldComponent
8
+
9
+ attr_reader :choices, :html_options, :disabled, :multiple, :max_list_size, :block_for_render
10
+
11
+ def initialize view, builder, attribute_name, choices = nil, options = {}, html_options = {}
12
+ super view, builder, attribute_name, options
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
17
+
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
26
+ end
27
+
28
+ def render &block
29
+ @block_for_render = block
30
+ super
31
+ end
32
+
33
+ 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
44
+ end
45
+
46
+ def render_list
47
+ view.tao_select_list max_list_size: max_list_size
48
+ end
49
+
50
+ def clearable
51
+ @clearable ||= options[:include_blank].present? || options[:prompt].present?
52
+ end
53
+
54
+ 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]
61
+ else
62
+ t :placeholder
63
+ end
64
+ end
65
+
66
+ def self.component_name
67
+ :select
68
+ end
69
+
70
+ private
71
+
72
+ def default_options
73
+ {icon: :arrow_down}
74
+ end
75
+
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,11 @@
1
+ module TaoForm
2
+ module Components
3
+ class SwitchComponent < CheckBoxComponent
4
+
5
+ def self.component_name
6
+ :switch
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,29 @@
1
+ module TaoForm
2
+ module Components
3
+ class TimePickerComponent < MomentPicker::Base
4
+
5
+ def input_type
6
+ @input_type ||= :time
7
+ end
8
+
9
+ def segments
10
+ @segments ||= [:hour, {separator: ':'}, {name: :minute, step: options[:minute_step]}]
11
+ end
12
+
13
+ def default_segment
14
+ @default_segment ||= :hour
15
+ end
16
+
17
+ def self.component_name
18
+ :time_picker
19
+ end
20
+
21
+ private
22
+
23
+ def default_options
24
+ super.merge({icon: :clock})
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,15 @@
1
+ require 'simple_form'
2
+ require 'tao_on_rails'
3
+ require 'tao_form/inputs'
4
+ require 'tao_form/components'
5
+
6
+ module TaoForm
7
+ class Engine < Rails::Engine
8
+ isolate_namespace TaoForm
9
+
10
+ config.i18n.load_path += Dir[config.root.join('config', 'locales', '**', '*.{rb,yml}')]
11
+
12
+ paths['app/views'] << 'lib/views'
13
+
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'tao_form/inputs/string_input'
2
+ require 'tao_form/inputs/numeric_input'
3
+ require 'tao_form/inputs/boolean_input'
4
+ require 'tao_form/inputs/collection_check_boxes_input'
5
+ require 'tao_form/inputs/collection_radio_buttons_input'
6
+ require 'tao_form/inputs/collection_select_input'
7
+ require 'tao_form/inputs/grouped_collection_select_input'
8
+ require 'tao_form/inputs/date_time_input'
9
+ require 'tao_form/inputs/month_input'
@@ -0,0 +1,30 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class BooleanInput < ::SimpleForm::Inputs::BooleanInput
4
+
5
+ def input(wrapper_options = nil)
6
+ merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
7
+
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
19
+
20
+ template.content_tag(:div, input_content, class: 'boolean-field')
21
+ end
22
+
23
+ private
24
+
25
+ def switch?
26
+ input_options[:switch]
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,19 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class CollectionCheckBoxesInput < ::SimpleForm::Inputs::CollectionCheckBoxesInput
4
+
5
+ def input(wrapper_options = nil)
6
+ template.content_tag(:div, super, class: 'group-field checkbox-group-field')
7
+ end
8
+
9
+ protected
10
+
11
+ def build_nested_boolean_style_item_tag(collection_builder)
12
+ template.tao_check_box {
13
+ collection_builder.check_box
14
+ } + collection_builder.text
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class CollectionRadioButtonsInput < ::SimpleForm::Inputs::CollectionRadioButtonsInput
4
+
5
+ def input(wrapper_options = nil)
6
+ template.content_tag(:div, super, class: 'group-field radio-button-group-field')
7
+ end
8
+
9
+ protected
10
+
11
+ def build_nested_boolean_style_item_tag(collection_builder)
12
+ template.tao_radio_button {
13
+ collection_builder.radio_button
14
+ } + collection_builder.text
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class CollectionSelectInput < ::SimpleForm::Inputs::CollectionSelectInput
4
+
5
+ def input(wrapper_options = nil)
6
+ label_method, value_method = detect_collection_methods
7
+
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
13
+ @builder.collection_select(
14
+ attribute_name, collection, value_method, label_method, input_options, {multiple: multiple}
15
+ )
16
+ end
17
+ end
18
+
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,22 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class DateTimeInput < ::SimpleForm::Inputs::DateTimeInput
4
+
5
+ def input(wrapper_options = nil)
6
+ merged_input_options = merge_wrapper_options(input_html_options, wrapper_options)
7
+
8
+ template.send(
9
+ :"tao_#{input_type}_picker", @builder, attribute_name,
10
+ input_options, merged_input_options
11
+ )
12
+ end
13
+
14
+ private
15
+
16
+ def use_html5_inputs?
17
+ true
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class GroupedCollectionSelectInput < ::SimpleForm::Inputs::GroupedCollectionSelectInput
4
+
5
+ def input(wrapper_options = nil)
6
+ label_method, value_method = detect_collection_methods
7
+
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
13
+ @builder.grouped_collection_select(
14
+ attribute_name, grouped_collection, group_method, group_label_method,
15
+ value_method, label_method, input_options, {multiple: multiple}
16
+ )
17
+ end
18
+ end
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,7 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class MonthInput < DateTimeInput
4
+
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,19 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class NumericInput < ::SimpleForm::Inputs::NumericInput
4
+
5
+ def input(wrapper_options = nil)
6
+ origin_input = super
7
+ prefix = options[:prefix].present? ? @builder.label(@attribute_name, options[:prefix], class: 'prefix') : ''
8
+ suffix = options[:suffix].present? ? @builder.label(@attribute_name, options[:suffix], class: 'suffix') : ''
9
+
10
+ field_class = ['text-field']
11
+ field_class << 'text-field-with-prefix' if prefix.present?
12
+ field_class << 'text-field-with-suffix' if suffix.present?
13
+
14
+ template.content_tag(:div, "#{prefix}#{origin_input}#{suffix}".html_safe, class: field_class)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module TaoForm
2
+ module Inputs
3
+ class StringInput < ::SimpleForm::Inputs::StringInput
4
+
5
+ def input(wrapper_options = nil)
6
+ origin_input = super
7
+ prefix = options[:prefix].present? ? @builder.label(@attribute_name, options[:prefix], class: 'prefix') : ''
8
+ suffix = options[:suffix].present? ? @builder.label(@attribute_name, options[:suffix], class: 'suffix') : ''
9
+
10
+ field_class = ['text-field']
11
+ field_class << 'text-field-with-prefix' if prefix.present?
12
+ field_class << 'text-field-with-suffix' if suffix.present?
13
+
14
+ template.content_tag(:div, "#{prefix}#{origin_input}#{suffix}".html_safe, class: field_class)
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,3 @@
1
+ module TaoForm
2
+ VERSION = '0.1.0'
3
+ end
@@ -0,0 +1,10 @@
1
+ <%= content_tag component.tag_name, nil, component.html_options do %>
2
+
3
+ <%= yield %>
4
+
5
+ <div class="checkbox-wrapper" tabindex="0">
6
+ <%= tao_icon :checkbox %>
7
+ <div class="icon icon-indeterminate"></div>
8
+ </div>
9
+
10
+ <% end %>
@@ -0,0 +1,7 @@
1
+ <%= content_tag component.tag_name, component.html_options do %>
2
+ <%= yield %>
3
+
4
+ <%= component.render_date_picker %>
5
+ <%= component.render_time_picker %>
6
+
7
+ <% end %>
@@ -0,0 +1,17 @@
1
+ <%= content_tag component.tag_name, component.html_options do %>
2
+ <%= component.render_result %>
3
+
4
+ <%= tao_slide_box direction: 'rtl', size: '-40', with_close_button: false, class: 'slide-box' do %>
5
+ <div class="header">
6
+ <div class="left">
7
+ <%= link_to 'javascript:;', class: 'link-close', title: I18n.t('tao_form.components.moment_picker.close') do %>
8
+ <%= tao_icon :close %>
9
+ <% end %>
10
+ </div>
11
+ <div class="title"><%= component.placeholder %></div>
12
+ <div class="right"></div>
13
+ </div>
14
+
15
+ <%= component.render_segment_list %>
16
+ <% end %>
17
+ <% end %>