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,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 %>