cm-admin 1.1.8 → 1.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.vscode/settings.json +3 -0
- data/Gemfile.lock +1 -1
- data/app/assets/stylesheets/cm_admin/base/navbar.scss +11 -38
- data/app/assets/stylesheets/cm_admin/base/quicksearch.scss +3 -4
- data/app/assets/stylesheets/cm_admin/base/show.scss +4 -15
- data/app/assets/stylesheets/cm_admin/base/table.scss +2 -14
- data/app/assets/stylesheets/cm_admin/components/_buttons.scss +28 -140
- data/app/assets/stylesheets/cm_admin/dependency/bootstrap.min.css +4 -5
- data/app/assets/stylesheets/cm_admin/pages/import_page.scss +3 -10
- data/app/views/cm_admin/main/_actions_dropdown.html.slim +1 -3
- data/app/views/cm_admin/main/_associated_table.html.slim +1 -1
- data/app/views/cm_admin/main/_nested_fields.html.slim +2 -1
- data/app/views/cm_admin/main/_nested_table_form.html.slim +1 -1
- data/app/views/cm_admin/main/_tabs.html.slim +1 -1
- data/app/views/cm_admin/main/_top_navbar.html.slim +11 -17
- data/app/views/cm_admin/main/history.html.slim +3 -4
- data/app/views/cm_admin/main/import_form.html.slim +2 -2
- data/app/views/cm_admin/main/new.html.slim +1 -1
- data/app/views/cm_admin/main/show.html.slim +3 -4
- data/app/views/layouts/_quick_links.html.slim +2 -2
- data/app/views/layouts/cm_admin.html.slim +10 -12
- data/lib/cm_admin/version.rb +1 -1
- data/lib/cm_admin/view_helpers/form_helper.rb +2 -1
- data/lib/cm_admin/view_helpers/manage_column_popup_helper.rb +2 -2
- data/lib/cm_admin/view_helpers/page_info_helper.rb +4 -4
- data/lib/cm_admin/view_helpers.rb +2 -1
- metadata +3 -2
@@ -25,7 +25,7 @@
|
|
25
25
|
line-height: 22px;
|
26
26
|
margin-bottom: 0;
|
27
27
|
}
|
28
|
-
}
|
28
|
+
}
|
29
29
|
&__body {
|
30
30
|
padding: 16px 24px;
|
31
31
|
.body-title {
|
@@ -63,9 +63,6 @@
|
|
63
63
|
|
64
64
|
.actions-wrapper {
|
65
65
|
margin-top: 32px;
|
66
|
-
button {
|
67
|
-
padding: 5px 10px;
|
68
|
-
}
|
69
66
|
}
|
70
67
|
|
71
68
|
//form UI
|
@@ -90,7 +87,7 @@
|
|
90
87
|
margin-bottom: 16px;
|
91
88
|
text-transform: uppercase;
|
92
89
|
}
|
93
|
-
.steps-wrapper
|
90
|
+
.steps-wrapper {
|
94
91
|
.steps-title {
|
95
92
|
@include font($size: size(16), $weight: bold);
|
96
93
|
font-family: $primary-font;
|
@@ -116,10 +113,6 @@
|
|
116
113
|
}
|
117
114
|
}
|
118
115
|
}
|
119
|
-
.import-btn {
|
120
|
-
padding: 5px 10px;
|
121
|
-
}
|
122
116
|
}
|
123
|
-
|
124
117
|
}
|
125
|
-
}
|
118
|
+
}
|
@@ -5,11 +5,9 @@
|
|
5
5
|
- if custom_actions.any? || edit_action.present? || destroy_action.present?
|
6
6
|
td.row-action-cell
|
7
7
|
.row-action-tool
|
8
|
-
button.
|
8
|
+
button.btn-ghost.dropdown-toggle
|
9
9
|
span
|
10
10
|
i.fa.fa-bars.bolder
|
11
|
-
span
|
12
|
-
i.fa.fa-angle-down
|
13
11
|
.popup-card.table-export-popup.hidden
|
14
12
|
- if edit_action.present?
|
15
13
|
= link_to cm_admin.send("#{current_model.name.underscore}_edit_path", ar_object.id) do
|
@@ -8,7 +8,7 @@
|
|
8
8
|
- association = @ar_object.class.reflect_on_all_associations.select{|x| x.name == @associated_model.name.tableize.to_sym }.first
|
9
9
|
- polymorphic_name = (association && association.inverse_of && association.inverse_of.options[:polymorphic]) ? association.inverse_of.name : ''
|
10
10
|
a href="#{CmAdmin::Engine.mount_path}/#{@associated_model.name.tableize}/new?associated_id=#{@ar_object.id}&associated_class=#{@ar_object.class.name.underscore}&polymorphic_name=#{polymorphic_name}&referrer=#{request.path}"
|
11
|
-
button.
|
11
|
+
button.btn-secondary Add
|
12
12
|
/ button.secondary-btn.column-btn data-target="#columnActionModal" data-toggle="modal" type="button"
|
13
13
|
/ span
|
14
14
|
/ i.fa.fa-columns.bolder
|
@@ -15,7 +15,8 @@
|
|
15
15
|
| Chapter 1
|
16
16
|
.field-remove-action
|
17
17
|
- if @reflections.select {|x| x if x.name == assoc_name}.first.macro == :has_many
|
18
|
-
|
18
|
+
.accordion-delete-btn
|
19
|
+
= link_to_remove_association "", f, class: 'fa fa-trash btn-ghost'
|
19
20
|
div.accordion-collapse.collapse.show[aria-labelledby="headingOne" id="#{assoc_name}-#{f.object.id}"]
|
20
21
|
.accordion-body
|
21
22
|
- fields.each do |field|
|
@@ -7,4 +7,4 @@
|
|
7
7
|
= render partial: '/cm_admin/main/nested_fields', locals: { f: record, assoc_name: assoc_name, section: section }
|
8
8
|
- if @reflections.select {|x| x if x.name == assoc_name}.first.macro == :has_many
|
9
9
|
.links
|
10
|
-
= link_to_add_association "+ Add #{assoc_name.to_s.titleize}", f, table_name, partial: '/cm_admin/main/nested_fields', render_options: {locals: { assoc_name: assoc_name, section: section }}, class: 'd-inline-block secondary
|
10
|
+
= link_to_add_association "+ Add #{assoc_name.to_s.titleize}", f, table_name, partial: '/cm_admin/main/nested_fields', render_options: {locals: { assoc_name: assoc_name, section: section }}, class: 'd-inline-block btn-secondary mt-2'
|
@@ -1,4 +1,4 @@
|
|
1
|
-
ul.
|
1
|
+
ul.tabs
|
2
2
|
- @model.available_tabs.each do |nav_item|
|
3
3
|
- if nav_item.display_if.call(@ar_object)
|
4
4
|
- if nav_item.custom_action.empty? || (nav_item.custom_action.present? && policy([:cm_admin, @model.name.classify.constantize]).send(:"#{nav_item.custom_action}?"))
|
@@ -1,33 +1,27 @@
|
|
1
|
-
.
|
2
|
-
.
|
1
|
+
.entity-header
|
2
|
+
.entity-header__info
|
3
3
|
- if cm_admin.method_defined?(:"#{@model.name.underscore}_index_path") && (@model.current_action.name == 'show' || @model.current_action.layout_type.present?)
|
4
|
-
.
|
5
|
-
.
|
6
|
-
|
7
|
-
.
|
8
|
-
|
9
|
-
p.title-sub-text = action_description
|
10
|
-
.cm-navbar__rhs
|
4
|
+
.breadcrumb
|
5
|
+
= link_to "#{@model.name.titleize.pluralize} /", cm_admin.send(:"#{@model.name.underscore}_index_path"), class: 'text-reset'
|
6
|
+
h4 = action_title
|
7
|
+
p.mb-0.text-body-secondary = action_description
|
8
|
+
.entity-header__actions
|
11
9
|
- if @model.current_action.name == 'index'
|
12
10
|
- if has_valid_policy(@model.name, :exportable)
|
13
11
|
.export-container
|
14
12
|
.dropdown
|
15
|
-
button.secondary-
|
16
|
-
span
|
13
|
+
button.btn-secondary.dropdown-toggle data-bs-toggle='dropdown'
|
17
14
|
i.fa.fa-arrow-down
|
18
|
-
span
|
19
15
|
| Export
|
20
|
-
span
|
21
|
-
i.fa.fa-angle-down
|
22
16
|
ul.dropdown-menu.export-popup
|
23
17
|
li
|
24
18
|
.popup-option.pointer data-bs-toggle='modal' data-bs-target='#exportmodal'
|
25
19
|
span Export
|
26
20
|
- if @model.importer && has_valid_policy(@model.name, :importable)
|
27
|
-
= link_to 'Import', cm_admin.send(:"#{@model.name.underscore}_import_path"), class: 'primary
|
21
|
+
= link_to 'Import', cm_admin.send(:"#{@model.name.underscore}_import_path"), class: 'btn-primary ml-2'
|
28
22
|
- new_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('new')}
|
29
23
|
- if new_action.any? && policy([:cm_admin, @model.name.classify.constantize]).new?
|
30
|
-
= link_to 'Add', cm_admin.send(:"#{@model.name.underscore}_new_path"), class: 'primary
|
24
|
+
= link_to 'Add', cm_admin.send(:"#{@model.name.underscore}_new_path"), class: 'btn-primary ml-2'
|
31
25
|
- @model.available_actions.select{|act| act if act.route_type == 'collection'}.each do |custom_action|
|
32
26
|
= custom_action_items(custom_action, 'index')
|
33
27
|
- elsif @model.current_action.name == 'show'
|
@@ -36,4 +30,4 @@
|
|
36
30
|
|
37
31
|
- edit_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('edit')}
|
38
32
|
- if edit_action.any? && policy([:cm_admin, @model.name.classify.constantize]).edit?
|
39
|
-
= link_to "Edit #{@model.name.titleize.pluralize}", cm_admin.send(:"#{@model.name.underscore}_edit_path", @ar_object), class: 'primary
|
33
|
+
= link_to "Edit #{@model.name.titleize.pluralize}", cm_admin.send(:"#{@model.name.underscore}_edit_path", @ar_object), class: 'btn-primary ml-2'
|
@@ -1,8 +1,7 @@
|
|
1
1
|
.show-page.cm-page-container
|
2
|
-
.show-
|
3
|
-
|
4
|
-
|
5
|
-
== render 'cm_admin/main/tabs'
|
2
|
+
.show-page__header.sticky-container.page-top-bar
|
3
|
+
== render 'cm_admin/main/top_navbar'
|
4
|
+
== render 'cm_admin/main/tabs'
|
6
5
|
.show-page__inner.scrollable
|
7
6
|
.history-box
|
8
7
|
- @ar_object.action_trails.each do |at|
|
@@ -12,7 +12,7 @@
|
|
12
12
|
p.success-msg Your file has been uploaded and it will be processed soon.
|
13
13
|
/ p.success-msg-info An email will be sent once the process is completed. If there are any problems with the import, we'll let you know through an email.
|
14
14
|
.actions-wrapper
|
15
|
-
a.secondary
|
15
|
+
a.btn-secondary href="#{cm_admin.send(:"#{@model.name.underscore}_import_path")}" Import new data
|
16
16
|
/ button.cta-btn.ml-2 Back to Page_Name
|
17
17
|
- else
|
18
18
|
= simple_form_for(FileImport.new, url: "/admin/#{@model.ar_model.table_name}/import", method: :post, html: { class: "csv-import-form" }) do |f|
|
@@ -32,4 +32,4 @@
|
|
32
32
|
li Add your data on the file without changing the format
|
33
33
|
li Save the file as a csv
|
34
34
|
li Upload the file in the field above
|
35
|
-
= f.button :submit, class: "
|
35
|
+
= f.button :submit, class: "btn-cta", value: 'Import data'
|
@@ -1,8 +1,7 @@
|
|
1
1
|
.show-page.cm-page-container
|
2
|
-
.show-
|
3
|
-
|
4
|
-
|
5
|
-
== render 'cm_admin/main/tabs'
|
2
|
+
.show-page__header.sticky-container.page-top-bar
|
3
|
+
== render 'cm_admin/main/top_navbar'
|
4
|
+
== render 'cm_admin/main/tabs'
|
6
5
|
.show-page__inner.scrollable
|
7
6
|
- if @action.partial
|
8
7
|
== render @action.partial
|
@@ -25,22 +25,20 @@ html
|
|
25
25
|
.panel-area
|
26
26
|
- if defined?(@action) && (@action&.layout_type.to_s == 'cm_association_show' || @action.parent == "show")
|
27
27
|
.show-page.cm-page-container
|
28
|
-
.show-
|
29
|
-
|
30
|
-
|
31
|
-
== render 'cm_admin/main/tabs'
|
28
|
+
.show-page__header.sticky-container.page-top-bar
|
29
|
+
== render 'cm_admin/main/top_navbar'
|
30
|
+
== render 'cm_admin/main/tabs'
|
32
31
|
.show-page__inner.scrollable
|
33
32
|
= yield
|
34
33
|
- elsif defined?(@action) && (@action&.layout_type.to_s == 'cm_association_index' || @action.parent == "index")
|
35
34
|
.show-page.cm-page-container
|
36
|
-
.show-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
.filters
|
43
|
-
== render partial: 'cm_admin/main/filters', locals: { filters: @associated_model.filters }
|
35
|
+
.show-page__header.sticky-container.page-top-bar
|
36
|
+
== render 'cm_admin/main/top_navbar'
|
37
|
+
- if @ar_object.model_name
|
38
|
+
== render 'cm_admin/main/tabs'
|
39
|
+
- if @associated_model && @associated_model.filters.present?
|
40
|
+
.filters-bar
|
41
|
+
== render partial: 'cm_admin/main/filters', locals: { filters: @associated_model.filters }
|
44
42
|
= yield
|
45
43
|
- else
|
46
44
|
= yield
|
data/lib/cm_admin/version.rb
CHANGED
@@ -94,7 +94,8 @@ module CmAdmin
|
|
94
94
|
end
|
95
95
|
concat split_form_into_section(resource, form_obj, sections_array)
|
96
96
|
concat tag.br
|
97
|
-
|
97
|
+
# TODO: form_submit class is used for JS functionality, Have to remove
|
98
|
+
concat form_obj.submit 'Save', class: 'btn-cta mt-3 form_submit', data: {form_class: "cm_#{form_obj.object.class.name.downcase}_form"}
|
98
99
|
end
|
99
100
|
end
|
100
101
|
end
|
@@ -65,8 +65,8 @@ module CmAdmin
|
|
65
65
|
|
66
66
|
def manage_column_footer
|
67
67
|
concat(content_tag(:div, class: 'modal-footer') do
|
68
|
-
concat tag.button 'Close', class: '
|
69
|
-
concat tag.button 'Save', class: 'cta
|
68
|
+
concat tag.button 'Close', class: 'btn-secondary', data: {bs_dismiss: 'modal'}
|
69
|
+
concat tag.button 'Save', class: 'btn-cta'
|
70
70
|
end)
|
71
71
|
return
|
72
72
|
end
|
@@ -67,7 +67,7 @@ module CmAdmin
|
|
67
67
|
when :modal
|
68
68
|
custom_modal_button(custom_action)
|
69
69
|
when :page
|
70
|
-
link_to custom_action_title(custom_action), "#{@model.ar_model.table_name}/#{custom_action.path}", class: 'secondary
|
70
|
+
link_to custom_action_title(custom_action), "#{@model.ar_model.table_name}/#{custom_action.path}", class: 'btn-secondary ml-2', method: custom_action.verb
|
71
71
|
end
|
72
72
|
end
|
73
73
|
end
|
@@ -83,14 +83,14 @@ module CmAdmin
|
|
83
83
|
|
84
84
|
def custom_action_button(custom_action, current_action_name)
|
85
85
|
if current_action_name == "index"
|
86
|
-
button_to custom_action_title(custom_action), @model.ar_model.table_name + '/' + custom_action.path, class: 'secondary
|
86
|
+
button_to custom_action_title(custom_action), @model.ar_model.table_name + '/' + custom_action.path, class: 'btn-secondary ml-2', method: custom_action.verb
|
87
87
|
elsif current_action_name == "show"
|
88
|
-
button_to custom_action_title(custom_action), custom_action.path.gsub(':id', params[:id]), class: 'secondary
|
88
|
+
button_to custom_action_title(custom_action), custom_action.path.gsub(':id', params[:id]), class: 'btn-secondary ml-2', method: custom_action.verb
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
92
|
def custom_modal_button(custom_action)
|
93
|
-
link_to custom_action_title(custom_action), '', class: 'secondary
|
93
|
+
link_to custom_action_title(custom_action), '', class: 'btn-secondary ml-2', data: { bs_toggle: "modal", bs_target: "##{custom_action.name.classify}Modal" }
|
94
94
|
end
|
95
95
|
|
96
96
|
def custom_action_title(custom_action)
|
@@ -53,7 +53,8 @@ module CmAdmin
|
|
53
53
|
concat hidden_field_tag 'class_name', klass.name.to_s, id: 'export-to-file-klass'
|
54
54
|
concat checkbox_row(klass)
|
55
55
|
concat tag.hr
|
56
|
-
|
56
|
+
# TODO: export-to-file-btn class is used for JS functionality, Have to remove
|
57
|
+
concat submit_tag 'Export', class: 'btn-primary export-to-file-btn'
|
57
58
|
end
|
58
59
|
end
|
59
60
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cm-admin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- sajinmp
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2023-08-
|
13
|
+
date: 2023-08-29 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- ".rubocop.yml"
|
173
173
|
- ".stylelintrc.json"
|
174
174
|
- ".travis.yml"
|
175
|
+
- ".vscode/settings.json"
|
175
176
|
- CODE_OF_CONDUCT.md
|
176
177
|
- Gemfile
|
177
178
|
- Gemfile.lock
|