cm-admin 4.3.0 → 4.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile.lock +1 -1
- data/app/assets/javascripts/cm_admin/application.js +1 -1
- data/app/assets/javascripts/cm_admin/custom_action.js +2 -0
- data/app/assets/javascripts/cm_admin/initialize_components.js +31 -0
- data/app/assets/javascripts/cm_admin/shared_scaffolds.js +5 -27
- data/app/controllers/cm_admin/resource_controller.rb +25 -9
- data/app/views/cm_admin/main/_kanban.html.slim +2 -2
- data/app/views/cm_admin/main/_show_content.html.slim +2 -1
- data/app/views/cm_admin/main/_table.html.slim +2 -0
- data/app/views/cm_admin/main/index.html.slim +10 -5
- data/app/views/cm_admin/main/show.html.slim +1 -1
- data/app/views/layouts/_drawer_show.html.slim +9 -0
- data/app/views/layouts/cm_admin.html.slim +1 -2
- data/lib/cm_admin/version.rb +1 -1
- metadata +5 -3
- /data/app/views/layouts/{_drawer.html.slim → _drawer_form.html.slim} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b70f3ad1b412c2d150bd0d44c4c6427b1601ee13d560a5ac2a1d30c557f3e490
|
4
|
+
data.tar.gz: c414a509252f571277c60f52e6b24f1bddc54df4a954992dbbd2091e426235b0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6750b96ba62abb6a05263f58edb6a1084c35e21ee42d4b9678fad0609b91e23989b2881d5685ae6c6b95e9af487d7225cdf4df09f106ab5a3bb6a1171a7c2b4
|
7
|
+
data.tar.gz: 4568370042d25f4a350d484067c3028c5916e3d8f3bca251078a11b679d41df243b76d99f4caf2030b1389023354d1b48a95fb9b00a46ed9b15889817c7ef7cd
|
data/Gemfile.lock
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import * as bootstrap from "bootstrap";
|
2
|
+
import { initializeComponents } from "./initialize_components";
|
2
3
|
window.bootstrap = bootstrap;
|
3
4
|
|
4
5
|
export function handleFetchModalClick() {
|
@@ -21,6 +22,7 @@ export function handleFetchModalClick() {
|
|
21
22
|
modalContainer.children().first()
|
22
23
|
);
|
23
24
|
actionModal.show();
|
25
|
+
initializeComponents();
|
24
26
|
},
|
25
27
|
error: function (error) {
|
26
28
|
console.error("Error:", error);
|
@@ -0,0 +1,31 @@
|
|
1
|
+
import LocalTime from "./local-time"
|
2
|
+
import * as bootstrap from "bootstrap";
|
3
|
+
window.bootstrap = bootstrap;
|
4
|
+
|
5
|
+
|
6
|
+
export function initializeComponents() {
|
7
|
+
$(".select-2").select2({
|
8
|
+
theme: "bootstrap-5",
|
9
|
+
});
|
10
|
+
flatpickr("[data-behaviour='date-only']", {
|
11
|
+
dateFormat: "d-m-Y",
|
12
|
+
});
|
13
|
+
flatpickr("[data-behaviour='date-time']", {
|
14
|
+
enableTime: true,
|
15
|
+
});
|
16
|
+
flatpickr("[data-behaviour='filter'][data-filter-type='date']", {
|
17
|
+
mode: "range",
|
18
|
+
});
|
19
|
+
var el = document.getElementsByClassName("columns-list");
|
20
|
+
if (el[0]) {
|
21
|
+
Sortable.create(el[0], {
|
22
|
+
handle: ".dragger",
|
23
|
+
animation: 150,
|
24
|
+
});
|
25
|
+
}
|
26
|
+
|
27
|
+
var headerElemHeight = $(".page-top-bar").height() + 64;
|
28
|
+
var calculatedHeight = "calc(100vh - " + headerElemHeight + "px" + ")";
|
29
|
+
$(".table-wrapper").css("maxHeight", calculatedHeight);
|
30
|
+
LocalTime.start();
|
31
|
+
}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
// This file is shared between rails 6 and 7 version
|
2
|
-
import
|
2
|
+
import { initializeComponents } from "./initialize_components";
|
3
|
+
|
3
4
|
|
4
5
|
$(document).on(
|
5
6
|
"keypress keyup blur",
|
@@ -41,11 +42,13 @@ $(document).on("mouseleave", ".row-action-cell", function () {
|
|
41
42
|
});
|
42
43
|
|
43
44
|
$(document).on("click", '[data-behaviour="offcanvas"]', function (e) {
|
45
|
+
e.preventDefault();
|
44
46
|
const drawerFetchUrl = $(this).attr("data-drawer-fetch-url");
|
45
47
|
const drawerContainer = $("[data-behaviour='cm-drawer-container']");
|
46
48
|
|
47
49
|
if (!drawerFetchUrl || !drawerContainer) return;
|
48
50
|
|
51
|
+
|
49
52
|
$.ajax({
|
50
53
|
url: drawerFetchUrl,
|
51
54
|
method: "GET",
|
@@ -64,7 +67,7 @@ $(document).on("click", '[data-behaviour="offcanvas"]', function (e) {
|
|
64
67
|
handleDrawerFormSubmission(drawerForm);
|
65
68
|
},
|
66
69
|
error: function (error) {
|
67
|
-
console.
|
70
|
+
console.log("Error:", error);
|
68
71
|
},
|
69
72
|
});
|
70
73
|
});
|
@@ -227,29 +230,4 @@ var replaceAccordionTitle = function (element) {
|
|
227
230
|
initializeComponents();
|
228
231
|
};
|
229
232
|
|
230
|
-
export function initializeComponents() {
|
231
|
-
$(".select-2").select2({
|
232
|
-
theme: "bootstrap-5",
|
233
|
-
});
|
234
|
-
flatpickr("[data-behaviour='date-only']", {
|
235
|
-
dateFormat: "d-m-Y",
|
236
|
-
});
|
237
|
-
flatpickr("[data-behaviour='date-time']", {
|
238
|
-
enableTime: true,
|
239
|
-
});
|
240
|
-
flatpickr("[data-behaviour='filter'][data-filter-type='date']", {
|
241
|
-
mode: "range",
|
242
|
-
});
|
243
|
-
var el = document.getElementsByClassName("columns-list");
|
244
|
-
if (el[0]) {
|
245
|
-
Sortable.create(el[0], {
|
246
|
-
handle: ".dragger",
|
247
|
-
animation: 150,
|
248
|
-
});
|
249
|
-
}
|
250
233
|
|
251
|
-
var headerElemHeight = $(".page-top-bar").height() + 64;
|
252
|
-
var calculatedHeight = "calc(100vh - " + headerElemHeight + "px" + ")";
|
253
|
-
$(".table-wrapper").css("maxHeight", calculatedHeight);
|
254
|
-
LocalTime.start();
|
255
|
-
}
|
@@ -15,16 +15,24 @@ module CmAdmin
|
|
15
15
|
records = "CmAdmin::#{@model.name}PolicyIndexScope".constantize.new(Current.user, @model.name.constantize).resolve
|
16
16
|
records = records.includes(@current_action.eager_load_associations) if @current_action.eager_load_associations.present?
|
17
17
|
records = apply_scopes(records)
|
18
|
-
@ar_object = if
|
19
|
-
filter_by(params, records, filter_params: @model.filter_params(params))
|
20
|
-
elsif (request.xhr? && params[:view_type] == 'kanban') || @current_action.view_type == :kanban
|
18
|
+
@ar_object = if params[:view_type] == 'kanban' || @current_action.view_type == :kanban
|
21
19
|
kanban_filter_by(params, records, @model.filter_params(params))
|
22
20
|
else
|
23
21
|
filter_by(params, records, filter_params: @model.filter_params(params))
|
24
22
|
end
|
25
23
|
respond_to do |format|
|
26
|
-
if
|
27
|
-
|
24
|
+
if params[:view_type] == 'kanban' || @current_action.view_type == :kanban
|
25
|
+
if request.xhr?
|
26
|
+
format.json { render json: @ar_object }
|
27
|
+
else
|
28
|
+
format.html { render '/cm_admin/main/' + action_name }
|
29
|
+
end
|
30
|
+
elsif params[:view_type] == 'card' || @current_action.view_type == :card
|
31
|
+
if request.xhr?
|
32
|
+
format.html { render partial: "/cm_admin/#{@model.name.underscore}/card" }
|
33
|
+
else
|
34
|
+
format.html { render '/cm_admin/main/' + action_name }
|
35
|
+
end
|
28
36
|
elsif request.xhr?
|
29
37
|
format.html { render partial: '/cm_admin/main/table' }
|
30
38
|
else
|
@@ -224,10 +232,18 @@ module CmAdmin
|
|
224
232
|
@model = Model.find_by({ name: controller_name.classify })
|
225
233
|
return if @model.blank?
|
226
234
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
235
|
+
if params[:action_name] == 'show'
|
236
|
+
@action = CmAdmin::Models::Action.find_by(@model, name: 'show')
|
237
|
+
scoped_model = "CmAdmin::#{@model.name}Policy::ShowScope".constantize.new(Current.user, @model.name.constantize).resolve
|
238
|
+
@ar_object = fetch_ar_object(scoped_model, params[:ar_object_id])
|
239
|
+
@alerts = @model.alerts
|
240
|
+
render partial: 'layouts/drawer_show'
|
241
|
+
else
|
242
|
+
action_page_title = CmAdmin::Models::Action.find_by(@model, name: 'new').page_title
|
243
|
+
drawer_title = action_page_title.presence || "New #{@model&.formatted_name}"
|
244
|
+
@ar_object = @model.ar_model.new
|
245
|
+
render partial: 'layouts/drawer_form', locals: { drawer_title:, from_field_id: params[:from_field_id] }
|
246
|
+
end
|
231
247
|
end
|
232
248
|
|
233
249
|
def get_nested_table_fields(fields)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
.kanban-container
|
2
|
-
- column_names = @
|
2
|
+
- column_names = @model.ar_model.send(params[:kanban_column_name]&.pluralize || @current_action.kanban_attr[:column_name].pluralize).keys
|
3
3
|
= hidden_field_tag :kanban_column_names, column_names
|
4
4
|
- column_names.each do |column_name|
|
5
5
|
.kanban-list class="#{column_name}"
|
@@ -11,7 +11,7 @@
|
|
11
11
|
|
12
12
|
.pagination-bar.kanban-pagination
|
13
13
|
.btn.btn-primary.kanban-show-more data-page=1 Show more
|
14
|
-
= render partial: 'cm_admin/main/show_as_drawer'
|
14
|
+
/ = render partial: 'cm_admin/main/show_as_drawer'
|
15
15
|
|
16
16
|
= export_modal(@model)
|
17
17
|
= manage_column_pop_up(@model)
|
@@ -1,5 +1,6 @@
|
|
1
1
|
.show-page__header.page-top-bar
|
2
|
-
==
|
2
|
+
- if defined?(via_xhr) && via_xhr == false
|
3
|
+
== render 'cm_admin/main/top_navbar'
|
3
4
|
== render 'cm_admin/main/tabs', via_xhr: defined?(via_xhr) ? via_xhr : false
|
4
5
|
.show-page__inner
|
5
6
|
- unless @alerts.empty?
|
@@ -43,6 +43,8 @@
|
|
43
43
|
td.text-ellipsis data-field-type="#{column.field_type || 'string'}"
|
44
44
|
- if index == 0 && is_show_action_available(@model, ar_object) && !([:link, :custom, :attachment, :drawer, :image].include?(column.field_type))
|
45
45
|
= link_to ar_object.send(column.field_name), cm_admin.send("cm_show_#{ar_object.model_name.singular}_path", ar_object)
|
46
|
+
/ - drawer_fetch_url = "#{CmAdmin::Engine.mount_path}/#{@model.name.tableize}/fetch_drawer?ar_object_id=#{ar_object.id}&action_name=show"
|
47
|
+
/ = link_to ar_object.send(column.field_name), '', data: { behaviour: "offcanvas", drawer_fetch_url: drawer_fetch_url, id: ar_object.id, action_name: 'show' }
|
46
48
|
- else
|
47
49
|
= show_field_value(ar_object, column)
|
48
50
|
- if column.field_type == :drawer
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
= hidden_field_tag :view_type, (params[:view_type] || @current_action.view_type)
|
3
|
+
.drawer-container data-behaviour="cm-drawer-container"
|
2
4
|
.cm-index-page.cm-page-container
|
3
5
|
.sticky-container.page-top-bar
|
4
6
|
== render 'cm_admin/main/top_navbar'
|
@@ -13,9 +15,12 @@
|
|
13
15
|
.cm-index-page__table-container
|
14
16
|
- if @action.partial
|
15
17
|
== render @action.partial
|
16
|
-
- elsif params[:view_type] == 'table' || @current_action.view_type == :table
|
17
|
-
== render 'cm_admin/main/table'
|
18
|
-
- elsif params[:view_type] == 'card' || @current_action.view_type == :card
|
19
|
-
== render "cm_admin/#{@model.name.underscore}/card"
|
20
18
|
- elsif params[:view_type] == 'kanban' || @current_action.view_type == :kanban
|
21
19
|
== render 'cm_admin/main/kanban'
|
20
|
+
- elsif params[:view_type] == 'card' || @current_action.view_type == :card
|
21
|
+
== render "cm_admin/#{@model.name.underscore}/card"
|
22
|
+
- elsif params[:view_type] == 'table' || @current_action.view_type == :table
|
23
|
+
== render 'cm_admin/main/table'
|
24
|
+
|
25
|
+
= manage_column_pop_up(@model)
|
26
|
+
|
@@ -1,2 +1,2 @@
|
|
1
1
|
.show-page
|
2
|
-
= render partial: 'cm_admin/main/show_content', via_xhr: false
|
2
|
+
= render partial: 'cm_admin/main/show_content', locals: { via_xhr: false }
|
@@ -0,0 +1,9 @@
|
|
1
|
+
.offcanvas.cm-drawer tabindex="-1" id="cm-drawer" aria-labelledby="offcanvasExampleLabel" data-behavior="cm-drawer" data-from-field-id="#{params[:from_field_id]}"
|
2
|
+
.drawer-btn-group
|
3
|
+
button.drawer-nav-btn type="button" data-bs-dismiss="offcanvas" aria-label="Close"
|
4
|
+
i.fa-solid.fa-x
|
5
|
+
.offcanvas-header
|
6
|
+
h4 = @action.page_title.present? ? @ar_object.send(@action.page_title) : ''
|
7
|
+
.offcanvas-body
|
8
|
+
.show-page
|
9
|
+
= render partial: 'cm_admin/main/show_content', via_xhr: true
|
@@ -69,5 +69,4 @@ html
|
|
69
69
|
div data-behaviour="flash-container"
|
70
70
|
= render 'layouts/cm_flash_message'
|
71
71
|
div data-behaviour="export-modal-container"
|
72
|
-
|
73
|
-
= render 'layouts/custom_action_modals'
|
72
|
+
= render 'layouts/custom_action_modals'
|
data/lib/cm_admin/version.rb
CHANGED
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: 4.
|
4
|
+
version: 4.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael
|
@@ -14,7 +14,7 @@ authors:
|
|
14
14
|
autorequire:
|
15
15
|
bindir: exe
|
16
16
|
cert_chain: []
|
17
|
-
date: 2024-12-
|
17
|
+
date: 2024-12-25 00:00:00.000000000 Z
|
18
18
|
dependencies:
|
19
19
|
- !ruby/object:Gem::Dependency
|
20
20
|
name: caxlsx_rails
|
@@ -213,6 +213,7 @@ files:
|
|
213
213
|
- app/assets/javascripts/cm_admin/exports.js
|
214
214
|
- app/assets/javascripts/cm_admin/filters.js
|
215
215
|
- app/assets/javascripts/cm_admin/form_validation.js
|
216
|
+
- app/assets/javascripts/cm_admin/initialize_components.js
|
216
217
|
- app/assets/javascripts/cm_admin/kanban.js
|
217
218
|
- app/assets/javascripts/cm_admin/local-time.js
|
218
219
|
- app/assets/javascripts/cm_admin/quick_search.js
|
@@ -410,7 +411,8 @@ files:
|
|
410
411
|
- app/views/layouts/_custom_action_modal.html.slim
|
411
412
|
- app/views/layouts/_custom_action_modals.html.slim
|
412
413
|
- app/views/layouts/_destroy_action_modal.html.slim
|
413
|
-
- app/views/layouts/
|
414
|
+
- app/views/layouts/_drawer_form.html.slim
|
415
|
+
- app/views/layouts/_drawer_show.html.slim
|
414
416
|
- app/views/layouts/_left_sidebar_nav.html.slim
|
415
417
|
- app/views/layouts/_quick_links.html.slim
|
416
418
|
- app/views/layouts/cm_admin.html.slim
|
File without changes
|