cm-admin 1.1.4 → 1.1.5

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: 83a83ffbffcaca0ce298a3e4c2289ce3ef7bdef0e89eb1e821ced475af51a07c
4
- data.tar.gz: 2283aabc7bb87f551c08c930b46a8b7bae3b6eefb3b914bc02536744a6209479
3
+ metadata.gz: 824c3834294625da2c626f75005931ccf56711905e6ad223ac2613102db7d750
4
+ data.tar.gz: 2beccd2743a656d7ffcd28b83b682513b372b7c64c8fb16df5e3272e431ad038
5
5
  SHA512:
6
- metadata.gz: c3ac960fa37e0e6dde3835f430a4eb569604d5cb364dfbbe02129063145e7c22509d17ca91be39bdb234751b6fb29a7a453fbb577d9ff758b0e026467077de90
7
- data.tar.gz: 4fb78962250c9b5e76a67b9aebcf0e0b3e7141750fa07893ba0d0f7a7cb0c42a1ab0cbceaf2712ce8e0b097d0b2c8571902f886b20680f3778266a7c8e6a1a07
6
+ metadata.gz: d3f782ef53f1dbca5c8328649050cf55622f909635424d55662e09f6e98076a55cf7fba474aeec347258d2995eb1ec998c6e6b5f8d0d22d6e8237ea7d0b5fc8e
7
+ data.tar.gz: 9310b42149f297a3df3fb564c1f6d800e7d0cf745e14fc1f7388f2e837e9e1812ef3884554994dc7978f05194a7a3acf9e9d332d73ba8164756f0d92b250ffad
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cm-admin (1.1.4)
4
+ cm-admin (1.1.5)
5
5
  caxlsx_rails
6
6
  cocoon (~> 1.2.15)
7
7
  csv-importer (~> 0.8.2)
@@ -42,3 +42,5 @@ document.addEventListener("turbo:load", function () {
42
42
  $(document).on('click', '.menu-item', function(e) {
43
43
  $('.profile-popup').toggleClass('hidden');
44
44
  });
45
+
46
+ window.addEventListener('popstate', e => window.location.reload() );
@@ -172,6 +172,11 @@
172
172
  .auth-option {
173
173
  padding: 8px 0;
174
174
  .auth-link {
175
+ background: none;
176
+ border: none;
177
+ width: 100%;
178
+ text-align: left;
179
+ padding: 0;
175
180
  display: block;
176
181
  @include font($size: $t4-text);
177
182
  line-height: 22px;
@@ -2,7 +2,7 @@
2
2
 
3
3
  .show-page {
4
4
  overflow: auto;
5
-
5
+
6
6
  &__tabs {
7
7
  .cm-tabs-bar {
8
8
  background-color: $white;
@@ -48,26 +48,20 @@
48
48
  border-radius: $radius-4;
49
49
  }
50
50
  .info-split {
51
- display: flex;
51
+ display: grid;
52
+ grid-template-columns: 140px 1fr;
53
+ grid-column-gap: 24px;
52
54
  margin-bottom: 24px;
53
55
  &:nth-last-child(1) {
54
56
  margin-bottom: 0;
55
57
  }
56
58
  &__lhs {
57
- width: 20%;
58
- p {
59
- @include font($size: $t4-text, $color: $ink-lighter-clr);
60
- line-height: 22px;
61
- margin: 0;
62
- }
59
+ @include font($size: $t4-text, $color: $ink-lighter-clr);
60
+ line-height: 22px;
63
61
  }
64
62
  &__rhs {
65
- width: 80%;
66
- p {
67
- @include font($size: $t4-text, $color: $primary-text-clr);
68
- line-height: 19px;
69
- margin: 0;
70
- }
63
+ @include font($size: $t4-text, $color: $primary-text-clr);
64
+ line-height: 19px;
71
65
  }
72
66
  }
73
67
  }
@@ -198,6 +198,11 @@
198
198
  .auth-option {
199
199
  padding: 8px 0;
200
200
  .auth-link {
201
+ background: none;
202
+ border: none;
203
+ width: 100%;
204
+ text-align: left;
205
+ padding: 0;
201
206
  display: block;
202
207
  @include font($size: $t4-text, $color: $primary-text-clr);
203
208
  line-height: 22px;
@@ -27,4 +27,5 @@
27
27
  *= require 'cm_admin/dependency/flatpickr.min'
28
28
  *= require 'cm_admin/scaffold'
29
29
  *= require_self
30
+ *= require font-awesome
30
31
  */
@@ -117,8 +117,8 @@
117
117
  cursor: pointer;
118
118
  }
119
119
  }
120
-
121
- .upload-placeholder-1 {
120
+
121
+ .upload-placeholder-1 {
122
122
  @include font($size: $t4-text, $color: $ink-lighter-clr, $weight: 600);
123
123
  }
124
124
  .upload-placeholder-2 {
@@ -161,7 +161,7 @@ input.cm-checkbox[type="checkbox"] {
161
161
  }
162
162
  &:checked:after {
163
163
  background: $brand-color;
164
- content: "\2713";
164
+ content: "\f00c";
165
165
  font-family: FontAwesome !important;
166
166
  color: $white;
167
167
  border: none;
@@ -173,7 +173,7 @@ input.cm-checkbox[type="checkbox"] {
173
173
  }
174
174
  &:checked:after {
175
175
  background: $grey-light-clr;
176
- content: "\2713";
176
+ content: "\f00c";
177
177
  font-family: FontAwesome !important;
178
178
  color: $white;
179
179
  border: none;
@@ -262,7 +262,7 @@ input.cm-radio[type="radio"] {
262
262
  right: 0;
263
263
  bottom: 0;
264
264
  background: $grey-light-clr;
265
- transition: all .2s linear;
265
+ transition: all 0.2s linear;
266
266
  }
267
267
 
268
268
  .slider:before {
@@ -273,7 +273,7 @@ input.cm-radio[type="radio"] {
273
273
  left: 2px;
274
274
  bottom: 2px;
275
275
  background-color: $white;
276
- transition: all .2s linear;
276
+ transition: all 0.2s linear;
277
277
  }
278
278
 
279
279
  input:checked + .slider {
@@ -1,4 +1,4 @@
1
1
  @import "bootstrap/scss/bootstrap";
2
2
  @import "flatpickr/dist/flatpickr";
3
3
  @import "../../../../node_modules/daterangepicker/daterangepicker.css";
4
- @import "jgrowl/jquery.jgrowl"
4
+ @import "jgrowl/jquery.jgrowl";
@@ -24,6 +24,7 @@
24
24
  / span
25
25
  / input.cm-checkbox type="checkbox"
26
26
  - @model.available_fields[@action.name.to_sym].each do |column|
27
+ - if column.display_if.call(Current.user) && column.viewable
27
28
  th = column.header
28
29
  tbody.cm-table__body
29
30
  - @associated_ar_object.data.each do |ar_object|
@@ -33,14 +34,15 @@
33
34
  / span
34
35
  / input.cm-checkbox type="checkbox"
35
36
  - @model.available_fields[@action.name.to_sym].each_with_index do |column, index|
36
- td class="text-ellipsis"
37
- span class="#{column.field_type.to_s} #{column.cm_css_class} "
38
- - if index == 0 && is_show_action_available(@associated_model)
39
- a href="#{CmAdmin::Engine.mount_path}/#{@associated_model.name.tableize}/#{ar_object.id}" = show_field_value(ar_object, column)
40
- - else
41
- = show_field_value(ar_object, column)
42
- - if column.field_type == :drawer
43
- = render partial: column.drawer_partial, locals: { ar_object: ar_object }
37
+ - if column.display_if.call(Current.user) && column.viewable
38
+ td class="text-ellipsis"
39
+ span class="#{column.field_type.to_s} #{column.cm_css_class} "
40
+ - if index == 0 && is_show_action_available(@associated_model)
41
+ a href="#{CmAdmin::Engine.mount_path}/#{@associated_model.name.tableize}/#{ar_object.id}" = show_field_value(ar_object, column)
42
+ - else
43
+ = show_field_value(ar_object, column)
44
+ - if column.field_type == :drawer
45
+ = render partial: column.drawer_partial, locals: { ar_object: ar_object }
44
46
 
45
47
  - if @associated_model
46
48
  == render partial: 'cm_admin/main/actions_dropdown', locals: { cm_model: @associated_model, ar_object: ar_object }
@@ -15,7 +15,7 @@
15
15
  / span
16
16
  / input.cm-checkbox type="checkbox"
17
17
  - @model.available_fields[:index].each do |column|
18
- - if column.display_if.call(Current.user)
18
+ - if column.display_if.call(Current.user) && column.viewable
19
19
  th = column.header
20
20
  tbody.cm-table__body
21
21
  - @ar_object.data.each do |ar_object|
@@ -24,7 +24,7 @@
24
24
  / span
25
25
  / input.cm-checkbox type="checkbox"
26
26
  - @model.available_fields[:index].each_with_index do |column, index|
27
- - if column.display_if.call(Current.user)
27
+ - if column.display_if.call(Current.user) && column.viewable
28
28
  td.text-ellipsis
29
29
  span class="#{column.field_type.to_s} #{column.cm_css_class} "
30
30
  - if index == 0 && is_show_action_available(@model) && !([:link, :custom, :attachment, :drawer, :image].include?(column.field_type))
@@ -3,7 +3,7 @@
3
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.underscore}_index_path")
6
+ = link_to "#{@model.name.titleize.pluralize} /", 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
@@ -36,4 +36,4 @@
36
36
 
37
37
  - edit_action = @model.available_actions.select{|act| act if act.action_type.eql?(:default) && act.name.eql?('edit')}
38
38
  - if edit_action.any? && policy([:cm_admin, @model.name.classify.constantize]).edit?
39
- = link_to "Edit #{@model.name}", cm_admin.send(:"#{@model.name.underscore}_edit_path", @ar_object), class: 'primary-btn ml-2'
39
+ = link_to "Edit #{@model.name.titleize.pluralize}", cm_admin.send(:"#{@model.name.underscore}_edit_path", @ar_object), class: 'primary-btn ml-2'
@@ -16,7 +16,4 @@
16
16
  - @ar_object.errors.full_messages.each do |error_message|
17
17
  li = error_message
18
18
  .form-container
19
- p.form-title
20
- | Section heading
21
- .form-container__inner
22
- = generate_form(@ar_object, @model)
19
+ = generate_form(@ar_object, @model)
@@ -25,6 +25,6 @@
25
25
  p.email-text = current_user.email
26
26
  .profile-info__right
27
27
  .auth-option
28
- = link_to destroy_user_session_path, method: :delete, class: 'auth-link', data: { turbo_method: :delete }
28
+ = button_to destroy_user_session_path, method: :delete, class: 'auth-link', data: { turbo: :false }
29
29
  | Logout
30
30
  = render 'layouts/quick_links'
@@ -7,7 +7,7 @@ module CmAdmin
7
7
 
8
8
  attr_accessor :field_name, :field_type, :header, :format, :prefix, :suffix, :exportable, :round, :height, :width,
9
9
  :cm_css_class, :link, :url, :custom_method, :helper_method, :managable, :lockable, :drawer_partial, :tag_class,
10
- :display_if, :association_name, :association_type
10
+ :display_if, :association_name, :association_type, :viewable, :custom_link
11
11
 
12
12
  def initialize(field_name, attributes = {})
13
13
  @field_name = field_name
@@ -41,12 +41,13 @@ module CmAdmin
41
41
  self.exportable = true
42
42
  self.managable = true
43
43
  self.lockable = false
44
+ self.viewable = true
44
45
  self.tag_class = {}
45
46
  end
46
47
 
47
48
  class << self
48
- def find_by(model, search_hash)
49
- model.available_fields.find { |i| i.name == search_hash[:name] }
49
+ def find_by(model, action_name, search_hash)
50
+ model.available_fields[action_name].find { |column| column.field_name == search_hash[:name] }
50
51
  end
51
52
  end
52
53
  end
@@ -4,57 +4,58 @@ module CmAdmin
4
4
  class << self
5
5
  def generate_excel(klass_name, params, helpers)
6
6
  klass = klass_name.constantize
7
- columns = params[:columns] || []
7
+ selected_column_names = params[:columns] || []
8
8
  # filter_params = params[:filters]
9
9
  model = CmAdmin::Model.find_by({name: klass_name})
10
10
  # records = get_records(klass, model, columns, helpers)
11
11
  records = "CmAdmin::#{klass_name}Policy::Scope".constantize.new(Current.user, klass).resolve
12
12
  filtered_data = CmAdmin::Models::Filter.filtered_data(model.filter_params(params), records, model.filters)
13
- formatted_data = format_records(filtered_data, model, columns, helpers)
13
+ formatted_data = format_records(filtered_data, model, selected_column_names, helpers)
14
14
  file_path = "#{Rails.root}/tmp/#{klass}_data_#{DateTime.now.strftime("%Y-%m-%d_%H-%M-%S")}.xlsx"
15
- create_workbook(formatted_data, columns, file_path)
15
+ create_workbook(model, formatted_data, selected_column_names, file_path)
16
16
  return file_path
17
17
  end
18
18
 
19
-
20
- def format_records(records, model, columns, helpers)
21
- custom_fields = model.available_fields[:index].map{|field| field if field.field_type == :custom}.compact
22
- normal_fields = model.available_fields[:index].map{|field| field unless field.field_type == :custom}.compact
23
- deserialized_columns = CmAdmin::Utils.deserialize_csv_columns(columns, :as_json_params)
19
+ def format_records(records, model, selected_column_names, helpers)
20
+ deserialized_columns = CmAdmin::Utils.deserialize_csv_columns(selected_column_names, :as_json_params)
24
21
  # This includes isn't recursve, a full solution should be recursive
25
22
  records_arr = []
26
23
  records.includes(deserialized_columns[:include].keys).find_each do |record|
27
- record_hash = record.as_json({only: columns.map(&:to_sym)})
28
- columns.each do |column|
29
- break unless model.available_fields[:index].map(&:field_name).include?(column.to_sym)
30
- record_hash[column.to_sym] = record.send(column.to_sym)
31
- end
32
- custom_fields.each do |field|
33
- record_hash[field.field_name.to_sym] = helpers.send(field.helper_method, record, field.field_name)
24
+ record_hash = record.as_json({ only: selected_column_names.map(&:to_sym) })
25
+ selected_column_names.each do |column_name|
26
+ break unless model.available_fields[:index].map(&:field_name).include?(column_name.to_sym)
27
+
28
+ column = CmAdmin::Models::Column.find_by(model, :index, { name: column_name.to_sym })
29
+ if column.field_type == :custom
30
+ record_hash[column.field_name] = helpers.send(column.helper_method, record, column.field_name).to_s
31
+ else
32
+ record_hash[column.field_name] = record.send(column.field_name).to_s
33
+ end
34
34
  end
35
35
  records_arr << record_hash
36
36
  end
37
37
  records_arr
38
38
  end
39
39
 
40
- def create_workbook(records, class_name, file_path)
40
+ def create_workbook(cm_model, records, _class_name, file_path)
41
41
  flattened_records = records.map { |record| CmAdmin::Utils.flatten_hash(record) }
42
- columns = flattened_records.map{|x| x.keys}.flatten.uniq.sort
42
+ # columns = flattened_records.map{|x| x.keys}.flatten.uniq.sort
43
+ columns = exportable_columns(cm_model).select { |column| flattened_records.first.keys.include?(column.field_name.to_s) }
43
44
  size_arr = []
44
45
  columns.size.times { size_arr << 22 }
45
46
  xl = Axlsx::Package.new
46
47
  xl.workbook.add_worksheet do |sheet|
47
- sheet.add_row columns&.map(&:titleize), b: true
48
+ sheet.add_row columns&.map(&:header), b: true
48
49
  flattened_records.each do |record|
49
- sheet.add_row(columns.map { |column| record[column] })
50
+ sheet.add_row(columns.map { |column| record[column.field_name.to_s] })
50
51
  end
51
- sheet.column_widths(*size_arr)
52
+ sheet.column_widths(*size_arr)
52
53
  end
53
54
  xl.serialize(file_path)
54
55
  end
55
56
 
56
57
  def exportable_columns(klass)
57
- klass.available_fields[:index].map{|x| x.exportable ? x.field_name : ""}.reject { |c| c.empty? }
58
+ klass.available_fields[:index].select(&:exportable)
58
59
  end
59
60
 
60
61
  end
@@ -1,3 +1,3 @@
1
1
  module CmAdmin
2
- VERSION = '1.1.4'
2
+ VERSION = '1.1.5'
3
3
  end
@@ -39,7 +39,7 @@ module CmAdmin
39
39
 
40
40
  def cm_single_select_field(form_obj, cm_field, value, required_class, target_action)
41
41
  form_obj.select cm_field.field_name, options_for_select(select_collection_value(form_obj.object, cm_field), form_obj.object.send(cm_field.field_name)),
42
- { include_blank: cm_field.placeholder.to_s },
42
+ { include_blank: cm_field.placeholder.to_s.presence || "Select #{cm_field.field_name.to_s.humanize(capitalize: false)}}" },
43
43
  class: "normal-input #{required_class} select-2",
44
44
  disabled: cm_field.disabled,
45
45
  data: {
@@ -53,7 +53,7 @@ module CmAdmin
53
53
  def cm_multi_select_field(form_obj, cm_field, value, required_class, target_action)
54
54
  form_obj.select cm_field.field_name,
55
55
  options_for_select(select_collection_value(form_obj.object, cm_field), form_obj.object.send(cm_field.field_name)),
56
- { include_blank: "Select #{cm_field.field_name.to_s.downcase.gsub('_', ' ')}" },
56
+ { include_blank: cm_field.placeholder.to_s.presence || "Select #{cm_field.field_name.to_s.humanize(capitalize: false)}" },
57
57
  class: "normal-input #{required_class} select-2",
58
58
  disabled: cm_field.disabled, multiple: true
59
59
  end
@@ -60,16 +60,16 @@ module CmAdmin
60
60
 
61
61
  def checkbox_row(klass)
62
62
  tag.div class: 'row' do
63
- CmAdmin::Models::Export.exportable_columns(klass).each do |column_path|
64
- concat create_checkbox(column_path)
63
+ CmAdmin::Models::Export.exportable_columns(klass).each do |column|
64
+ concat create_checkbox(column)
65
65
  end
66
66
  end
67
67
  end
68
68
 
69
- def create_checkbox(column_path)
69
+ def create_checkbox(column)
70
70
  tag.div class: 'col-md-4' do
71
- concat check_box_tag 'columns[]', column_path, id: column_path.to_s.gsub('/', '-')
72
- concat " #{column_path.to_s.gsub('/', '_').humanize}"
71
+ concat check_box_tag 'columns[]', column.field_name, id: column.field_name.to_s.gsub('/', '-')
72
+ concat " #{column.header.to_s.gsub('/', '_').humanize}"
73
73
  end
74
74
  end
75
75
 
data/package-lock.json CHANGED
@@ -1814,9 +1814,9 @@
1814
1814
  }
1815
1815
  },
1816
1816
  "node_modules/@npmcli/fs/node_modules/semver": {
1817
- "version": "7.5.3",
1818
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
1819
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
1817
+ "version": "7.5.4",
1818
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
1819
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
1820
1820
  "dependencies": {
1821
1821
  "lru-cache": "^6.0.0"
1822
1822
  },
@@ -3834,9 +3834,9 @@
3834
3834
  }
3835
3835
  },
3836
3836
  "node_modules/cross-spawn/node_modules/semver": {
3837
- "version": "5.7.1",
3838
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
3839
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
3837
+ "version": "5.7.2",
3838
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
3839
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
3840
3840
  "bin": {
3841
3841
  "semver": "bin/semver"
3842
3842
  }
@@ -7792,9 +7792,9 @@
7792
7792
  }
7793
7793
  },
7794
7794
  "node_modules/normalize-package-data/node_modules/semver": {
7795
- "version": "7.5.3",
7796
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
7797
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
7795
+ "version": "7.5.4",
7796
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
7797
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
7798
7798
  "dev": true,
7799
7799
  "dependencies": {
7800
7800
  "lru-cache": "^6.0.0"
@@ -9872,9 +9872,9 @@
9872
9872
  }
9873
9873
  },
9874
9874
  "node_modules/read-pkg/node_modules/semver": {
9875
- "version": "5.7.1",
9876
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
9877
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
9875
+ "version": "5.7.2",
9876
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
9877
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
9878
9878
  "dev": true,
9879
9879
  "bin": {
9880
9880
  "semver": "bin/semver"
@@ -10410,9 +10410,9 @@
10410
10410
  }
10411
10411
  },
10412
10412
  "node_modules/sass-loader/node_modules/semver": {
10413
- "version": "7.5.3",
10414
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz",
10415
- "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==",
10413
+ "version": "7.5.4",
10414
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz",
10415
+ "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==",
10416
10416
  "dependencies": {
10417
10417
  "lru-cache": "^6.0.0"
10418
10418
  },
@@ -10469,9 +10469,9 @@
10469
10469
  }
10470
10470
  },
10471
10471
  "node_modules/semver": {
10472
- "version": "6.3.0",
10473
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
10474
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
10472
+ "version": "6.3.1",
10473
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
10474
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
10475
10475
  "bin": {
10476
10476
  "semver": "bin/semver.js"
10477
10477
  }
@@ -13423,9 +13423,9 @@
13423
13423
  }
13424
13424
  },
13425
13425
  "node_modules/webpack/node_modules/semver": {
13426
- "version": "5.7.1",
13427
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
13428
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
13426
+ "version": "5.7.2",
13427
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
13428
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
13429
13429
  "bin": {
13430
13430
  "semver": "bin/semver"
13431
13431
  }
data/yarn.lock CHANGED
@@ -6344,31 +6344,24 @@ selfsigned@^2.0.1:
6344
6344
  node-forge "^1"
6345
6345
 
6346
6346
  "semver@2 || 3 || 4 || 5", semver@^5.5.0, semver@^5.6.0:
6347
- version "5.7.1"
6348
- resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
6349
- integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
6347
+ version "5.7.2"
6348
+ resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8"
6349
+ integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==
6350
6350
 
6351
6351
  semver@7.0.0:
6352
6352
  version "7.0.0"
6353
- resolved "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz"
6353
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.0.0.tgz#5f3ca35761e47e05b206c6daff2cf814f0316b8e"
6354
6354
  integrity sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==
6355
6355
 
6356
6356
  semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
6357
- version "6.3.0"
6358
- resolved "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz"
6359
- integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
6360
-
6361
- semver@^7.3.2:
6362
- version "7.3.5"
6363
- resolved "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz"
6364
- integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==
6365
- dependencies:
6366
- lru-cache "^6.0.0"
6367
-
6368
- semver@^7.3.4:
6369
- version "7.3.8"
6370
- resolved "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz"
6371
- integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==
6357
+ version "6.3.1"
6358
+ resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4"
6359
+ integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
6360
+
6361
+ semver@^7.3.2, semver@^7.3.4:
6362
+ version "7.5.4"
6363
+ resolved "https://registry.yarnpkg.com/semver/-/semver-7.5.4.tgz#483986ec4ed38e1c6c48c34894a9182dbff68a6e"
6364
+ integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
6372
6365
  dependencies:
6373
6366
  lru-cache "^6.0.0"
6374
6367
 
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
4
+ version: 1.1.5
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-07-14 00:00:00.000000000 Z
13
+ date: 2023-07-26 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails