cm-admin 0.6.7 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +2 -1
- data/app/assets/stylesheets/cm_admin/base/common.scss +3 -2
- data/app/javascript/packs/cm_admin/application.js +1 -0
- data/app/javascript/packs/cm_admin/scaffolds.js +3 -1
- data/app/views/cm_admin/main/_associated_table.html.slim +14 -11
- data/app/views/cm_admin/main/_table.html.slim +2 -2
- data/app/views/cm_admin/main/_top_navbar.html.slim +4 -4
- data/app/views/cm_admin/main/new.html.slim +1 -1
- data/lib/cm_admin/models/controller_method.rb +11 -6
- data/lib/cm_admin/models/form_field.rb +1 -1
- data/lib/cm_admin/version.rb +1 -1
- data/lib/cm_admin/view_helpers/field_display_helper.rb +34 -36
- data/lib/cm_admin/view_helpers/form_field_helper.rb +3 -1
- data/lib/generators/cm_admin/install_generator.rb +3 -0
- data/lib/generators/cm_admin/policy_generator.rb +2 -2
- data/lib/generators/cm_admin/templates/actiontext.scss +36 -0
- data/lib/generators/cm_admin/templates/custom.css +5 -0
- data/lib/generators/cm_admin/templates/policy.rb +1 -1
- data/package.json +1 -0
- data/yarn.lock +8 -3
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe6c3a31ee4222884516e3f0cace7e5ef9f3bbee1a67ad34f5d5f3d4201c5859
|
4
|
+
data.tar.gz: db9eaa4f12d9353bacfc94e7a74bdab8450a1b3f6bc84722815c52b308ebe1b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8677cceeb0829d35971662230da99ab04666e590e6f06e4645ef606714f5643c38ba0dfd510a41fa8b88639a1c5a73565813e781f503ae584768285177a4c782
|
7
|
+
data.tar.gz: 2b4179da8e301349e2af5a82a090bc8c4001def407c769c84a9a48caa3d5512c28a8cfea10086dc4da508e692ca6a6eb3f719f1eccfd43f824ed03c79dbf78bc
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# CmAdmin
|
2
2
|
|
3
|
-
|
3
|
+
An admin gem for Ruby on Rails application. Get your admin panel setup running quickly.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
@@ -31,6 +31,7 @@ You can find more detailed documentation [here](https://github.com/commutatus/cm
|
|
31
31
|
## Demo
|
32
32
|
|
33
33
|
For demo check [here](http://cm-admin.labs.commutatus.com/admin/users/)
|
34
|
+
For demo repo check [here](https://github.com/commutatus/cm-admin-panel-demo)
|
34
35
|
|
35
36
|
## Development
|
36
37
|
|
@@ -1,6 +1,8 @@
|
|
1
1
|
$(document).on('turbolinks:load', function () {
|
2
2
|
$('.select-2').select2();
|
3
|
-
flatpickr("[data-behaviour='date-only']", {
|
3
|
+
flatpickr("[data-behaviour='date-only']", {
|
4
|
+
dateFormat: "d-m-Y"
|
5
|
+
})
|
4
6
|
flatpickr("[data-behaviour='date-time']", {
|
5
7
|
enableTime: true
|
6
8
|
})
|
@@ -2,11 +2,11 @@
|
|
2
2
|
.table-top
|
3
3
|
p.table-top__total-count = "#{@associated_ar_object.pagy.count} #{@action.child_records.to_s.gsub('_', ' ')} found"
|
4
4
|
.table-top__column-action
|
5
|
-
button.secondary-btn.column-btn data-target="#columnActionModal" data-toggle="modal" type="button"
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
/ button.secondary-btn.column-btn data-target="#columnActionModal" data-toggle="modal" type="button"
|
6
|
+
/ span
|
7
|
+
/ i.fa.fa-columns.bolder
|
8
|
+
/ span
|
9
|
+
/ i.fa.fa-angle-down
|
10
10
|
|
11
11
|
.new-admin-table.scrollable
|
12
12
|
table.cm-table
|
@@ -46,10 +46,13 @@
|
|
46
46
|
- if custom_action.display_if.call(ar_object)
|
47
47
|
.popup-option
|
48
48
|
- if custom_action.display_type == :button
|
49
|
-
= link_to
|
49
|
+
= link_to cm_admin.send("#{@associated_model.name.underscore}_index_path") + '/' + custom_action.path.gsub(':id', ar_object.id.to_s), method: custom_action.verb do
|
50
|
+
span
|
51
|
+
i class="#{custom_action.icon_name}"
|
52
|
+
= custom_action.name.humanize
|
50
53
|
- elsif custom_action.display_type == :modal
|
51
|
-
= link_to custom_action.name.
|
52
|
-
|
54
|
+
= link_to custom_action.name.humanize, '', data: { bs_toggle: 'modal', bs_target: "##{custom_action.name.classify}Modal-#{ar_object.id.to_s}" }
|
55
|
+
|
53
56
|
.cm-pagination
|
54
57
|
.cm-pagination__lhs Showing #{@associated_ar_object.pagy.from} to #{@associated_ar_object.pagy.to} out of #{@associated_ar_object.pagy.count}
|
55
58
|
.cm-pagination__rhs
|
@@ -57,11 +60,11 @@
|
|
57
60
|
|
58
61
|
- @associated_ar_object.data.each do |ar_object|
|
59
62
|
- @associated_model && @associated_model.available_actions.select{|act| act if (act.route_type == 'member' && act.display_type == :modal)}.each do |custom_action|
|
60
|
-
.modal.fade id="#{custom_action.name.classify}Modal-#{ar_object.id.to_s}" aria-hidden=
|
63
|
+
.modal.fade id="#{custom_action.name.classify}Modal-#{ar_object.id.to_s}" aria-hidden='true' aria-labelledby="#{custom_action.name.classify}ModalLabel" tabindex='1'
|
61
64
|
.modal-dialog
|
62
65
|
.modal-content
|
63
66
|
.modal-header
|
64
67
|
h5.modal-title id="#{custom_action.name.classify}ModalLabel" = custom_action.name.classify
|
65
|
-
button.btn-close aria-label=
|
68
|
+
button.btn-close aria-label='Close' data-bs-dismiss='modal'
|
66
69
|
.modal-body
|
67
|
-
= render partial: custom_action.partial, locals: { ar_object: ar_object }
|
70
|
+
= render partial: custom_action.partial, locals: { ar_object: ar_object }
|
@@ -53,11 +53,11 @@
|
|
53
53
|
- custom_actions.each do |custom_action|
|
54
54
|
- if custom_action.name.present? && has_valid_policy(@model.name, custom_action.name)
|
55
55
|
- if custom_action.display_if.call(ar_object)
|
56
|
-
= link_to cm_admin.send("#{@model.name.
|
56
|
+
= link_to cm_admin.send("#{@model.name.underscore}_index_path") + '/' + custom_action.path.gsub(':id', ar_object.id.to_s), method: custom_action.verb do
|
57
57
|
.popup-option
|
58
58
|
span
|
59
59
|
i class="#{custom_action.icon_name}"
|
60
|
-
= custom_action.name.
|
60
|
+
= custom_action.name.humanize
|
61
61
|
|
62
62
|
.cm-pagination
|
63
63
|
.cm-pagination__lhs Showing #{@ar_object.pagy.from} to #{@ar_object.pagy.to} out of #{@ar_object.pagy.count}
|
@@ -1,9 +1,9 @@
|
|
1
1
|
.cm-navbar
|
2
2
|
.cm-navbar__lhs
|
3
|
-
- if cm_admin.method_defined?(:"#{@model.name.
|
3
|
+
- if cm_admin.method_defined?(:"#{@model.name.underscore}_index_path") && (@model.current_action.name == 'show' || @model.current_action.layout_type.present?)
|
4
4
|
.bread-crumb-area
|
5
5
|
.breadcrumb-text
|
6
|
-
= link_to @model.name + ' /', cm_admin.send(:"#{@model.name.
|
6
|
+
= link_to @model.name + ' /', cm_admin.send(:"#{@model.name.underscore}_index_path")
|
7
7
|
.nav-title-area
|
8
8
|
p.title-text = action_title
|
9
9
|
p.title-sub-text = action_description
|
@@ -24,7 +24,7 @@
|
|
24
24
|
span Export
|
25
25
|
- new_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('new')}
|
26
26
|
- if new_action.any? && policy([:cm_admin, @model.name.classify.constantize]).new?
|
27
|
-
= link_to 'Add', "#{
|
27
|
+
= link_to 'Add', cm_admin.send(:"#{@model.name.underscore}_new_path"), class: 'primary-btn ml-2'
|
28
28
|
- @model.available_actions.select{|act| act if act.route_type == 'collection'}.each do |custom_action|
|
29
29
|
= custom_action_items(custom_action, 'index')
|
30
30
|
- elsif @model.current_action.name == 'show'
|
@@ -33,4 +33,4 @@
|
|
33
33
|
|
34
34
|
- edit_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('edit')}
|
35
35
|
- if edit_action.any? && policy([:cm_admin, @model.name.classify.constantize]).edit?
|
36
|
-
= link_to "Edit #{@model.name}", "#{
|
36
|
+
= link_to "Edit #{@model.name}", cm_admin.send(:"#{@model.name.underscore}_edit_path", @ar_object), class: 'primary-btn ml-2'
|
@@ -33,7 +33,7 @@ module CmAdmin
|
|
33
33
|
|
34
34
|
|
35
35
|
def create(params)
|
36
|
-
@ar_object = @ar_model.new(resource_params(params))
|
36
|
+
@ar_object = @ar_model.name.classify.constantize.new(resource_params(params))
|
37
37
|
end
|
38
38
|
|
39
39
|
def filter_by(params, records, filter_params={}, sort_params={})
|
@@ -57,11 +57,15 @@ module CmAdmin
|
|
57
57
|
|
58
58
|
def resource_params(params)
|
59
59
|
permittable_fields = @permitted_fields || @ar_model.columns.map(&:name).reject { |i| CmAdmin::REJECTABLE_FIELDS.include?(i) }.map(&:to_sym)
|
60
|
-
permittable_fields += @ar_model.
|
61
|
-
if x.
|
62
|
-
x.name
|
63
|
-
|
64
|
-
|
60
|
+
permittable_fields += @ar_model.name.constantize.reflect_on_all_associations.map {|x|
|
61
|
+
if x.klass.name == "ActiveStorage::Attachment"
|
62
|
+
if x.class.name.include?('HasOne')
|
63
|
+
x.name
|
64
|
+
elsif x.class.name.include?('HasMany')
|
65
|
+
Hash[x.name.to_s, []]
|
66
|
+
end
|
67
|
+
elsif x.klass.name == "ActionText::RichText"
|
68
|
+
x.name.to_s.gsub('rich_text_', '').to_sym
|
65
69
|
end
|
66
70
|
}.compact
|
67
71
|
nested_tables = self.available_fields[:new].except(:fields).keys
|
@@ -74,6 +78,7 @@ module CmAdmin
|
|
74
78
|
}
|
75
79
|
permittable_fields += nested_fields
|
76
80
|
@ar_model.columns.map { |col| permittable_fields << col.name.split('_cents') if col.name.include?('_cents') }
|
81
|
+
|
77
82
|
params.require(self.name.underscore.to_sym).permit(*permittable_fields)
|
78
83
|
end
|
79
84
|
end
|
@@ -2,7 +2,7 @@ module CmAdmin
|
|
2
2
|
module Models
|
3
3
|
class FormField
|
4
4
|
attr_accessor :field_name, :label, :header, :input_type, :collection, :custom_value, :disabled
|
5
|
-
VALID_INPUT_TYPES = [:integer, :decimal, :string, :single_select, :multi_select, :date, :date_time, :text, :single_file_upload, :multi_file_upload, :hidden].freeze
|
5
|
+
VALID_INPUT_TYPES = [:integer, :decimal, :string, :single_select, :multi_select, :date, :date_time, :text, :single_file_upload, :multi_file_upload, :hidden, :rich_text].freeze
|
6
6
|
|
7
7
|
def initialize(field_name, input_type, attributes = {})
|
8
8
|
raise ArgumentError, "Kindly select a valid filter type like #{VALID_INPUT_TYPES.sort.to_sentence(last_word_connector: ', or ')} instead of #{input_type} for column #{field_name}" unless VALID_INPUT_TYPES.include?(input_type.to_sym)
|
data/lib/cm_admin/version.rb
CHANGED
@@ -25,43 +25,41 @@ module CmAdmin
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def show_field_value(ar_object, field)
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
28
|
+
case field.field_type || :string
|
29
|
+
when :integer
|
30
|
+
ar_object.send(field.field_name).to_s
|
31
|
+
when :decimal
|
32
|
+
ar_object.send(field.field_name).to_f.round(field.precision).to_s if ar_object.send(field.field_name)
|
33
|
+
when :string
|
34
|
+
ar_object.send(field.field_name).to_s
|
35
|
+
when :datetime
|
36
|
+
ar_object.send(field.field_name).strftime(field.format || "%d/%m/%Y").to_s if ar_object.send(field.field_name)
|
37
|
+
when :text
|
38
|
+
ar_object.send(field.field_name)
|
39
|
+
when :custom
|
40
|
+
send(field.helper_method, ar_object, field.field_name)
|
41
|
+
when :link
|
42
|
+
if field.custom_link
|
43
|
+
link = field.custom_link
|
44
|
+
else
|
45
|
+
link = ar_object.send(field.field_name)
|
46
|
+
end
|
47
|
+
content_tag :a, href: link do
|
35
48
|
ar_object.send(field.field_name).to_s
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
content_tag
|
49
|
-
|
50
|
-
end
|
51
|
-
when :enum
|
52
|
-
ar_object.send(field.field_name).to_s.titleize
|
53
|
-
when :tag
|
54
|
-
tag_class = field.tag_class.dig("#{ar_object.send(field.field_name.to_s)}".to_sym).to_s
|
55
|
-
content_tag :span, class: "status-tag #{tag_class}" do
|
56
|
-
ar_object.send(field.field_name).to_s.upcase
|
57
|
-
end
|
58
|
-
when :attachment
|
59
|
-
concat show_attachment_value(ar_object, field)
|
60
|
-
when :drawer
|
61
|
-
content_tag :span do
|
62
|
-
concat content_tag(:span, truncate(ar_object.send(field.field_name).to_s, length: 25))
|
63
|
-
concat content_tag(:span, 'View', class: 'drawer-btn')
|
64
|
-
end
|
49
|
+
end
|
50
|
+
when :enum
|
51
|
+
ar_object.send(field.field_name).to_s.titleize
|
52
|
+
when :tag
|
53
|
+
tag_class = field.tag_class.dig("#{ar_object.send(field.field_name.to_s)}".to_sym).to_s
|
54
|
+
content_tag :span, class: "status-tag #{tag_class}" do
|
55
|
+
ar_object.send(field.field_name).to_s.upcase
|
56
|
+
end
|
57
|
+
when :attachment
|
58
|
+
show_attachment_value(ar_object, field)
|
59
|
+
when :drawer
|
60
|
+
content_tag :div, class: 'd-flex' do
|
61
|
+
concat content_tag(:div, ar_object.send(field.field_name).to_s, class: 'text-ellipsis')
|
62
|
+
concat content_tag(:div, 'View', class: 'drawer-btn')
|
65
63
|
end
|
66
64
|
end
|
67
65
|
end
|
@@ -17,11 +17,13 @@ module CmAdmin
|
|
17
17
|
when :multi_select
|
18
18
|
return f.select field.field_name, options_for_select((field.collection || []), value), {include_blank: "Select #{field.field_name.to_s.downcase.gsub('_', ' ')}"}, class: "normal-input #{required_class} select-2", disabled: field.disabled, multiple: true
|
19
19
|
when :date
|
20
|
-
return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-only' }
|
20
|
+
return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value.strftime('%d-%m-%Y'), placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-only' }
|
21
21
|
when :date_time
|
22
22
|
return f.text_field field.field_name, class: "normal-input #{required_class}", disabled: field.disabled, value: value, placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}", data: { behaviour: 'date-time' }
|
23
23
|
when :text
|
24
24
|
return f.text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
|
25
|
+
when :rich_text
|
26
|
+
return f.rich_text_area field.field_name, class: "normal-input #{required_class}", placeholder: "Enter #{field.field_name.to_s.downcase.gsub('_', ' ')}"
|
25
27
|
when :single_file_upload
|
26
28
|
return f.file_field field.field_name, class: "normal-input #{required_class}"
|
27
29
|
when :multi_file_upload
|
@@ -6,9 +6,12 @@ module CmAdmin
|
|
6
6
|
source_root File.expand_path('templates', __dir__)
|
7
7
|
|
8
8
|
def copy_initializer
|
9
|
+
generate 'action_text:install'
|
9
10
|
copy_file 'cm_admin_initializer.rb', 'config/initializers/zcm_admin.rb'
|
10
11
|
copy_file 'custom.js', 'app/assets/javascripts/cm_admin/custom.js'
|
11
12
|
copy_file 'custom.css', 'app/assets/stylesheets/cm_admin/custom.css'
|
13
|
+
copy_file 'actiontext.scss', 'app/assets/stylesheets/cm_admin/actiontext.scss'
|
14
|
+
remove_file 'app/assets/stylesheets/actiontext.scss'
|
12
15
|
copy_file 'application_policy.rb', 'app/policies/application_policy.rb'
|
13
16
|
route 'mount CmAdmin::Engine => "/admin"'
|
14
17
|
end
|
@@ -6,8 +6,8 @@ module CmAdmin
|
|
6
6
|
source_root File.expand_path('templates', __dir__)
|
7
7
|
|
8
8
|
def copy_policy_files
|
9
|
-
cm_model = CmAdmin::Model.find_by({name: file_name})
|
10
|
-
raise "cm_admin is not defined inside #{file_name} model" unless cm_model.present?
|
9
|
+
@cm_model = CmAdmin::Model.find_by({name: file_name.classify})
|
10
|
+
raise "cm_admin is not defined inside #{file_name} model" unless @cm_model.present?
|
11
11
|
template "policy.rb", "app/policies/cm_admin/#{file_name}_policy.rb"
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
//
|
2
|
+
// Provides a drop-in pointer for the default Trix stylesheet that will format the toolbar and
|
3
|
+
// the trix-editor content (whether displayed or under editing). Feel free to incorporate this
|
4
|
+
// inclusion directly in any other asset bundle and remove this file.
|
5
|
+
//
|
6
|
+
//= require trix/dist/trix
|
7
|
+
|
8
|
+
// We need to override trix.css’s image gallery styles to accommodate the
|
9
|
+
// <action-text-attachment> element we wrap around attachments. Otherwise,
|
10
|
+
// images in galleries will be squished by the max-width: 33%; rule.
|
11
|
+
.trix-content {
|
12
|
+
.attachment-gallery {
|
13
|
+
> action-text-attachment,
|
14
|
+
> .attachment {
|
15
|
+
flex: 1 0 33%;
|
16
|
+
padding: 0 0.5em;
|
17
|
+
max-width: 33%;
|
18
|
+
}
|
19
|
+
|
20
|
+
&.attachment-gallery--2,
|
21
|
+
&.attachment-gallery--4 {
|
22
|
+
> action-text-attachment,
|
23
|
+
> .attachment {
|
24
|
+
flex-basis: 50%;
|
25
|
+
max-width: 50%;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
action-text-attachment {
|
31
|
+
.attachment {
|
32
|
+
padding: 0 !important;
|
33
|
+
max-width: 100% !important;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
}
|
@@ -1,5 +1,5 @@
|
|
1
1
|
class CmAdmin::<%= class_name %>Policy < ApplicationPolicy
|
2
|
-
<%- available_action_names = (cm_model.available_actions.map{|action| action.name}.uniq - ['custom_action', 'new', 'edit']) %>
|
2
|
+
<%- available_action_names = (@cm_model.available_actions.map{|action| action.name}.uniq - ['custom_action', 'new', 'edit']) %>
|
3
3
|
<%- available_action_names.each do |action_name| %>
|
4
4
|
def <%= action_name %>?
|
5
5
|
<%= CmAdmin.authorized_roles.map {|role| "@user.#{role}" }.join(' && ') %>
|
data/package.json
CHANGED
data/yarn.lock
CHANGED
@@ -2697,9 +2697,9 @@ events@^3.0.0:
|
|
2697
2697
|
integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==
|
2698
2698
|
|
2699
2699
|
eventsource@^1.0.7:
|
2700
|
-
version "1.1.
|
2701
|
-
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.
|
2702
|
-
integrity sha512-
|
2700
|
+
version "1.1.1"
|
2701
|
+
resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-1.1.1.tgz#4544a35a57d7120fba4fa4c86cb4023b2c09df2f"
|
2702
|
+
integrity sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==
|
2703
2703
|
dependencies:
|
2704
2704
|
original "^1.0.0"
|
2705
2705
|
|
@@ -6458,6 +6458,11 @@ toidentifier@1.0.0:
|
|
6458
6458
|
resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553"
|
6459
6459
|
integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==
|
6460
6460
|
|
6461
|
+
trix@^2.0.0-beta.0:
|
6462
|
+
version "2.0.0-beta.0"
|
6463
|
+
resolved "https://registry.yarnpkg.com/trix/-/trix-2.0.0-beta.0.tgz#e7034867182356c023abdef90c7bdc341bb3e105"
|
6464
|
+
integrity sha512-D1c7FxP1hGXM/MnTd/+fGUbSDLkfxsqjA0NxOTzByQywVJVNHDOkn8xAScCKVOiAN6hXlqUR2qX4CPJHTGj+cQ==
|
6465
|
+
|
6461
6466
|
ts-pnp@^1.1.6:
|
6462
6467
|
version "1.2.0"
|
6463
6468
|
resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92"
|
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: 0.
|
4
|
+
version: 0.7.0
|
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: 2022-
|
13
|
+
date: 2022-06-02 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: pagy
|
@@ -223,6 +223,7 @@ files:
|
|
223
223
|
- lib/cm_admin/view_helpers/page_info_helper.rb
|
224
224
|
- lib/generators/cm_admin/install_generator.rb
|
225
225
|
- lib/generators/cm_admin/policy_generator.rb
|
226
|
+
- lib/generators/cm_admin/templates/actiontext.scss
|
226
227
|
- lib/generators/cm_admin/templates/application_policy.rb
|
227
228
|
- lib/generators/cm_admin/templates/cm_admin_initializer.rb
|
228
229
|
- lib/generators/cm_admin/templates/custom.css
|