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,41 @@
1
+ #= require tao/form/shared/fields/select/multiple_result/base
2
+
3
+ class Tao.Form.Select.MultipleResult extends Tao.Form.Select.MultipleResultBase
4
+
5
+ @attribute 'active', type: 'boolean'
6
+
7
+ _connected: ->
8
+ super
9
+ @linkAdd = @jq.find '.link-add'
10
+ @linkAdd.attr('tabindex', '0') unless @disabled
11
+
12
+ _bind: ->
13
+ super
14
+
15
+ @on 'click', '.link-add', (e) =>
16
+ return if @disabled
17
+ @trigger 'activeClick'
18
+ false
19
+
20
+ @on 'keydown', '.link-add', (e) =>
21
+ return if @disabled
22
+ if e.which == 13
23
+ @trigger 'enterPress'
24
+ false
25
+ else if e.which == 38
26
+ @trigger 'arrowPress', ['up']
27
+ false
28
+ else if e.which == 40
29
+ @trigger 'arrowPress', ['down']
30
+ false
31
+
32
+ _disabledChanged: ->
33
+ if @disabled
34
+ @linkAdd.removeAttr 'tabindex'
35
+ else
36
+ @linkAdd.attr 'tabindex', '0'
37
+
38
+ focus: ->
39
+ @linkAdd.focus()
40
+
41
+ TaoComponent.register Tao.Form.Select.MultipleResult
@@ -0,0 +1,39 @@
1
+ #= require tao/form/shared/fields/select/result/base
2
+
3
+ class Tao.Form.Select.Result extends Tao.Form.Select.ResultBase
4
+
5
+ @attribute 'active', type: 'boolean'
6
+
7
+ _connected: ->
8
+ super
9
+ @jq.attr('tabindex', '0') unless @disabled
10
+
11
+ _bind: ->
12
+ super
13
+
14
+ @on 'click', (e) =>
15
+ return if @disabled
16
+ @trigger 'activeClick'
17
+
18
+ @on 'keydown', (e) =>
19
+ return if @disabled
20
+ if e.which == 13
21
+ @trigger 'enterPress'
22
+ false
23
+ else if e.which == 8 || e.which == 46
24
+ @clear() && @trigger('clear')
25
+ false
26
+ else if e.which == 38
27
+ @trigger 'arrowPress', ['up']
28
+ false
29
+ else if e.which == 40
30
+ @trigger 'arrowPress', ['down']
31
+ false
32
+
33
+ _disabledChanged: ->
34
+ if @disabled
35
+ @jq.removeAttr 'tabindex'
36
+ else
37
+ @jq.attr 'tabindex', '0'
38
+
39
+ TaoComponent.register Tao.Form.Select.Result
@@ -0,0 +1,14 @@
1
+ #= require tao/form/shared/fields/switch
2
+
3
+ class Tao.Form.Switch extends Tao.Form.SwitchBase
4
+
5
+ _bind: ->
6
+ super
7
+
8
+ @on 'keydown', '.switch-wrapper', (e) =>
9
+ return unless e.which == 13 && @field.is(':enabled')
10
+ @_toggleChecked()
11
+ @trigger 'change'
12
+ false
13
+
14
+ TaoComponent.register Tao.Form.Switch
@@ -0,0 +1,17 @@
1
+ #= require moment
2
+ #= require moment/zh-cn
3
+ #= require tao/ui
4
+ #= require tao/ui/icons/form
5
+ #= require_self
6
+ #= require ./element
7
+ #= require ./fields
8
+
9
+ Tao.Form =
10
+ Mixins: {}
11
+
12
+ Tao.Application.initializer 'moment', (app) ->
13
+ if moment? && app.locale
14
+ moment.locale(app.locale.toLowerCase())
15
+
16
+ if moment?.tz? && app.timeZone
17
+ moment.tz.setDefault(app.timeZone)
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/element/base
2
+
3
+ class Tao.Form.Element extends Tao.Form.ElementBase
4
+
5
+ TaoComponent.register Tao.Form.Element
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/checkbox
2
+
3
+ class Tao.Form.Checkbox extends Tao.Form.CheckboxBase
4
+
5
+ TaoComponent.register Tao.Form.Checkbox
@@ -0,0 +1,9 @@
1
+ #= require ./checkbox
2
+ #= require ./switch
3
+ #= require ./radio
4
+ #= require ./select
5
+ #= require ./moment_picker
6
+ #= require tao/form/shared/fields/date_picker
7
+ #= require tao/form/shared/fields/time_picker
8
+ #= require tao/form/shared/fields/datetime_picker
9
+ #= require tao/form/shared/fields/month_picker
@@ -0,0 +1,36 @@
1
+ #= require tao/form/shared/fields/moment_picker/element/base
2
+
3
+ class Tao.Form.MomentPicker.Element extends Tao.Form.MomentPicker.ElementBase
4
+
5
+ _connected: ->
6
+ @slideBox = @findComponent '.slide-box'
7
+ super
8
+
9
+ _bind: ->
10
+ super
11
+
12
+ @on 'click', '.header .link-close', (e) =>
13
+ @active = false
14
+ null
15
+
16
+ @on 'click', '.header .button-confirm', (e) =>
17
+ @active = false
18
+ @setMoment moment(@segmentList.momentData)
19
+ null
20
+
21
+ @on 'clear', 'tao-moment-picker-segment-list', (e) =>
22
+ return if @disabled
23
+ @active = false
24
+ @setMoment null
25
+ @trigger 'change', [@moment]
26
+ null
27
+
28
+ _activeChanged: ->
29
+ @slideBox.active = @active
30
+ if @active
31
+ @segmentList.setMoment @moment
32
+ @segmentList.clearable = !!@moment
33
+ @segmentList.refreshHeight()
34
+
35
+
36
+ TaoComponent.register Tao.Form.MomentPicker.Element
@@ -0,0 +1,7 @@
1
+ #= require_self
2
+ #= require tao/form/shared/fields/moment_picker/segments
3
+ #= require ./element
4
+ #= require ./result
5
+ #= require ./segment_list
6
+
7
+ Tao.Form.MomentPicker = {}
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/moment_picker/result/base
2
+
3
+ class Tao.Form.MomentPicker.Result extends Tao.Form.MomentPicker.ResultBase
4
+
5
+ TaoComponent.register Tao.Form.MomentPicker.Result
@@ -0,0 +1,24 @@
1
+ #= require tao/form/shared/fields/moment_picker/segment_list/base
2
+
3
+ MomentPicker = Tao.Form.MomentPicker
4
+
5
+ class MomentPicker.SegmentList extends MomentPicker.SegmentListBase
6
+
7
+ @attribute 'clearable', type: 'boolean'
8
+
9
+ _bind: ->
10
+ super
11
+
12
+ @on 'click', '.link-clear', (e) =>
13
+ @trigger 'clear'
14
+ null
15
+
16
+ refreshHeight: ->
17
+ return unless @activeSegment
18
+ winHeight = $(window).height()
19
+ offsetTop = @activeSegment.getBoundingClientRect().top
20
+
21
+ @activeSegment.jq.css
22
+ height: winHeight - offsetTop
23
+
24
+ TaoComponent.register Tao.Form.MomentPicker.SegmentList
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/radio
2
+
3
+ class Tao.Form.Radio extends Tao.Form.RadioBase
4
+
5
+ TaoComponent.register Tao.Form.Radio
@@ -0,0 +1,61 @@
1
+ #= require tao/form/shared/fields/select/element/base
2
+
3
+ class Tao.Form.Select.Element extends Tao.Form.Select.ElementBase
4
+
5
+ _connected: ->
6
+ @slideBox = @findComponent '.slide-box'
7
+ super
8
+
9
+ _bind: ->
10
+ super
11
+
12
+ @on 'click', '.select-result-delegate', (e) =>
13
+ @_toggleActive()
14
+ null
15
+
16
+ @on 'click', '.header .link-close', (e) =>
17
+ @active = false
18
+ null
19
+
20
+ @on 'click', '.header .button-ok', (e) =>
21
+ @active = false
22
+ null
23
+
24
+ @on 'change', =>
25
+ @list.refreshHeight() if @active
26
+ @_refreshSelectedText()
27
+
28
+ _bindListEvents: ->
29
+ super
30
+
31
+ @on 'selectOption', '.select-list', (e, option) =>
32
+ if @multiple
33
+ @list.reset()
34
+ else
35
+ @active = false
36
+ null
37
+
38
+ _resultReady: ->
39
+ super
40
+ @_refreshSelectedText()
41
+
42
+ _refreshSelectedText: ->
43
+ text = if @multiple && @selectedOption.length > 0
44
+ @selectedOption.map (opt) ->
45
+ opt.text
46
+ .join ', '
47
+ else if @selectedOption
48
+ @selectedOption.text
49
+ else
50
+ ''
51
+
52
+ @jq.find('.select-result-delegate .selected-text').text text
53
+
54
+ _activeChanged: ->
55
+ @slideBox.active = @active
56
+ if @active
57
+ @list.refreshHeight()
58
+ else
59
+ @list.reset()
60
+
61
+ TaoComponent.register Tao.Form.Select.Element
@@ -0,0 +1,8 @@
1
+ #= require_self
2
+ #= require tao/form/shared/fields/select/models
3
+ #= require ./result
4
+ #= require ./multiple_result
5
+ #= require ./list
6
+ #= require ./element
7
+
8
+ Tao.Form.Select = {}
@@ -0,0 +1,13 @@
1
+ #= require tao/form/shared/fields/select/list/base
2
+
3
+ class Tao.Form.Select.List extends Tao.Form.Select.ListBase
4
+
5
+ refreshHeight: ->
6
+ $listWrapper = @jq.find('.list-wrapper')
7
+ winHeight = $(window).height()
8
+ offsetTop = $listWrapper[0].getBoundingClientRect().top
9
+
10
+ $listWrapper.css
11
+ height: winHeight - offsetTop
12
+
13
+ TaoComponent.register Tao.Form.Select.List
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/select/multiple_result/base
2
+
3
+ class Tao.Form.Select.MultipleResult extends Tao.Form.Select.MultipleResultBase
4
+
5
+ TaoComponent.register Tao.Form.Select.MultipleResult
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/select/result/base
2
+
3
+ class Tao.Form.Select.Result extends Tao.Form.Select.ResultBase
4
+
5
+ TaoComponent.register Tao.Form.Select.Result
@@ -0,0 +1,5 @@
1
+ #= require tao/form/shared/fields/switch
2
+
3
+ class Tao.Form.Switch extends Tao.Form.SwitchBase
4
+
5
+ TaoComponent.register Tao.Form.Switch
@@ -0,0 +1,10 @@
1
+ #= require moment
2
+ #= require moment/zh-cn
3
+ #= require tao/ui/mobile
4
+ #= require tao/ui/icons/form
5
+ #= require_self
6
+ #= require ./element
7
+ #= require ./fields
8
+
9
+ Tao.Form =
10
+ Mixins: {}
@@ -0,0 +1,48 @@
1
+ class Tao.Form.ElementBase extends TaoComponent
2
+
3
+ @tag 'tao-form'
4
+
5
+ @attribute 'successMessage'
6
+
7
+ _connected: ->
8
+ @_bind()
9
+
10
+ _bind: ->
11
+ @on 'ajax:beforeSend', '> form', (e) =>
12
+ @_clearErrors()
13
+ @trigger 'beforeSubmit'
14
+
15
+ @on 'ajax:success', '> form', (e) =>
16
+ @_showSuccessMessage()
17
+ @trigger 'success'
18
+
19
+ _disconnected: ->
20
+ @off()
21
+
22
+ _clearErrors: ->
23
+ @jq.find('.input-with-errors').each (i, input) =>
24
+ @_clearError input
25
+
26
+ _clearError: (input) ->
27
+ $(input).removeClass('input-with-errors')
28
+ .find('.error').remove()
29
+
30
+ _showSuccessMessage: ->
31
+ return unless @successMessage
32
+
33
+ $button = @jq.find('button[data-disable-with]:disabled, input[data-disable-with]:disabled')
34
+ $message = $('<div>')
35
+ .addClass('success-message')
36
+ .append([Tao.iconTag('success'), @successMessage])
37
+ .insertAfter $button.hide()
38
+
39
+ @_successTimer = setTimeout =>
40
+ $button.show()
41
+ $message.remove()
42
+ , 3000
43
+
44
+ beforeCache: ->
45
+ super
46
+ clearTimeout @_successTimer
47
+ @jq.find('.success-message').remove()
48
+ @jq.find('button[data-disable-with]:hidden, input[data-disable-with]:hidden').show()
@@ -0,0 +1,21 @@
1
+ #= require tao/form/shared/mixins/checkable
2
+
3
+ class Tao.Form.CheckboxBase extends TaoComponent
4
+
5
+ @include Tao.Form.Mixins.Checkable
6
+
7
+ @tag 'tao-check-box'
8
+
9
+ _connected: ->
10
+ @field = @jq.find('input:checkbox')
11
+ @_bind()
12
+
13
+ _bind: ->
14
+ @on 'click', '.checkbox-wrapper', (e) =>
15
+ if @field.is(':enabled')
16
+ @_toggleChecked()
17
+ @trigger 'change'
18
+ false
19
+
20
+ _disconnected: ->
21
+ @off()
@@ -0,0 +1,10 @@
1
+
2
+ class Tao.Form.DatePicker extends Tao.Form.MomentPicker.Element
3
+
4
+ @tag 'tao-date-picker'
5
+
6
+ @attribute 'valueFormat', default: 'YYYY-MM-DD'
7
+
8
+ @attribute 'displayFormat', default: 'YYYY-MM-DD'
9
+
10
+ TaoComponent.register Tao.Form.DatePicker
@@ -0,0 +1,62 @@
1
+
2
+ class Tao.Form.DatetimePicker extends TaoComponent
3
+
4
+ @tag 'tao-datetime-picker'
5
+
6
+ @attribute 'valueFormat', default: 'YYYY-MM-DDTHH:mm:ss'
7
+
8
+ @attribute 'dateValueFormat', default: 'YYYY-MM-DD'
9
+
10
+ @attribute 'dateDisplayFormat', default: 'YYYY-MM-DD'
11
+
12
+ @attribute 'timeValueFormat', default: 'HH:mm'
13
+
14
+ @attribute 'timeDisplayFormat', default: 'HH:mm'
15
+
16
+ _connected: ->
17
+ @field = @jq.find '> input'
18
+ datePickerDeferred = $.Deferred()
19
+ timePickerDeferred = $.Deferred()
20
+
21
+ @datePicker = @findComponent 'tao-date-picker', =>
22
+ datePickerDeferred.resolve()
23
+
24
+ @timePicker = @findComponent 'tao-time-picker', =>
25
+ timePickerDeferred.resolve()
26
+
27
+ $.when datePickerDeferred, timePickerDeferred
28
+ .done => @_initMoment()
29
+
30
+ @_bind()
31
+
32
+ _bind: ->
33
+ @on 'change', '.moment-picker', (e, m) =>
34
+ @_syncMoment()
35
+
36
+ _initMoment: ->
37
+ m = moment @field.val(), @valueFormat
38
+
39
+ if m && m.isValid()
40
+ @datePicker.setMoment m.format(@dateValueFormat)
41
+ @timePicker.setMoment m.format(@timeValueFormat)
42
+ @moment = m
43
+ else
44
+ @moment = null
45
+
46
+ _syncMoment: ->
47
+ if @datePicker.moment
48
+ dateValue = @datePicker.moment.format(@dateValueFormat)
49
+ timeValue = if @timePicker.moment
50
+ @timePicker.moment.format(@timeValueFormat)
51
+ else
52
+ moment().startOf('day').format(@timeValueFormat)
53
+
54
+ value = _.trim "#{dateValue} #{timeValue}"
55
+ m = moment value, "#{@dateValueFormat} #{@timeValueFormat}"
56
+ @field.val m.format(@valueFormat)
57
+ @moment = m
58
+ else
59
+ @field.val ''
60
+ @moment = null
61
+
62
+ TaoComponent.register Tao.Form.DatetimePicker