easy-admin-rails 0.2.6 → 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 (57) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/builds/easy_admin.base.js +7 -0
  3. data/app/assets/builds/easy_admin.base.js.map +2 -2
  4. data/app/assets/builds/easy_admin.css +207 -35
  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/permissions/user_role_permissions_component.rb +1 -3
  8. data/app/components/easy_admin/show_layout_component.rb +694 -24
  9. data/app/controllers/easy_admin/application_controller.rb +0 -5
  10. data/app/controllers/easy_admin/batch_actions_controller.rb +0 -1
  11. data/app/controllers/easy_admin/concerns/inline_field_editing.rb +4 -11
  12. data/app/controllers/easy_admin/concerns/resource_loading.rb +10 -9
  13. data/app/controllers/easy_admin/concerns/resource_pagination.rb +3 -0
  14. data/app/controllers/easy_admin/dashboards_controller.rb +0 -1
  15. data/app/controllers/easy_admin/resources_controller.rb +1 -5
  16. data/app/controllers/easy_admin/row_actions_controller.rb +1 -4
  17. data/app/helpers/easy_admin/fields_helper.rb +8 -22
  18. data/app/javascript/easy_admin/controllers/infinite_scroll_controller.js +12 -0
  19. data/app/views/easy_admin/resources/edit.html.erb +2 -2
  20. data/app/views/easy_admin/resources/new.html.erb +2 -2
  21. data/app/views/easy_admin/resources/show.html.erb +3 -1
  22. data/lib/easy_admin/field.rb +3 -2
  23. data/lib/easy_admin/layouts/builders/base_layout_builder.rb +245 -0
  24. data/lib/easy_admin/layouts/builders/form_layout_builder.rb +208 -0
  25. data/lib/easy_admin/layouts/builders/index_layout_builder.rb +22 -0
  26. data/lib/easy_admin/layouts/builders/show_layout_builder.rb +199 -0
  27. data/lib/easy_admin/layouts/dsl.rb +200 -0
  28. data/lib/easy_admin/layouts/layout_context.rb +189 -0
  29. data/lib/easy_admin/layouts/nodes/base_node.rb +88 -0
  30. data/lib/easy_admin/layouts/nodes/divider.rb +27 -0
  31. data/lib/easy_admin/layouts/nodes/field_node.rb +57 -0
  32. data/lib/easy_admin/layouts/nodes/grid.rb +60 -0
  33. data/lib/easy_admin/layouts/nodes/render_node.rb +41 -0
  34. data/lib/easy_admin/layouts/nodes/root.rb +25 -0
  35. data/lib/easy_admin/layouts/nodes/section.rb +46 -0
  36. data/lib/easy_admin/layouts/nodes/spacer.rb +17 -0
  37. data/lib/easy_admin/layouts/nodes/stubs.rb +109 -0
  38. data/lib/easy_admin/layouts/nodes/tab.rb +40 -0
  39. data/lib/easy_admin/layouts/nodes/tabs.rb +40 -0
  40. data/lib/easy_admin/layouts.rb +28 -0
  41. data/lib/easy_admin/permissions/resource_permissions.rb +1 -5
  42. data/lib/easy_admin/resource/base.rb +2 -2
  43. data/lib/easy_admin/resource/dsl.rb +2 -11
  44. data/lib/easy_admin/resource/field_registry.rb +58 -2
  45. data/lib/easy_admin/resource.rb +0 -9
  46. data/lib/easy_admin/resource_modules.rb +21 -4
  47. data/lib/easy_admin/version.rb +1 -1
  48. data/lib/generators/easy_admin/permissions/install_generator.rb +0 -10
  49. data/lib/generators/easy_admin/permissions/templates/migrations/create_permission_tables.rb +33 -3
  50. metadata +21 -9
  51. data/lib/easy_admin/resource/form_builder.rb +0 -123
  52. data/lib/easy_admin/resource/layout_builder.rb +0 -249
  53. data/lib/easy_admin/resource/show_builder.rb +0 -359
  54. data/lib/generators/easy_admin/permissions/templates/migrations/update_users_for_permissions.rb +0 -6
  55. data/lib/generators/easy_admin/rbac/rbac_generator.rb +0 -244
  56. data/lib/generators/easy_admin/rbac/templates/add_rbac_to_admin_users.rb +0 -23
  57. data/lib/generators/easy_admin/rbac/templates/super_admin.rb +0 -34
@@ -3494,6 +3494,54 @@ input:checked + .toggle-switch .toggle-slider:before {
3494
3494
  grid-column: span 1 / span 1;
3495
3495
  }
3496
3496
 
3497
+ .col-span-10 {
3498
+ grid-column: span 10 / span 10;
3499
+ }
3500
+
3501
+ .col-span-11 {
3502
+ grid-column: span 11 / span 11;
3503
+ }
3504
+
3505
+ .col-span-12 {
3506
+ grid-column: span 12 / span 12;
3507
+ }
3508
+
3509
+ .col-span-2 {
3510
+ grid-column: span 2 / span 2;
3511
+ }
3512
+
3513
+ .col-span-3 {
3514
+ grid-column: span 3 / span 3;
3515
+ }
3516
+
3517
+ .col-span-4 {
3518
+ grid-column: span 4 / span 4;
3519
+ }
3520
+
3521
+ .col-span-5 {
3522
+ grid-column: span 5 / span 5;
3523
+ }
3524
+
3525
+ .col-span-6 {
3526
+ grid-column: span 6 / span 6;
3527
+ }
3528
+
3529
+ .col-span-7 {
3530
+ grid-column: span 7 / span 7;
3531
+ }
3532
+
3533
+ .col-span-8 {
3534
+ grid-column: span 8 / span 8;
3535
+ }
3536
+
3537
+ .col-span-9 {
3538
+ grid-column: span 9 / span 9;
3539
+ }
3540
+
3541
+ .col-span-full {
3542
+ grid-column: 1 / -1;
3543
+ }
3544
+
3497
3545
  .m-auto {
3498
3546
  margin: auto;
3499
3547
  }
@@ -3564,10 +3612,18 @@ input:checked + .toggle-switch .toggle-slider:before {
3564
3612
  margin-bottom: 1.5rem;
3565
3613
  }
3566
3614
 
3615
+ .mb-8 {
3616
+ margin-bottom: 2rem;
3617
+ }
3618
+
3567
3619
  .me-1 {
3568
3620
  margin-inline-end: 0.25rem;
3569
3621
  }
3570
3622
 
3623
+ .me-2 {
3624
+ margin-inline-end: 0.5rem;
3625
+ }
3626
+
3571
3627
  .ml-1 {
3572
3628
  margin-left: 0.25rem;
3573
3629
  }
@@ -3604,6 +3660,10 @@ input:checked + .toggle-switch .toggle-slider:before {
3604
3660
  margin-right: 1rem;
3605
3661
  }
3606
3662
 
3663
+ .mr-8 {
3664
+ margin-right: 2rem;
3665
+ }
3666
+
3607
3667
  .ms-auto {
3608
3668
  margin-inline-start: auto;
3609
3669
  }
@@ -3644,10 +3704,6 @@ input:checked + .toggle-switch .toggle-slider:before {
3644
3704
  margin-top: auto;
3645
3705
  }
3646
3706
 
3647
- .mb-8 {
3648
- margin-bottom: 2rem;
3649
- }
3650
-
3651
3707
  .block {
3652
3708
  display: block;
3653
3709
  }
@@ -3728,6 +3784,10 @@ input:checked + .toggle-switch .toggle-slider:before {
3728
3784
  height: 1rem;
3729
3785
  }
3730
3786
 
3787
+ .h-48 {
3788
+ height: 12rem;
3789
+ }
3790
+
3731
3791
  .h-5 {
3732
3792
  height: 1.25rem;
3733
3793
  }
@@ -3752,10 +3812,6 @@ input:checked + .toggle-switch .toggle-slider:before {
3752
3812
  height: 100%;
3753
3813
  }
3754
3814
 
3755
- .h-48 {
3756
- height: 12rem;
3757
- }
3758
-
3759
3815
  .max-h-60 {
3760
3816
  max-height: 15rem;
3761
3817
  }
@@ -3925,6 +3981,10 @@ input:checked + .toggle-switch .toggle-slider:before {
3925
3981
  max-width: 56rem;
3926
3982
  }
3927
3983
 
3984
+ .max-w-6xl {
3985
+ max-width: 72rem;
3986
+ }
3987
+
3928
3988
  .max-w-7xl {
3929
3989
  max-width: 80rem;
3930
3990
  }
@@ -3937,8 +3997,8 @@ input:checked + .toggle-switch .toggle-slider:before {
3937
3997
  max-width: 24rem;
3938
3998
  }
3939
3999
 
3940
- .max-w-6xl {
3941
- max-width: 72rem;
4000
+ .max-w-full {
4001
+ max-width: 100%;
3942
4002
  }
3943
4003
 
3944
4004
  .flex-1 {
@@ -4095,6 +4155,10 @@ input:checked + .toggle-switch .toggle-slider:before {
4095
4155
  grid-template-columns: repeat(7, minmax(0, 1fr));
4096
4156
  }
4097
4157
 
4158
+ .grid-cols-12 {
4159
+ grid-template-columns: repeat(12, minmax(0, 1fr));
4160
+ }
4161
+
4098
4162
  .flex-col {
4099
4163
  flex-direction: column;
4100
4164
  }
@@ -4115,6 +4179,14 @@ input:checked + .toggle-switch .toggle-slider:before {
4115
4179
  align-items: center;
4116
4180
  }
4117
4181
 
4182
+ .items-stretch {
4183
+ align-items: stretch;
4184
+ }
4185
+
4186
+ .justify-start {
4187
+ justify-content: flex-start;
4188
+ }
4189
+
4118
4190
  .justify-end {
4119
4191
  justify-content: flex-end;
4120
4192
  }
@@ -4177,6 +4249,12 @@ input:checked + .toggle-switch .toggle-slider:before {
4177
4249
  margin-left: calc(1rem * calc(1 - var(--tw-space-x-reverse)));
4178
4250
  }
4179
4251
 
4252
+ .space-x-8 > :not([hidden]) ~ :not([hidden]) {
4253
+ --tw-space-x-reverse: 0;
4254
+ margin-right: calc(2rem * var(--tw-space-x-reverse));
4255
+ margin-left: calc(2rem * calc(1 - var(--tw-space-x-reverse)));
4256
+ }
4257
+
4180
4258
  .space-y-0 > :not([hidden]) ~ :not([hidden]) {
4181
4259
  --tw-space-y-reverse: 0;
4182
4260
  margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
@@ -4269,6 +4347,10 @@ input:checked + .toggle-switch .toggle-slider:before {
4269
4347
  white-space: pre-wrap;
4270
4348
  }
4271
4349
 
4350
+ .break-words {
4351
+ overflow-wrap: break-word;
4352
+ }
4353
+
4272
4354
  .break-all {
4273
4355
  word-break: break-all;
4274
4356
  }
@@ -4355,6 +4437,10 @@ input:checked + .toggle-switch .toggle-slider:before {
4355
4437
  border-bottom-width: 2px;
4356
4438
  }
4357
4439
 
4440
+ .border-l-4 {
4441
+ border-left-width: 4px;
4442
+ }
4443
+
4358
4444
  .border-r {
4359
4445
  border-right-width: 1px;
4360
4446
  }
@@ -4510,6 +4596,16 @@ input:checked + .toggle-switch .toggle-slider:before {
4510
4596
  border-color: rgb(254 240 138 / var(--tw-border-opacity, 1));
4511
4597
  }
4512
4598
 
4599
+ .border-cyan-200 {
4600
+ --tw-border-opacity: 1;
4601
+ border-color: rgb(165 243 252 / var(--tw-border-opacity, 1));
4602
+ }
4603
+
4604
+ .border-gray-800 {
4605
+ --tw-border-opacity: 1;
4606
+ border-color: rgb(31 41 55 / var(--tw-border-opacity, 1));
4607
+ }
4608
+
4513
4609
  .bg-amber-50 {
4514
4610
  --tw-bg-opacity: 1;
4515
4611
  background-color: rgb(255 251 235 / var(--tw-bg-opacity, 1));
@@ -4870,6 +4966,11 @@ input:checked + .toggle-switch .toggle-slider:before {
4870
4966
  padding-right: 0px;
4871
4967
  }
4872
4968
 
4969
+ .px-1 {
4970
+ padding-left: 0.25rem;
4971
+ padding-right: 0.25rem;
4972
+ }
4973
+
4873
4974
  .px-1\.5 {
4874
4975
  padding-left: 0.375rem;
4875
4976
  padding-right: 0.375rem;
@@ -5025,6 +5126,14 @@ input:checked + .toggle-switch .toggle-slider:before {
5025
5126
  padding-top: 2rem;
5026
5127
  }
5027
5128
 
5129
+ .pb-2 {
5130
+ padding-bottom: 0.5rem;
5131
+ }
5132
+
5133
+ .pb-3 {
5134
+ padding-bottom: 0.75rem;
5135
+ }
5136
+
5028
5137
  .text-left {
5029
5138
  text-align: left;
5030
5139
  }
@@ -5272,6 +5381,11 @@ input:checked + .toggle-switch .toggle-slider:before {
5272
5381
  color: rgb(153 27 27 / var(--tw-text-opacity, 1));
5273
5382
  }
5274
5383
 
5384
+ .text-red-900 {
5385
+ --tw-text-opacity: 1;
5386
+ color: rgb(127 29 29 / var(--tw-text-opacity, 1));
5387
+ }
5388
+
5275
5389
  .text-transparent {
5276
5390
  color: transparent;
5277
5391
  }
@@ -5286,6 +5400,11 @@ input:checked + .toggle-switch .toggle-slider:before {
5286
5400
  color: rgb(250 204 21 / var(--tw-text-opacity, 1));
5287
5401
  }
5288
5402
 
5403
+ .text-yellow-500 {
5404
+ --tw-text-opacity: 1;
5405
+ color: rgb(234 179 8 / var(--tw-text-opacity, 1));
5406
+ }
5407
+
5289
5408
  .text-yellow-600 {
5290
5409
  --tw-text-opacity: 1;
5291
5410
  color: rgb(202 138 4 / var(--tw-text-opacity, 1));
@@ -5301,21 +5420,11 @@ input:checked + .toggle-switch .toggle-slider:before {
5301
5420
  color: rgb(133 77 14 / var(--tw-text-opacity, 1));
5302
5421
  }
5303
5422
 
5304
- .text-yellow-500 {
5305
- --tw-text-opacity: 1;
5306
- color: rgb(234 179 8 / var(--tw-text-opacity, 1));
5307
- }
5308
-
5309
5423
  .text-yellow-900 {
5310
5424
  --tw-text-opacity: 1;
5311
5425
  color: rgb(113 63 18 / var(--tw-text-opacity, 1));
5312
5426
  }
5313
5427
 
5314
- .text-red-900 {
5315
- --tw-text-opacity: 1;
5316
- color: rgb(127 29 29 / var(--tw-text-opacity, 1));
5317
- }
5318
-
5319
5428
  .underline {
5320
5429
  text-decoration-line: underline;
5321
5430
  }
@@ -5689,6 +5798,10 @@ input:checked + .toggle-switch .toggle-slider:before {
5689
5798
  color: rgb(29 78 216 / var(--tw-text-opacity, 1));
5690
5799
  }
5691
5800
 
5801
+ .last\:border-b-0:last-child {
5802
+ border-bottom-width: 0px;
5803
+ }
5804
+
5692
5805
  .focus-within\:border-blue-500:focus-within {
5693
5806
  --tw-border-opacity: 1;
5694
5807
  border-color: rgb(59 130 246 / var(--tw-border-opacity, 1));
@@ -5821,6 +5934,11 @@ input:checked + .toggle-switch .toggle-slider:before {
5821
5934
  background-color: rgb(220 252 231 / var(--tw-bg-opacity, 1));
5822
5935
  }
5823
5936
 
5937
+ .hover\:bg-green-200:hover {
5938
+ --tw-bg-opacity: 1;
5939
+ background-color: rgb(187 247 208 / var(--tw-bg-opacity, 1));
5940
+ }
5941
+
5824
5942
  .hover\:bg-green-50:hover {
5825
5943
  --tw-bg-opacity: 1;
5826
5944
  background-color: rgb(240 253 244 / var(--tw-bg-opacity, 1));
@@ -5831,6 +5949,11 @@ input:checked + .toggle-switch .toggle-slider:before {
5831
5949
  background-color: rgb(34 197 94 / var(--tw-bg-opacity, 1));
5832
5950
  }
5833
5951
 
5952
+ .hover\:bg-green-700:hover {
5953
+ --tw-bg-opacity: 1;
5954
+ background-color: rgb(21 128 61 / var(--tw-bg-opacity, 1));
5955
+ }
5956
+
5834
5957
  .hover\:bg-red-100:hover {
5835
5958
  --tw-bg-opacity: 1;
5836
5959
  background-color: rgb(254 226 226 / var(--tw-bg-opacity, 1));
@@ -5875,21 +5998,6 @@ input:checked + .toggle-switch .toggle-slider:before {
5875
5998
  background-color: rgb(234 179 8 / var(--tw-bg-opacity, 1));
5876
5999
  }
5877
6000
 
5878
- .hover\:bg-green-700:hover {
5879
- --tw-bg-opacity: 1;
5880
- background-color: rgb(21 128 61 / var(--tw-bg-opacity, 1));
5881
- }
5882
-
5883
- .hover\:bg-green-200:hover {
5884
- --tw-bg-opacity: 1;
5885
- background-color: rgb(187 247 208 / var(--tw-bg-opacity, 1));
5886
- }
5887
-
5888
- .hover\:bg-red-200:hover {
5889
- --tw-bg-opacity: 1;
5890
- background-color: rgb(254 202 202 / var(--tw-bg-opacity, 1));
5891
- }
5892
-
5893
6001
  .hover\:from-blue-600:hover {
5894
6002
  --tw-gradient-from: #2563eb var(--tw-gradient-from-position);
5895
6003
  --tw-gradient-to: rgb(37 99 235 / 0) var(--tw-gradient-to-position);
@@ -6204,6 +6312,14 @@ input:checked + .toggle-switch .toggle-slider:before {
6204
6312
  grid-column: span 2 / span 2;
6205
6313
  }
6206
6314
 
6315
+ .sm\:col-span-3 {
6316
+ grid-column: span 3 / span 3;
6317
+ }
6318
+
6319
+ .sm\:col-span-9 {
6320
+ grid-column: span 9 / span 9;
6321
+ }
6322
+
6207
6323
  .sm\:-mx-6 {
6208
6324
  margin-left: -1.5rem;
6209
6325
  margin-right: -1.5rem;
@@ -6395,6 +6511,50 @@ input:checked + .toggle-switch .toggle-slider:before {
6395
6511
  grid-column: span 2 / span 2;
6396
6512
  }
6397
6513
 
6514
+ .md\:col-span-1 {
6515
+ grid-column: span 1 / span 1;
6516
+ }
6517
+
6518
+ .md\:col-span-10 {
6519
+ grid-column: span 10 / span 10;
6520
+ }
6521
+
6522
+ .md\:col-span-11 {
6523
+ grid-column: span 11 / span 11;
6524
+ }
6525
+
6526
+ .md\:col-span-12 {
6527
+ grid-column: span 12 / span 12;
6528
+ }
6529
+
6530
+ .md\:col-span-3 {
6531
+ grid-column: span 3 / span 3;
6532
+ }
6533
+
6534
+ .md\:col-span-4 {
6535
+ grid-column: span 4 / span 4;
6536
+ }
6537
+
6538
+ .md\:col-span-5 {
6539
+ grid-column: span 5 / span 5;
6540
+ }
6541
+
6542
+ .md\:col-span-6 {
6543
+ grid-column: span 6 / span 6;
6544
+ }
6545
+
6546
+ .md\:col-span-7 {
6547
+ grid-column: span 7 / span 7;
6548
+ }
6549
+
6550
+ .md\:col-span-8 {
6551
+ grid-column: span 8 / span 8;
6552
+ }
6553
+
6554
+ .md\:col-span-9 {
6555
+ grid-column: span 9 / span 9;
6556
+ }
6557
+
6398
6558
  .md\:-mx-0 {
6399
6559
  margin-left: -0px;
6400
6560
  margin-right: -0px;
@@ -6471,6 +6631,10 @@ input:checked + .toggle-switch .toggle-slider:before {
6471
6631
  grid-template-columns: repeat(3, minmax(0, 1fr));
6472
6632
  }
6473
6633
 
6634
+ .md\:grid-cols-12 {
6635
+ grid-template-columns: repeat(12, minmax(0, 1fr));
6636
+ }
6637
+
6474
6638
  .md\:flex-row {
6475
6639
  flex-direction: row;
6476
6640
  }
@@ -6608,6 +6772,14 @@ input:checked + .toggle-switch .toggle-slider:before {
6608
6772
  grid-template-columns: repeat(4, minmax(0, 1fr));
6609
6773
  }
6610
6774
 
6775
+ .lg\:grid-cols-5 {
6776
+ grid-template-columns: repeat(5, minmax(0, 1fr));
6777
+ }
6778
+
6779
+ .lg\:grid-cols-6 {
6780
+ grid-template-columns: repeat(6, minmax(0, 1fr));
6781
+ }
6782
+
6611
6783
  .lg\:px-8 {
6612
6784
  padding-left: 2rem;
6613
6785
  padding-right: 2rem;
@@ -61,7 +61,6 @@ module EasyAdmin
61
61
  search_field_name = field_name
62
62
 
63
63
  url = easy_admin_url_helpers.suggest_resource_path(resource_name, field: search_field_name)
64
- Rails.logger.debug "BelongsTo suggest URL for #{field_name}: #{url} (resource: #{resource_name}, field: #{search_field_name})"
65
64
  url
66
65
  end
67
66