formular 0.2.1 → 0.2.2

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +5 -4
  3. data/CHANGELOG.md +29 -2
  4. data/README.md +5 -4
  5. data/formular.gemspec +1 -1
  6. data/lib/formular/attributes.rb +10 -21
  7. data/lib/formular/builders/basic.rb +4 -3
  8. data/lib/formular/builders/bootstrap3.rb +2 -1
  9. data/lib/formular/builders/bootstrap4.rb +4 -4
  10. data/lib/formular/element.rb +54 -23
  11. data/lib/formular/element/bootstrap3.rb +40 -8
  12. data/lib/formular/element/bootstrap3/checkable_control.rb +5 -8
  13. data/lib/formular/element/bootstrap3/horizontal.rb +7 -7
  14. data/lib/formular/element/bootstrap3/input_group.rb +2 -2
  15. data/lib/formular/element/bootstrap4.rb +17 -8
  16. data/lib/formular/element/bootstrap4/checkable_control.rb +5 -4
  17. data/lib/formular/element/bootstrap4/custom_control.rb +8 -4
  18. data/lib/formular/element/bootstrap4/horizontal.rb +3 -3
  19. data/lib/formular/element/bootstrap4/input_group.rb +12 -0
  20. data/lib/formular/element/foundation6.rb +5 -5
  21. data/lib/formular/element/foundation6/checkable_control.rb +2 -4
  22. data/lib/formular/element/foundation6/input_group.rb +2 -2
  23. data/lib/formular/element/foundation6/{wrapped_control.rb → wrapped.rb} +4 -4
  24. data/lib/formular/element/modules/checkable.rb +10 -11
  25. data/lib/formular/element/modules/control.rb +12 -4
  26. data/lib/formular/element/modules/error.rb +6 -1
  27. data/lib/formular/element/modules/escape_value.rb +14 -0
  28. data/lib/formular/element/modules/hint.rb +5 -3
  29. data/lib/formular/element/modules/label.rb +5 -2
  30. data/lib/formular/element/modules/{wrapped_control.rb → wrapped.rb} +14 -13
  31. data/lib/formular/elements.rb +62 -19
  32. data/lib/formular/helper.rb +18 -4
  33. data/lib/formular/html_block.rb +1 -1
  34. data/lib/formular/html_escape.rb +19 -0
  35. data/lib/formular/path.rb +1 -6
  36. data/lib/formular/version.rb +1 -1
  37. metadata +16 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c0a80c5927dbbece4b4e9a888d51497a4b03fb4d
4
- data.tar.gz: 0598fe40cccca15f3e0542c5b77a47a89907e5f4
3
+ metadata.gz: e07c2e8826a8660e76871f7c8796643f2ce14af6
4
+ data.tar.gz: 5d890ae78955fe7e751c441eb52ef817d73822e1
5
5
  SHA512:
6
- metadata.gz: baa976452c932d62cb3fc78ef2db818016695abb6e2a6b8084c24c42592a702ab39fd86fc2f0fed26b70bb28a03dfcaf9dae71c08618583c230121defb047fb0
7
- data.tar.gz: bd365b3219770eaf4628cea94447ff9cb596b9aca07fb5f30b89a0f5d9f5ab92ce30844934e975250136afd31e0b0a3860a506df1dd947e2cade309288223d12
6
+ metadata.gz: 66b87984f1027e268b7af86abb863c40f3f55b0c7bbbe1c973ad98b27a200d34961b5c8113fd2fa1c7311cd691be10140c2bc3c28d202008217b07937691c86f
7
+ data.tar.gz: c1f1f2f559011007f56f9f3d3c7efebf87716c11c921f5cf039384d37db7867ee58ea5657fd9c9676a3cc4e729d1a8ea7646a4fadab9bc21a1e24c07044ce4ab
@@ -7,17 +7,18 @@ script:
7
7
  rvm:
8
8
  - 2.0
9
9
  - 2.1.10
10
- - 2.2.5
11
- - 2.3.1
10
+ - 2.2.7
11
+ - 2.3.4
12
+ - 2.4.1
12
13
  - rbx-2
13
- - jruby-9.1.1.0
14
+ - jruby-9.1.13.0
14
15
  - ruby-head
15
16
  env:
16
17
  global:
17
18
  - JRUBY_OPTS='--dev -J-Xmx1024M'
18
19
  matrix:
19
20
  allow_failures:
20
- - rvm: jruby-9.1.1.0
21
+ - rvm: jruby-9.1.13.0
21
22
  - rvm: rbx-2
22
23
  - rvm: ruby-head
23
24
  - rvm: jruby-head
@@ -1,3 +1,31 @@
1
+ # Master
2
+
3
+ # v0.2.2 2017-09-13
4
+
5
+ ### Added
6
+
7
+ * Select elements prompt and include_blank options now operate the same way as simple form
8
+ * added procces_option to the Element API
9
+ * Checkboxes now support `checked_value` option as an alias of `value`. Same as SimpleForm.
10
+ * you can now set your own builders as the default in the helper
11
+
12
+ ### Fixed
13
+
14
+ * Escape html (controls, labels errors hints) (fixes #29)
15
+ * setting a default builder in the helper now actually works!
16
+ * Select elements appends array signifier (`[]`) to element name attribute when `multiple: true` (fixes #40)
17
+ * options should always override default values, even when nil. (fixes #39)
18
+
19
+ ### Internal
20
+
21
+ * element#options now includes both elements and html attributes
22
+ * elements#attributes only includes html attributes and can't be mutated. Change element#options instead
23
+ * elements#normalize_options no longer tries to use the default value if an option is present
24
+ * added a module for html_escape
25
+ * renamed WrappedControl module to Wrapped and stopped including control
26
+ * changes the order of default_hash to better respect inheritance ordering
27
+ * provide an element module for easily escaping html values
28
+
1
29
  # v0.2.1 2016-09-29
2
30
 
3
31
  ### Fixed
@@ -5,7 +33,6 @@
5
33
  * Correctly require declarative heritage for Formular::Element::Module - (@fran-worley)
6
34
  * Update readme & include example gemgem links - (@fran-worley)
7
35
 
8
-
9
36
  # v0.2.0 2016-09-27
10
37
 
11
- First public release
38
+ First public release
data/README.md CHANGED
@@ -60,9 +60,10 @@ Our basic builder ships with the following elements:
60
60
  We also provide builders for Twitter Bootstrap (v.3&4) and Zurb's Foundation (v.6)
61
61
 
62
62
  To help you get started we've got some example Sinatra apps so you can see Formular in action:
63
- [Bootstrap3 (slim)](https://github.com/fran-worley/gemgem-sinatra/tree/formular-slim-bootstrap3)
64
- [Bootstrap4 (slim)](https://github.com/fran-worley/gemgem-sinatra/tree/formular-slim-bootstrap4)
65
- Foundation6 (slim)
63
+
64
+ * [Bootstrap3 (slim)](https://github.com/fran-worley/gemgem-sinatra/blob/formular-slim-bootstrap3/concepts/post/view/new.slim)
65
+ * [Bootstrap4 (slim)](https://github.com/fran-worley/gemgem-sinatra/blob/formular-slim-bootstrap4/concepts/post/view/new.slim)
66
+ * Foundation6 (slim)
66
67
 
67
68
  Formular's API docs and information on how to extend it will be found on the [Trailblazer project page](http://trailblazer.to/gems/formular) once the page has been added 😉.
68
69
 
@@ -75,7 +76,7 @@ Formular's API docs and information on how to extend it will be found on the [Tr
75
76
 
76
77
  ## Limitations
77
78
 
78
- * Currently, nested hashes aren't suffixed with `_attributes`, as it's usually done in ActiveRecord.
79
+ * Nested hashes aren't suffixed with active records `_attributes`.
79
80
  * Capturing only works with Slim and Hamlit. A 'blockless' API is provided to enable use in ERB but watch this space as improvements are coming for ERB
80
81
 
81
82
  ## Installation
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_dependency "declarative", '~> 0.0.4'
22
- spec.add_dependency "uber", "~> 0.0.11"
22
+ spec.add_dependency "uber", ">= 0.0.11", "< 0.2.0"
23
23
 
24
24
  spec.add_development_dependency "bundler"
25
25
  spec.add_development_dependency "rake", "~> 10.0"
@@ -5,32 +5,17 @@ module Formular
5
5
  super
6
6
  end
7
7
 
8
- def merge(hash)
9
- dup.merge!(hash)
10
- end
11
-
12
- def merge!(hash)
13
- classes = self[:class]
14
- new_classes = hash[:class]
15
- return super unless classes && new_classes
16
-
17
- hash[:class] += classes
18
- super
19
- end
20
-
21
8
  # converts the hash into a string k1=v1 k2=v2
22
9
  # replaces underscores with - so we can use regular keys
23
- # allows one layer of nestedhashes so we can define data options as a hash.
10
+ # allows one layer of nested hashes so we can define data options as a hash.
24
11
  def to_html
25
- map do |key,val|
26
- if val.is_a?(Hash)
27
- val.map do |k,v|
28
- %(#{key_to_attr_name(key)}-#{key_to_attr_name(k)}="#{val_to_string(v)}")
29
- end.join(" ")
12
+ map { |key, value|
13
+ if value.is_a?(Hash)
14
+ value.map { |k,v| %(#{key_to_attr_name(key)}-#{attribute_html(k, v)}) }.join(' ')
30
15
  else
31
- %(#{key_to_attr_name(key)}="#{val_to_string(val)}")
16
+ attribute_html(key, value)
32
17
  end
33
- end.join(" ")
18
+ }.join(' ')
34
19
  end
35
20
 
36
21
  private
@@ -41,5 +26,9 @@ module Formular
41
26
  def val_to_string(value)
42
27
  value.is_a?(Array) ? value.join(' ') : value
43
28
  end
29
+
30
+ def attribute_html(key, value)
31
+ %(#{key_to_attr_name(key)}="#{val_to_string(value)}")
32
+ end
44
33
  end # class Attributes
45
34
  end # module Formular
@@ -28,13 +28,14 @@ module Formular
28
28
  error_wrapper: Formular::Element::Div
29
29
  )
30
30
 
31
- def initialize(model: nil, path_prefix: nil, errors: nil, elements: {})
31
+ def initialize(model: nil, path_prefix: nil, errors: nil, values: nil, elements: {})
32
32
  @model = model
33
33
  @path_prefix = path_prefix
34
34
  @errors = errors || (model ? model.errors : {})
35
+ @values = values || {}
35
36
  super(elements)
36
37
  end
37
- attr_reader :model, :errors
38
+ attr_reader :model, :errors, :values
38
39
 
39
40
  def collection(name, models: nil, builder: nil, &block)
40
41
  models ||= model ? model.send(name) : []
@@ -57,7 +58,7 @@ module Formular
57
58
  end
58
59
 
59
60
  def reader_value(name)
60
- model ? model.send(name) : nil
61
+ model ? model.send(name) : values[name.to_sym]
61
62
  end
62
63
  end # class Basic
63
64
  end # module Builders
@@ -21,7 +21,8 @@ module Formular
21
21
  wrapper: Formular::Element::Bootstrap3::Wrapper,
22
22
  error_wrapper: Formular::Element::Bootstrap3::ErrorWrapper,
23
23
  submit: Formular::Element::Bootstrap3::Submit,
24
- row: Formular::Element::Bootstrap3::Row
24
+ row: Formular::Element::Bootstrap3::Row,
25
+ icon: Formular::Element::Bootstrap3::Icon
25
26
  )
26
27
  end # class Bootstrap3
27
28
  end # module Builders
@@ -1,7 +1,7 @@
1
1
  require 'formular/builders/basic'
2
2
  require 'formular/element/bootstrap4'
3
3
  require 'formular/element/bootstrap3'
4
- require 'formular/element/bootstrap3/input_group'
4
+ require 'formular/element/bootstrap4/input_group'
5
5
 
6
6
  module Formular
7
7
  module Builders
@@ -11,10 +11,10 @@ module Formular
11
11
  error: Formular::Element::Bootstrap4::Error,
12
12
  hint: Formular::Element::Bootstrap4::Hint,
13
13
  input: Formular::Element::Bootstrap4::Input,
14
- input_group: Formular::Element::Bootstrap3::InputGroup,
14
+ input_group: Formular::Element::Bootstrap4::InputGroup,
15
15
  checkbox: Formular::Element::Bootstrap4::StackedCheckbox,
16
16
  radio: Formular::Element::Bootstrap4::StackedRadio,
17
- select: Formular::Element::Bootstrap3::Select,
17
+ select: Formular::Element::Bootstrap4::Select,
18
18
  custom_select: Formular::Element::Bootstrap4::CustomSelect,
19
19
  custom_file: Formular::Element::Bootstrap4::CustomFile,
20
20
  custom_radio: Formular::Element::Bootstrap4::Inline::CustomRadio,
@@ -25,7 +25,7 @@ module Formular
25
25
  inline_checkbox: Formular::Element::Bootstrap4::InlineCheckbox,
26
26
  label: Formular::Element::Label,
27
27
  checkable_group_label: Formular::Element::Legend,
28
- textarea: Formular::Element::Bootstrap3::Textarea,
28
+ textarea: Formular::Element::Bootstrap4::Textarea,
29
29
  wrapper: Formular::Element::Bootstrap4::Wrapper,
30
30
  error_wrapper: Formular::Element::Bootstrap4::ErrorWrapper,
31
31
  submit: Formular::Element::Bootstrap4::Submit,
@@ -13,10 +13,12 @@ module Formular
13
13
  inheritable_attr :html_context
14
14
  inheritable_attr :html_blocks
15
15
  inheritable_attr :default_hash
16
+ inheritable_attr :processing_hash
16
17
  inheritable_attr :option_keys
17
18
  inheritable_attr :tag_name
18
19
 
19
20
  self.default_hash = {}
21
+ self.processing_hash = {}
20
22
  self.html_blocks = {}
21
23
  self.html_context = :default
22
24
  self.option_keys = []
@@ -24,10 +26,21 @@ module Formular
24
26
  # set the default value of an option or attribute
25
27
  # you can make this conditional by providing a condition
26
28
  # e.g. if: :some_method or unless: :some_method
29
+ # to respect the order defaults are declared, rather than overriting existing defaults
30
+ # we should delete the existing and create a new k/v pair
27
31
  def self.set_default(key, value, condition = {})
32
+ self.default_hash.delete(key) # attempt to delete an existing key
28
33
  self.default_hash[key] = { value: value, condition: condition }
29
34
  end
30
35
 
36
+ # process an option value (i.e. escape html)
37
+ # This occurs after the value has been set (either by default or by user input)
38
+ # you can make this conditional by providing a condition
39
+ # e.g. if: :some_method or unless: :some_method
40
+ def self.process_option(key, processor, condition = {})
41
+ self.processing_hash[key] = { processor: processor, condition: condition }
42
+ end
43
+
31
44
  # define what your html should look like
32
45
  # this block is executed in the context of an HtmlBlock instance
33
46
  def self.html(context = :default, &block)
@@ -63,12 +76,19 @@ module Formular
63
76
 
64
77
  def initialize(**options, &block)
65
78
  @builder = options.delete(:builder)
66
- normalize_attributes(options)
79
+ @options = options
80
+ normalize_options
81
+ process_options
67
82
  @block = block
68
83
  @tag = self.class.tag_name
69
84
  @html_blocks = define_html_blocks
70
85
  end
71
- attr_reader :tag, :html_blocks, :builder, :attributes, :options
86
+ attr_reader :tag, :html_blocks, :builder, :options
87
+
88
+ def attributes
89
+ attrs = @options.select { |k, v| @options[k] || true unless option_key?(k) }
90
+ Attributes[attrs]
91
+ end
72
92
 
73
93
  def to_html(context: nil)
74
94
  context ||= self.class.html_context
@@ -84,32 +104,43 @@ module Formular
84
104
  end
85
105
  end
86
106
 
87
- # we split the options hash between options and attributes
88
- # based on the option_keys defined on the class
89
- # we then get the default_hash from the class
90
- # and merge with the user options and attributes
91
- def normalize_attributes(**options)
92
- @attributes = Attributes[options]
93
- @options = @attributes.select { |k, v| @attributes.delete(k) || true if option_key?(k) }
94
- merge_default_hash
95
- end
96
-
97
- # Take each default value and merge it with attributes && options.
107
+ # Options passed into our element instance (@options) take precident over class level defaults
108
+ # Take each default value and merge it with options.
98
109
  # This way ordering is important and we can access values as they are evaluated
99
- def merge_default_hash
100
- self.class.default_hash.each do |k, v|
101
- next unless evaluate_option_condition?(v[:condition])
110
+ def normalize_options
111
+ self.class.default_hash.each do |key, hash|
112
+ should_merge = key.to_s.include?('class') && !options[key].nil?
113
+
114
+ next if options.has_key?(key) && !should_merge
102
115
 
103
- val = Uber::Options::Value.new(v[:value]).evaluate(self)
116
+ # if our default is conditional and the condition evaluates to false then skip
117
+ next unless evaluate_option_condition?(hash[:condition])
104
118
 
119
+ val = Uber::Options::Value.new(hash[:value]).evaluate(self)
120
+
121
+ # if our default value is nil then skip
105
122
  next if val.nil?
106
123
 
107
- if option_key?(k)
108
- @options[k] = val if @options[k].nil?
109
- else
110
- # make sure that we merge classes, not override them
111
- k == :class && !@attributes[k].nil? ? @attributes[k] += val : @attributes[k] ||= val
112
- end
124
+ # otherwise perform the actual merge, classes get joined, otherwise we overwrite
125
+ should_merge ? @options[key] += val : @options[key] = val
126
+ end
127
+ end
128
+
129
+ # Options passed into our element instance (@options) take precident over class level defaults
130
+ # Take each default value and merge it with options.
131
+ # This way ordering is important and we can access values as they are evaluated
132
+ def process_options
133
+ self.class.processing_hash.each do |key, hash|
134
+ # we can't process if our option is nil
135
+ next if options[key].nil?
136
+ # don't process if our condition is false
137
+ next unless evaluate_option_condition?(hash[:condition])
138
+
139
+ # get our value
140
+ val = self.send(hash[:processor], options[key]) # TODO enable procs and blocks
141
+
142
+ # set our value
143
+ @options[key] = val
113
144
  end
114
145
  end
115
146
 
@@ -1,6 +1,6 @@
1
1
  require 'formular/element'
2
2
  require 'formular/elements'
3
- require 'formular/element/modules/wrapped_control'
3
+ require 'formular/element/modules/wrapped'
4
4
  require 'formular/element/module'
5
5
  require 'formular/element/bootstrap3/checkable_control'
6
6
  require 'formular/element/bootstrap3/column_control'
@@ -13,6 +13,39 @@ module Formular
13
13
  Label = Class.new(Formular::Element::Label) { set_default :class, ['control-label'] }
14
14
  Row = Class.new(Formular::Element::Div) { set_default :class, ['row'] }
15
15
 
16
+ class Icon < Formular::Element::Span
17
+ add_option_keys :name
18
+ set_default :class, :icon_class
19
+
20
+ #returns the class of the bootstrap Glyphicons
21
+ #accepts the string or symbolized name of the glyphicon (see list below for available options)
22
+ #asterisk, plus, euro, minus, cloud, envelope, pencil, glass, music, search, heart, star, star-empty,
23
+ #user, film, th-large, th, th-list, ok, remove, zoom-in, zoom-out, off, signal, cog, trash, home, file,
24
+ #time, road, download-alt, download, upload, inbox, play-circle, repeat, refresh, list-alt, lock,
25
+ #flag, headphones, volume-off, volume-down, volume-up, qrcode, barcode, tag, tags, book, bookmark,
26
+ #print, camera, font, bold, italic, text-height, text-width, align-left, align-center, align-right,
27
+ #align-justify, list, indent-left, indent-right, facetime-video, picture, map-marker, adjust,
28
+ #tint, edit, share, check, move, step-backward, fast-backward, backward, play, pause, stop, forward,
29
+ #fast-forward, step-forward, eject, chevron-left, chevron-right, plus-sign, minus-sign, remove-sign,
30
+ #ok-sign, question-sign, info-sign, screenshot, remove-circle, ok-circle, ban-circle, arrow-left,
31
+ #arrow-right, arrow-up, arrow-down, share-alt, resize-full, resize-small, exclamation-sign, gift, leaf,
32
+ #fire, eye-open, eye-close, warning-sign, plane, calendar, random, comment, magnet, chevron-up,
33
+ #chevron-down, retweet, shopping-cart, folder-close, folder-open, resize-vertical, resize-horizontal,
34
+ #hdd, bullhorn, bell, certificate, thumbs-up, thumbs-down, hand-right, hand-left, hand-up, hand-down,
35
+ #circle-arrow-right, circle-arrow-left, circle-arrow-up, circle-arrow-down, globe, wrench, tasks,
36
+ #filter, briefcase, fullscreen, dashboard, paperclip, heart-empty, link, phone, pushpin, usd, gbp,
37
+ #sort, sort-by-alphabet, sort-by-alphabet-alt, sort-by-order, sort-by-order-alt, sort-by-attributes,
38
+ #sort-by-attributes-alt, unchecked, expand, collapse-down, collapse-up, log-in, flash, log-out, new-window,
39
+ #record, save, open, saved, import, export, send, floppy-disk, floppy-saved, floppy-remove, floppy-save,
40
+ #floppy-open, credit-card, transfer, cutlery, header, compressed, earphone, phone-alt, tower, stats,
41
+ #sd-video, hd-video, subtitles, sound-stereo, sound-dolby, sound-5-1, sound-6-1, sound-7-1,
42
+ #copyright-mark, registration-mark, cloud-download, cloud-upload, tree-conifer, tree-deciduous
43
+ def icon_class
44
+ icon_name = options[:name].to_s.gsub("_","-")
45
+ %(glyphicon glyphicon-#{icon_name})
46
+ end
47
+ end
48
+
16
49
  class Submit < Formular::Element::Button
17
50
  set_default :class, ['btn', 'btn-default']
18
51
  set_default :type, 'submit'
@@ -21,7 +54,6 @@ module Formular
21
54
  class ErrorNotification < Formular::Element::ErrorNotification
22
55
  set_default :class, ['alert alert-danger']
23
56
  set_default :role, 'alert'
24
-
25
57
  end
26
58
 
27
59
  class Error < Formular::Element::Error
@@ -34,25 +66,25 @@ module Formular
34
66
  end # class Hint
35
67
 
36
68
  class Input < Formular::Element::Input
37
- include Formular::Element::Modules::WrappedControl
69
+ include Formular::Element::Modules::Wrapped
38
70
  include Formular::Element::Bootstrap3::ColumnControl
39
71
 
40
- set_default :class, ['form-control'], unless: :file_input?
72
+ set_default :class, :input_class
41
73
 
42
- def file_input?
43
- attributes[:type] == 'file'
74
+ def input_class
75
+ 'form-control' unless options[:type].to_s == 'file'
44
76
  end
45
77
  end # class Input
46
78
 
47
79
  class Select < Formular::Element::Select
48
- include Formular::Element::Modules::WrappedControl
80
+ include Formular::Element::Modules::Wrapped
49
81
  include Formular::Element::Bootstrap3::ColumnControl
50
82
 
51
83
  set_default :class, ['form-control']
52
84
  end # class Select
53
85
 
54
86
  class Textarea < Formular::Element::Textarea
55
- include Formular::Element::Modules::WrappedControl
87
+ include Formular::Element::Modules::Wrapped
56
88
  include Formular::Element::Bootstrap3::ColumnControl
57
89
 
58
90
  set_default :class, ['form-control']
@@ -1,5 +1,5 @@
1
1
  require 'formular/elements'
2
- require 'formular/element/modules/wrapped_control'
2
+ require 'formular/element/modules/wrapped'
3
3
  require 'formular/element/module'
4
4
 
5
5
  module Formular
@@ -26,7 +26,7 @@ module Formular
26
26
  end # class InlineCheckable
27
27
 
28
28
  class InlineRadio < Formular::Element::Radio
29
- include Formular::Element::Modules::WrappedControl
29
+ include Formular::Element::Modules::Wrapped
30
30
  include InlineCheckable
31
31
 
32
32
  add_option_keys :control_label_options
@@ -38,11 +38,10 @@ module Formular
38
38
  end# class InlineRadio
39
39
 
40
40
  class InlineCheckbox < Formular::Element::Checkbox
41
- include Formular::Element::Modules::WrappedControl
41
+ include Formular::Element::Modules::Wrapped
42
42
  include InlineCheckable
43
43
 
44
44
  set_default :control_label_options, { class: ['checkbox-inline'] }
45
- set_default :value, '1' # instead of reader value
46
45
 
47
46
  html { closed_start_tag }
48
47
  end # class InlineCheckbox
@@ -75,11 +74,9 @@ module Formular
75
74
  end # module StackedCheckable
76
75
 
77
76
  class Checkbox < Formular::Element::Checkbox
78
- include Formular::Element::Modules::WrappedControl
77
+ include Formular::Element::Modules::Wrapped
79
78
  include StackedCheckable
80
79
 
81
- set_default :value, '1' # instead of reader value
82
-
83
80
  html { closed_start_tag }
84
81
 
85
82
  def inner_wrapper_class
@@ -88,7 +85,7 @@ module Formular
88
85
  end # class Checkbox
89
86
 
90
87
  class Radio < Formular::Element::Radio
91
- include Formular::Element::Modules::WrappedControl
88
+ include Formular::Element::Modules::Wrapped
92
89
  include StackedCheckable
93
90
 
94
91
  def inner_wrapper_class