formagic 0.3.4 → 0.3.7

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/app/assets/javascripts/formagic.coffee +2 -0
  4. data/app/assets/javascripts/formagic/form.coffee +9 -39
  5. data/app/assets/javascripts/formagic/group.coffee +1 -11
  6. data/app/assets/javascripts/formagic/inputs/array.coffee +8 -26
  7. data/app/assets/javascripts/formagic/inputs/checkbox.coffee +3 -20
  8. data/app/assets/javascripts/formagic/inputs/color.coffee +2 -16
  9. data/app/assets/javascripts/formagic/inputs/date.coffee +6 -24
  10. data/app/assets/javascripts/formagic/inputs/datetime.coffee +6 -27
  11. data/app/assets/javascripts/formagic/inputs/document.coffee +9 -25
  12. data/app/assets/javascripts/formagic/inputs/documents.coffee +11 -32
  13. data/app/assets/javascripts/formagic/inputs/documents_reorder.coffee +1 -12
  14. data/app/assets/javascripts/formagic/inputs/file.coffee +2 -22
  15. data/app/assets/javascripts/formagic/inputs/hash.coffee +1 -4
  16. data/app/assets/javascripts/formagic/inputs/hidden.coffee +2 -19
  17. data/app/assets/javascripts/formagic/inputs/html.coffee +2 -18
  18. data/app/assets/javascripts/formagic/inputs/image.coffee +3 -2
  19. data/app/assets/javascripts/formagic/inputs/list.coffee +2 -21
  20. data/app/assets/javascripts/formagic/inputs/list_reorder.coffee +1 -12
  21. data/app/assets/javascripts/formagic/inputs/list_typeahead.coffee +1 -13
  22. data/app/assets/javascripts/formagic/inputs/markdown.coffee +2 -18
  23. data/app/assets/javascripts/formagic/inputs/password.coffee +2 -14
  24. data/app/assets/javascripts/formagic/inputs/redactor.coffee +2 -18
  25. data/app/assets/javascripts/formagic/inputs/redactor_character.coffee +1 -13
  26. data/app/assets/javascripts/formagic/inputs/redactor_images.coffee +0 -13
  27. data/app/assets/javascripts/formagic/inputs/select.coffee +2 -21
  28. data/app/assets/javascripts/formagic/inputs/select2.coffee +0 -13
  29. data/app/assets/javascripts/formagic/inputs/select2_multiple.coffee +90 -0
  30. data/app/assets/javascripts/formagic/inputs/select2_single.coffee +57 -0
  31. data/app/assets/javascripts/formagic/inputs/string.coffee +13 -34
  32. data/app/assets/javascripts/formagic/inputs/text.coffee +2 -13
  33. data/app/assets/javascripts/formagic/inputs/url.coffee +3 -12
  34. data/app/assets/stylesheets/formagic.scss +2 -0
  35. data/app/assets/stylesheets/formagic/actions.scss +9 -0
  36. data/app/assets/stylesheets/formagic/form.scss +16 -24
  37. data/app/assets/stylesheets/formagic/nested-form.scss +3 -9
  38. data/app/assets/stylesheets/formagic/select.scss +24 -5
  39. data/app/assets/stylesheets/formagic/url.scss +5 -0
  40. data/lib/formagic/version.rb +1 -1
  41. metadata +6 -2
@@ -1,11 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT FILE
11
6
  # -----------------------------------------------------------------------------
@@ -24,13 +19,11 @@ class @InputFile extends InputString
24
19
 
25
20
  return this
26
21
 
27
-
28
- # PRIVATE ===============================================
22
+ # PRIVATE ===================================================================
29
23
 
30
24
  _create_el: ->
31
25
  @$el =$ "<div class='form-input input-#{ @config.type } input-#{ @config.klassName }'>"
32
26
 
33
-
34
27
  _add_input: ->
35
28
  @$link =$ "<a href='#' target='_blank' title=''></a>"
36
29
  @$el.append(@$link)
@@ -41,7 +34,6 @@ class @InputFile extends InputString
41
34
  @_add_clear_button()
42
35
  @_add_remove_checkbox()
43
36
 
44
-
45
37
  _add_clear_button: ->
46
38
  @$clearButton =$ "<a href='#' class='input-file-clear'></a>"
47
39
  @$input.after @$clearButton
@@ -57,7 +49,6 @@ class @InputFile extends InputString
57
49
  @$input.on 'change', (e) =>
58
50
  @$clearButton.show()
59
51
 
60
-
61
52
  _add_remove_checkbox: ->
62
53
  removeInputName = @removeName()
63
54
  @$removeLabel =$ "<label for='#{ removeInputName }'>Remove</label>"
@@ -67,11 +58,9 @@ class @InputFile extends InputString
67
58
  @$link.after(@$removeInput)
68
59
  @$link.after(@$hiddenRemoveInput)
69
60
 
70
-
71
61
  _update_inputs: ->
72
62
  @$link.html(@filename).attr('title', @filename).attr('href', @value.url)
73
63
 
74
-
75
64
  _update_state: (@filename=null) ->
76
65
  @$input.val('')
77
66
  @$removeInput.prop('checked', false)
@@ -88,30 +77,21 @@ class @InputFile extends InputString
88
77
  @$el.addClass('empty')
89
78
  @$clearButton.hide()
90
79
 
91
-
92
- # PUBLIC ================================================
80
+ # PUBLIC ====================================================================
93
81
 
94
82
  # when no file uploaded and no file selected, send remove flag so
95
83
  # carrierwave does not catch _old_ value
96
84
  isEmpty: ->
97
85
  ( ! @$input.get()[0].files[0] && ! @filename )
98
86
 
99
-
100
87
  removeName: ->
101
88
  @name.reverse().replace('[', '[remove_'.reverse()).reverse()
102
89
 
103
-
104
90
  updateValue: (@value, @object) ->
105
91
  @_update_state()
106
92
 
107
-
108
93
  hash: (hash={})->
109
94
  # @TODO: file input type does not support caching and versioning as of now
110
95
  return hash
111
96
 
112
-
113
97
  chr.formInputs['file'] = InputFile
114
-
115
-
116
-
117
-
@@ -1,14 +1,11 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- # -----------------------------------------------------------------------------
5
-
6
4
  # -----------------------------------------------------------------------------
7
5
  # INPUT HASH
8
6
  # -----------------------------------------------------------------------------
9
- # TODO: add description
7
+ # Allows to work with hash fields in nested forms way.
10
8
  # -----------------------------------------------------------------------------
11
-
12
9
  class @InputHash extends InputDocument
13
10
 
14
11
  _create_el: ->
@@ -1,11 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT HIDDEN
11
6
  # -----------------------------------------------------------------------------
@@ -15,43 +10,31 @@ class @InputHidden
15
10
 
16
11
  return this
17
12
 
18
-
19
- # PRIVATE ===============================================
13
+ # PRIVATE ===================================================================
20
14
 
21
15
  _create_el: ->
22
16
  @$el =$ "<input type='hidden' name='#{ @name }' value='#{ @_safe_value() }' />"
23
17
 
24
-
25
18
  _safe_value: ->
26
19
  if typeof(@value) == 'object'
27
20
  return JSON.stringify(@value)
28
21
  else
29
22
  _escapeHtml(@value)
30
23
 
31
-
32
- # PUBLIC ================================================
24
+ # PUBLIC ====================================================================
33
25
 
34
26
  showErrorMessage: (message) -> ;
35
27
 
36
-
37
28
  hideErrorMessage: -> ;
38
29
 
39
-
40
30
  initialize: ->
41
31
  @config.onInitialize?(this)
42
32
 
43
-
44
33
  hash: (hash={}) ->
45
34
  hash[@config.klassName] = @$el.val()
46
35
  return hash
47
36
 
48
-
49
37
  updateValue: (@value) ->
50
38
  @$el.val(@value)
51
39
 
52
-
53
40
  chr.formInputs['hidden'] = InputHidden
54
-
55
-
56
-
57
-
@@ -1,15 +1,9 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT HTML
11
6
  # -----------------------------------------------------------------------------
12
- #
13
7
  # Config options:
14
8
  # label - Input label
15
9
  # aceOptions - Custom options for overriding default ones
@@ -20,12 +14,10 @@
20
14
  # Dependencies:
21
15
  #= require vendor/ace
22
16
  #= require vendor/mode-html
23
- #
24
17
  # -----------------------------------------------------------------------------
25
-
26
18
  class @InputHtml extends InputString
27
19
 
28
- # PRIVATE ===============================================
20
+ # PRIVATE ===================================================================
29
21
 
30
22
  _add_input: ->
31
23
  @$input =$ "<input type='hidden' name='#{ @name }' value='#{ @_safe_value() }' />"
@@ -34,14 +26,12 @@ class @InputHtml extends InputString
34
26
  @$editor =$ "<div></div>"
35
27
  @$el.append @$editor
36
28
 
37
-
38
29
  _update_inputs: ->
39
30
  @value = @editor.getSession().getValue()
40
31
  @$input.val(@value)
41
32
  @$input.trigger('change')
42
33
 
43
-
44
- # PUBLIC ================================================
34
+ # PUBLIC ====================================================================
45
35
 
46
36
  initialize: ->
47
37
  @config.beforeInitialize?(this)
@@ -69,14 +59,8 @@ class @InputHtml extends InputString
69
59
 
70
60
  @config.onInitialize?(this)
71
61
 
72
-
73
62
  updateValue: (@value) ->
74
63
  @editor.getSession().setValue(@value)
75
64
  @$input.val(@value)
76
65
 
77
-
78
66
  chr.formInputs['html'] = InputHtml
79
-
80
-
81
-
82
-
@@ -1,4 +1,7 @@
1
1
  # -----------------------------------------------------------------------------
2
+ # Author: Alexander Kravets <alex@slatestudio.com>,
3
+ # Slate Studio (http://www.slatestudio.com)
4
+ # -----------------------------------------------------------------------------
2
5
  # INPUT FILE IMAGE
3
6
  # -----------------------------------------------------------------------------
4
7
  # Config options:
@@ -18,11 +21,9 @@ class @InputFileImage extends InputFile
18
21
  @_add_clear_button()
19
22
  @_add_remove_checkbox()
20
23
 
21
-
22
24
  _update_inputs: ->
23
25
  @$link.html(@filename).attr('title', @filename).attr('href', @value.url)
24
26
  image_thumb_url = if @config.thumbnail then @config.thumbnail(@object) else @value.url
25
27
  @$thumb.attr('src', image_thumb_url).attr('alt', @filename)
26
28
 
27
-
28
29
  chr.formInputs['image'] = InputFileImage
@@ -1,11 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT LIST
11
6
  # -----------------------------------------------------------------------------
@@ -17,12 +12,10 @@
17
12
  # Dependencies:
18
13
  #= require ./list_reorder
19
14
  #= require ./list_typeahead
20
- #
21
15
  # -----------------------------------------------------------------------------
22
-
23
16
  class @InputList extends InputString
24
17
 
25
- # PRIVATE ===============================================
18
+ # PRIVATE ===================================================================
26
19
 
27
20
  _add_input: ->
28
21
  # @TODO: check if we can use @config.name instead of @config.target
@@ -47,7 +40,6 @@ class @InputList extends InputString
47
40
  @_render_items()
48
41
  @_update_input_value()
49
42
 
50
-
51
43
  _update_input_value: ->
52
44
  ids = []
53
45
  @$items.children('li').each (i, el) -> ids.push $(el).attr('data-id')
@@ -57,7 +49,6 @@ class @InputList extends InputString
57
49
  @$input.val(value)
58
50
  @$input.trigger('change')
59
51
 
60
-
61
52
  _remove_item: ($el) ->
62
53
  id = $el.attr('data-id')
63
54
  delete @objects[id]
@@ -65,13 +56,11 @@ class @InputList extends InputString
65
56
  $el.parent().remove()
66
57
  @_update_input_value()
67
58
 
68
-
69
59
  _ordered_ids: ->
70
60
  ids = @$input.val().split(',')
71
61
  if ids[0] == '' then ids = []
72
62
  return ids
73
63
 
74
-
75
64
  _render_items: ->
76
65
  @$items.html('')
77
66
  @objects = {}
@@ -79,7 +68,6 @@ class @InputList extends InputString
79
68
  for o in @value
80
69
  @_render_item(o)
81
70
 
82
-
83
71
  _render_item: (o) ->
84
72
  @_add_object(o)
85
73
 
@@ -99,18 +87,15 @@ class @InputList extends InputString
99
87
  @$items.append(listItem)
100
88
  @_update_input_value()
101
89
 
102
-
103
90
  _add_object: (o) ->
104
91
  @_normalize_object(o)
105
92
  @objects[o._id] = o
106
93
 
107
-
108
94
  _normalize_object: (o) ->
109
95
  o._id ?= o.id
110
96
  if ! o._id then console.log("::: list item is missing an 'id' or '_id' :::")
111
97
 
112
-
113
- # PUBLIC ================================================
98
+ # PUBLIC ====================================================================
114
99
 
115
100
  initialize: ->
116
101
  @config.beforeInitialize?(this)
@@ -127,11 +112,9 @@ class @InputList extends InputString
127
112
 
128
113
  @config.onInitialize?(this)
129
114
 
130
-
131
115
  updateValue: (@value) ->
132
116
  @_render_items()
133
117
 
134
-
135
118
  hash: (hash={}) ->
136
119
  hash[@config.target] = @$input.val()
137
120
  ordered_objects = []
@@ -142,9 +125,7 @@ class @InputList extends InputString
142
125
  hash[@config.klassName] = ordered_objects
143
126
  return hash
144
127
 
145
-
146
128
  include(InputList, inputListReorder)
147
129
  include(InputList, inputListTypeahead)
148
130
 
149
-
150
131
  chr.formInputs['list'] = InputList
@@ -1,18 +1,11 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT LIST REORDER
11
6
  # -----------------------------------------------------------------------------
12
-
13
7
  @inputListReorder =
14
-
15
- # PRIVATE ===============================================
8
+ # PRIVATE ===================================================================
16
9
 
17
10
  _bind_reorder: ->
18
11
  list = @$items.get(0)
@@ -33,7 +26,3 @@
33
26
  @_update_input_value()
34
27
  return false
35
28
  ), false
36
-
37
-
38
-
39
-
@@ -1,25 +1,17 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT LIST TYPEAHEAD
11
6
  # -----------------------------------------------------------------------------
12
-
13
7
  @inputListTypeahead =
14
-
15
- # PRIVATE ===============================================
8
+ # PRIVATE ===================================================================
16
9
 
17
10
  _create_typeahead_el: (placeholder) ->
18
11
  # typeahead input for adding new items
19
12
  @typeaheadInput =$ "<input type='text' placeholder='#{ placeholder }' />"
20
13
  @$el.append @typeaheadInput
21
14
 
22
-
23
15
  _bind_typeahead: ->
24
16
  limit = @config.typeahead.limit || 5
25
17
  dataSource = new Bloodhound
@@ -49,7 +41,3 @@
49
41
  @typeaheadInput.on 'typeahead:selected', (e, object, dataset) =>
50
42
  @_render_item(object)
51
43
  @typeaheadInput.typeahead('val', '')
52
-
53
-
54
-
55
-
@@ -1,11 +1,6 @@
1
1
  # -----------------------------------------------------------------------------
2
2
  # Author: Alexander Kravets <alex@slatestudio.com>,
3
3
  # Slate Studio (http://www.slatestudio.com)
4
- #
5
- # Coding Guide:
6
- # https://github.com/thoughtbot/guides/tree/master/style/coffeescript
7
- # -----------------------------------------------------------------------------
8
-
9
4
  # -----------------------------------------------------------------------------
10
5
  # INPUT MARKDOWN
11
6
  # -----------------------------------------------------------------------------
@@ -23,12 +18,9 @@
23
18
  #= require vendor/marked
24
19
  #= require vendor/ace
25
20
  #= require vendor/mode-markdown
26
- #
27
21
  # -----------------------------------------------------------------------------
28
-
29
22
  class @InputMarkdown extends InputString
30
-
31
- # PRIVATE ===============================================
23
+ # PRIVATE ===================================================================
32
24
 
33
25
  _add_input: ->
34
26
  if @config.htmlFieldName
@@ -43,7 +35,6 @@ class @InputMarkdown extends InputString
43
35
  @$editor =$ "<div></div>"
44
36
  @$el.append @$editor
45
37
 
46
-
47
38
  _update_inputs: ->
48
39
  md_source = @session.getValue()
49
40
  @$input.val(md_source)
@@ -54,8 +45,7 @@ class @InputMarkdown extends InputString
54
45
  @$inputHtml.val(html)
55
46
  @$inputHtml.trigger('change')
56
47
 
57
-
58
- # PUBLIC ================================================
48
+ # PUBLIC ====================================================================
59
49
 
60
50
  initialize: ->
61
51
  @config.beforeInitialize?(this)
@@ -84,19 +74,13 @@ class @InputMarkdown extends InputString
84
74
 
85
75
  @config.onInitialize?(this)
86
76
 
87
-
88
77
  updateValue: (@value) ->
89
78
  @session.setValue(@value)
90
79
  @_update_inputs()
91
80
 
92
-
93
81
  hash: (hash={}) ->
94
82
  hash[@config.htmlFieldName] = @$inputHtml.val()
95
83
  hash[@config.klassName] = @$input.val()
96
84
  return hash
97
85
 
98
86
  chr.formInputs['markdown'] = InputMarkdown
99
-
100
-
101
-
102
-