tao_form 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +28 -0
- data/Rakefile +10 -0
- data/lib/assets/icons/arrow-down.svg +12 -0
- data/lib/assets/icons/arrow-left.svg +12 -0
- data/lib/assets/icons/arrow-right.svg +12 -0
- data/lib/assets/icons/calendar.svg +12 -0
- data/lib/assets/icons/checkbox.svg +12 -0
- data/lib/assets/icons/clock.svg +12 -0
- data/lib/assets/icons/search.svg +12 -0
- data/lib/assets/icons/success.svg +12 -0
- data/lib/assets/javascripts/tao/form/element.coffee +16 -0
- data/lib/assets/javascripts/tao/form/fields/checkbox.coffee +14 -0
- data/lib/assets/javascripts/tao/form/fields/index.coffee +9 -0
- data/lib/assets/javascripts/tao/form/fields/moment_picker/element.coffee +38 -0
- data/lib/assets/javascripts/tao/form/fields/moment_picker/index.coffee +7 -0
- data/lib/assets/javascripts/tao/form/fields/moment_picker/result.coffee +25 -0
- data/lib/assets/javascripts/tao/form/fields/moment_picker/segment_list.coffee +14 -0
- data/lib/assets/javascripts/tao/form/fields/radio.coffee +14 -0
- data/lib/assets/javascripts/tao/form/fields/select/element.coffee +79 -0
- data/lib/assets/javascripts/tao/form/fields/select/index.coffee +8 -0
- data/lib/assets/javascripts/tao/form/fields/select/list.coffee +98 -0
- data/lib/assets/javascripts/tao/form/fields/select/multiple_result.coffee +41 -0
- data/lib/assets/javascripts/tao/form/fields/select/result.coffee +39 -0
- data/lib/assets/javascripts/tao/form/fields/switch.coffee +14 -0
- data/lib/assets/javascripts/tao/form/index.coffee +17 -0
- data/lib/assets/javascripts/tao/form/mobile/element.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/checkbox.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/index.coffee +9 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/element.coffee +36 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/index.coffee +7 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/result.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/moment_picker/segment_list.coffee +24 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/radio.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/select/element.coffee +61 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/select/index.coffee +8 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/select/list.coffee +13 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/select/multiple_result.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/select/result.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/fields/switch.coffee +5 -0
- data/lib/assets/javascripts/tao/form/mobile/index.coffee +10 -0
- data/lib/assets/javascripts/tao/form/shared/element/base.coffee +48 -0
- data/lib/assets/javascripts/tao/form/shared/fields/checkbox.coffee +21 -0
- data/lib/assets/javascripts/tao/form/shared/fields/date_picker.coffee +10 -0
- data/lib/assets/javascripts/tao/form/shared/fields/datetime_picker.coffee +62 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/element/base.coffee +52 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/result/base.coffee +39 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segment_list/base.coffee +85 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/base.coffee +25 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/date_segment.coffee +95 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/hour_segment.coffee +28 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/index.coffee +1 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/minute_segment.coffee +28 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/month_segment.coffee +46 -0
- data/lib/assets/javascripts/tao/form/shared/fields/moment_picker/segments/year_segment.coffee +57 -0
- data/lib/assets/javascripts/tao/form/shared/fields/month_picker.coffee +10 -0
- data/lib/assets/javascripts/tao/form/shared/fields/radio.coffee +19 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/element/base.coffee +122 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/list/base.coffee +79 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/models/data_provider.coffee +75 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/models/index.coffee +2 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/models/option.coffee +37 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/multiple_result/base.coffee +81 -0
- data/lib/assets/javascripts/tao/form/shared/fields/select/result/base.coffee +57 -0
- data/lib/assets/javascripts/tao/form/shared/fields/switch.coffee +19 -0
- data/lib/assets/javascripts/tao/form/shared/fields/time_picker.coffee +10 -0
- data/lib/assets/javascripts/tao/form/shared/mixins/checkable.coffee +11 -0
- data/lib/assets/javascripts/tao/ui/icons/form.coffee +11 -0
- data/lib/assets/stylesheets/tao/form/_globals.scss +3 -0
- data/lib/assets/stylesheets/tao/form/_mixins.scss +28 -0
- data/lib/assets/stylesheets/tao/form/_variables.scss +3 -0
- data/lib/assets/stylesheets/tao/form/fields/checkbox.scss +36 -0
- data/lib/assets/stylesheets/tao/form/fields/datetime_picker.scss +22 -0
- data/lib/assets/stylesheets/tao/form/fields/index.scss +6 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/index.scss +10 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/result.scss +61 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segment_list.scss +53 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/date_segment.scss +17 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/hour_segment.scss +15 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/minute_segment.scss +17 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/month_segment.scss +15 -0
- data/lib/assets/stylesheets/tao/form/fields/moment_picker/segments/year_segment.scss +15 -0
- data/lib/assets/stylesheets/tao/form/fields/radio.scss +33 -0
- data/lib/assets/stylesheets/tao/form/fields/select/index.scss +10 -0
- data/lib/assets/stylesheets/tao/form/fields/select/list.scss +61 -0
- data/lib/assets/stylesheets/tao/form/fields/select/multiple_result.scss +72 -0
- data/lib/assets/stylesheets/tao/form/fields/select/result.scss +101 -0
- data/lib/assets/stylesheets/tao/form/fields/switch.scss +12 -0
- data/lib/assets/stylesheets/tao/form/index.scss +5 -0
- data/lib/assets/stylesheets/tao/form/inputs/boolean.scss +8 -0
- data/lib/assets/stylesheets/tao/form/inputs/group.scss +2 -0
- data/lib/assets/stylesheets/tao/form/inputs/index.scss +1 -0
- data/lib/assets/stylesheets/tao/form/inputs/text.scss +2 -0
- data/lib/assets/stylesheets/tao/form/layout.scss +148 -0
- data/lib/assets/stylesheets/tao/form/mobile/_globals.scss +3 -0
- data/lib/assets/stylesheets/tao/form/mobile/_mixins.scss +22 -0
- data/lib/assets/stylesheets/tao/form/mobile/_variables.scss +3 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/checkbox.scss +2 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/datetime_picker.scss +18 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/index.scss +1 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/index.scss +9 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/result.scss +19 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segment_list.scss +52 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/date_segment.scss +14 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/hour_segment.scss +14 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/minute_segment.scss +14 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/month_segment.scss +14 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/moment_picker/segments/year_segment.scss +14 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/radio.scss +2 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/select/index.scss +66 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/select/list.scss +10 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/select/multiple_result.scss +12 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/select/result.scss +28 -0
- data/lib/assets/stylesheets/tao/form/mobile/fields/switch.scss +2 -0
- data/lib/assets/stylesheets/tao/form/mobile/index.scss +5 -0
- data/lib/assets/stylesheets/tao/form/mobile/inputs/boolean.scss +7 -0
- data/lib/assets/stylesheets/tao/form/mobile/inputs/group.scss +6 -0
- data/lib/assets/stylesheets/tao/form/mobile/inputs/index.scss +1 -0
- data/lib/assets/stylesheets/tao/form/mobile/inputs/text.scss +2 -0
- data/lib/assets/stylesheets/tao/form/mobile/layout.scss +137 -0
- data/lib/assets/stylesheets/tao/form/mobile/reset.scss +30 -0
- data/lib/assets/stylesheets/tao/form/mobile/variables/_base.scss +12 -0
- data/lib/assets/stylesheets/tao/form/mobile/variables/_moment_picker.scss +9 -0
- data/lib/assets/stylesheets/tao/form/mobile/variables/_select.scss +9 -0
- data/lib/assets/stylesheets/tao/form/reset.scss +30 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/_checkbox.scss +61 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/_radio.scss +53 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/_switch.scss +56 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/_result.scss +46 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/_segment_list.scss +93 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_date_segment.scss +50 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_hour_segment.scss +35 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_minute_segment.scss +23 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_month_segment.scss +27 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/moment_picker/segments/_year_segment.scss +27 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/select/_list.scss +136 -0
- data/lib/assets/stylesheets/tao/form/shared/fields/select/_multiple_result.scss +46 -0
- data/lib/assets/stylesheets/tao/form/shared/inputs/_boolean.scss +5 -0
- data/lib/assets/stylesheets/tao/form/shared/inputs/_group.scss +25 -0
- data/lib/assets/stylesheets/tao/form/shared/inputs/_text.scss +33 -0
- data/lib/assets/stylesheets/tao/form/variables/_base.scss +15 -0
- data/lib/assets/stylesheets/tao/form/variables/_moment_picker.scss +9 -0
- data/lib/assets/stylesheets/tao/form/variables/_select.scss +10 -0
- data/lib/tao_form.rb +5 -0
- data/lib/tao_form/components.rb +10 -0
- data/lib/tao_form/components/check_box_component.rb +29 -0
- data/lib/tao_form/components/date_picker_component.rb +25 -0
- data/lib/tao_form/components/datetime_picker_component.rb +50 -0
- data/lib/tao_form/components/field_component.rb +15 -0
- data/lib/tao_form/components/form_component.rb +24 -0
- data/lib/tao_form/components/moment_picker/base.rb +68 -0
- data/lib/tao_form/components/moment_picker/result_component.rb +31 -0
- data/lib/tao_form/components/moment_picker/segment_list_component.rb +36 -0
- data/lib/tao_form/components/moment_picker/segments.rb +6 -0
- data/lib/tao_form/components/moment_picker/segments/base.rb +17 -0
- data/lib/tao_form/components/moment_picker/segments/date_segment_component.rb +21 -0
- data/lib/tao_form/components/moment_picker/segments/hour_segment_component.rb +21 -0
- data/lib/tao_form/components/moment_picker/segments/minute_segment_component.rb +28 -0
- data/lib/tao_form/components/moment_picker/segments/month_segment_component.rb +15 -0
- data/lib/tao_form/components/moment_picker/segments/year_segment_component.rb +21 -0
- data/lib/tao_form/components/month_picker_component.rb +23 -0
- data/lib/tao_form/components/radio_button_component.rb +29 -0
- data/lib/tao_form/components/select/list_component.rb +23 -0
- data/lib/tao_form/components/select/multiple_result_component.rb +23 -0
- data/lib/tao_form/components/select/result_component.rb +35 -0
- data/lib/tao_form/components/select_component.rb +78 -0
- data/lib/tao_form/components/switch_component.rb +11 -0
- data/lib/tao_form/components/time_picker_component.rb +29 -0
- data/lib/tao_form/engine.rb +15 -0
- data/lib/tao_form/inputs.rb +9 -0
- data/lib/tao_form/inputs/boolean_input.rb +30 -0
- data/lib/tao_form/inputs/collection_check_boxes_input.rb +19 -0
- data/lib/tao_form/inputs/collection_radio_buttons_input.rb +19 -0
- data/lib/tao_form/inputs/collection_select_input.rb +21 -0
- data/lib/tao_form/inputs/date_time_input.rb +22 -0
- data/lib/tao_form/inputs/grouped_collection_select_input.rb +22 -0
- data/lib/tao_form/inputs/month_input.rb +7 -0
- data/lib/tao_form/inputs/numeric_input.rb +19 -0
- data/lib/tao_form/inputs/string_input.rb +19 -0
- data/lib/tao_form/version.rb +3 -0
- data/lib/views/components/tao_form/components/_check_box.html.erb +10 -0
- data/lib/views/components/tao_form/components/_datetime_picker.html.erb +7 -0
- data/lib/views/components/tao_form/components/_moment_picker.html+mobile.erb +17 -0
- data/lib/views/components/tao_form/components/_moment_picker.html.erb +4 -0
- data/lib/views/components/tao_form/components/_radio_button.html.erb +9 -0
- data/lib/views/components/tao_form/components/_select.html+mobile.erb +27 -0
- data/lib/views/components/tao_form/components/_select.html.erb +4 -0
- data/lib/views/components/tao_form/components/_switch.html.erb +10 -0
- data/lib/views/components/tao_form/components/moment_picker/_result.html+mobile.erb +11 -0
- data/lib/views/components/tao_form/components/moment_picker/_result.html.erb +14 -0
- data/lib/views/components/tao_form/components/moment_picker/_segment_list.html+mobile.erb +8 -0
- data/lib/views/components/tao_form/components/moment_picker/_segment_list.html.erb +4 -0
- data/lib/views/components/tao_form/components/moment_picker/segment_list/_labels.html.erb +13 -0
- data/lib/views/components/tao_form/components/moment_picker/segment_list/_segments.html.erb +7 -0
- data/lib/views/components/tao_form/components/moment_picker/segments/_date_segment.html.erb +14 -0
- data/lib/views/components/tao_form/components/moment_picker/segments/_hour_segment.html.erb +14 -0
- data/lib/views/components/tao_form/components/moment_picker/segments/_minute_segment.html.erb +9 -0
- data/lib/views/components/tao_form/components/moment_picker/segments/_month_segment.html.erb +16 -0
- data/lib/views/components/tao_form/components/moment_picker/segments/_year_segment.html.erb +10 -0
- data/lib/views/components/tao_form/components/select/_list.html.erb +18 -0
- data/lib/views/components/tao_form/components/select/_multiple_result.html+mobile.erb +3 -0
- data/lib/views/components/tao_form/components/select/_multiple_result.html.erb +7 -0
- data/lib/views/components/tao_form/components/select/_result.html+mobile.erb +10 -0
- data/lib/views/components/tao_form/components/select/_result.html.erb +14 -0
- data/vendor/assets/javascripts/moment.js +4463 -0
- data/vendor/assets/javascripts/moment/zh-cn.js +112 -0
- 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,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,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,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,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,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,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
|