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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/easy_admin.base.js +95 -0
  3. data/app/assets/builds/easy_admin.base.js.map +3 -3
  4. data/app/assets/builds/easy_admin.css +226 -0
  5. data/app/components/easy_admin/fields/form/belongs_to_component.rb +0 -1
  6. data/app/components/easy_admin/form_layout_component.rb +553 -0
  7. data/app/components/easy_admin/navbar_component.rb +19 -4
  8. data/app/components/easy_admin/permissions/user_role_permissions_component.rb +1 -3
  9. data/app/components/easy_admin/profile/change_password_modal_component.rb +75 -0
  10. data/app/components/easy_admin/profile/profile_tab_component.rb +92 -0
  11. data/app/components/easy_admin/profile/security_tab_component.rb +53 -0
  12. data/app/components/easy_admin/profile/settings_component.rb +103 -0
  13. data/app/components/easy_admin/show_layout_component.rb +694 -24
  14. data/app/components/easy_admin/two_factor/backup_codes_component.rb +118 -0
  15. data/app/components/easy_admin/two_factor/setup_component.rb +124 -0
  16. data/app/components/easy_admin/two_factor/status_component.rb +92 -0
  17. data/app/controllers/concerns/easy_admin/two_factor.rb +110 -0
  18. data/app/controllers/easy_admin/application_controller.rb +10 -5
  19. data/app/controllers/easy_admin/batch_actions_controller.rb +0 -1
  20. data/app/controllers/easy_admin/concerns/inline_field_editing.rb +4 -11
  21. data/app/controllers/easy_admin/concerns/resource_loading.rb +10 -9
  22. data/app/controllers/easy_admin/concerns/resource_pagination.rb +3 -0
  23. data/app/controllers/easy_admin/dashboards_controller.rb +0 -1
  24. data/app/controllers/easy_admin/profile_controller.rb +25 -0
  25. data/app/controllers/easy_admin/resources_controller.rb +1 -5
  26. data/app/controllers/easy_admin/row_actions_controller.rb +1 -4
  27. data/app/controllers/easy_admin/sessions_controller.rb +107 -1
  28. data/app/helpers/easy_admin/fields_helper.rb +8 -22
  29. data/app/javascript/easy_admin/controllers/infinite_scroll_controller.js +12 -0
  30. data/app/javascript/easy_admin/controllers/vertical_tabs_controller.js +112 -0
  31. data/app/javascript/easy_admin/controllers.js +3 -1
  32. data/app/models/easy_admin/admin_user.rb +3 -0
  33. data/app/views/easy_admin/profile/backup_codes_regenerated.turbo_stream.erb +12 -0
  34. data/app/views/easy_admin/profile/change_password.html.erb +24 -0
  35. data/app/views/easy_admin/profile/index.html.erb +1 -0
  36. data/app/views/easy_admin/profile/password_error.turbo_stream.erb +6 -0
  37. data/app/views/easy_admin/profile/password_invalid_current.turbo_stream.erb +6 -0
  38. data/app/views/easy_admin/profile/password_updated.turbo_stream.erb +9 -0
  39. data/app/views/easy_admin/profile/two_factor_backup_codes.html.erb +24 -0
  40. data/app/views/easy_admin/profile/two_factor_enabled.turbo_stream.erb +12 -0
  41. data/app/views/easy_admin/profile/two_factor_invalid_code.turbo_stream.erb +6 -0
  42. data/app/views/easy_admin/profile/two_factor_not_enabled.turbo_stream.erb +6 -0
  43. data/app/views/easy_admin/profile/two_factor_setup.html.erb +24 -0
  44. data/app/views/easy_admin/profile/two_factor_unavailable.turbo_stream.erb +6 -0
  45. data/app/views/easy_admin/resources/edit.html.erb +2 -2
  46. data/app/views/easy_admin/resources/new.html.erb +2 -2
  47. data/app/views/easy_admin/resources/show.html.erb +3 -1
  48. data/app/views/easy_admin/sessions/two_factor_verification.html.erb +48 -0
  49. data/app/views/easy_admin/sessions/verify_2fa_error.turbo_stream.erb +13 -0
  50. data/config/routes.rb +20 -1
  51. data/lib/easy-admin-rails.rb +1 -0
  52. data/lib/easy_admin/field.rb +3 -2
  53. data/lib/easy_admin/layouts/builders/base_layout_builder.rb +245 -0
  54. data/lib/easy_admin/layouts/builders/form_layout_builder.rb +208 -0
  55. data/lib/easy_admin/layouts/builders/index_layout_builder.rb +22 -0
  56. data/lib/easy_admin/layouts/builders/show_layout_builder.rb +199 -0
  57. data/lib/easy_admin/layouts/dsl.rb +200 -0
  58. data/lib/easy_admin/layouts/layout_context.rb +189 -0
  59. data/lib/easy_admin/layouts/nodes/base_node.rb +88 -0
  60. data/lib/easy_admin/layouts/nodes/divider.rb +27 -0
  61. data/lib/easy_admin/layouts/nodes/field_node.rb +57 -0
  62. data/lib/easy_admin/layouts/nodes/grid.rb +60 -0
  63. data/lib/easy_admin/layouts/nodes/render_node.rb +41 -0
  64. data/lib/easy_admin/layouts/nodes/root.rb +25 -0
  65. data/lib/easy_admin/layouts/nodes/section.rb +46 -0
  66. data/lib/easy_admin/layouts/nodes/spacer.rb +17 -0
  67. data/lib/easy_admin/layouts/nodes/stubs.rb +109 -0
  68. data/lib/easy_admin/layouts/nodes/tab.rb +40 -0
  69. data/lib/easy_admin/layouts/nodes/tabs.rb +40 -0
  70. data/lib/easy_admin/layouts.rb +28 -0
  71. data/lib/easy_admin/permissions/resource_permissions.rb +1 -5
  72. data/lib/easy_admin/resource/base.rb +2 -2
  73. data/lib/easy_admin/resource/dsl.rb +2 -11
  74. data/lib/easy_admin/resource/field_registry.rb +58 -2
  75. data/lib/easy_admin/resource.rb +0 -9
  76. data/lib/easy_admin/resource_modules.rb +21 -4
  77. data/lib/easy_admin/two_factor_authentication.rb +156 -0
  78. data/lib/easy_admin/version.rb +1 -1
  79. data/lib/generators/easy_admin/permissions/install_generator.rb +0 -10
  80. data/lib/generators/easy_admin/permissions/templates/migrations/create_permission_tables.rb +33 -3
  81. data/lib/generators/easy_admin/two_factor/templates/README +29 -0
  82. data/lib/generators/easy_admin/two_factor/templates/migration.rb +10 -0
  83. data/lib/generators/easy_admin/two_factor/two_factor_generator.rb +22 -0
  84. metadata +49 -9
  85. data/lib/easy_admin/resource/form_builder.rb +0 -123
  86. data/lib/easy_admin/resource/layout_builder.rb +0 -249
  87. data/lib/easy_admin/resource/show_builder.rb +0 -359
  88. data/lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb +0 -6
  89. data/lib/generators/easy_admin/rbac/rbac_generator.rb +0 -244
  90. data/lib/generators/easy_admin/rbac/templates/add_rbac_to_admin_users.rb +0 -23
  91. 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: 7a4f75393aa2ccd50a842d05ddb8f358f05ccaf8df0ff97952d1549c9a179b22
4
- data.tar.gz: 00b030d700c2e11b21ee4027f5ee48385577b2fe5abcdef97f38fc109441b8dc
3
+ metadata.gz: 8ea7bf0e083518d4ba2e2e961a17dd4f9e29f19476a1bb03091af720fcafbdb5
4
+ data.tar.gz: 5be8574b8cfe5e6b67d9a8a247e66d140fe0e9788271e3025f9ae3d30166fc2e
5
5
  SHA512:
6
- metadata.gz: cd64222eeba34c8050ec8b35f2f4b4141a940af622fd9e076f5f9f5bc78ad60f734bb4c646a442ec7160c9ad53b238a06fd6094d4929d9bd0e29c49fe968bddf
7
- data.tar.gz: 6883d05f2bcb09da402acee060e0b17856b023c3aef73ae449ffed53d3889e03bb6b505c1958f28d3f6ed00c2a25b42f9d3af719d0645761abd982bca18f1881
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 = {};