easy-admin-rails 0.2.5 → 0.2.7
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/app/assets/builds/easy_admin.base.js +95 -0
- data/app/assets/builds/easy_admin.base.js.map +3 -3
- data/app/assets/builds/easy_admin.css +226 -0
- data/app/components/easy_admin/fields/form/belongs_to_component.rb +0 -1
- data/app/components/easy_admin/form_layout_component.rb +553 -0
- data/app/components/easy_admin/navbar_component.rb +19 -4
- data/app/components/easy_admin/permissions/user_role_permissions_component.rb +1 -3
- data/app/components/easy_admin/profile/change_password_modal_component.rb +75 -0
- data/app/components/easy_admin/profile/profile_tab_component.rb +92 -0
- data/app/components/easy_admin/profile/security_tab_component.rb +53 -0
- data/app/components/easy_admin/profile/settings_component.rb +103 -0
- data/app/components/easy_admin/show_layout_component.rb +694 -24
- data/app/components/easy_admin/two_factor/backup_codes_component.rb +118 -0
- data/app/components/easy_admin/two_factor/setup_component.rb +124 -0
- data/app/components/easy_admin/two_factor/status_component.rb +92 -0
- data/app/controllers/concerns/easy_admin/two_factor.rb +110 -0
- data/app/controllers/easy_admin/application_controller.rb +10 -5
- data/app/controllers/easy_admin/batch_actions_controller.rb +0 -1
- data/app/controllers/easy_admin/concerns/inline_field_editing.rb +4 -11
- data/app/controllers/easy_admin/concerns/resource_loading.rb +10 -9
- data/app/controllers/easy_admin/concerns/resource_pagination.rb +3 -0
- data/app/controllers/easy_admin/dashboards_controller.rb +0 -1
- data/app/controllers/easy_admin/profile_controller.rb +25 -0
- data/app/controllers/easy_admin/resources_controller.rb +1 -5
- data/app/controllers/easy_admin/row_actions_controller.rb +1 -4
- data/app/controllers/easy_admin/sessions_controller.rb +107 -1
- data/app/helpers/easy_admin/fields_helper.rb +8 -22
- data/app/javascript/easy_admin/controllers/infinite_scroll_controller.js +12 -0
- data/app/javascript/easy_admin/controllers/vertical_tabs_controller.js +112 -0
- data/app/javascript/easy_admin/controllers.js +3 -1
- data/app/models/easy_admin/admin_user.rb +3 -0
- data/app/views/easy_admin/profile/backup_codes_regenerated.turbo_stream.erb +12 -0
- data/app/views/easy_admin/profile/change_password.html.erb +24 -0
- data/app/views/easy_admin/profile/index.html.erb +1 -0
- data/app/views/easy_admin/profile/password_error.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/password_invalid_current.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/password_updated.turbo_stream.erb +9 -0
- data/app/views/easy_admin/profile/two_factor_backup_codes.html.erb +24 -0
- data/app/views/easy_admin/profile/two_factor_enabled.turbo_stream.erb +12 -0
- data/app/views/easy_admin/profile/two_factor_invalid_code.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/two_factor_not_enabled.turbo_stream.erb +6 -0
- data/app/views/easy_admin/profile/two_factor_setup.html.erb +24 -0
- data/app/views/easy_admin/profile/two_factor_unavailable.turbo_stream.erb +6 -0
- data/app/views/easy_admin/resources/edit.html.erb +2 -2
- data/app/views/easy_admin/resources/new.html.erb +2 -2
- data/app/views/easy_admin/resources/show.html.erb +3 -1
- data/app/views/easy_admin/sessions/two_factor_verification.html.erb +48 -0
- data/app/views/easy_admin/sessions/verify_2fa_error.turbo_stream.erb +13 -0
- data/config/routes.rb +20 -1
- data/lib/easy-admin-rails.rb +1 -0
- data/lib/easy_admin/field.rb +3 -2
- data/lib/easy_admin/layouts/builders/base_layout_builder.rb +245 -0
- data/lib/easy_admin/layouts/builders/form_layout_builder.rb +208 -0
- data/lib/easy_admin/layouts/builders/index_layout_builder.rb +22 -0
- data/lib/easy_admin/layouts/builders/show_layout_builder.rb +199 -0
- data/lib/easy_admin/layouts/dsl.rb +200 -0
- data/lib/easy_admin/layouts/layout_context.rb +189 -0
- data/lib/easy_admin/layouts/nodes/base_node.rb +88 -0
- data/lib/easy_admin/layouts/nodes/divider.rb +27 -0
- data/lib/easy_admin/layouts/nodes/field_node.rb +57 -0
- data/lib/easy_admin/layouts/nodes/grid.rb +60 -0
- data/lib/easy_admin/layouts/nodes/render_node.rb +41 -0
- data/lib/easy_admin/layouts/nodes/root.rb +25 -0
- data/lib/easy_admin/layouts/nodes/section.rb +46 -0
- data/lib/easy_admin/layouts/nodes/spacer.rb +17 -0
- data/lib/easy_admin/layouts/nodes/stubs.rb +109 -0
- data/lib/easy_admin/layouts/nodes/tab.rb +40 -0
- data/lib/easy_admin/layouts/nodes/tabs.rb +40 -0
- data/lib/easy_admin/layouts.rb +28 -0
- data/lib/easy_admin/permissions/resource_permissions.rb +1 -5
- data/lib/easy_admin/resource/base.rb +2 -2
- data/lib/easy_admin/resource/dsl.rb +2 -11
- data/lib/easy_admin/resource/field_registry.rb +58 -2
- data/lib/easy_admin/resource.rb +0 -9
- data/lib/easy_admin/resource_modules.rb +21 -4
- data/lib/easy_admin/two_factor_authentication.rb +156 -0
- data/lib/easy_admin/version.rb +1 -1
- data/lib/generators/easy_admin/permissions/install_generator.rb +0 -10
- data/lib/generators/easy_admin/permissions/templates/migrations/create_permission_tables.rb +33 -3
- data/lib/generators/easy_admin/two_factor/templates/README +29 -0
- data/lib/generators/easy_admin/two_factor/templates/migration.rb +10 -0
- data/lib/generators/easy_admin/two_factor/two_factor_generator.rb +22 -0
- metadata +49 -9
- data/lib/easy_admin/resource/form_builder.rb +0 -123
- data/lib/easy_admin/resource/layout_builder.rb +0 -249
- data/lib/easy_admin/resource/show_builder.rb +0 -359
- data/lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb +0 -6
- data/lib/generators/easy_admin/rbac/rbac_generator.rb +0 -244
- data/lib/generators/easy_admin/rbac/templates/add_rbac_to_admin_users.rb +0 -23
- data/lib/generators/easy_admin/rbac/templates/super_admin.rb +0 -34
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ea7bf0e083518d4ba2e2e961a17dd4f9e29f19476a1bb03091af720fcafbdb5
|
4
|
+
data.tar.gz: 5be8574b8cfe5e6b67d9a8a247e66d140fe0e9788271e3025f9ae3d30166fc2e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66227e510a64ca5fdc06c3ca40613edb433242302e996272a255b4ca83eb9edef14b5bdbf157770f19ca5effab862dfa89b1b9e55acc7801885f572a4317cb8d
|
7
|
+
data.tar.gz: f726725c6595f5cc89e4b0ca0c127ba9722b48b5f38a692337ac1a3554ea4ed7c3569af99e0b71b2a995b6bdf21d45db932ddc164d4942866001667ca9d8775d
|
@@ -39905,12 +39905,19 @@ ${m = t3 ? m : H(m, ",")}
|
|
39905
39905
|
// Called when the element is replaced by turbo stream
|
39906
39906
|
urlValueChanged() {
|
39907
39907
|
if (this.observer && this.sentinel) {
|
39908
|
+
this.isLoading = false;
|
39909
|
+
this.hideLoading();
|
39908
39910
|
this.setupIntersectionObserver();
|
39911
|
+
this.initializeUI();
|
39909
39912
|
}
|
39910
39913
|
}
|
39911
39914
|
hasMoreValueChanged() {
|
39912
39915
|
if (!this.hasMoreValue) {
|
39913
39916
|
this.showEndMessage();
|
39917
|
+
} else {
|
39918
|
+
if (this.hasEndTarget) {
|
39919
|
+
this.endTarget.style.display = "none";
|
39920
|
+
}
|
39914
39921
|
}
|
39915
39922
|
}
|
39916
39923
|
disconnect() {
|
@@ -41273,6 +41280,93 @@ ${m = t3 ? m : H(m, ",")}
|
|
41273
41280
|
}
|
41274
41281
|
};
|
41275
41282
|
|
41283
|
+
// app/javascript/easy_admin/controllers/vertical_tabs_controller.js
|
41284
|
+
var vertical_tabs_controller_default = class extends Controller {
|
41285
|
+
static targets = ["tab", "content"];
|
41286
|
+
connect() {
|
41287
|
+
const urlParams = new URLSearchParams(window.location.search);
|
41288
|
+
const tabFromUrl = urlParams.get("tab");
|
41289
|
+
if (tabFromUrl && this.isValidTab(tabFromUrl)) {
|
41290
|
+
this.activateTab(tabFromUrl);
|
41291
|
+
} else {
|
41292
|
+
const firstTab = this.tabTargets[0];
|
41293
|
+
if (firstTab) {
|
41294
|
+
this.activateTab(firstTab.dataset.tabId);
|
41295
|
+
}
|
41296
|
+
}
|
41297
|
+
this.handlePopState = this.handlePopState.bind(this);
|
41298
|
+
window.addEventListener("popstate", this.handlePopState);
|
41299
|
+
}
|
41300
|
+
disconnect() {
|
41301
|
+
window.removeEventListener("popstate", this.handlePopState);
|
41302
|
+
}
|
41303
|
+
switchTab(event) {
|
41304
|
+
event.preventDefault();
|
41305
|
+
const tabId = event.currentTarget.dataset.tabId;
|
41306
|
+
this.activateTab(tabId);
|
41307
|
+
}
|
41308
|
+
activateTab(tabId) {
|
41309
|
+
this.tabTargets.forEach((tab) => {
|
41310
|
+
const isActive = tab.dataset.tabId === tabId;
|
41311
|
+
if (isActive) {
|
41312
|
+
tab.classList.remove("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
|
41313
|
+
tab.classList.add("bg-blue-50", "text-blue-700", "border-blue-200");
|
41314
|
+
} else {
|
41315
|
+
tab.classList.remove("bg-blue-50", "text-blue-700", "border-blue-200");
|
41316
|
+
tab.classList.add("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
|
41317
|
+
}
|
41318
|
+
});
|
41319
|
+
this.contentTargets.forEach((content) => {
|
41320
|
+
const isActive = content.dataset.tabId === tabId;
|
41321
|
+
if (isActive) {
|
41322
|
+
content.classList.remove("hidden");
|
41323
|
+
} else {
|
41324
|
+
content.classList.add("hidden");
|
41325
|
+
}
|
41326
|
+
});
|
41327
|
+
if (history.replaceState) {
|
41328
|
+
const url = new URL(window.location);
|
41329
|
+
url.searchParams.set("tab", tabId);
|
41330
|
+
history.replaceState(null, "", url);
|
41331
|
+
}
|
41332
|
+
}
|
41333
|
+
isValidTab(tabId) {
|
41334
|
+
return this.tabTargets.some((tab) => tab.dataset.tabId === tabId);
|
41335
|
+
}
|
41336
|
+
handlePopState() {
|
41337
|
+
const urlParams = new URLSearchParams(window.location.search);
|
41338
|
+
const tabFromUrl = urlParams.get("tab");
|
41339
|
+
if (tabFromUrl && this.isValidTab(tabFromUrl)) {
|
41340
|
+
this.activateTabSilently(tabFromUrl);
|
41341
|
+
} else {
|
41342
|
+
const firstTab = this.tabTargets[0];
|
41343
|
+
if (firstTab) {
|
41344
|
+
this.activateTabSilently(firstTab.dataset.tabId);
|
41345
|
+
}
|
41346
|
+
}
|
41347
|
+
}
|
41348
|
+
activateTabSilently(tabId) {
|
41349
|
+
this.tabTargets.forEach((tab) => {
|
41350
|
+
const isActive = tab.dataset.tabId === tabId;
|
41351
|
+
if (isActive) {
|
41352
|
+
tab.classList.remove("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
|
41353
|
+
tab.classList.add("bg-blue-50", "text-blue-700", "border-blue-200");
|
41354
|
+
} else {
|
41355
|
+
tab.classList.remove("bg-blue-50", "text-blue-700", "border-blue-200");
|
41356
|
+
tab.classList.add("text-gray-700", "hover:bg-gray-100", "hover:text-gray-900");
|
41357
|
+
}
|
41358
|
+
});
|
41359
|
+
this.contentTargets.forEach((content) => {
|
41360
|
+
const isActive = content.dataset.tabId === tabId;
|
41361
|
+
if (isActive) {
|
41362
|
+
content.classList.remove("hidden");
|
41363
|
+
} else {
|
41364
|
+
content.classList.add("hidden");
|
41365
|
+
}
|
41366
|
+
});
|
41367
|
+
}
|
41368
|
+
};
|
41369
|
+
|
41276
41370
|
// app/javascript/easy_admin/controllers.js
|
41277
41371
|
application.register("sidebar", sidebar_controller_default);
|
41278
41372
|
application.register("sidebar-nav", sidebar_nav_controller_default);
|
@@ -41302,6 +41396,7 @@ ${m = t3 ? m : H(m, ",")}
|
|
41302
41396
|
application.register("version-revert", version_revert_controller_default);
|
41303
41397
|
application.register("role-preview", role_preview_controller_default);
|
41304
41398
|
application.register("permission-toggle", permission_toggle_controller_default);
|
41399
|
+
application.register("vertical-tabs", vertical_tabs_controller_default);
|
41305
41400
|
|
41306
41401
|
// node_modules/@hotwired/turbo/dist/turbo.es2017-esm.js
|
41307
41402
|
var turbo_es2017_esm_exports = {};
|