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 +4 -4
- data/Gemfile.lock +58 -58
- data/config/locales/en.yml +3 -0
- data/config/locales/fr.yml +3 -0
- data/lib/ui_bibz/concerns/models/searchable.rb +27 -17
- data/lib/ui_bibz/infos.rb +1 -1
- data/lib/ui_bibz/inputs/ui_bibz_inputs/ui_file_field_input.rb +4 -0
- data/lib/ui_bibz/ui/core/boxes/card.rb +6 -1
- data/lib/ui_bibz/ui/core/boxes/components/card_body.rb +9 -1
- data/lib/ui_bibz/ui/core/forms/files/file_field.rb +4 -1
- data/lib/ui_bibz/ui/core/forms/selects/dropdown_select_field.rb +1 -0
- data/lib/ui_bibz/ui/ux/tables/components/actions.rb +3 -3
- data/lib/ui_bibz/ui/ux/tables/components/store.rb +4 -0
- data/lib/ui_bibz/ui/ux/tables/table_pagination.rb +1 -1
- data/lib/ui_bibz/ui/ux/tables/table_pagination_per_page.rb +2 -2
- data/lib/ui_bibz/ui/ux/tables/table_search_field.rb +1 -5
- data/test/ui/core/boxes/card_test.rb +5 -3
- data/test/ui/core/forms/selects/dropdown_select_field_test.rb +9 -0
- data/test/ui/ux/tables/table_test.rb +8 -8
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 84252ec73fb2776633eb463f7f3028ddb407d5f8ca8e3ca689417dd2c59f91da
|
|
4
|
+
data.tar.gz: eb7688183e18d6e0d9485d6a314ec51678be3915e9479a49486dc611b1c483ae
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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)
|
data/config/locales/en.yml
CHANGED
data/config/locales/fr.yml
CHANGED
|
@@ -16,38 +16,45 @@ module UiBibz::Concerns::Models::Searchable
|
|
|
16
16
|
|
|
17
17
|
def self.generate_parameters
|
|
18
18
|
{
|
|
19
|
-
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: @
|
|
23
|
-
search: @
|
|
24
|
-
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:
|
|
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
|
|
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
|
|
46
|
-
per_page
|
|
47
|
-
page
|
|
48
|
-
sort
|
|
49
|
-
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: @
|
|
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: @
|
|
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: @
|
|
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
|
-
@
|
|
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
|
@@ -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
|
-
|
|
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
|
|
@@ -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.
|
|
55
|
-
UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(edit_name, url: { controller: @store.
|
|
56
|
-
UiBibz::Ui::Core::Forms::Dropdowns::Components::DropdownLink.new(delete_name, { glyph: 'trash', url: { controller: @store.
|
|
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
|
|
|
@@ -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-
|
|
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-
|
|
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
|
|
@@ -136,16 +136,18 @@ class CardTest < ActionView::TestCase
|
|
|
136
136
|
assert_equal expected, actual
|
|
137
137
|
end
|
|
138
138
|
|
|
139
|
-
test 'card
|
|
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&page=1&per_page=2&search=Name+fr&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&page=1&per_page=2&search=Name+fr&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\">«</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&page=2&search=Name+fr&sort=users.name_fr\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=3&search=Name+fr&sort=users.name_fr\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=4&search=Name+fr&sort=users.name_fr\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=5&search=Name+fr&sort=users.name_fr\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">…</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=12&search=Name+fr&sort=users.name_fr\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=13&search=Name+fr&sort=users.name_fr\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&page=2&search=Name+fr&sort=users.name_fr\">»</a></li></ul></nav>"
|
|
36
|
+
expected = "<nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">«</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&page=2&search=Name+fr&sort=users.name_fr&store_id=users\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=3&search=Name+fr&sort=users.name_fr&store_id=users\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=4&search=Name+fr&sort=users.name_fr&store_id=users\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=5&search=Name+fr&sort=users.name_fr&store_id=users\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">…</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=12&search=Name+fr&sort=users.name_fr&store_id=users\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=13&search=Name+fr&sort=users.name_fr&store_id=users\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&page=2&search=Name+fr&sort=users.name_fr&store_id=users\">»</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&direction=asc&link_type=column&search=Name+fr&sort=users.id">Id</a>'
|
|
52
|
+
expected = '<a class="dropup" href="/users?column_id=id&direction=asc&link_type=column&search=Name+fr&sort=users.id&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\">«</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&page=2&search=Name+fr&sort=users.name_fr\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=3&search=Name+fr&sort=users.name_fr\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=4&search=Name+fr&sort=users.name_fr\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=5&search=Name+fr&sort=users.name_fr\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">…</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=12&search=Name+fr&sort=users.name_fr\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=13&search=Name+fr&sort=users.name_fr\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&page=2&search=Name+fr&sort=users.name_fr\">»</a></li></ul></nav><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"table-pagination-per-page\">Displaying User <b>1 - 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-
|
|
69
|
+
expected = "<div><nav class=\"pagination\"><ul class=\"pagination\" role=\"group\"><li class=\"previous page-item disabled\"><span class=\"page-link\">«</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&page=2&search=Name+fr&sort=users.name_fr&store_id=users\">2</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=3&search=Name+fr&sort=users.name_fr&store_id=users\">3</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=4&search=Name+fr&sort=users.name_fr&store_id=users\">4</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=5&search=Name+fr&sort=users.name_fr&store_id=users\">5</a></li> <li class=\"page-item disabled\"><i class=\"page-link\">…</i></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=12&search=Name+fr&sort=users.name_fr&store_id=users\">12</a></li> <li class=\"page-item\"><a class=\"page-link\" href=\"/users?direction=asc&page=13&search=Name+fr&sort=users.name_fr&store_id=users\">13</a></li> <li class=\"next page-item\"><a class=\"page-link\" rel=\"next\" href=\"/users?direction=asc&page=2&search=Name+fr&sort=users.name_fr&store_id=users\">»</a></li></ul></nav><form action=\"/users\" accept-charset=\"UTF-8\" method=\"get\"><div class=\"table-pagination-per-page\">Displaying User <b>1 - 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
|
|
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&page=1&per_page=2&search=Name+fr&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&page=1&per_page=2&search=Name+fr&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, {
|
|
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.
|
|
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.
|
|
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-
|
|
11
|
+
date: 2021-08-24 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: rails
|