ui_bibz 3.0.1 → 3.0.5

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3ea698e25d31853e0cf7b8fe660f0b5ec71495e8fb76e5669aaa101a037c43ec
4
- data.tar.gz: d9c1a0975f1799f749b767743fea8ab0e9cac10a22694417bb9aae162aefad15
3
+ metadata.gz: 84252ec73fb2776633eb463f7f3028ddb407d5f8ca8e3ca689417dd2c59f91da
4
+ data.tar.gz: eb7688183e18d6e0d9485d6a314ec51678be3915e9479a49486dc611b1c483ae
5
5
  SHA512:
6
- metadata.gz: d2f33e5118202bddb6a7dd05e4db66dc92bbe9e9aa8598ee055aa0756352566b1052c2d6bae950647880d39cc2daf4c1bc3d69169c144fd54115dd40940bc035
7
- data.tar.gz: 9fc847dbd4165c92043f7376276db0720f102ed98a4af29161fd4fd48225fcfc930db39a90895b975a97196678618efec022998f8c15f5c94be94003b813efce
6
+ metadata.gz: bdfcc7bb97485f27732c0c2ddbfc13e08715bde5058d41057a87b83e4d009d3c32ae5f378ce8e41d984c14b2a43e4d7c7de435b776eb1d844362530759462e77
7
+ data.tar.gz: 679e4e6900dcaaec3dc3439b7c880f26b600884b0ecda99425d2b5d6056b9e6604a18b8e768fe55c2c814197524af12f6ae78cc959852d737369dd806339bdef
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ui_bibz (3.0.1)
4
+ ui_bibz (3.0.5)
5
5
  will-paginate-i18n
6
6
  will_paginate (~> 3.3.0)
7
7
  will_paginate-bootstrap4
@@ -9,60 +9,60 @@ PATH
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- actioncable (6.1.4)
13
- actionpack (= 6.1.4)
14
- activesupport (= 6.1.4)
12
+ actioncable (6.1.4.1)
13
+ actionpack (= 6.1.4.1)
14
+ activesupport (= 6.1.4.1)
15
15
  nio4r (~> 2.0)
16
16
  websocket-driver (>= 0.6.1)
17
- actionmailbox (6.1.4)
18
- actionpack (= 6.1.4)
19
- activejob (= 6.1.4)
20
- activerecord (= 6.1.4)
21
- activestorage (= 6.1.4)
22
- activesupport (= 6.1.4)
17
+ actionmailbox (6.1.4.1)
18
+ actionpack (= 6.1.4.1)
19
+ activejob (= 6.1.4.1)
20
+ activerecord (= 6.1.4.1)
21
+ activestorage (= 6.1.4.1)
22
+ activesupport (= 6.1.4.1)
23
23
  mail (>= 2.7.1)
24
- actionmailer (6.1.4)
25
- actionpack (= 6.1.4)
26
- actionview (= 6.1.4)
27
- activejob (= 6.1.4)
28
- activesupport (= 6.1.4)
24
+ actionmailer (6.1.4.1)
25
+ actionpack (= 6.1.4.1)
26
+ actionview (= 6.1.4.1)
27
+ activejob (= 6.1.4.1)
28
+ activesupport (= 6.1.4.1)
29
29
  mail (~> 2.5, >= 2.5.4)
30
30
  rails-dom-testing (~> 2.0)
31
- actionpack (6.1.4)
32
- actionview (= 6.1.4)
33
- activesupport (= 6.1.4)
31
+ actionpack (6.1.4.1)
32
+ actionview (= 6.1.4.1)
33
+ activesupport (= 6.1.4.1)
34
34
  rack (~> 2.0, >= 2.0.9)
35
35
  rack-test (>= 0.6.3)
36
36
  rails-dom-testing (~> 2.0)
37
37
  rails-html-sanitizer (~> 1.0, >= 1.2.0)
38
- actiontext (6.1.4)
39
- actionpack (= 6.1.4)
40
- activerecord (= 6.1.4)
41
- activestorage (= 6.1.4)
42
- activesupport (= 6.1.4)
38
+ actiontext (6.1.4.1)
39
+ actionpack (= 6.1.4.1)
40
+ activerecord (= 6.1.4.1)
41
+ activestorage (= 6.1.4.1)
42
+ activesupport (= 6.1.4.1)
43
43
  nokogiri (>= 1.8.5)
44
- actionview (6.1.4)
45
- activesupport (= 6.1.4)
44
+ actionview (6.1.4.1)
45
+ activesupport (= 6.1.4.1)
46
46
  builder (~> 3.1)
47
47
  erubi (~> 1.4)
48
48
  rails-dom-testing (~> 2.0)
49
49
  rails-html-sanitizer (~> 1.1, >= 1.2.0)
50
- activejob (6.1.4)
51
- activesupport (= 6.1.4)
50
+ activejob (6.1.4.1)
51
+ activesupport (= 6.1.4.1)
52
52
  globalid (>= 0.3.6)
53
- activemodel (6.1.4)
54
- activesupport (= 6.1.4)
55
- activerecord (6.1.4)
56
- activemodel (= 6.1.4)
57
- activesupport (= 6.1.4)
58
- activestorage (6.1.4)
59
- actionpack (= 6.1.4)
60
- activejob (= 6.1.4)
61
- activerecord (= 6.1.4)
62
- activesupport (= 6.1.4)
53
+ activemodel (6.1.4.1)
54
+ activesupport (= 6.1.4.1)
55
+ activerecord (6.1.4.1)
56
+ activemodel (= 6.1.4.1)
57
+ activesupport (= 6.1.4.1)
58
+ activestorage (6.1.4.1)
59
+ actionpack (= 6.1.4.1)
60
+ activejob (= 6.1.4.1)
61
+ activerecord (= 6.1.4.1)
62
+ activesupport (= 6.1.4.1)
63
63
  marcel (~> 1.0.0)
64
64
  mini_mime (>= 1.1.0)
65
- activesupport (6.1.4)
65
+ activesupport (6.1.4.1)
66
66
  concurrent-ruby (~> 1.0, >= 1.0.2)
67
67
  i18n (>= 1.6, < 2)
68
68
  minitest (>= 5.1)
@@ -113,7 +113,7 @@ GEM
113
113
  mini_mime (>= 0.1.1)
114
114
  marcel (1.0.1)
115
115
  method_source (1.0.0)
116
- mini_mime (1.1.0)
116
+ mini_mime (1.1.1)
117
117
  mini_portile2 (2.6.1)
118
118
  minitest (5.14.4)
119
119
  nio4r (2.5.8)
@@ -131,29 +131,29 @@ GEM
131
131
  rack (2.2.3)
132
132
  rack-test (1.1.0)
133
133
  rack (>= 1.0, < 3)
134
- rails (6.1.4)
135
- actioncable (= 6.1.4)
136
- actionmailbox (= 6.1.4)
137
- actionmailer (= 6.1.4)
138
- actionpack (= 6.1.4)
139
- actiontext (= 6.1.4)
140
- actionview (= 6.1.4)
141
- activejob (= 6.1.4)
142
- activemodel (= 6.1.4)
143
- activerecord (= 6.1.4)
144
- activestorage (= 6.1.4)
145
- activesupport (= 6.1.4)
134
+ rails (6.1.4.1)
135
+ actioncable (= 6.1.4.1)
136
+ actionmailbox (= 6.1.4.1)
137
+ actionmailer (= 6.1.4.1)
138
+ actionpack (= 6.1.4.1)
139
+ actiontext (= 6.1.4.1)
140
+ actionview (= 6.1.4.1)
141
+ activejob (= 6.1.4.1)
142
+ activemodel (= 6.1.4.1)
143
+ activerecord (= 6.1.4.1)
144
+ activestorage (= 6.1.4.1)
145
+ activesupport (= 6.1.4.1)
146
146
  bundler (>= 1.15.0)
147
- railties (= 6.1.4)
147
+ railties (= 6.1.4.1)
148
148
  sprockets-rails (>= 2.0.0)
149
149
  rails-dom-testing (2.0.3)
150
150
  activesupport (>= 4.2.0)
151
151
  nokogiri (>= 1.6)
152
- rails-html-sanitizer (1.3.0)
152
+ rails-html-sanitizer (1.4.2)
153
153
  loofah (~> 2.3)
154
- railties (6.1.4)
155
- actionpack (= 6.1.4)
156
- activesupport (= 6.1.4)
154
+ railties (6.1.4.1)
155
+ actionpack (= 6.1.4.1)
156
+ activesupport (= 6.1.4.1)
157
157
  method_source
158
158
  rake (>= 0.13)
159
159
  thor (~> 1.0)
@@ -161,7 +161,7 @@ GEM
161
161
  rake (13.0.6)
162
162
  regexp_parser (2.1.1)
163
163
  rexml (3.2.5)
164
- rubocop (1.19.0)
164
+ rubocop (1.19.1)
165
165
  parallel (~> 1.10)
166
166
  parser (>= 3.0.0.0)
167
167
  rainbow (>= 2.2.2, < 4.0)
@@ -170,7 +170,7 @@ GEM
170
170
  rubocop-ast (>= 1.9.1, < 2.0)
171
171
  ruby-progressbar (~> 1.7)
172
172
  unicode-display_width (>= 1.4.0, < 3.0)
173
- rubocop-ast (1.10.0)
173
+ rubocop-ast (1.11.0)
174
174
  parser (>= 3.0.1.1)
175
175
  rubocop-minitest (0.15.0)
176
176
  rubocop (>= 0.90, < 2.0)
@@ -1,5 +1,8 @@
1
1
  en:
2
2
  ui_bibz:
3
+ table:
4
+ pagination:
5
+ per_page: 'Per page: '
3
6
  grid:
4
7
  pagination:
5
8
  per_page: 'Per page: '
@@ -1,5 +1,8 @@
1
1
  fr:
2
2
  ui_bibz:
3
+ table:
4
+ pagination:
5
+ per_page: 'Par page : '
3
6
  grid:
4
7
  pagination:
5
8
  per_page: 'Par page : '
@@ -16,38 +16,45 @@ module UiBibz::Concerns::Models::Searchable
16
16
 
17
17
  def self.generate_parameters
18
18
  {
19
- controller: @arguments[:controller] || @params[:controller],
19
+ controller: @params[:controller],
20
+ actions_controller: @arguments[:actions_controller] || @params[:controller],
20
21
  param_id: @params[:id],
21
22
  params: @params,
22
- direction: @params[:direction],
23
- search: @params[:search],
24
- sort: @params[:sort],
23
+ direction: @tmp_params[:direction],
24
+ search: @tmp_params[:search],
25
+ sort: @tmp_params[:sort],
25
26
  action: @params[:action],
26
27
  column_id: @params[:column_id],
27
- id: @arguments[:store_id],
28
+ id: store_id,
28
29
  records: search_sort_paginate,
29
30
  searchable_attributes: @searchable_attributes,
30
31
  model: create_model
31
32
  }
32
33
  end
33
34
 
35
+ def self.store_id
36
+ @arguments[:store_id] || @params[:controller]
37
+ end
38
+
34
39
  def self.create_model
35
40
  @arguments[:model].nil? ? self : @arguments[:model].to_s.camelize.classify.constantize
36
41
  end
37
42
 
38
43
  # If there is more one table in html page
39
44
  def self.initialize_params
40
- @tmp_params = { per_page: @arguments[:per_page] }
45
+ @tmp_params = (session_store || { 'per_page' => @arguments[:per_page] || 30 }).with_indifferent_access
41
46
 
42
47
  return unless good_store_id?
43
48
 
44
49
  @tmp_params = {
45
- search: @params[:search],
46
- per_page: @params[:per_page] || @arguments[:per_page],
47
- page: new_search? ? nil : @params[:page],
48
- sort: @params[:sort],
49
- direction: @params[:direction]
50
- }
50
+ 'search' => @params[:search] || @tmp_params['search'],
51
+ 'per_page' => @params[:per_page] || @tmp_params['per_page'] || @arguments[:per_page],
52
+ 'page' => @params[:page],
53
+ 'sort' => @params[:sort] || @tmp_params['sort'],
54
+ 'direction' => @params[:direction] || @tmp_params['direction']
55
+ }.with_indifferent_access
56
+
57
+ @session[store_id] = @tmp_params
51
58
  end
52
59
 
53
60
  def self.search
@@ -75,15 +82,15 @@ module UiBibz::Concerns::Models::Searchable
75
82
 
76
83
  def self.generate_default_sql(sql)
77
84
  if sorting?
78
- sql.paginate(page: @tmp_params[:page], per_page: @session[:per_page])
85
+ sql.paginate(page: @tmp_params[:page], per_page: @tmp_params[:per_page])
79
86
  else
80
- sql.reorder(order_sql).paginate(page: @tmp_params[:page], per_page: @session[:per_page])
87
+ sql.reorder(order_sql).paginate(page: @tmp_params[:page], per_page: @tmp_params[:per_page])
81
88
  end
82
89
  end
83
90
 
84
91
  def self.generate_count_sql(sql)
85
92
  sq = "SELECT * FROM (#{sql.group("#{table_name}.id").to_sql}) countable ORDER BY countable.count #{@tmp_params[:direction] || asc}"
86
- paginate_by_sql(sq, page: @tmp_params[:page], per_page: @session[:per_page])
93
+ paginate_by_sql(sq, page: @tmp_params[:page], per_page: @tmp_params[:per_page])
87
94
  end
88
95
 
89
96
  def self.generate_select_count_sort_query(sql, column_args)
@@ -147,13 +154,16 @@ module UiBibz::Concerns::Models::Searchable
147
154
  end
148
155
 
149
156
  def self.search_sort_paginate
150
- @session[:per_page] = @tmp_params[:per_page] unless @tmp_params[:per_page].nil?
151
157
  search
152
158
  end
153
159
 
160
+ def self.session_store
161
+ @session[store_id]
162
+ end
163
+
154
164
  # If there's several table in the same page
155
165
  def self.good_store_id?
156
- @arguments[:store_id] == @params[:store_id]
166
+ @params[:store_id].nil? ? true : store_id == @params[:store_id]
157
167
  end
158
168
 
159
169
  def self.new_search?
data/lib/ui_bibz/infos.rb CHANGED
@@ -12,6 +12,6 @@ module UiBibz
12
12
  REPO = 'git+https://github.com/thooams/ui_bibz.git'
13
13
  EMAIL = 'thomas@hummel.link'
14
14
  AUTHOR = 'Thooams [Thomas HUMMEL]'
15
- VERSION = '3.0.1'
15
+ VERSION = '3.0.5'
16
16
  AUTHORS = ['Thooams'].freeze
17
17
  end
@@ -7,5 +7,9 @@ module UiBibzInputs
7
7
  def input(_wrapper_options)
8
8
  UiBibz::Ui::Core::Forms::Files::FileField.new(input_attribute_name, options, input_html_options).render
9
9
  end
10
+
11
+ def input_attribute_name
12
+ options[:multiple] ? "#{super}[]" : super
13
+ end
10
14
  end
11
15
  end
@@ -26,6 +26,7 @@ module UiBibz::Ui::Core::Boxes
26
26
  # * text - Hash (+:size+, +:position+)
27
27
  # (+:left+, +:right+, +:center+)
28
28
  # * block - Boolean
29
+ # * tabbed - Boolean to use tab card
29
30
  # * type - Symbol
30
31
  # (+:inverse+)
31
32
  #
@@ -108,7 +109,7 @@ module UiBibz::Ui::Core::Boxes
108
109
  end
109
110
 
110
111
  def component_html_classes
111
- ['card', text, type, tab_pane, outline]
112
+ ['card', text, type, tab_pane, outline, tabbed]
112
113
  end
113
114
 
114
115
  def status
@@ -135,6 +136,10 @@ module UiBibz::Ui::Core::Boxes
135
136
  'tab-pane' if @options[:tab]
136
137
  end
137
138
 
139
+ def tabbed
140
+ 'tab-content' if @options[:tabbed]
141
+ end
142
+
138
143
  def outline
139
144
  'bg-transparent' if @options[:outline]
140
145
  end
@@ -81,7 +81,11 @@ module UiBibz::Ui::Core::Boxes::Components
81
81
  private
82
82
 
83
83
  def component_html_classes
84
- ['card-body', outline]
84
+ ['card-body', outline, tab_pane]
85
+ end
86
+
87
+ def component_html_options
88
+ @options[:tab_pane].nil? ? {} : { id: @options[:tab_pane] }
85
89
  end
86
90
 
87
91
  def outline
@@ -91,5 +95,9 @@ module UiBibz::Ui::Core::Boxes::Components
91
95
  def show
92
96
  'show' if @options[:show]
93
97
  end
98
+
99
+ def tab_pane
100
+ 'tab-pane' if options[:tab_pane]
101
+ end
94
102
  end
95
103
  end
@@ -59,10 +59,13 @@ module UiBibz::Ui::Core::Forms::Files
59
59
  end
60
60
 
61
61
  def format_value(value)
62
- if value.is_a? ActiveStorage::Attached::One
62
+ case value
63
+ when ActiveStorage::Attached::One
63
64
  return '' unless value.attached?
64
65
 
65
66
  return value.attachment.blob.filename
67
+ when ActiveStorage::Attached::Many
68
+ return ''
66
69
  end
67
70
 
68
71
  value.to_s
@@ -102,6 +102,7 @@ module UiBibz::Ui::Core::Forms::Selects
102
102
 
103
103
  def searchable
104
104
  add_html_data('enable_filtering') if options[:searchable]
105
+ add_html_data('fuzzy_search') if options[:searchable] == :fuzzy
105
106
  end
106
107
 
107
108
  def n_selected_text
@@ -51,9 +51,9 @@ module UiBibz::Ui::Ux::Tables
51
51
 
52
52
  def defaults_actions
53
53
  [
54
- UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(show_name, url: { controller: @store.controller, action: 'show', id: :id }, glyph: 'eye').render,
55
- UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(edit_name, url: { controller: @store.controller, action: 'edit', id: :id }, glyph: 'edit').render,
56
- UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(delete_name, { glyph: 'trash', url: { controller: @store.controller, action: 'destroy', id: :id }, link_html_options: { data: { confirm: 'Are you sure?', method: :delete } } }).render
54
+ UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(show_name, url: { controller: @store.actions_controller, action: 'show', id: :id }, glyph: 'eye').render,
55
+ UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(edit_name, url: { controller: @store.actions_controller, action: 'edit', id: :id }, glyph: 'edit').render,
56
+ UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(delete_name, { glyph: 'trash', url: { controller: @store.actions_controller, action: 'destroy', id: :id }, link_html_options: { data: { confirm: 'Are you sure?', method: :delete } } }).render
57
57
  ]
58
58
  end
59
59
 
@@ -70,6 +70,10 @@ module UiBibz::Ui::Ux::Tables
70
70
  @store.controller
71
71
  end
72
72
 
73
+ def actions_controller
74
+ @store.actions_controller
75
+ end
76
+
73
77
  def params
74
78
  @store.params || {}
75
79
  end
@@ -39,8 +39,8 @@ module UiBibz::Ui::Ux::Tables
39
39
  # Render html tag with boostrap pagination theme
40
40
  def render
41
41
  paginate_parameters = { controller: store.controller }
42
- paginate_parameters = paginate_parameters.merge({ store_id: store.id }) unless store.id.nil?
43
42
  paginate_parameters = paginate_parameters.merge(store.parameters)
43
+ paginate_parameters = paginate_parameters.merge({ store_id: store.id }) unless store.id.nil?
44
44
  paginate_parameters = paginate_parameters.merge({ link_type: 'pagination' })
45
45
  will_paginate(store.records, params: paginate_parameters.with_indifferent_access.reject { |k, v| default_parameters?(k) || v.blank? }, renderer: WillPaginate::ActionView::BootstrapLinkRenderer)
46
46
  end
@@ -57,7 +57,7 @@ module UiBibz::Ui::Ux::Tables
57
57
  content_tag :div, class: 'table-pagination-per-page' do
58
58
  concat results_count_html
59
59
  concat UiBibz::Utils::Internationalization.new('ui_bibz.table.pagination.per_page', default: 'Per page: ').translate
60
- concat select_tag('per_page', options_for_select([5, 10, 20, 30, 50, 100, 200, 500], store.per_page), class: 'form-control')
60
+ concat select_tag('per_page', options_for_select([5, 10, 20, 30, 50, 100, 200, 500], store.per_page), class: 'form-select')
61
61
  end
62
62
  end
63
63
 
@@ -68,7 +68,7 @@ module UiBibz::Ui::Ux::Tables
68
68
  store.parameters.with_indifferent_access.reject { |k, v| default_parameters?(k) || v.blank? }.each do |k, v|
69
69
  concat tag(:input, type: 'hidden', name: k, value: v)
70
70
  end
71
- concat select_tag('per_page', options_for_select([5, 10, 20, 30, 50, 100, 200, 500], store.per_page), class: 'form-control')
71
+ concat select_tag('per_page', options_for_select([5, 10, 20, 30, 50, 100, 200, 500], store.per_page), class: 'form-select')
72
72
  concat tag(:input, type: 'hidden', name: 'store_id', value: store.id) unless store.id.nil? # If there is more 1 table in html page
73
73
  end
74
74
  end
@@ -62,11 +62,7 @@ module UiBibz::Ui::Ux::Tables
62
62
  end
63
63
 
64
64
  def search_content
65
- if store.id.nil?
66
- store.search
67
- else
68
- store.id == store.params[:store_id] ? store.search : ''
69
- end
65
+ store.search
70
66
  end
71
67
 
72
68
  def clear_button
@@ -136,16 +136,18 @@ class CardTest < ActionView::TestCase
136
136
  assert_equal expected, actual
137
137
  end
138
138
 
139
- test 'card header tab group' do
140
- actual = ui_card do |c|
139
+ test 'card tab' do
140
+ actual = ui_card tabbed: true do |c|
141
141
  c.header do |h|
142
142
  h.tab_group do |cg|
143
143
  cg.tab 'link1', url: '#link1'
144
144
  cg.tab 'link2', url: '#link2'
145
145
  end
146
146
  end
147
+ c.body tab_pan: "link1", state: :active
148
+ c.body tab_pan: "link2"
147
149
  end
148
- expected = "<div class=\"card\"><div class=\"card-header\"><ul class=\"nav nav-tabs card-header-tabs\" role=\"tablist\"><li class=\"nav-item\"><a href=\"#link1\" class=\"nav-link\" data-bs-toggle=\"tab\" role=\"tab\">link1</a></li><li class=\"nav-item\"><a href=\"#link2\" class=\"nav-link\" data-bs-toggle=\"tab\" role=\"tab\">link2</a></li></ul></div></div>"
150
+ expected = "<div class=\"card tab-content\"><div class=\"card-header\"><ul class=\"nav nav-tabs card-header-tabs\" role=\"tablist\"><li class=\"nav-item\"><a href=\"#link1\" class=\"nav-link\" data-bs-toggle=\"tab\" role=\"tab\">link1</a></li><li class=\"nav-item\"><a href=\"#link2\" class=\"nav-link\" data-bs-toggle=\"tab\" role=\"tab\">link2</a></li></ul></div><div class=\"active card-body\"></div><div class=\"card-body\"></div></div>"
149
151
 
150
152
  assert_equal expected, actual
151
153
  end
@@ -12,6 +12,15 @@ class DropdownSelectFieldTest < ActionView::TestCase
12
12
  assert_equal expected, actual
13
13
  end
14
14
 
15
+ test 'Dropdown Select Field with fuzzy search' do
16
+ options = options_for_select(Array.new(2) { |i| "option #{i}" })
17
+ actual = UiBibz::Ui::Core::Forms::Selects::DropdownSelectField.new('example', option_tags: options, searchable: :fuzzy).render
18
+ expected = "<select name=\"example\" id=\"example\" data-enable-filtering=\"true\" data-fuzzy-search=\"true\" data-dropdown-classes=\"dropdown\" class=\"btn-secondary multi-select-field\"><option value=\"option 0\">option 0</option>
19
+ <option value=\"option 1\">option 1</option></select>"
20
+
21
+ assert_equal expected, actual
22
+ end
23
+
15
24
  test 'Dropdown Select Field data html options' do
16
25
  grouped_options = { 'North America' => [['United statuss', 'US'], 'Canada'], 'Europe' => %w[Denmark Germany France] }
17
26
  actual = UiBibz::Ui::Core::Forms::Selects::DropdownSelectField.new('example', { multiple: true, option_tags: grouped_options_for_select(grouped_options), clickable_opt_group: true, collapsible_opt_group: true, searchable: true, non_selected_text: 'test', select_all_options: true, number_displayed: 2, status: :danger, n_selected_text: "items selected" }).render
@@ -26,14 +26,14 @@ class TableTest < ActionView::TestCase
26
26
 
27
27
  test 'table search field' do
28
28
  actual = UiBibz::Ui::Ux::Tables::TableSearchField.new({ store: @users }).render
29
- expected = "<form class=\"form-table-search-field\" action=\"/users?direction=asc&amp;page=1&amp;per_page=2&amp;search=Name+fr&amp;sort=users.name_fr\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"input-group input-group-sm table-search-field\"><span class=\"input-group-text\"><i class=\"glyph fas fa-search\"></i></span><input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"page\" value=\"1\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><input type=\"hidden\" name=\"link_type\" value=\"search\" /><input type=\"search\" value=\"Name fr\" name=\"search\" class=\"form-control\" placeholder=\"Search by Name fr and Name en...\" /><button type=\"button\" class=\"btn btn-secondary input-group-btn clear-search-btn\"><i class=\"glyph fas fa-times-circle\"></i> <span class=\"visually-hidden\">Clear Search</span></button></div></form>"
29
+ expected = "<form class=\"form-table-search-field\" action=\"/users?direction=asc&amp;page=1&amp;per_page=2&amp;search=Name+fr&amp;sort=users.name_fr\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"input-group input-group-sm table-search-field\"><span class=\"input-group-text\"><i class=\"glyph fas fa-search\"></i></span><input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"page\" value=\"1\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><input type=\"hidden\" name=\"store_id\" value=\"users\" /><input type=\"hidden\" name=\"link_type\" value=\"search\" /><input type=\"search\" value=\"Name fr\" name=\"search\" class=\"form-control\" placeholder=\"Search by Name fr and Name en...\" /><button type=\"button\" class=\"btn btn-secondary input-group-btn clear-search-btn\"><i class=\"glyph fas fa-times-circle\"></i> <span class=\"visually-hidden\">Clear Search</span></button></div></form>"
30
30
 
31
31
  assert_equal expected, actual
32
32
  end
33
33
 
34
34
  test 'table pagination' do
35
35
  actual = UiBibz::Ui::Ux::Tables::TablePagination.new({ store: @users }).render
36
- expected = "<nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">&laquo;</span></li> <li class=\"page-item active\"><span class=\"page-link\">1</span></li> <li class=\"page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=3&amp;search=Name+fr&amp;sort=users.name_fr\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=4&amp;search=Name+fr&amp;sort=users.name_fr\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=5&amp;search=Name+fr&amp;sort=users.name_fr\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">&hellip;</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=12&amp;search=Name+fr&amp;sort=users.name_fr\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=13&amp;search=Name+fr&amp;sort=users.name_fr\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr\">&raquo;</a></li></ul></nav>"
36
+ expected = "<nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">&laquo;</span></li> <li class=\"page-item active\"><span class=\"page-link\">1</span></li> <li class=\"page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=3&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=4&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=5&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">&hellip;</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=12&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=13&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">&raquo;</a></li></ul></nav>"
37
37
 
38
38
  assert_equal expected, actual
39
39
  end
@@ -49,7 +49,7 @@ class TableTest < ActionView::TestCase
49
49
  test 'table sortable' do
50
50
  options = { sortable: true }
51
51
  actual = UiBibz::Ui::Ux::Tables::Sortable.new(@store, options).header(@store.columns.list.first)
52
- expected = '<a class="dropup" href="/users?column_id=id&amp;direction=asc&amp;link_type=column&amp;search=Name+fr&amp;sort=users.id">Id</a>'
52
+ expected = '<a class="dropup" href="/users?column_id=id&amp;direction=asc&amp;link_type=column&amp;search=Name+fr&amp;sort=users.id&amp;store_id=users">Id</a>'
53
53
 
54
54
  assert_equal expected, actual
55
55
  end
@@ -66,14 +66,14 @@ class TableTest < ActionView::TestCase
66
66
  options = { paginable: true }
67
67
  pagination = UiBibz::Ui::Ux::Tables::Paginable.new(@store, options)
68
68
  actual = pagination.render if pagination.paginable?
69
- expected = "<div><nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">&laquo;</span></li> <li class=\"page-item active\"><span class=\"page-link\">1</span></li> <li class=\"page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=3&amp;search=Name+fr&amp;sort=users.name_fr\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=4&amp;search=Name+fr&amp;sort=users.name_fr\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=5&amp;search=Name+fr&amp;sort=users.name_fr\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">&hellip;</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=12&amp;search=Name+fr&amp;sort=users.name_fr\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=13&amp;search=Name+fr&amp;sort=users.name_fr\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr\">&raquo;</a></li></ul></nav><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"table-pagination-per-page\">Displaying User <b>1&nbsp;-&nbsp;2</b> of <b>25</b> in total | Per page: <input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><select name=\"per_page\" id=\"per_page\" class=\"form-control\"><option value=\"5\">5</option>
69
+ expected = "<div><nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">&laquo;</span></li> <li class=\"page-item active\"><span class=\"page-link\">1</span></li> <li class=\"page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=3&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=4&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=5&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">&hellip;</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=12&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&amp;page=13&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&amp;page=2&amp;search=Name+fr&amp;sort=users.name_fr&amp;store_id=users\">&raquo;</a></li></ul></nav><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"table-pagination-per-page\">Displaying User <b>1&nbsp;-&nbsp;2</b> of <b>25</b> in total | Per page: <input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><select name=\"per_page\" id=\"per_page\" class=\"form-select\"><option value=\"5\">5</option>
70
70
  <option value=\"10\">10</option>
71
71
  <option value=\"20\">20</option>
72
72
  <option value=\"30\">30</option>
73
73
  <option value=\"50\">50</option>
74
74
  <option value=\"100\">100</option>
75
75
  <option value=\"200\">200</option>
76
- <option value=\"500\">500</option></select></div></form></div>"
76
+ <option value=\"500\">500</option></select><input type=\"hidden\" name=\"store_id\" value=\"users\" /></div></form></div>"
77
77
 
78
78
  assert_equal expected, actual
79
79
  end
@@ -97,7 +97,7 @@ class TableTest < ActionView::TestCase
97
97
  test 'table searchable' do
98
98
  options = { searchable: true }
99
99
  actual = UiBibz::Ui::Ux::Tables::Searchable.new(@store, options).render
100
- expected = "<div><div class=\"title\">Users list</div><form class=\"form-table-search-field\" action=\"/users?direction=asc&amp;page=1&amp;per_page=2&amp;search=Name+fr&amp;sort=users.name_fr\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"input-group input-group-sm table-search-field\"><span class=\"input-group-text\"><i class=\"glyph fas fa-search\"></i></span><input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"page\" value=\"1\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><input type=\"hidden\" name=\"link_type\" value=\"search\" /><input type=\"search\" value=\"Name fr\" name=\"search\" class=\"form-control\" placeholder=\"Search by Name fr and Name en...\" /><button type=\"button\" class=\"btn btn-secondary input-group-btn clear-search-btn\"><i class=\"glyph fas fa-times-circle\"></i> <span class=\"visually-hidden\">Clear Search</span></button></div></form><br class=\"ui-bibz-clear\" /></div>"
100
+ expected = "<div><div class=\"title\">Users list</div><form class=\"form-table-search-field\" action=\"/users?direction=asc&amp;page=1&amp;per_page=2&amp;search=Name+fr&amp;sort=users.name_fr\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"input-group input-group-sm table-search-field\"><span class=\"input-group-text\"><i class=\"glyph fas fa-search\"></i></span><input type=\"hidden\" name=\"sort\" value=\"users.name_fr\" /><input type=\"hidden\" name=\"direction\" value=\"asc\" /><input type=\"hidden\" name=\"per_page\" value=\"2\" /><input type=\"hidden\" name=\"page\" value=\"1\" /><input type=\"hidden\" name=\"only_path\" value=\"true\" /><input type=\"hidden\" name=\"store_id\" value=\"users\" /><input type=\"hidden\" name=\"link_type\" value=\"search\" /><input type=\"search\" value=\"Name fr\" name=\"search\" class=\"form-control\" placeholder=\"Search by Name fr and Name en...\" /><button type=\"button\" class=\"btn btn-secondary input-group-btn clear-search-btn\"><i class=\"glyph fas fa-times-circle\"></i> <span class=\"visually-hidden\">Clear Search</span></button></div></form><br class=\"ui-bibz-clear\" /></div>"
101
101
 
102
102
  assert_equal expected, actual
103
103
  end
@@ -130,10 +130,10 @@ class TableTest < ActionView::TestCase
130
130
  end
131
131
 
132
132
  test 'table actionable with antoher controller' do
133
- @users = User.table_search_pagination(params, session, { controller: "areas" })
133
+ @users = User.table_search_pagination(params, session, { actions_controller: "areas" })
134
134
  @store = UiBibz::Ui::Ux::Tables::Store.new @users
135
135
 
136
- assert_equal("areas", @store.controller)
136
+ assert_equal("areas", @store.actions_controller)
137
137
  end
138
138
 
139
139
  test 'table non actionable header' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ui_bibz
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.1
4
+ version: 3.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thooams [Thomas HUMMEL]
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-18 00:00:00.000000000 Z
11
+ date: 2021-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails