zutils 2.0.2 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f9f08d16a30e1bc4d207f8fab3684db3361982f4fd3d72d0e75137209acc0920
4
- data.tar.gz: e837c4f229fb3cdcc6f06bc9ff8813a3b3f50976ae123c1d923189752d16b50b
3
+ metadata.gz: 176587a0bde4bded17898e5355e7c28ac5583f4b4f72856cd7a0d1759d2a4500
4
+ data.tar.gz: 5b4f7b6bc3a89b519182ef1614b9bb4ad14e3cb4c2ba7686af9e4dda16bcc8dc
5
5
  SHA512:
6
- metadata.gz: 42bbfdda57f9482337cf52f3c314cfb03d057e54f05f26a8af35056ea4ac473357c18d16400b9a70db350dbfb4ad834fbf470ddff2be5d75a9fc702cf2d14478
7
- data.tar.gz: 94cfe6535b4e3e9a180c4f6ef1ba943a936c3115ce9209d22c17ee1ba1538bbcaf6dbb55693b18e7e152cc441c159837e328d8c2099a3ca7147b3998254c991e
6
+ metadata.gz: c9c6e9cdd5e020bd8bfba4eabbbe7e96b5880152bd5a0382e61d0e918efe348e1806727f73a171d9bc11a4e37d03501caa26c07d5cf52ccf02661979042ffc9e
7
+ data.tar.gz: 6818e5dc37b81b7c4b68be9fbb91c59766de41c4cffb6160c88cdf2e341537874e6bf9ac2bd6844dfa365963ff7e308dfd2f8de95cdf38ebdac60cc59a02bc40
@@ -0,0 +1,81 @@
1
+ <% size ||= "md" %>
2
+ <% labels ||= false %>
3
+ <% hide ||= [] %>
4
+ <div class="row">
5
+ <div class="col text-nowrap">
6
+ <% unless hide.include? "show" %>
7
+ <%= link_to object, class: "mb-1 btn btn-#{size} btn-default",
8
+ data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Visualizar" } do %>
9
+ <% if labels %>
10
+ <div class="d-none d-sm-inline-block">
11
+ Ver
12
+ </div>
13
+ <% end %>
14
+ <i class="fa fa-fw fa-eye"></i>
15
+ <% end %>
16
+ <% end %>
17
+ <% unless hide.include? "new" %>
18
+ <%= link_to eval_with_rescue("new_#{[object].flatten.map{|x| x.class.to_s.underscore}.join("_")}_path"),
19
+ class: "mb-1 btn btn-#{size} btn-danger", data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Cadastrar" } do %>
20
+ <% if labels %>
21
+ <div class="d-none d-sm-inline-block">
22
+ Cadastrar
23
+ </div>
24
+ <% end %>
25
+ <i class="fa fa-fw fa-plus"></i>
26
+ <% end %>
27
+ <% end %>
28
+ <% unless hide.include? "edit" %>
29
+ <%= link_to eval_with_rescue("edit_#{[object].flatten.map{|x| x.class.to_s.underscore}.join("_")}_path(#{object.id})"),
30
+ class: "mb-1 btn btn-#{size} btn-warning", data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Editar" } do %>
31
+ <% if labels %>
32
+ <div class="d-none d-sm-inline-block">
33
+ Editar
34
+ </div>
35
+ <% end %>
36
+ <i class="fa fa-fw fa-pen"></i>
37
+ <% end %>
38
+ <% end %>
39
+ <% unless hide.include? "back" %>
40
+ <%= link_to eval_with_rescue("#{[object].flatten.map{|x| x.class.to_s.underscore.pluralize}.join("_")}_path"),
41
+ class: "mb-1 btn btn-#{size}", data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Voltar" } do %>
42
+ <% if labels %>
43
+ <div class="d-none d-sm-inline-block">
44
+ Voltar
45
+ </div>
46
+ <% end %>
47
+ <i class="fa fa-fw fa-arrow-left"></i>
48
+ <% end %>
49
+ <% end %>
50
+ <% unless hide.include? "delete" %>
51
+ <%= button_to object, method: :delete, form: { data: { turbo_confirm: 'Tem certeza?' }, class: 'd-inline'},
52
+ data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Apagar" },
53
+ class: "mb-1 btn btn-#{size} btn-dark" do %>
54
+ <% if labels %>
55
+ <div class="d-none d-sm-inline-block">
56
+ Apagar
57
+ </div>
58
+ <% end %>
59
+ <i class="fa fa-fw fa-trash"></i>
60
+ <% end %>
61
+ <% end %>
62
+ </div>
63
+ <% unless hide.include? "delete_right" %>
64
+ <div class="col col-auto text-right">
65
+ <%= button_to object, method: :delete, form: { data: { turbo_confirm: 'Tem certeza?' }, class: 'd-inline'},
66
+ data: { "bs-toggle": "tooltip", "bs-placement": "top", "bs-title": "Apagar" },
67
+ class: "mb-1 btn btn-#{size} btn-dark" do %>
68
+ <% if labels %>
69
+ <div class="d-none d-sm-inline-block">
70
+ Apagar
71
+ </div>
72
+ <% end %>
73
+ <i class="fa fa-fw fa-trash"></i>
74
+ <% end %>
75
+ </div>
76
+ <% end %>
77
+ <!-- adicionar menus via bloco -->
78
+ <% if block_given? %>
79
+ <%= yield %>
80
+ <% end %>
81
+ </div>
@@ -1,10 +1,13 @@
1
1
  <% exceptions ||= ['created_at', 'updated_at', 'deleted_at'] %>
2
2
  <% show_columns ||= [] %>
3
- <% table_class ||= 'datatables styletable' %>
4
- <% card_class ||= 'primary' %>
3
+ <% card_color ||= 'danger' %>
5
4
  <% sort_all ||= false %>
6
- <% show_new &&= true %>
7
5
  <% sort_fields ||= [] %>
6
+ <% table_class ||= 'bootstrap-table' %>
7
+
8
+ <% hide ||= %w[new back delete_right] %>
9
+ <% size ||= "xs" %>
10
+ <% controller ||= "bootstrap-table" %>
8
11
 
9
12
  <% hide_actions ||= false %>
10
13
 
@@ -12,18 +15,22 @@
12
15
  <% show_columns = list.klass.column_names - exceptions %>
13
16
  <% end %>
14
17
 
15
- <div class="card card-outline card-<%= card_class %>">
18
+ <div class="card card-outline card-<%= card_color %>" data-controller="<%= controller %>">
16
19
  <div class="card-header with-border">
17
20
  <h3 class="card-title">
18
21
  <strong>
19
- <i class="fa fa-list"></i>
20
- Listagem
22
+ <i class="fa fa-<%= list.klass.icon %>"></i>
23
+ Listagem de
24
+ <%= list.klass.model_name.human.pluralize %>
21
25
  </strong>
22
- <% if show_new %>
23
- <%= link_to eval("new_#{list.klass.model_name.singular}_path"), class: "btn btn-xs btn-#{card_class}" do %>
26
+ <% unless hide.include? "header_new" %>
27
+ <%= link_to eval("new_#{list.klass.model_name.singular}_path"), class: "btn btn-xs btn-#{card_color}" do %>
24
28
  Cadastar <i class="fa fa-plus"></i>
25
29
  <% end %>
26
30
  <% end %>
31
+ <% if block_given? %>
32
+ <%= yield %>
33
+ <% end %>
27
34
  <div class="text-muted text-xs">
28
35
  <%= page_entries_info list, entry_name: '' %>
29
36
  </div>
@@ -33,9 +40,8 @@
33
40
  </div>
34
41
  </div>
35
42
  <div class="card-body p-0">
36
- <%= render 'shared/list', list: list, show_columns: show_columns, box_class: card_class,
37
- table_class: table_class, exceptions: exceptions, sort_all: sort_all, sort_fields: sort_fields,
38
- hide_actions: hide_actions
43
+ <%= render 'shared/list', list: list, show_columns: show_columns, card_color: card_color, table_class: table_class,
44
+ exceptions: exceptions, sort_all: sort_all, sort_fields: sort_fields, hide: hide, size: size, hide_actions: hide_actions
39
45
  %>
40
46
  </div>
41
47
  </div>
@@ -0,0 +1,3 @@
1
+ <div id="flash_messages" data-controller="toastr">
2
+ <%= bootstrap_flash %>
3
+ </div>
@@ -4,30 +4,22 @@
4
4
  <% nested_resource ||= false %>
5
5
  <% parent_resource ||= false %>
6
6
  <% back_link ||= false %>
7
- <% box_class ||= 'primary' %>
7
+ <% card_color ||= 'primary' %>
8
8
  <% show_columns ||= [] %>
9
-
10
9
  <% form_fields ||= (object.class.respond_to?('form_fields') ? object.class.form_fields : {}) %>
11
10
  <% form_ordered_fields ||= (form_fields.empty? ? object.class.column_names : form_fields.keys) %>
12
-
13
11
  <% if show_columns.empty? %>
14
12
  <% show_columns = form_ordered_fields - ['id', 'created_at', 'updated_at', 'deleted_at'] - excluded_columns + additional_columns %>
15
13
  <% end %>
16
-
17
14
  <%= simple_form_for(nested_resource ? [parent_resource, object] : object) do |f| %>
18
- <div class="box box-<%= box_class %> card card-outline card-<%= box_class %>">
19
- <div class="box-header with-border card-header">
20
- <h3 class="box-title card-title">
15
+ <div class="card card-outline card-<%= card_color %>">
16
+ <div class="card-header">
17
+ <h3 class="card-title">
18
+ <i class="fa-fw <%= object.class.icon %>"></i>
21
19
  Dados do <%= object.class.model_name.human %>
22
- <% if parent_resource %>
23
- <%= link_to 'Cancelar', eval_with_rescue("#{parent_resource.class.model_name.to_s.downcase}_#{controller_name}_path(#{parent_resource.id})"), class: "btn btn-default btn-xs" %>
24
- <% else %>
25
- <%= link_to 'Cancelar', eval_with_rescue("#{controller_name}_path"), class: "btn btn-default btn-xs" %>
26
- <% end %>
27
- <%= f.submit 'Salvar', class: "btn btn-#{box_class} btn-xs" %>
28
20
  </h3>
29
21
  </div>
30
- <div class="box-body card-body">
22
+ <div class="card-body">
31
23
  <%= render 'shared/fields', object: object, f: f,
32
24
  excluded_columns: excluded_columns,
33
25
  additional_columns: additional_columns,
@@ -35,18 +27,26 @@
35
27
  show_columns: show_columns
36
28
  %>
37
29
  </div>
38
- <div class="box-footer card-footer">
30
+ <div class="card-footer text-right">
39
31
  <% if back_link %>
40
- <%= link_to 'Cancelar', "javascript:history.back()", class: "btn btn-default" %>
32
+ <%= link_to 'Cancelar', "javascript:history.back()", class: "btn" %>
41
33
  <% else %>
42
34
  <% if parent_resource %>
43
- <%= link_to 'Cancelar', eval_with_rescue("#{parent_resource.class.model_name.to_s.downcase}_#{controller_name}_path(#{parent_resource.id})"), class: "btn btn-default" %>
35
+ <%= link_to eval_with_rescue("#{parent_resource.class.model_name.to_s.downcase}_#{controller_name}_path(#{parent_resource.id})"), class: "btn" do %>
36
+ Cancelar
37
+ <i class="fa fa-cancel fa-fw"></i>
38
+ <% end %>
44
39
  <% else %>
45
- <%= link_to 'Cancelar', eval_with_rescue("#{controller_name}_path"), class: "btn btn-default" %>
40
+ <%= link_to eval_with_rescue("#{controller_name}_path"), class: "btn" do %>
41
+ Cancelar
42
+ <i class="fa fa-cancel fa-fw"></i>
43
+ <% end %>
46
44
  <% end %>
47
45
  <% end %>
48
-
49
- <%= f.submit class: "btn btn-#{box_class}" %>
46
+ <%= button_tag type: :submit, class: "btn btn-#{card_color}" do %>
47
+ Salvar
48
+ <i class="fa fa-fw fa-save"></i>
49
+ <% end %>
50
50
  </div>
51
51
  </div>
52
52
  <% end %>
@@ -1,5 +1,4 @@
1
1
  <% exceptions ||= ['created_at', 'updated_at', 'deleted_at'] %>
2
- <% search_fields ||= [] %>
3
2
  <% sort_fields ||= [] %>
4
3
  <% sort_all ||= false %>
5
4
  <% nested_resource ||= false %>
@@ -7,83 +6,59 @@
7
6
  <% show_columns ||= [] %>
8
7
  <% additional_columns ||= [] %>
9
8
  <% additional_actions ||= [] %>
10
- <% box_class ||= 'primary' %>
11
- <% table_no_padding ||= false %>
12
- <% table_class ||= 'datatables' %>
9
+ <% card_color ||= 'danger' %>
10
+ <% table_padding ||= false %>
11
+ <% table_class ||= 'bootstrap-table' %>
13
12
 
14
- <% hide_links ||= false %>
15
- <% hide_actions ||= false %>
16
- <% hide_header ||= false %>
17
- <% hide_footer ||= false %>
13
+ <% hide ||= %w[new back delete_right] %>
14
+ <% size ||= "xs" %>
15
+ <% controller ||= "bootstrap-table" %>
18
16
 
19
- <% hide_read_action ||= false %>
20
- <% hide_new_action ||= false %>
21
- <% hide_edit_action ||= false %>
22
- <% hide_destroy_action ||= false %>
17
+ <% hide_actions ||= false %>
23
18
 
24
- <div class='box box-<%= box_class %> card card-outline card-<%= box_class %>'>
25
- <% unless hide_header %>
26
- <div class="box-header with-border card-header">
27
- <h3 class="box-title card-title">
19
+ <div class="card card-outline card-<%= card_color %>" data-controller="<%= controller %>">
20
+ <% unless hide.include? 'header' %>
21
+ <div class="card-header with-border">
22
+ <h3 class="card-title">
28
23
  <strong>
24
+ <i class="fa fa-<%= list.klass.icon %>"></i>
25
+ Listagem de
29
26
  <%= list.klass.model_name.human.pluralize %>
30
27
  </strong>
31
- </h3>
32
- <% if block_given? %>
33
- <%= yield %>
34
- <% end %>
35
- </div>
36
- <% end %>
37
- <div class="box-body card-body <%= 'no-padding' if table_no_padding %> <%= 'p-0' if table_no_padding %>">
38
- <% unless search_fields.empty? %>
39
- <div class="row">
40
- <%= search_form_for @q, url: eval(nested_resource ? "#{parent_resource}_#{controller_name}_path" : "#{controller_name}_path") do |f| %>
41
- <% search_fields.each do |sf| %>
42
- <%= f.input sf[:field], label: sf[:label], required: false, as: sf[:as], collection: sf[:collection], wrapper_html: { class: 'col-md-3' } %>
28
+ <% unless hide.include? "header_new" %>
29
+ <%= link_to eval("new_#{list.klass.model_name.singular}_path"), class: "btn btn-xs btn-#{card_color}" do %>
30
+ Cadastar <i class="fa fa-plus"></i>
43
31
  <% end %>
44
- <div class="col-md-3 top-25 ">
45
- <%= f.submit "Pesquisar", class: "btn btn-#{box_class}" %>
46
- </div>
47
32
  <% end %>
33
+ <% if block_given? %>
34
+ <%= yield %>
35
+ <% end %>
36
+ <div class="text-muted text-xs">
37
+ <%= page_entries_info list, entry_name: '' %>
38
+ </div>
39
+ </h3>
40
+ <div class='card-tools'>
41
+ <%= paginate list, window: 1 %>
48
42
  </div>
49
- <% end %>
43
+ </div>
44
+ <% end %>
45
+ <div class="card-body <%= 'p-0' unless table_padding %>">
50
46
  <%= render 'shared/list', list: list, exceptions: exceptions, excluded_columns: excluded_columns,
51
47
  additional_columns: additional_columns, sort_fields: sort_fields, sort_all: sort_all,
52
48
  additional_actions: additional_actions, hide_actions: hide_actions, table_class: table_class,
53
- show_columns: show_columns, hide_read_action: hide_read_action, hide_edit_action: hide_edit_action,
54
- hide_destroy_action: hide_destroy_action, box_class: box_class
49
+ show_columns: show_columns, hide: hide, size: size, card_color: card_color, controller: controller
55
50
  %>
56
- <% if defined? list.total_pages %>
57
- <div class='col-md-4'>
58
- <%= page_entries_info list, entry_name: 'resultado(s)' %>
59
- </div>
60
- <div class='col-md-8 text-right hidden-xs'>
61
- <%= paginate list, window: 4 %>
62
- </div>
63
- <div class='col-md-8 text-center visible-xs'>
64
- <%= paginate list, window: 1 %>
65
- </div>
66
- <% end %>
67
51
  </div>
68
-
69
- <% unless hide_links %>
70
- <% unless controller_name == 'users' %>
71
- <div class="box-footer card-footer">
72
- <% if !hide_new_action && can?(:new, list.klass) %>
73
- <% if nested_resource == true %>
74
- <% if parent_resource %>
75
- <%= link_to eval("new_#{parent_resource.class.model_name.singular}_#{list.klass.model_name.singular}_path(#{parent_resource.id})"), class: "btn btn-#{box_class}" do %>
76
- <%= t('.new', default: t("helpers.links.new")) %> <%= list.klass.model_name.human %> <i class='fa fa-plus'></i>
77
- <% end %>
78
- <% end %>
79
- <% else %>
80
- <%= link_to eval("new_#{list.klass.model_name.singular}_path"), class: "btn btn-#{box_class}" do %>
81
- <%= t('.new', default: t("helpers.links.new")) %> <%= list.klass.model_name.human %> <i class='fa fa-plus'></i>
82
- <% end %>
83
- <% end %>
84
- <% end %>
85
- </div>
86
- <% end %>
87
- <% end %>
88
-
89
52
  </div>
53
+ <div class="row">
54
+ <div class="col" >
55
+ <div class="text-muted text-xs">
56
+ <%= page_entries_info list, entry_name: '' %>
57
+ </div>
58
+ </div>
59
+ <div class="col">
60
+ <div class="float-right">
61
+ <%= paginate list, window: 1 %>
62
+ </div>
63
+ </div>
64
+ </div>
@@ -2,25 +2,23 @@
2
2
  <% excluded_columns ||= [] %>
3
3
  <% additional_columns ||= [] %>
4
4
  <% additional_actions ||= [] %>
5
- <% hide_actions ||= false %>
6
5
  <% sort_fields ||= [] %>
7
6
  <% sort_all ||= false %>
8
- <% table_class ||= 'datatables styletable' %>
9
7
 
10
- <% box_class ||= 'primary' %>
11
- <% card_class ||= 'primary' %>
8
+ <% card_color ||= 'primary' %>
9
+ <% table_class ||= 'table table-striped bootstrap-table' %>
12
10
 
13
11
  <% show_columns ||= [] %>
14
12
 
15
- <% hide_read_action ||= false %>
16
- <% hide_edit_action ||= false %>
17
- <% hide_destroy_action ||= false %>
13
+ <% hide_actions ||= false %>
14
+ <% hide ||= %w[new back delete_right] %>
15
+ <% size ||= "xs" %>
18
16
 
19
17
  <% if show_columns.empty? %>
20
18
  <% show_columns = list.klass.column_names - exceptions - excluded_columns + additional_columns %>
21
19
  <% end %>
22
20
 
23
- <table class="table table-striped <%= table_class %>">
21
+ <table class="<%= table_class %>">
24
22
  <thead>
25
23
  <tr>
26
24
  <% show_columns.each do |column| %>
@@ -75,7 +73,7 @@
75
73
  </th>
76
74
  <% end %>
77
75
  <% unless hide_actions %>
78
- <th>Ações</th>
76
+ <th data-align="center">Ações</th>
79
77
  <% end %>
80
78
  </tr>
81
79
  </thead>
@@ -115,7 +113,7 @@
115
113
  <% elsif object.send(column_name).respond_to? 'attached?' %>
116
114
  <% if object.send(column_name).class == ActiveStorage::Attached::One %>
117
115
  <% if object.send(column_name).attached? %>
118
- <%= link_to rails_blob_path(object.send(column_name)), class: "btn btn-#{box_class} #{card_class} btn-xs", target: '_blank' do %>
116
+ <%= link_to rails_blob_path(object.send(column_name)), class: "btn btn-#{card_color} btn-xs", target: '_blank' do %>
119
117
  <i class="fa fa-file-o"></i> Arquivo
120
118
  <% end %>
121
119
  <% end %>
@@ -137,12 +135,10 @@
137
135
  <% end %>
138
136
  <% unless hide_actions %>
139
137
  <td>
140
- <%= render 'shared/action_links', object: object, additional_actions: additional_actions,
141
- hide_read_action: hide_read_action, hide_edit_action: hide_edit_action, hide_destroy_action: hide_destroy_action
142
- %>
138
+ <%= render 'shared/btn_action_links', object: object, additional_actions: additional_actions, hide: hide, size: size %>
143
139
  </td>
144
140
  <% end %>
145
141
  </tr>
146
142
  <% end %>
147
143
  </tbody>
148
- </table>
144
+ </table>
@@ -0,0 +1,46 @@
1
+ <% card_color ||= 'danger' %>
2
+ <% default_field = {name: :id_eq, attrs: {label: false, required: false, placeholder: 'ID', wrapper: false}} %>
3
+ <% received_field = defined?(main_field) ? main_field : {} %>
4
+ <% main_field = default_field.deep_merge(received_field) %>
5
+ <%= search_form_for @q, url: url do |f| %>
6
+ <div class="card card-outline card-<%= card_color %>" data-controller='filtering'>
7
+ <div class="card-header with-bormainder">
8
+ <div class="input-group">
9
+ <div class="input-group-prepend">
10
+ <button type="button" class="btn btn-<%= card_color %>" data-action="click->filtering#toggle">
11
+ <i class="fa fa-angle-right" data-filtering-target='icon'></i>
12
+ <span class="d-none d-sm-inline-block">
13
+ Filtrar
14
+ </span>
15
+ </button>
16
+ </div>
17
+ <%= f.input (main_field&.dig(:name) || :id_eq), main_field&.dig(:attrs) %>
18
+ <div class="input-group-append">
19
+ <%= button_tag type: "submit", class: "btn btn-#{card_color}" do %>
20
+ <i class="fa fa-search"></i>
21
+ <span class="d-none d-sm-inline-block">
22
+ Buscar
23
+ </span>
24
+ <% end %>
25
+ </div>
26
+ </div>
27
+ <div class="row">
28
+ <div class="col-md-12 active-filters" data-filtering-target='filters'></div>
29
+ </div>
30
+ </div>
31
+ <div class="card-body" style='display: none;' data-filtering-target='body'>
32
+ <div class="row">
33
+ <% search_fields ||= [] %>
34
+ <% search_fields.each do |sf| %>
35
+ <% default_attrs = {required: false, wrapper_html: {class: "col-md-3"}} %>
36
+ <% received_attrs = sf.dig(:attrs) || {} %>
37
+ <% attrs = default_attrs.deep_merge(received_attrs) %>
38
+ <%= f.input sf.dig(:name), attrs %>
39
+ <% end %>
40
+ </div>
41
+ <%= button_tag type: "submit", class: "btn btn-#{card_color}" do %>
42
+ <i class="fa fa-search"></i> Buscar
43
+ <% end %>
44
+ </div>
45
+ </div>
46
+ <% end %>
@@ -4,11 +4,10 @@
4
4
 
5
5
  <% nested_resource ||= false %>
6
6
  <% relationships ||= {} %>
7
- <% box_class ||= 'primary' %>
8
- <% hide_links ||= false %>
9
- <% show_actions ||= ['new', 'edit', 'index'] %>
10
- <% hide_header ||= false %>
11
- <% hide_table_header ||= false %>
7
+
8
+ <% card_color ||= 'danger' %>
9
+ <% hide ||= %w[show delete] %>
10
+ <% size ||= "xs" %>
12
11
 
13
12
  <% if show_columns.empty? %>
14
13
  <% form_fields ||= (object.class.respond_to?('form_fields') ? object.class.form_fields : {}) %>
@@ -16,218 +15,195 @@
16
15
  <% show_columns = form_ordered_fields - ['id', 'created_at', 'updated_at', 'deleted_at'] - excluded_columns + additional_columns %>
17
16
  <% end %>
18
17
 
19
- <div class="box box-<%= box_class %> card card-outline card-<%= box_class %>">
20
- <% unless hide_header %>
21
- <div class="box-header with-border card-header">
22
- <h3 class="box-title card-title">
23
- <%= object.class.model_name.human %>
24
- <% unless hide_links %>
25
- <% if show_actions.include?('new') && can?(:new, object.class) %>
26
- <% if nested_resource %>
27
- <%= link_to eval_with_rescue("new_#{parent_resource.class.model_name.singular}_#{object.class.model_name.singular}_path(#{parent_resource.id})"), class: "btn btn-#{box_class} btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Cadastrar' } do %>
28
- Cadastrar <i class="fa fa-plus"></i>
29
- <% end %>
30
- <% else %>
31
- <%= link_to eval("new_#{object.class.model_name.singular}_path"), class: "btn btn-#{box_class} btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Cadastrar' } do %>
32
- Cadastrar <i class="fa fa-plus"></i>
33
- <% end %>
34
- <% end %>
35
- <% end %>
36
- <% if show_actions.include?('edit') && can?(:edit, object) %>
37
- <% if nested_resource %>
38
- <%= link_to eval_with_rescue("edit_#{parent_resource.class.model_name.singular}_#{object.class.model_name.singular}_path(#{parent_resource.id},#{object.id})"), class: "btn btn-#{box_class} btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Editar' } do %>
39
- Editar <i class="fa fa-pencil fa-pen"></i>
40
- <% end %>
41
- <% else %>
42
- <%= link_to eval_with_rescue("edit_#{object.class.model_name.singular}_path(#{object.id})"), class: "btn btn-warning btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Editar' } do %>
43
- Editar <i class="fa fa-pencil fa-pen"></i>
44
- <% end %>
45
- <% end %>
46
- <% end %>
47
- <% if show_actions.include?('index') %>
48
- <% if nested_resource %>
49
- <%= link_to eval_with_rescue("#{parent_resource.class.model_name.singular}_#{object.class.model_name.plural}_path(#{parent_resource.id})"), class: "btn btn-default btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Listagem' } do %>
50
- Listagem <i class="fa fa-bars"></i>
51
- <% end %>
52
- <% else %>
53
- <%= link_to eval_with_rescue("#{object.class.model_name.plural}_path"), class: "btn btn-default btn-xs", data: { toggle: 'tooltip', placement: 'top', title: 'Listagem' } do %>
54
- Listagem <i class="fa fa-bars"></i>
55
- <% end %>
56
- <% end %>
57
- <% end %>
58
- <% end %>
59
- <% if block_given? %>
60
- <%= yield %>
18
+ <div class="card card-outline card-<%= card_color %>">
19
+ <div class="card-header">
20
+ <div class="row align-items-center">
21
+ <div class="col-12 col-md-auto">
22
+ <h3 class="card-title">
23
+ <strong>
24
+ <i class="fa fa<%= object.class.icon %>"></i>
25
+ Visualizar <%=t object.class.model_name.human %>
26
+ </strong>
27
+ </h3>
28
+ </div>
29
+ <div class="col-12 col-md mr-auto">
30
+ <% if can? :manage, object %>
31
+ <%= render "shared/btn_action_links", size: "xs", object: object, labels: true, hide: hide %>
61
32
  <% end %>
62
- </h3>
33
+ </div>
63
34
  </div>
64
- <% end %>
65
- <div class="box-body no-padding">
66
- <table class="table table-bordered table-striped no-padding datatables">
67
- <% unless hide_table_header %>
35
+ </div>
36
+ </div>
37
+ <% if lookup_context.find_all("#{object.class.model_name.plural}/_#{object.class.model_name.singular}").any? %>
38
+ <%= render object %>
39
+ <% else %>
40
+ <div class="card card-outline card-<%= card_color %>">
41
+ <div class="card-body p-0">
42
+ <table class="table table-bordered table-striped p-0">
68
43
  <thead>
69
44
  <tr>
70
- <th width='15%'><%= t('field') %></th>
71
- <th><%= t('value') %></th>
45
+ <th width='15%'>Campo</th>
46
+ <th>Valor</th>
72
47
  </tr>
73
48
  </thead>
74
- <% end %>
75
- <% show_columns.each do |column| %>
76
- <% unless /_currency$/ =~ column %>
77
- <tr>
78
- <th>
79
- <% if /_id$/ =~ column && object.respond_to?(column.split('_id')[0]) %>
80
- <%= object.class.human_attribute_name(column.split("_id")[0]) %>
81
- <% elsif /_cents$/ =~ column %>
82
- <%= object.class.human_attribute_name(column.split("_cents")[0]) %>
83
- <% else %>
84
- <%= object.class.human_attribute_name(column) %>
85
- <% end %>
86
- </th>
87
- <td>
88
- <% if column.to_s.include?('.') %>
89
- <% o = object %>
90
- <% column.split('.').each{|m| o = o.send(m) if o } %>
91
- <%= o %>
92
- <% elsif object.send(column).class == Date or
93
- object.send(column).class == DateTime or
94
- object.send(column).class == ActiveSupport::TimeWithZone or
95
- object.send(column).class == Time %>
96
- <%=l object.send(column) %>
97
- <% elsif object.send(column).respond_to? 'attached?' %>
98
- <% if object.send(column).class == ActiveStorage::Attached::One %>
99
- <% if object.send(column).attached? %>
100
- <%= link_to rails_blob_path(object.send(column)), class: "btn btn-#{box_class} btn-xs", target: '_blank' do %>
101
- <i class="fa fa-file-o"></i> Arquivo
49
+ <% show_columns.each do |column| %>
50
+ <% unless /_currency$/ =~ column %>
51
+ <tr>
52
+ <th>
53
+ <% if /_id$/ =~ column && object.respond_to?(column.split('_id')[0]) %>
54
+ <%= object.class.human_attribute_name(column.split("_id")[0]) %>
55
+ <% elsif /_cents$/ =~ column %>
56
+ <%= object.class.human_attribute_name(column.split("_cents")[0]) %>
57
+ <% else %>
58
+ <%= object.class.human_attribute_name(column) %>
59
+ <% end %>
60
+ </th>
61
+ <td>
62
+ <% if column.to_s.include?('.') %>
63
+ <% o = object %>
64
+ <% column.split('.').each{|m| o = o.send(m) if o } %>
65
+ <%= o %>
66
+ <% elsif object.send(column).class == Date or
67
+ object.send(column).class == DateTime or
68
+ object.send(column).class == ActiveSupport::TimeWithZone or
69
+ object.send(column).class == Time %>
70
+ <%=l object.send(column) %>
71
+ <% elsif object.send(column).respond_to? 'attached?' %>
72
+ <% if object.send(column).class == ActiveStorage::Attached::One %>
73
+ <% if object.send(column).attached? %>
74
+ <%= link_to rails_blob_path(object.send(column)), class: "btn btn-#{card_color} btn-xs", target: '_blank' do %>
75
+ <i class="fa fa-file-o"></i> Arquivo
76
+ <% end %>
102
77
  <% end %>
103
78
  <% end %>
79
+ <% elsif /_id$/ =~ column && object.respond_to?(column.split('_id')[0]) %>
80
+ <%= object.send(column.split("_id")[0])&.name %>
81
+ <% elsif /_cents$/ =~ column %>
82
+ <%= number_to_currency object.send(column.split("_cents")[0]) %>
83
+ <% else %>
84
+ <%= object.send(column) %>
104
85
  <% end %>
105
- <% elsif /_id$/ =~ column && object.respond_to?(column.split('_id')[0]) %>
106
- <%= object.send(column.split("_id")[0])&.name %>
107
- <% elsif /_cents$/ =~ column %>
108
- <%= number_to_currency object.send(column.split("_cents")[0]) %>
109
- <% else %>
110
- <%= object.send(column) %>
111
- <% end %>
112
- </td>
113
- </tr>
86
+ </td>
87
+ </tr>
88
+ <% end %>
114
89
  <% end %>
115
- <% end %>
116
- </table>
90
+ </table>
91
+ </div>
117
92
  </div>
118
- </div>
119
93
 
120
- <% if relationships.any? %>
121
- <% relationships.each do |key, value| %>
122
- <% if object.association(key.to_s).kind_of?(ActiveRecord::Associations::BelongsToAssociation) ||
123
- object.association(key.to_s).kind_of?(ActiveRecord::Associations::HasOneAssociation) %>
124
- <div class="box box-<%= box_class %>">
125
- <div class="box-header with-border">
126
- <h3 class="box-title">
127
- <%= Kernel.const_get(key.to_s.singularize.camelize).model_name.human %>
128
- </h3>
94
+ <% if relationships.any? %>
95
+ <% relationships.each do |key, value| %>
96
+ <% if object.association(key.to_s).kind_of?(ActiveRecord::Associations::BelongsToAssociation) ||
97
+ object.association(key.to_s).kind_of?(ActiveRecord::Associations::HasOneAssociation) %>
98
+ <div class="box card-<%= card_color %>">
99
+ <div class="card-header with-border">
100
+ <h3 class="card-title">
101
+ <%= Kernel.const_get(key.to_s.singularize.camelize).model_name.human %>
102
+ </h3>
103
+ </div>
104
+ <div class="card-body p-0">
105
+ <table class="table table-bordered table-striped p-0">
106
+ <% unless hide_table_header %>
107
+ <thead>
108
+ <tr>
109
+ <th width='15%'><%= t('field') %></th>
110
+ <th><%= t('value') %></th>
111
+ </tr>
112
+ </thead>
113
+ <% end %>
114
+ <tbody>
115
+ <% value.each do |v| %>
116
+ <tr>
117
+ <td>
118
+ <strong>
119
+ <% if /_id$/ =~ v && Kernel.const_get(key.to_s.singularize.camelize).new.respond_to?(v.split('_id')[0]) %>
120
+ <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v.split('_id')[0]) %>
121
+ <% elsif /_cents$/ =~ v %>
122
+ <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v.split("_cents")[0]) %>
123
+ <% else %>
124
+ <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v) %>
125
+ <% end %>
126
+ </strong>
127
+ </td>
128
+ <td>
129
+ <% if object.send(key.to_s).send(v).class == Date or
130
+ object.send(key.to_s).send(v).class == DateTime or
131
+ object.send(key.to_s).send(v).class == ActiveSupport::TimeWithZone or
132
+ object.send(key.to_s).send(v).class == Time %>
133
+ <%=l object.send(key.to_s).send(v) %>
134
+ <% elsif /_id$/ =~ v && object.send(key.to_s).respond_to?(v.split('_id')[0]) %>
135
+ <%= object.send(key.to_s).send(v.split("_id")[0])&.name %>
136
+ <% elsif /_cents$/ =~ v %>
137
+ <%= number_to_currency object.send(key.to_s).send(v.split("_cents")[0]) %>
138
+ <% else %>
139
+ <%= object.send(key.to_s).send(v) %>
140
+ <% end %>
141
+ </td>
142
+ </tr>
143
+ <% end %>
144
+ </tbody>
145
+ </table>
146
+ </div>
129
147
  </div>
130
- <div class="box-body no-padding">
131
- <table class="table table-bordered table-striped no-padding datatables">
132
- <% unless hide_table_header %>
148
+ <% else %>
149
+ <div class="box card-<%= card_color %>">
150
+ <div class="card-header with-border">
151
+ <h3 class="card-title">
152
+ <%= Kernel.const_get(key.to_s.singularize.camelize).model_name.human.pluralize %>
153
+ </h3>
154
+ </div>
155
+ <div class="card-body p-0">
156
+ <table class="table table-bordered table-striped p-0">
133
157
  <thead>
134
158
  <tr>
135
- <th width='15%'><%= t('field') %></th>
136
- <th><%= t('value') %></th>
137
- </tr>
138
- </thead>
139
- <% end %>
140
- <tbody>
141
- <% value.each do |v| %>
142
- <tr>
143
- <td>
144
- <strong>
159
+ <% value.each do |v| %>
160
+ <th>
145
161
  <% if /_id$/ =~ v && Kernel.const_get(key.to_s.singularize.camelize).new.respond_to?(v.split('_id')[0]) %>
146
162
  <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v.split('_id')[0]) %>
147
- <% elsif /_cents$/ =~ v %>
148
- <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v.split("_cents")[0]) %>
149
163
  <% else %>
150
164
  <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v) %>
151
165
  <% end %>
152
- </strong>
153
- </td>
154
- <td>
155
- <% if object.send(key.to_s).send(v).class == Date or
156
- object.send(key.to_s).send(v).class == DateTime or
157
- object.send(key.to_s).send(v).class == ActiveSupport::TimeWithZone or
158
- object.send(key.to_s).send(v).class == Time %>
159
- <%=l object.send(key.to_s).send(v) %>
160
- <% elsif /_id$/ =~ v && object.send(key.to_s).respond_to?(v.split('_id')[0]) %>
161
- <%= object.send(key.to_s).send(v.split("_id")[0])&.name %>
162
- <% elsif /_cents$/ =~ v %>
163
- <%= number_to_currency object.send(key.to_s).send(v.split("_cents")[0]) %>
164
- <% else %>
165
- <%= object.send(key.to_s).send(v) %>
166
- <% end %>
167
- </td>
166
+ </th>
167
+ <% end %>
168
168
  </tr>
169
- <% end %>
170
- </tbody>
171
- </table>
172
- </div>
173
- </div>
174
- <% else %>
175
- <div class="box box-<%= box_class %>">
176
- <div class="box-header with-border">
177
- <h3 class="box-title">
178
- <%= Kernel.const_get(key.to_s.singularize.camelize).model_name.human.pluralize %>
179
- </h3>
180
- </div>
181
- <div class="box-body no-padding">
182
- <table class="table table-bordered table-striped no-padding datatables">
183
- <thead>
184
- <tr>
185
- <% value.each do |v| %>
186
- <th>
187
- <% if /_id$/ =~ v && Kernel.const_get(key.to_s.singularize.camelize).new.respond_to?(v.split('_id')[0]) %>
188
- <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v.split('_id')[0]) %>
189
- <% else %>
190
- <%= Kernel.const_get(key.to_s.singularize.camelize).human_attribute_name(v) %>
191
- <% end %>
192
- </th>
193
- <% end %>
194
- </tr>
195
- </thead>
196
- <tbody>
197
- <% object.send(key.to_s).each do |r| %>
198
- <tr>
199
- <% value.each do |v| %>
200
- <td>
201
- <% if v.include?('.') %>
202
- <% o = r %>
203
- <% v.split('.').each{|m| o = o.send(m) if o } %>
204
- <%= o %>
205
- <% elsif r.send(v).class == Date or
206
- r.send(v).class == DateTime or
207
- r.send(v).class == ActiveSupport::TimeWithZone or
208
- r.send(v).class == Time %>
209
- <%=l r.send(v) %>
210
- <% elsif r.send(v).respond_to? 'attached?' %>
211
- <% if r.send(v).class == ActiveStorage::Attached::One %>
212
- <% if r.send(v).attached? %>
213
- <%= link_to rails_blob_path(r.send(v)), class: "btn btn-#{box_class} btn-xs", target: '_blank' do %>
214
- <i class="fa fa-file-o"></i> Arquivo
169
+ </thead>
170
+ <tbody>
171
+ <% object.send(key.to_s).each do |r| %>
172
+ <tr>
173
+ <% value.each do |v| %>
174
+ <td>
175
+ <% if v.include?('.') %>
176
+ <% o = r %>
177
+ <% v.split('.').each{|m| o = o.send(m) if o } %>
178
+ <%= o %>
179
+ <% elsif r.send(v).class == Date or
180
+ r.send(v).class == DateTime or
181
+ r.send(v).class == ActiveSupport::TimeWithZone or
182
+ r.send(v).class == Time %>
183
+ <%=l r.send(v) %>
184
+ <% elsif r.send(v).respond_to? 'attached?' %>
185
+ <% if r.send(v).class == ActiveStorage::Attached::One %>
186
+ <% if r.send(v).attached? %>
187
+ <%= link_to rails_blob_path(r.send(v)), class: "btn btn-#{card_color} btn-xs", target: '_blank' do %>
188
+ <i class="fa fa-file-o"></i> Arquivo
189
+ <% end %>
215
190
  <% end %>
216
191
  <% end %>
192
+ <% elsif /_id$/ =~ v && r.respond_to?(v.split('_id')[0]) %>
193
+ <%= r.send(v.split("_id")[0])&.name %>
194
+ <% else %>
195
+ <%= r.send(v) %>
217
196
  <% end %>
218
- <% elsif /_id$/ =~ v && r.respond_to?(v.split('_id')[0]) %>
219
- <%= r.send(v.split("_id")[0])&.name %>
220
- <% else %>
221
- <%= r.send(v) %>
222
- <% end %>
223
- </td>
224
- <% end %>
225
- </tr>
226
- <% end %>
227
- </tbody>
228
- </table>
197
+ </td>
198
+ <% end %>
199
+ </tr>
200
+ <% end %>
201
+ </tbody>
202
+ </table>
203
+ </div>
229
204
  </div>
230
- </div>
205
+ <% end %>
231
206
  <% end %>
232
207
  <% end %>
233
208
  <% end %>
209
+ <%= render "shared/btn_action_links", object: object, labels: true, hide: hide %>
@@ -1,3 +1,3 @@
1
1
  module Zutils
2
- VERSION = "2.0.2"
2
+ VERSION = "3.0.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zutils
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.2
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ricardo Viana
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-07-07 00:00:00.000000000 Z
11
+ date: 2024-09-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -68,12 +68,15 @@ files:
68
68
  - app/assets/javascripts/zutils.js
69
69
  - app/assets/stylesheets/zutils.scss
70
70
  - app/views/shared/_action_links.html.erb
71
+ - app/views/shared/_btn_action_links.html.erb
71
72
  - app/views/shared/_card_list.html.erb
72
73
  - app/views/shared/_fields.html.erb
74
+ - app/views/shared/_flash.html.erb
73
75
  - app/views/shared/_form.html.erb
74
76
  - app/views/shared/_index.html.erb
75
77
  - app/views/shared/_list.html.erb
76
78
  - app/views/shared/_modal.html.erb
79
+ - app/views/shared/_search_form.html.erb
77
80
  - app/views/shared/_show.html.erb
78
81
  - bin/console
79
82
  - bin/setup
@@ -100,7 +103,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
100
103
  - !ruby/object:Gem::Version
101
104
  version: '0'
102
105
  requirements: []
103
- rubygems_version: 3.4.15
106
+ rubygems_version: 3.5.18
104
107
  signing_key:
105
108
  specification_version: 4
106
109
  summary: Utilidades gerais para aplicações rails