ui_bibz 2.0.0.alpha28 → 2.0.0.alpha29

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -1
  3. data/Gemfile.lock +5 -3
  4. data/app/assets/javascripts/form.coffee +16 -54
  5. data/app/assets/javascripts/input-connected.coffee +39 -15
  6. data/app/assets/javascripts/table.coffee +3 -2
  7. data/app/assets/stylesheets/fix-dropdown-select.sass +6 -0
  8. data/app/assets/stylesheets/ui_bibz.sass +3 -3
  9. data/app/inputs/custom_inputs/{autocomplete_input.rb → auto_complete_field_input.rb} +2 -2
  10. data/app/inputs/custom_inputs/{dropdown_select_input.rb → collection_input.rb} +19 -12
  11. data/app/inputs/custom_inputs/{date_picker_input.rb → date_picker_field_input.rb} +1 -1
  12. data/app/inputs/custom_inputs/dropdown_select_field_input.rb +9 -0
  13. data/app/inputs/custom_inputs/{formula_input.rb → formula_field_input.rb} +1 -1
  14. data/app/inputs/custom_inputs/{markdown_editor_input.rb → markdown_editor_field_input.rb} +1 -1
  15. data/app/inputs/custom_inputs/{multi_column_input.rb → multi_column_field_input.rb} +1 -1
  16. data/app/inputs/custom_inputs/multi_select_field_input.rb +9 -0
  17. data/app/inputs/custom_inputs/{radios_input.rb → radio_field_input.rb} +1 -1
  18. data/app/inputs/custom_inputs/select_field_input.rb +8 -0
  19. data/app/inputs/custom_inputs/{surround_input.rb → surround_field_input.rb} +1 -1
  20. data/app/inputs/custom_inputs/{switch_input.rb → switch_field_input.rb} +1 -1
  21. data/lib/ui_bibz/concerns/models/searchable.rb +6 -1
  22. data/lib/ui_bibz/helpers/ui_core_helper.rb +2 -2
  23. data/lib/ui_bibz/ui/core/component.rb +0 -1
  24. data/lib/ui_bibz/ui/core/connected_component.rb +80 -0
  25. data/lib/ui_bibz/ui/core/forms/buttons/button.rb +1 -1
  26. data/lib/ui_bibz/ui/core/forms/buttons/button_refresh.rb +3 -3
  27. data/lib/ui_bibz/ui/core/forms/choices/switch_field.rb +1 -1
  28. data/lib/ui_bibz/ui/core/forms/numbers/formula_field.rb +5 -5
  29. data/lib/ui_bibz/ui/core/forms/selects/dropdown_select_field.rb +12 -21
  30. data/lib/ui_bibz/ui/core/forms/selects/multi_column_field.rb +8 -3
  31. data/lib/ui_bibz/ui/core/forms/selects/multi_select_field.rb +7 -12
  32. data/lib/ui_bibz/ui/core/forms/selects/select_field.rb +11 -10
  33. data/lib/ui_bibz/ui/core/forms/texts/{autocomplete_field.rb → auto_complete_field.rb} +30 -8
  34. data/lib/ui_bibz/ui/ux/tables/extensions/paginable.rb +2 -2
  35. data/lib/ui_bibz/ui/ux/tables/extensions/searchable.rb +1 -1
  36. data/lib/ui_bibz/ui/ux/tables/extensions/sortable.rb +4 -2
  37. data/lib/ui_bibz/ui/ux/tables/table_card.rb +3 -3
  38. data/lib/ui_bibz/ui/ux/tables/table_pagination.rb +5 -1
  39. data/lib/ui_bibz/ui/ux/tables/table_pagination_per_page.rb +3 -3
  40. data/lib/ui_bibz/ui/ux/tables/table_search_field.rb +6 -4
  41. data/lib/ui_bibz/version.rb +1 -1
  42. data/lib/ui_bibz.rb +2 -1
  43. data/test/dummy/app/models/continent.rb +3 -0
  44. data/test/dummy/app/models/country.rb +3 -0
  45. data/test/dummy/db/migrate/20170309084406_continents.rb +9 -0
  46. data/test/dummy/db/migrate/20170309084453_countries.rb +10 -0
  47. data/test/dummy/db/schema.rb +15 -3
  48. data/test/simple_form_test.rb +98 -36
  49. data/test/ui/core/forms/choices/switch_field_test.rb +10 -10
  50. data/test/ui/core/forms/numbers/formula_field_test.rb +1 -1
  51. data/test/ui/core/forms/selects/dropdown_select_field_test.rb +10 -10
  52. data/test/ui/core/forms/selects/multi_column_field_test.rb +2 -2
  53. data/test/ui/core/forms/selects/multi_select_field_test.rb +3 -3
  54. data/test/ui/core/forms/selects/select_field_test.rb +1 -1
  55. data/test/ui/core/forms/texts/auto_complete_field_test.rb +23 -0
  56. data/test/ui/ux/tables/table_test.rb +5 -5
  57. metadata +26 -16
  58. data/app/inputs/custom_inputs/multi_select_input.rb +0 -15
  59. data/app/inputs/custom_inputs/select_input.rb +0 -15
  60. data/test/ui/core/forms/texts/autocomplete_field_test.rb +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 87cacb8d8195be40dd87fb7c98dea34e21d46504
4
- data.tar.gz: 9e4ec75e0689f6e6684b37347c1778733cc6205a
3
+ metadata.gz: eba8735c72e14ff037beabdc38c39cdca776757f
4
+ data.tar.gz: a1fa0ddb5be8b7056ab83e32258249ccf49bed1c
5
5
  SHA512:
6
- metadata.gz: 7978cf0ba0599e40319ee265823262d610c5c129a430f6baf5806d640e3be09ab4ffa8325c82d0ec7ce48d345cf1ad078bae4e2b045f333e51e6e6557681f505
7
- data.tar.gz: bbaf9a314e70ccfcf5ada6429e864ae316a2515d2a336a19f761c0efdbfa00b09d7ae5acb54fddce75ca67aee13494d3fc0e2297a467e8e8a09b67e3374a0029
6
+ metadata.gz: dd839687955389dd26fe3a3e355ff4d7803ecff01982d2f83fd0eaf99bcb8517ea3facc18bdd88c716656f010dc2cdbe5508102162f7b5780cb88fcbe157e84b
7
+ data.tar.gz: 4710b15b4581678be50bb53b0efb12db286676b1b15baafb5c39eff30161d0989105712ae83650529bf0e258f506ae9c6a660a513140c8fc0ad32be06a230554
data/Gemfile CHANGED
@@ -19,4 +19,5 @@ gemspec
19
19
 
20
20
  # To use a debugger
21
21
  #gem 'byebug', group: [:development, :test]
22
- gem 'simple_form', group: :test
22
+ gem 'simple_form', group: [:test, :development]
23
+ gem 'awesome_print', group: [:test, :development]
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ui_bibz (2.0.0.alpha28)
4
+ ui_bibz (2.0.0.alpha29)
5
5
  bootstrap (= 4.0.0.alpha5)
6
6
  font-awesome-sass
7
7
  haml
@@ -53,13 +53,14 @@ GEM
53
53
  minitest (~> 5.1)
54
54
  tzinfo (~> 1.1)
55
55
  arel (7.1.4)
56
- autoprefixer-rails (6.7.6)
56
+ autoprefixer-rails (6.7.7)
57
57
  execjs
58
+ awesome_print (1.7.0)
58
59
  bootstrap (4.0.0.alpha5)
59
60
  autoprefixer-rails (>= 6.0.3)
60
61
  sass (>= 3.4.19)
61
62
  builder (3.2.3)
62
- codeclimate-test-reporter (1.0.6)
63
+ codeclimate-test-reporter (1.0.7)
63
64
  simplecov
64
65
  concurrent-ruby (1.0.5)
65
66
  docile (1.1.5)
@@ -172,6 +173,7 @@ PLATFORMS
172
173
  ruby
173
174
 
174
175
  DEPENDENCIES
176
+ awesome_print
175
177
  codeclimate-test-reporter
176
178
  factory_girl_rails (~> 4.0)
177
179
  minitest
@@ -1,36 +1,37 @@
1
1
  @UiBibzForm = class Form
2
2
 
3
3
  constructor: ->
4
- @switch() if $('input.switch').length > 0
5
- @inputConnected()
6
- @selectPicker() if $('select.selectpicker').length > 0
7
- @multiSelect() if $('.multi-select').length > 0
8
- @multiColumn() if $('.multi-column').length > 0
9
- @formula() if $('.formula_field_input').length > 0
4
+ @switch() if $('input.switch-field').length > 0
5
+ @inputConnected() if $('.ui-bibz-connect').length > 0
6
+ @selectPicker() if $('.dropdown-select-field').length > 0
7
+ @multiSelect() if $('.multi-select-field').length > 0
8
+ @multiColumn() if $('.multi-column-field').length > 0
9
+ @formula() if $('.formula-field').length > 0
10
10
 
11
11
  inputConnected: ->
12
12
  $('.ui-bibz-connect').inputConnected()
13
13
 
14
14
  selectPicker: ->
15
- $('select.selectpicker').selectpicker
15
+ $('select.dropdown-select-field').selectpicker
16
16
  iconBase: 'fa'
17
17
  tickIcon: 'fa-check'
18
18
  style: 'btn-secondary'
19
+ showTick: false
19
20
 
20
21
  switch: ->
21
- $('input.switch').bootstrapSwitch({ size: 'large' })
22
+ $('input.switch-field').bootstrapSwitch({ size: 'large' })
22
23
 
23
24
  multiSelect: ->
24
25
  # http://loudev.com/
25
- $('.multi-select').each ->
26
+ $('.multi-select-field').each ->
26
27
  data = $(this).data()
27
28
  delete data["multiselect"]
28
- data = Object.assign({ inheritClass: true }, data)
29
+ data = Object.assign({ buttonClass: 'btn btn-secondary', inheritClass: true }, data)
29
30
  $(this).multiselect(data)
30
31
 
31
32
  formula: ->
32
33
  me = this
33
- formula_input_field = $('.formula_field_input')
34
+ formula_input_field = $('.formula-field')
34
35
  me.updateFormulaField(formula_input_field)
35
36
 
36
37
  formula_input_field.on 'keyup', ->
@@ -38,9 +39,9 @@
38
39
 
39
40
  updateFormulaField: (field) ->
40
41
  formulaInputField = field
41
- formulaSignField = formulaInputField.siblings('.formula_field_sign')
42
- formulaResultField = formulaInputField.siblings('.formula_field_result')
43
- formulaAlert = formulaInputField.siblings('.formula_field_alert')
42
+ formulaSignField = formulaInputField.siblings('.formula-field-sign')
43
+ formulaResultField = formulaInputField.siblings('.formula-field-result')
44
+ formulaAlert = formulaInputField.siblings('.formula-field-alert')
44
45
 
45
46
  f = new window.UiBibzFormula()
46
47
  result = f.go(formulaInputField.val())
@@ -66,43 +67,4 @@
66
67
  formulaInputField.removeClass('fix-border-right')
67
68
 
68
69
  multiColumn: ->
69
- $(".multi-column").multiSelect()
70
- # $('.multi-column').each ->
71
- # data = $(this).data()
72
- # delete data["multiselect"]
73
- # if data["searchable"]
74
- # $(this).multiSelect
75
- # selectableOptgroup: if data["selectableOptgroup"] then true else false
76
- # selectableHeader: "<input type='text' class='search-input form-control' autocomplete='off' placeholder='Search in selectable items'><br/>"
77
- # selectionHeader: "<input type='text' class='search-input form-control' autocomplete='off' placeholder='Search in selected items'><br/>"
78
- # afterInit: (ms) ->
79
- # that = this
80
- # $selectableSearch = that.$selectableUl.siblings('input')
81
- # $selectionSearch = that.$selectionUl.siblings('input')
82
- # $selectionSearch = that.$selectionUl.siblings('input')
83
- # selectableSearchString = "#" + that.$container.attr("id") + " .ms-elem-selectable:not(.ms-selected)"
84
- # selectionSearchString = "#" + that.$container.attr("id") + " .ms-elem-selection.ms-selected"
85
-
86
- # that.qs1 = $selectableSearch.quicksearch(selectableSearchString).on("keydown", (e) ->
87
- # if e.which is 40
88
- # that.$selectableUl.focus()
89
- # false
90
- # )
91
- # that.qs2 = $selectionSearch.quicksearch(selectionSearchString).on("keydown", (e) ->
92
- # if e.which is 40
93
- # that.$selectionUl.focus()
94
- # false
95
- # )
96
- # return
97
-
98
- # afterSelect: ->
99
- # @qs1.cache()
100
- # @qs2.cache()
101
- # return
102
-
103
- # afterDeselect: ->
104
- # @qs1.cache()
105
- # @qs2.cache()
106
- # return
107
- # else
108
- # $(this).multiSelect(data)
70
+ $(".multi-column-field").multiSelect()
@@ -1,25 +1,46 @@
1
1
  (($) ->
2
2
 
3
3
  updateOptionsHtml = (data, componentTarget) ->
4
- componentTarget.children('option').remove()
4
+ componentTarget.children('option:not([value=""])').remove()
5
+
6
+ if Array.isArray(data)
7
+ appendToElement(data, componentTarget)
8
+ else
9
+ $.each data, (k,v) ->
10
+ updateOptionsHtml(data, componentTarget)
11
+ optgroup = $("<optgroup></optgroup>").attr("label", k)
12
+ appendToElement(v, optgroup)
13
+ componentTarget.append(optgroup)
14
+
15
+ appendToElement = (data, element) ->
5
16
  data.forEach (opt) ->
6
- componentTarget.append($("<option></option>").attr("value", opt.value).text(opt.text))
17
+ element.append($("<option></option>").attr("value", opt.value).text(opt.text))
7
18
 
8
- updateTargetComponent = (data, componentTarget) ->
19
+ updateTargetComponent = (data, componentTarget, component) ->
9
20
  updateOptionsHtml(data, componentTarget)
10
- componentTarget.multiSelect('refresh') if componentTarget.hasClass('multi-column')
11
- componentTarget.selectpicker('refresh') if componentTarget.hasClass('selectpicker')
12
- componentTarget.multiselect('rebuild') if componentTarget.hasClass('multi-select')
21
+ updateTargetRefreshButton(componentTarget, component)
22
+ componentTarget.multiSelect('refresh') if componentTarget.hasClass('multi-column-field')
23
+ componentTarget.selectpicker('refresh') if componentTarget.hasClass('dropdown-select-field')
24
+ componentTarget.multiselect('rebuild') if componentTarget.hasClass('multi-select-field')
25
+ componentTarget.change()
26
+
27
+ updateTargetRefreshButton = (componentTarget, component) ->
28
+ if hasRefreshButton(componentTarget)
29
+ refreshBtn = componentTarget.parents('.input-group').find('.input-refresh-button')
30
+ refreshBtn.attr('value', component.val()).attr('name', component.attr('name'))
31
+
32
+ hasRefreshButton = (component) ->
33
+ component.parents('.input-group').hasClass('field-refresh')
13
34
 
14
35
  $.fn.inputConnected = (options) ->
15
36
 
16
37
  defaults =
17
- mode: "remote"
18
- events: "change" # change, click, ...
38
+ mode: "remote" # String: remote || local
39
+ events: "change" # String: change, click, ...
19
40
  target:
20
- url: null # url for remote connection
21
- selector: null # component target id
22
- data: [] # data for local connection
41
+ url: null # String: url for remote connection
42
+ selector: null # String: component target id or class
43
+ data: [] # Array : data for local connection
23
44
  # Add a proxy
24
45
  # Proxy:
25
46
  # url: null
@@ -46,13 +67,16 @@
46
67
 
47
68
  component.on events, (e) ->
48
69
  e.preventDefault()
49
- componentTarget.empty()
50
70
  values = component.val()
51
71
 
72
+ name = component.attr('name')
73
+ name = if name? then name.replace(' ', '_').split('[')[0] else "id"
74
+ name = if Array.isArray(values) then "#{ name }s" else name
75
+
52
76
  if mode == "remote"
53
- params = if Array.isArray(values) then { ids: values } else { id: values }
77
+ params = { "#{ name }": values }
54
78
  $.ajax({ url: target.url, data: params }).done (data) ->
55
- updateTargetComponent(data, componentTarget)
79
+ updateTargetComponent(data, componentTarget, component)
56
80
 
57
81
  if mode == "local"
58
82
  data = target.data || settings.target.data
@@ -60,6 +84,6 @@
60
84
  values = [].concat.apply([], [values]) # flatten
61
85
  return values.includes(String(value.connect_option_id))
62
86
 
63
- updateTargetComponent(data, componentTarget)
87
+ updateTargetComponent(data, componentTarget, component)
64
88
 
65
89
  )(jQuery)
@@ -10,12 +10,13 @@
10
10
  # Submit form when per_page select changing
11
11
  submitPerPageSelect: ->
12
12
  $('.table-pagination-per-page select').change () ->
13
+ $(this).parents('form').find('input[name=link_type]').val('per_page')
13
14
  $(this).parents('form').submit()
14
15
 
15
16
  # Clear search
16
17
  clearSearch: ->
17
- $('.table-search-field .clear-search-btn').click () ->
18
- $(this).prev().val('')
18
+ $('.clear-search-btn').click () ->
19
+ $(this).parents('form').find('input[type=search]').val('')
19
20
  $(this).parents('form').submit()
20
21
 
21
22
  # Resize search field
@@ -240,3 +240,9 @@ div.bootstrap-select
240
240
  .hidden
241
241
  display: none
242
242
 
243
+ .field-refresh
244
+ .input-refresh-button
245
+ padding: 0.62rem 1rem
246
+
247
+ .multiselect-container > li > a > label
248
+ padding: 3px 1.5rem
@@ -71,10 +71,9 @@ select.form-control
71
71
  border-bottom-right-radius: 0 !important
72
72
  border-top-right-radius: 0 !important
73
73
  width: 100%
74
- .formula_field_sign
74
+ .formula-field-sign
75
75
  width: auto
76
76
  min-width: 16px
77
- padding: 4px 5px
78
77
  font-weight: 400
79
78
  line-height: 1.42857143
80
79
  text-align: center
@@ -83,13 +82,14 @@ select.form-control
83
82
  background-color: #eee
84
83
  border: solid #ccc
85
84
  border-width: 1px 0
85
+ padding: 0.5rem 0.75rem
86
86
  margin-left: -5px
87
87
  margin-right: -5px
88
88
  border-left: none
89
89
  border-right: none
90
90
  .form-control[readonly]
91
91
  background-color: white
92
- .formula_field_alert, .formula_field_result, .formula_field_sign
92
+ .formula-field_alert, .formula-field-result, .formula-field-sign
93
93
  display: none
94
94
 
95
95
  .select-field-refresh
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class AutocompleteInput < SimpleForm::Inputs::CollectionInput
2
+ class AutoCompleteFieldInput < SimpleForm::Inputs::CollectionInput
3
3
  include UiBibz::Ui::Core::Forms::Texts
4
4
  include ActionView::Helpers::FormOptionsHelper
5
5
 
@@ -9,7 +9,7 @@ module CustomInputs
9
9
  options = options.merge({ builder: @builder })
10
10
  options = options.merge(option_tags: options_from_collection_for_select(collection, label_method, label_method))
11
11
 
12
- UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new(attribute_name, options, input_html_options).render
12
+ UiBibz::Ui::Core::Forms::Texts::AutoCompleteField.new(attribute_name, options, input_html_options).render
13
13
  end
14
14
  end
15
15
  end
@@ -1,23 +1,30 @@
1
1
  module CustomInputs
2
- class DropdownSelectInput < SimpleForm::Inputs::CollectionInput
2
+ class CollectionInput < SimpleForm::Inputs::CollectionInput
3
3
  include UiBibz::Ui::Core::Forms::Selects
4
+ include ActionView::Helpers::FormOptionsHelper
5
+
6
+ def input_html_options
7
+ opts = super
8
+ opts = opts.merge({ prompt: options[:prompt] }) unless options[:prompt].blank?
9
+ opts = opts.merge({ disabled: options[:disabled] }) unless options[:disabled].blank?
10
+ opts = opts.merge({ include_blank: options[:include_blank] }) unless options[:include_blank].blank?
11
+ opts = opts.merge({ multiple: options[:multiple] }) unless options[:multiple].blank?
12
+ opts
13
+ end
4
14
 
5
- def input(wrapper_options)
15
+ def new_options
6
16
  label_method, value_method = detect_collection_methods
7
- i = UiBibz::Ui::Core::Forms::Selects::DropdownSelectField.new(attribute_name, options, input_html_options)
8
-
9
17
  if options[:grouped] == true
10
- @builder.grouped_collection_select(
11
- attribute_name, grouped_collection,
18
+ options.merge({ option_tags: option_groups_from_collection_for_select(
19
+ grouped_collection,
12
20
  group_method, group_label_method,
13
21
  value_method, label_method,
14
- input_options, i.html_options
15
- )
22
+ input_options
23
+ )})
16
24
  else
17
- @builder.collection_select(
18
- attribute_name, collection, value_method, label_method,
19
- input_options, i.html_options
20
- )
25
+ options.merge({ option_tags: options_from_collection_for_select(
26
+ collection, value_method, label_method, input_options
27
+ )})
21
28
  end
22
29
  end
23
30
 
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class DatePickerInput < SimpleForm::Inputs::StringInput
2
+ class DatePickerFieldInput < SimpleForm::Inputs::StringInput
3
3
  include UiBibz::Ui::Core::Forms::Dates
4
4
 
5
5
  def input(wrapper_options)
@@ -0,0 +1,9 @@
1
+ module CustomInputs
2
+ class DropdownSelectFieldInput < CollectionInput
3
+
4
+ def input(wrapper_options)
5
+ UiBibz::Ui::Core::Forms::Selects::DropdownSelectField.new(attribute_name, new_options, input_html_options).render
6
+ end
7
+
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class FormulaInput < SimpleForm::Inputs::StringInput
2
+ class FormulaFieldInput < SimpleForm::Inputs::StringInput
3
3
  include UiBibz::Ui::Core::Forms::Numbers
4
4
 
5
5
  def input(wrapper_options)
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class MarkdownEditorInput < SimpleForm::Inputs::StringInput
2
+ class MarkdownEditorFieldInput < SimpleForm::Inputs::StringInput
3
3
  include UiBibz::Ui::Core::Forms::Textareas
4
4
 
5
5
  def input(wrapper_options)
@@ -1,6 +1,6 @@
1
1
  module CustomInputs
2
2
  # multi_column_input manages collection and grouped_collection
3
- class MultiColumnInput < SimpleForm::Inputs::CollectionInput
3
+ class MultiColumnFieldInput < SimpleForm::Inputs::CollectionInput
4
4
  include UiBibz::Ui::Core::Forms::Selects
5
5
 
6
6
  def input(wrapper_options)
@@ -0,0 +1,9 @@
1
+ module CustomInputs
2
+ class MultiSelectFieldInput < CollectionInput
3
+
4
+ def input(wrapper_options)
5
+ UiBibz::Ui::Core::Forms::Selects::MultiSelectField.new(attribute_name, new_options, input_html_options).render
6
+ end
7
+
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class RadiosInput < SimpleForm::Inputs::CollectionRadioButtonsInput
2
+ class RadioFieldInput < SimpleForm::Inputs::CollectionRadioButtonsInput
3
3
  include UiBibz::Ui::Core::Forms::Choices
4
4
 
5
5
  def input(wrapper_options)
@@ -0,0 +1,8 @@
1
+ module CustomInputs
2
+ class SelectFieldInput < CollectionInput
3
+
4
+ def input(wrapper_options)
5
+ UiBibz::Ui::Core::Forms::Selects::SelectField.new(attribute_name, new_options, input_html_options).render
6
+ end
7
+ end
8
+ end
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class SurroundInput < SimpleForm::Inputs::StringInput
2
+ class SurroundFieldInput < SimpleForm::Inputs::StringInput
3
3
  include UiBibz::Ui::Core::Forms::Texts
4
4
 
5
5
  def input(wrapper_options)
@@ -1,5 +1,5 @@
1
1
  module CustomInputs
2
- class SwitchInput < SimpleForm::Inputs::Base
2
+ class SwitchFieldInput < SimpleForm::Inputs::Base
3
3
  include UiBibz::Ui::Core::Forms::Choices
4
4
 
5
5
  def input(wrapper_options)
@@ -42,13 +42,14 @@ module UiBibz::Concerns::Models::Searchable
42
42
  @tmp_params = {
43
43
  search: @params[:search],
44
44
  per_page: @params[:per_page],
45
- page: @params[:page],
45
+ page: self.new_search? ? nil : @params[:page],
46
46
  sort: @params[:sort],
47
47
  direction: @params[:direction]
48
48
  }
49
49
  end
50
50
  end
51
51
 
52
+
52
53
  def self.search
53
54
  sql = all
54
55
  column_args = get_column_args
@@ -146,6 +147,10 @@ module UiBibz::Concerns::Models::Searchable
146
147
  def self.is_good_store_id?
147
148
  @arguments[:store_id] == @params[:store_id]
148
149
  end
150
+
151
+ def self.new_search?
152
+ @params[:link_type] == 'search'
153
+ end
149
154
  end
150
155
 
151
156
  module ClassMethods
@@ -174,8 +174,8 @@ module UiBibz::Helpers::UiCoreHelper
174
174
  #
175
175
  # +options+ (Hash)
176
176
  # +html_options+ (Hash)
177
- def autocomplete_field content = nil, options = nil, html_options = nil, &block
178
- UiBibz::Ui::Core::Forms::Texts::AutocompleteField.new(content, options, html_options, &block).render
177
+ def auto_complete_field content = nil, options = nil, html_options = nil, &block
178
+ UiBibz::Ui::Core::Forms::Texts::AutoCompleteField.new(content, options, html_options, &block).render
179
179
  end
180
180
 
181
181
  # Input section end ----------------------------------------------------
@@ -90,7 +90,6 @@ module UiBibz::Ui::Core
90
90
 
91
91
  # Override this method to add html data
92
92
  def component_html_data
93
- add_html_data('connect', options[:connect]) if options[:connect]
94
93
  end
95
94
 
96
95
  # Override this method to add html Options
@@ -0,0 +1,80 @@
1
+ module UiBibz::Ui::Core
2
+
3
+ # Creates a connected component of the given +name+ using options created by the set of +options+.
4
+ #
5
+ # ==== Attributes
6
+ #
7
+ # * +content+ - Content of element
8
+ # * +options+ - Options of element
9
+ # * +html_options+ - Html Options of element
10
+ #
11
+ # ==== Options
12
+ #
13
+ # You can add HTML attributes using the +html_options+.
14
+ # You can pass arguments in options attribute:
15
+ # * +status+ - status of élement with symbol value:
16
+ # (+:default+, +:primary+, +:info+, +:warning+, +:danger+)
17
+ # * +glyph+ - Add glyph with name or hash options
18
+ # * +name+ - String
19
+ # * +size+ - Integer
20
+ # * +type+ - Symbol
21
+ #
22
+ # ==== Signatures
23
+ #
24
+ # UiBibz::Ui::Core::Component.new(content, options = nil, html_options = nil)
25
+ #
26
+ # UiBibz::Ui::Core::Component.new(options = nil, html_options = nil) do
27
+ # content
28
+ # end
29
+ #
30
+ # ==== Examples
31
+ #
32
+ # UiBibz::Ui::Core::Component.new(content, { type: :success, glyph: 'eye' }, { class: 'test' })
33
+ # # or
34
+ # UiBibz::Ui::Core::Component.new({glyph: { name: 'eye', size: 3}, { class: 'test' }) do
35
+ # content
36
+ # end
37
+ #
38
+ class ConnectedComponent < Component
39
+
40
+ # See UiBibz::Ui::Core::Component.initialize
41
+ def initialize content = nil, options = nil, html_options = nil, &block
42
+ super
43
+ end
44
+
45
+ # Render html tag
46
+ def render
47
+ super
48
+ end
49
+
50
+ protected
51
+
52
+ def refresh_render
53
+ content_tag :div, class: 'input-group field-refresh' do
54
+ concat select_tag content, options[:option_tags], html_options
55
+ concat refresh_btn_html
56
+ end
57
+ end
58
+
59
+ def component_html_data
60
+ connect_options
61
+ end
62
+
63
+ private
64
+
65
+ def connect_opts
66
+ selector = options[:refresh][:target][:selector]
67
+ options[:refresh][:target][:selector] = selector.blank? ? "##{ content.to_s.parameterize.underscore }" : selector
68
+ options[:refresh]
69
+ end
70
+
71
+ def refresh_btn_html
72
+ content_tag(:span, UiBibz::Ui::Core::Forms::Buttons::ButtonRefresh.new('', connect: connect_opts).render, class: 'input-group-btn')
73
+ end
74
+
75
+ def connect_options
76
+ add_html_data('connect', options[:connect]) if options[:connect]
77
+ end
78
+
79
+ end
80
+ end
@@ -49,7 +49,7 @@ module UiBibz::Ui::Core::Forms::Buttons
49
49
  # button(options = {}, html_options = {}) do
50
50
  # content
51
51
  # end
52
- class Button < UiBibz::Ui::Core::Component
52
+ class Button < UiBibz::Ui::Core::ConnectedComponent
53
53
 
54
54
  # See UiBibz::Ui::Core::Component.initialize
55
55
  def initialize content = nil, options = nil, html_options = nil, &block
@@ -57,7 +57,7 @@ module UiBibz::Ui::Core::Forms::Buttons
57
57
  private
58
58
 
59
59
  def component_options
60
- options[:connect] = connect_options
60
+ options[:connect] = cnt_opts
61
61
  { glyph: 'refresh', status: options[:status] }
62
62
  end
63
63
 
@@ -65,10 +65,10 @@ module UiBibz::Ui::Core::Forms::Buttons
65
65
  ['input-refresh-button', 'btn']
66
66
  end
67
67
 
68
- def connect_options
68
+ def cnt_opts
69
69
  {
70
70
  events: options[:connect].try(:[], :events) || "click",
71
- mode: options[:connect].try(:[], :type) || "remote",
71
+ mode: options[:connect].try(:[], :mode) || "remote",
72
72
  target: {
73
73
  selector: options[:connect].try(:[], :target).try(:[], :selector) || "",
74
74
  url: options[:connect].try(:[], :target).try(:[], :url) || "",
@@ -65,7 +65,7 @@ module UiBibz::Ui::Core::Forms::Choices
65
65
  end
66
66
 
67
67
  def component_html_classes
68
- "switch"
68
+ "switch-field"
69
69
  end
70
70
 
71
71
  def component_html_data