ui_bibz 2.1.6 → 2.2.0

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 (33) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +19 -10
  3. data/app/assets/javascripts/interface.coffee +8 -0
  4. data/app/assets/javascripts/ui_bibz.coffee.erb +3 -0
  5. data/app/assets/stylesheets/fix_addon.sass +2 -2
  6. data/lib/ui_bibz.rb +8 -0
  7. data/lib/ui_bibz/helpers/ui/core/forms_helper.rb +35 -0
  8. data/lib/ui_bibz/infos.rb +2 -2
  9. data/lib/ui_bibz/inputs/ui_bibz_inputs/ui_box_switch_field_input.rb +18 -0
  10. data/lib/ui_bibz/inputs/ui_bibz_inputs/ui_file_field_input.rb +10 -0
  11. data/lib/ui_bibz/inputs/ui_bibz_inputs/ui_range_field_input.rb +10 -0
  12. data/lib/ui_bibz/inputs/ui_bibz_inputs/ui_switch_field_input.rb +5 -1
  13. data/lib/ui_bibz/ui/core/component.rb +4 -0
  14. data/lib/ui_bibz/ui/core/forms/choices/box_switch_field.rb +141 -0
  15. data/lib/ui_bibz/ui/core/forms/choices/checkbox_field.rb +18 -27
  16. data/lib/ui_bibz/ui/core/forms/choices/radio_field.rb +15 -40
  17. data/lib/ui_bibz/ui/core/forms/choices/switch_field.rb +11 -95
  18. data/lib/ui_bibz/ui/core/forms/dates/date_picker_field.rb +25 -0
  19. data/lib/ui_bibz/ui/core/forms/dropdowns/dropdown.rb +5 -1
  20. data/lib/ui_bibz/ui/core/forms/files/file_field.rb +72 -0
  21. data/lib/ui_bibz/ui/core/forms/numbers/number_field.rb +15 -0
  22. data/lib/ui_bibz/ui/core/forms/numbers/range_field.rb +66 -0
  23. data/lib/ui_bibz/ui/core/forms/selects/multi_select_field.rb +9 -1
  24. data/lib/ui_bibz/ui/core/forms/texts/text_field.rb +3 -0
  25. data/test/simple_form_test.rb +33 -3
  26. data/test/ui/core/forms/choices/{switch_field_test.rb → box_switch_field_test.rb} +21 -21
  27. data/test/ui/core/forms/choices/checkbox_field_test.rb +1 -1
  28. data/test/ui/core/forms/choices/radio_field_test.rb +1 -1
  29. data/test/ui/core/forms/files/text_field_test.rb +11 -0
  30. data/test/ui/core/forms/numbers/number_field_test.rb +18 -0
  31. data/test/ui/core/forms/numbers/range_field_test.rb +18 -0
  32. data/vendor/assets/javascripts/bs-custom-file-input.min.js +7 -0
  33. metadata +19 -6
@@ -14,10 +14,12 @@ module UiBibz::Ui::Core::Forms::Choices
14
14
  #
15
15
  # You can add HTML attributes using the +html_options+.
16
16
  # You can pass arguments in options attribute:
17
- # * +value+ - String, Integer, Boolean [required]
18
- # * +status+ - status of élement with symbol value:
19
- # (+:default+, +:primary+, +:success+, +:info+, +:warning+, +:danger+)
20
- # * +type+ - Symbol (:circle)
17
+ # * +state+ - Symbol
18
+ # (+:active+, +:disabled+)
19
+ # * +inline+ - Boolean
20
+ # * +checked+ - Boolean
21
+ # * +action+ - String Stimulus Option
22
+ # * +label+ - String
21
23
  #
22
24
  # ==== Signatures
23
25
  #
@@ -37,9 +39,9 @@ module UiBibz::Ui::Core::Forms::Choices
37
39
  #
38
40
  # ==== Helper
39
41
  #
40
- # checkbox(content, options = {}, html_options = {})
42
+ # ui_checkbox_field(content, options = {}, html_options = {})
41
43
  #
42
- # checkbox(options = {}, html_options = {}) do
44
+ # ui_checkbox_field(options = {}, html_options = {}) do
43
45
  # content
44
46
  # end
45
47
  #
@@ -62,22 +64,23 @@ module UiBibz::Ui::Core::Forms::Choices
62
64
  content_tag(:div, html_options.except(:id, "data-action")) do
63
65
  concat hidden_field_tag content, '0', id: "#{ content }-hidden"
64
66
  concat check_box_tag content, options[:value] || '1', options[:checked] || html_options[:checked], checkbox_html_options
65
- concat label_tag label_name, label_content, label_html_options
67
+ concat label_tag label_name, label_content, class: 'custom-control-label'
66
68
  end
67
69
  end
68
70
 
69
71
  def checkbox_html_options
70
- { class: 'form-check-input', disabled: options[:state] == :disabled, "data-action": options[:action] }
72
+ {
73
+ disabled: is_disabled?,
74
+ indeterminate: options[:indeterminate],
75
+ "data-action": options[:action],
76
+ class: 'custom-control-input'
77
+ }
71
78
  end
72
79
 
73
80
  def label_name
74
81
  html_options[:id] || content
75
82
  end
76
83
 
77
- def label_html_options
78
- { class: join_classes("form-check-label", ("fix-label" if options[:label] == false)) }
79
- end
80
-
81
84
  def label_content
82
85
  case options[:label]
83
86
  when nil
@@ -89,24 +92,12 @@ module UiBibz::Ui::Core::Forms::Choices
89
92
  end
90
93
  end
91
94
 
92
- def status
93
- "abc-checkbox-#{ options[:status] || :default }"
94
- end
95
-
96
- def type
97
- "abc-checkbox-circle" unless options[:type].nil?
98
- end
99
-
100
- def indeterminate
101
- "indeterminate" unless options[:indeterminate].nil?
95
+ def component_html_classes
96
+ super << ["custom-control", "custom-checkbox", inline]
102
97
  end
103
98
 
104
99
  def inline
105
- "checkbox-inline" unless options[:inline].nil?
106
- end
107
-
108
- def component_html_classes
109
- super << ["form-check", "abc-checkbox", type, indeterminate, inline]
100
+ "custom-control-inline" if options[:inline]
110
101
  end
111
102
 
112
103
  end
@@ -15,9 +15,11 @@ module UiBibz::Ui::Core::Forms::Choices
15
15
  # You can add HTML attributes using the +html_options+.
16
16
  # You can pass arguments in options attribute:
17
17
  # * +value+ - String, Integer, Boolean [required]
18
- # * +status+ - status of élement with symbol value:
19
- # (+:default+, +:primary+, +:success+, +:info+, +:warning+, +:danger+)
20
- # * +type+ - Symbol (:radio, :checkbox)
18
+ # * +state+ - Symbol
19
+ # (+:active+, +:disabled+)
20
+ # * +inline+ - Boolean
21
+ # * +action+ - String Stimulus Option
22
+ # * +label+ - String
21
23
  #
22
24
  # ==== Signatures
23
25
  #
@@ -29,9 +31,9 @@ module UiBibz::Ui::Core::Forms::Choices
29
31
  #
30
32
  # ==== Examples
31
33
  #
32
- # UiBibz::Ui::Core::Forms::RadioField.new(content, { status: :success, type: :circle },{ class: 'test' }).render
34
+ # UiBibz::Ui::Core::Forms::RadioField.new(content, { inline: true },{ class: 'test' }).render
33
35
  #
34
- # UiBibz::Ui::Core::Forms::RadioField.new({ status: :primary }, { class: 'test' }) do
36
+ # UiBibz::Ui::Core::Forms::RadioField.new({ label: "My Radio" }, { class: 'test' }) do
35
37
  # content
36
38
  # end.render
37
39
  #
@@ -43,7 +45,7 @@ module UiBibz::Ui::Core::Forms::Choices
43
45
  # content
44
46
  # end
45
47
  #
46
- class RadioField < UiBibz::Ui::Core::Component
48
+ class RadioField < UiBibz::Ui::Core::Forms::Choices::CheckboxField
47
49
 
48
50
  # See UiBibz::Ui::Core::Component.initialize
49
51
  def initialize content = nil, options = nil, html_options = nil, &block
@@ -60,51 +62,24 @@ module UiBibz::Ui::Core::Forms::Choices
60
62
  def radio_field_html_tag
61
63
  content_tag :div, html_options.except(:id) do
62
64
  concat radio_button_tag content, options[:value], options[:checked] || false, checkbox_html_options
63
- concat label_tag label_name, label_content, label_html_options
65
+ concat label_tag label_name, label_content, class: 'custom-control-label'
64
66
  end
65
67
  end
66
68
 
67
69
  def checkbox_html_options
68
- { disabled: options[:state] == :disabled }
69
- end
70
-
71
- def label_html_options
72
- options[:label] == false ? { class: 'fix-label' } : nil
70
+ {
71
+ disabled: options[:state] == :disabled,
72
+ "data-action": options[:action],
73
+ class: 'custom-control-input'
74
+ }
73
75
  end
74
76
 
75
77
  def label_name
76
78
  "#{ content }_#{ options[:value] }"
77
79
  end
78
80
 
79
- def label_content
80
- case options[:label]
81
- when nil
82
- content
83
- when false
84
- " "
85
- else
86
- options[:label]
87
- end
88
- end
89
-
90
- def status
91
- "abc-#{ type }-#{ options[:status] || :default }"
92
- end
93
-
94
- def type
95
- if !options[:type].nil? && options[:type] == :square
96
- :checkbox
97
- else
98
- :radio
99
- end
100
- end
101
-
102
- def inline
103
- "#{ type }-inline" unless options[:inline].nil?
104
- end
105
-
106
81
  def component_html_classes
107
- [type, "abc-#{ type }", inline]
82
+ ["custom-control", "custom-radio", inline]
108
83
  end
109
84
 
110
85
  end
@@ -14,125 +14,41 @@ module UiBibz::Ui::Core::Forms::Choices
14
14
  #
15
15
  # You can add HTML attributes using the +html_options+.
16
16
  # You can pass arguments in options attribute:
17
- # * +state+ - String
18
- # * +animate+ - Boolean
19
- # * +on_color+ - String
20
- # * +off_color+ - String
21
- # * +on_text+ - String
22
- # * +off_text+ - String
23
- # * +label_text+ - String
24
- # * +readonly+ - Boolean
17
+ # * +state+ - Symbol
18
+ # (+:active+, +:disabled+)
19
+ # * +inline+ - Boolean
25
20
  # * +checked+ - Boolean
21
+ # * +action+ - String Stimulus Option
22
+ # * +label+ - String
26
23
  #
27
24
  # ==== Signatures
28
25
  #
29
- # UiBibz::Ui::Core::Forms::SwitchField.new(content, options = {}, html_options = {}).render
26
+ # UiBibz::Ui::Core::Forms::SwithField.new(content, options = {}, html_options = {}).render
30
27
  #
31
- # UiBibz::Ui::Core::Forms::SwitchField.new(options = {}, html_options = {}) do
28
+ # UiBibz::Ui::Core::Forms::SwithField.new(options = {}, html_options = {}) do
32
29
  # content
33
30
  # end.render
34
31
  #
35
32
  # ==== Examples
36
33
  #
37
- # switch_field 'name', { on_color: :primary }, { readonly: true }
34
+ # ui_switch_field 'name', checked: true
38
35
  #
39
36
  # ==== Helper
40
37
  #
41
- # switch_field(options = {}, html_options = {}) do
38
+ # ui_switch_field(options = {}, html_options = {}) do
42
39
  # # content
43
40
  # end
44
41
  #
45
- class SwitchField < UiBibz::Ui::Core::Component
42
+ class SwitchField < UiBibz::Ui::Core::Forms::Choices::CheckboxField
46
43
 
47
- # See UiBibz::Ui::Core::Component.initialize
48
44
  def initialize content = nil, options = nil, html_options = nil, &block
49
45
  super
50
46
  end
51
47
 
52
- # Render html tag
53
- def pre_render
54
- switch_field_html_tag
55
- end
56
-
57
48
  private
58
49
 
59
- def switch_field_html_tag
60
- content_tag :div, class: component_wrapper_html_classes do
61
- concat hidden_field_tag content, '0'
62
- concat check_box_tag content, '1', html_options[:checked], html_options
63
- end
64
- end
65
-
66
- def value
67
- options[:value]
68
- end
69
-
70
- def component_wrapper_html_classes
71
- join_classes('switch-field-container', inline)
72
- end
73
-
74
50
  def component_html_classes
75
- super << "switch-field"
76
- end
77
-
78
- def component_html_data
79
- super
80
- size
81
- state
82
- animate
83
- left_color
84
- right_color
85
- left_text
86
- right_text
87
- middle_text
88
- end
89
-
90
- # '', 'mini', 'small', 'normal', 'large'
91
- def size
92
- add_html_data('size', matching_size[options[:size]]) unless options[:size].nil?
93
- end
94
-
95
- def matching_size
96
- { sm: 'small', md: 'normal', lg: 'large' }
97
- end
98
-
99
- # true, false => default : true
100
- def animate
101
- add_html_data('animate', options.delete(:animate)) unless options[:animate].nil?
102
- end
103
-
104
- # active, disabled => default : active
105
- def state
106
- html_options[:disabled] = true if options[:state] == 'disabled'
107
- end
108
-
109
- # 'primary', 'info', 'success', 'warning', 'danger', 'default' => default : default
110
- def left_color
111
- add_html_data('on_color', options[:left_color]) unless options[:left_color].nil?
112
- end
113
-
114
- # 'primary', 'info', 'success', 'warning', 'danger', 'default' => default : default
115
- def right_color
116
- add_html_data('off_color', options[:right_color]) unless options[:right_color].nil?
117
- end
118
-
119
- # String => default : "ON"
120
- def left_text
121
- add_html_data('on_text', options[:left_text]) unless options[:left_text].nil?
122
- end
123
-
124
- # String => default : "OFF"
125
- def right_text
126
- add_html_data('off_text', options[:right_text]) unless options[:right_text].nil?
127
- end
128
-
129
- # String => default : '&nbsp;'
130
- def middle_text
131
- add_html_data('label_text', options[:middle_text]) unless options[:middle_text].nil?
132
- end
133
-
134
- def inline
135
- "btn-group" unless options[:inline].nil?
51
+ ["custom-control", "custom-switch", inline]
136
52
  end
137
53
 
138
54
  end
@@ -84,6 +84,9 @@ module UiBibz::Ui::Core::Forms::Dates
84
84
  days_of_week_disabled
85
85
  days_of_week_highlighted
86
86
  multiple
87
+ display_mode
88
+ display_mode_min
89
+ display_mode_max
87
90
  end
88
91
 
89
92
  def component_html_classes
@@ -134,6 +137,18 @@ module UiBibz::Ui::Core::Forms::Dates
134
137
  add_html_data("date_toggle_active", true)
135
138
  end
136
139
 
140
+ def display_mode
141
+ add_html_data("date_start_view", views[options[:display_mode]]) if options[:display_mode]
142
+ end
143
+
144
+ def display_mode_min
145
+ add_html_data("date_min_view_mode", views[options[:display_mode_min]]) if options[:display_mode_min]
146
+ end
147
+
148
+ def display_mode_max
149
+ add_html_data("date_max_view_mode", views[options[:display_mode_max]]) if options[:display_mode_max]
150
+ end
151
+
137
152
  def days_of_week_disabled
138
153
  add_html_data("date_days_of_week_disabled", [options[:days_of_week_disabled]].flatten) if options[:days_of_week_disabled]
139
154
  end
@@ -155,5 +170,15 @@ module UiBibz::Ui::Core::Forms::Dates
155
170
  "has-#{ options[:status] }" if options[:status]
156
171
  end
157
172
 
173
+ def views
174
+ {
175
+ days: 0,
176
+ months: 1,
177
+ years: 2,
178
+ decades: 3,
179
+ centuries: 4
180
+ }
181
+ end
182
+
158
183
  end
159
184
  end
@@ -111,7 +111,7 @@ module UiBibz::Ui::Core::Forms::Dropdowns
111
111
  protected
112
112
 
113
113
  def component_html_classes
114
- [type, open, inline, without_caret]
114
+ [type, open, inline, without_caret, keep_open]
115
115
  end
116
116
 
117
117
  def button_content
@@ -146,6 +146,10 @@ module UiBibz::Ui::Core::Forms::Dropdowns
146
146
  "show" if @options[:open]
147
147
  end
148
148
 
149
+ def keep_open
150
+ "keep-open" if @options[:keep_open]
151
+ end
152
+
149
153
  def inline
150
154
  "btn-group" if @options[:inline]
151
155
  end
@@ -0,0 +1,72 @@
1
+ module UiBibz::Ui::Core::Forms::Files
2
+
3
+ # Create a FileField
4
+ #
5
+ # This element is an extend of UiBibz::Ui::Core::Component.
6
+ #
7
+ # ==== Attributes
8
+ #
9
+ # * +content+ - Content of element
10
+ # * +options+ - Options of element
11
+ # * +html_options+ - Html Options of element
12
+ #
13
+ # ==== Options
14
+ #
15
+ # You can add HTML attributes using the +html_options+.
16
+ # You can pass arguments in options attribute:
17
+ # * +state+ - Symbol
18
+ # (+:active+, +:disabled+)
19
+ #
20
+ # ==== Signatures
21
+ #
22
+ # UiBibz::Ui::Core::Forms::Texts::FileField.new(content, options = {}, html_options = {}).render
23
+ #
24
+ # UiBibz::Ui::Core::Forms::Texts::FileField.new(options = {}, html_options = {}) do
25
+ # content
26
+ # end.render
27
+ #
28
+ # ==== Examples
29
+ #
30
+ # UiBibz::Ui::Core::Forms::Texts::FileField.new('upload', class: 'test')
31
+ #
32
+ # UiBibz::Ui::Core::Forms::Texts::FileField.new(class: 'test') do
33
+ # #content
34
+ # end
35
+ #
36
+ # ==== Helper
37
+ #
38
+ # ui_file_field(options = {}, html_options = {}) do
39
+ # # content
40
+ # end
41
+ #
42
+ class FileField < UiBibz::Ui::Core::Component
43
+
44
+ # See UiBibz::Ui::Core::Component.initialize
45
+ def initialize content = nil, options = nil, html_options = nil, &block
46
+ super
47
+ end
48
+
49
+ # Render html tag
50
+ def pre_render
51
+ content_tag :div, html_options do
52
+ concat file_field_tag content, class: "custom-file-input" , multiple: options[:multiple], disabled: is_disabled?
53
+ concat label_tag label_name, label_content, class: 'custom-file-label'
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ def label_name
60
+ html_options[:id] || content
61
+ end
62
+
63
+ def label_content
64
+ options[:value] || ''
65
+ end
66
+
67
+ def component_html_classes
68
+ super << "custom-file"
69
+ end
70
+
71
+ end
72
+ end