Full Code of railsadminteam/rails_admin for AI

master d8e0809ea4b3 cached
722 files
2.5 MB
703.6k tokens
1859 symbols
1 requests
Download .txt
Showing preview only (2,799K chars total). Download the full file or copy to clipboard to get everything.
Repository: railsadminteam/rails_admin
Branch: master
Commit: d8e0809ea4b3
Files: 722
Total size: 2.5 MB

Directory structure:
gitextract_n6znt0mu/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── code-ql.yml
│       └── test.yml
├── .gitignore
├── .prettierignore
├── .rspec
├── .rubocop.yml
├── .rubocop_todo.yml
├── .teatro.yml
├── .yardopts
├── Appraisals
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE.md
├── Procfile.teatro
├── README.md
├── Rakefile
├── app/
│   ├── assets/
│   │   ├── javascripts/
│   │   │   └── rails_admin/
│   │   │       ├── application.js.erb
│   │   │       └── custom/
│   │   │           └── ui.js
│   │   └── stylesheets/
│   │       └── rails_admin/
│   │           ├── application.scss.erb
│   │           └── custom/
│   │               ├── mixins.scss
│   │               ├── theming.scss
│   │               └── variables.scss
│   ├── controllers/
│   │   └── rails_admin/
│   │       ├── application_controller.rb
│   │       └── main_controller.rb
│   ├── helpers/
│   │   └── rails_admin/
│   │       ├── application_helper.rb
│   │       ├── form_builder.rb
│   │       └── main_helper.rb
│   └── views/
│       ├── kaminari/
│       │   └── ra-twitter-bootstrap/
│       │       ├── _gap.html.erb
│       │       ├── _next_page.html.erb
│       │       ├── _page.html.erb
│       │       ├── _paginator.html.erb
│       │       ├── _prev_page.html.erb
│       │       └── without_count/
│       │           ├── _next_page.html.erb
│       │           ├── _paginator.html.erb
│       │           └── _prev_page.html.erb
│       ├── layouts/
│       │   └── rails_admin/
│       │       ├── _head.html.erb
│       │       ├── _navigation.html.erb
│       │       ├── _secondary_navigation.html.erb
│       │       ├── _sidebar_navigation.html.erb
│       │       ├── application.html.erb
│       │       ├── content.html.erb
│       │       └── modal.js.erb
│       └── rails_admin/
│           └── main/
│               ├── _dashboard_history.html.erb
│               ├── _delete_notice.html.erb
│               ├── _form_action_text.html.erb
│               ├── _form_boolean.html.erb
│               ├── _form_ck_editor.html.erb
│               ├── _form_code_mirror.html.erb
│               ├── _form_colorpicker.html.erb
│               ├── _form_datetime.html.erb
│               ├── _form_enumeration.html.erb
│               ├── _form_field.html.erb
│               ├── _form_file_upload.html.erb
│               ├── _form_filtering_multiselect.html.erb
│               ├── _form_filtering_select.html.erb
│               ├── _form_froala.html.erb
│               ├── _form_multiple_file_upload.html.erb
│               ├── _form_nested_many.html.erb
│               ├── _form_nested_one.html.erb
│               ├── _form_polymorphic_association.html.erb
│               ├── _form_simple_mde.html.erb
│               ├── _form_text.html.erb
│               ├── _form_wysihtml5.html.erb
│               ├── _submit_buttons.html.erb
│               ├── bulk_delete.html.erb
│               ├── dashboard.html.erb
│               ├── delete.html.erb
│               ├── edit.html.erb
│               ├── export.html.erb
│               ├── history.html.erb
│               ├── index.html.erb
│               ├── new.html.erb
│               └── show.html.erb
├── config/
│   ├── initializers/
│   │   ├── active_record_extensions.rb
│   │   └── mongoid_extensions.rb
│   ├── locales/
│   │   └── rails_admin.en.yml
│   └── routes.rb
├── gemfiles/
│   ├── composite_primary_keys.gemfile
│   ├── rails_6.0.gemfile
│   ├── rails_6.1.gemfile
│   ├── rails_7.0.gemfile
│   ├── rails_7.1.gemfile
│   ├── rails_7.2.gemfile
│   └── rails_8.0.gemfile
├── lib/
│   ├── generators/
│   │   └── rails_admin/
│   │       ├── importmap_formatter.rb
│   │       ├── install_generator.rb
│   │       ├── templates/
│   │       │   ├── initializer.erb
│   │       │   ├── rails_admin.js
│   │       │   ├── rails_admin.scss.erb
│   │       │   ├── rails_admin.vite.js
│   │       │   └── rails_admin.webpacker.js
│   │       └── utils.rb
│   ├── rails_admin/
│   │   ├── abstract_model.rb
│   │   ├── adapters/
│   │   │   ├── active_record/
│   │   │   │   ├── association.rb
│   │   │   │   ├── object_extension.rb
│   │   │   │   └── property.rb
│   │   │   ├── active_record.rb
│   │   │   ├── mongoid/
│   │   │   │   ├── association.rb
│   │   │   │   ├── bson.rb
│   │   │   │   ├── extension.rb
│   │   │   │   ├── object_extension.rb
│   │   │   │   └── property.rb
│   │   │   └── mongoid.rb
│   │   ├── config/
│   │   │   ├── actions/
│   │   │   │   ├── base.rb
│   │   │   │   ├── bulk_delete.rb
│   │   │   │   ├── dashboard.rb
│   │   │   │   ├── delete.rb
│   │   │   │   ├── edit.rb
│   │   │   │   ├── export.rb
│   │   │   │   ├── history_index.rb
│   │   │   │   ├── history_show.rb
│   │   │   │   ├── index.rb
│   │   │   │   ├── new.rb
│   │   │   │   ├── show.rb
│   │   │   │   └── show_in_app.rb
│   │   │   ├── actions.rb
│   │   │   ├── configurable.rb
│   │   │   ├── const_load_suppressor.rb
│   │   │   ├── fields/
│   │   │   │   ├── association.rb
│   │   │   │   ├── base.rb
│   │   │   │   ├── collection_association.rb
│   │   │   │   ├── factories/
│   │   │   │   │   ├── action_text.rb
│   │   │   │   │   ├── active_storage.rb
│   │   │   │   │   ├── association.rb
│   │   │   │   │   ├── carrierwave.rb
│   │   │   │   │   ├── devise.rb
│   │   │   │   │   ├── dragonfly.rb
│   │   │   │   │   ├── enum.rb
│   │   │   │   │   ├── paperclip.rb
│   │   │   │   │   ├── password.rb
│   │   │   │   │   └── shrine.rb
│   │   │   │   ├── group.rb
│   │   │   │   ├── singular_association.rb
│   │   │   │   ├── types/
│   │   │   │   │   ├── action_text.rb
│   │   │   │   │   ├── active_record_enum.rb
│   │   │   │   │   ├── active_storage.rb
│   │   │   │   │   ├── all.rb
│   │   │   │   │   ├── belongs_to_association.rb
│   │   │   │   │   ├── boolean.rb
│   │   │   │   │   ├── bson_object_id.rb
│   │   │   │   │   ├── carrierwave.rb
│   │   │   │   │   ├── citext.rb
│   │   │   │   │   ├── ck_editor.rb
│   │   │   │   │   ├── code_mirror.rb
│   │   │   │   │   ├── color.rb
│   │   │   │   │   ├── date.rb
│   │   │   │   │   ├── datetime.rb
│   │   │   │   │   ├── decimal.rb
│   │   │   │   │   ├── dragonfly.rb
│   │   │   │   │   ├── enum.rb
│   │   │   │   │   ├── file_upload.rb
│   │   │   │   │   ├── float.rb
│   │   │   │   │   ├── froala.rb
│   │   │   │   │   ├── has_and_belongs_to_many_association.rb
│   │   │   │   │   ├── has_many_association.rb
│   │   │   │   │   ├── has_one_association.rb
│   │   │   │   │   ├── hidden.rb
│   │   │   │   │   ├── inet.rb
│   │   │   │   │   ├── integer.rb
│   │   │   │   │   ├── json.rb
│   │   │   │   │   ├── multiple_active_storage.rb
│   │   │   │   │   ├── multiple_carrierwave.rb
│   │   │   │   │   ├── multiple_file_upload.rb
│   │   │   │   │   ├── numeric.rb
│   │   │   │   │   ├── paperclip.rb
│   │   │   │   │   ├── password.rb
│   │   │   │   │   ├── polymorphic_association.rb
│   │   │   │   │   ├── serialized.rb
│   │   │   │   │   ├── shrine.rb
│   │   │   │   │   ├── simple_mde.rb
│   │   │   │   │   ├── string.rb
│   │   │   │   │   ├── string_like.rb
│   │   │   │   │   ├── text.rb
│   │   │   │   │   ├── time.rb
│   │   │   │   │   ├── timestamp.rb
│   │   │   │   │   ├── uuid.rb
│   │   │   │   │   └── wysihtml5.rb
│   │   │   │   └── types.rb
│   │   │   ├── fields.rb
│   │   │   ├── groupable.rb
│   │   │   ├── has_description.rb
│   │   │   ├── has_fields.rb
│   │   │   ├── has_groups.rb
│   │   │   ├── hideable.rb
│   │   │   ├── inspectable.rb
│   │   │   ├── lazy_model.rb
│   │   │   ├── model.rb
│   │   │   ├── proxyable/
│   │   │   │   └── proxy.rb
│   │   │   ├── proxyable.rb
│   │   │   ├── sections/
│   │   │   │   ├── base.rb
│   │   │   │   ├── create.rb
│   │   │   │   ├── edit.rb
│   │   │   │   ├── export.rb
│   │   │   │   ├── list.rb
│   │   │   │   ├── modal.rb
│   │   │   │   ├── nested.rb
│   │   │   │   ├── show.rb
│   │   │   │   └── update.rb
│   │   │   └── sections.rb
│   │   ├── config.rb
│   │   ├── engine.rb
│   │   ├── extension.rb
│   │   ├── extensions/
│   │   │   ├── cancancan/
│   │   │   │   └── authorization_adapter.rb
│   │   │   ├── cancancan.rb
│   │   │   ├── controller_extension.rb
│   │   │   ├── paper_trail/
│   │   │   │   └── auditing_adapter.rb
│   │   │   ├── paper_trail.rb
│   │   │   ├── pundit/
│   │   │   │   └── authorization_adapter.rb
│   │   │   ├── pundit.rb
│   │   │   └── url_for_extension.rb
│   │   ├── support/
│   │   │   ├── composite_keys_serializer.rb
│   │   │   ├── csv_converter.rb
│   │   │   ├── datetime.rb
│   │   │   ├── es_module_processor.rb
│   │   │   └── hash_helper.rb
│   │   └── version.rb
│   ├── rails_admin.rb
│   └── tasks/
│       ├── .gitkeep
│       └── rails_admin.rake
├── package.json
├── rails_admin.gemspec
├── spec/
│   ├── controllers/
│   │   └── rails_admin/
│   │       ├── application_controller_spec.rb
│   │       └── main_controller_spec.rb
│   ├── dummy_app/
│   │   ├── .browserslistrc
│   │   ├── .dockerignore
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── Gemfile
│   │   ├── Procfile.dev
│   │   ├── Rakefile
│   │   ├── app/
│   │   │   ├── active_record/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── abstract.rb
│   │   │   │   ├── another_field_test.rb
│   │   │   │   ├── ball.rb
│   │   │   │   ├── carrierwave_uploader.rb
│   │   │   │   ├── category.rb
│   │   │   │   ├── cms/
│   │   │   │   │   └── basic_page.rb
│   │   │   │   ├── cms.rb
│   │   │   │   ├── comment/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── comment.rb
│   │   │   │   ├── concerns/
│   │   │   │   │   └── taggable.rb
│   │   │   │   ├── deeply_nested_field_test.rb
│   │   │   │   ├── division.rb
│   │   │   │   ├── draft.rb
│   │   │   │   ├── fan.rb
│   │   │   │   ├── fanship.rb
│   │   │   │   ├── favorite_player.rb
│   │   │   │   ├── field_test.rb
│   │   │   │   ├── hardball.rb
│   │   │   │   ├── image.rb
│   │   │   │   ├── league.rb
│   │   │   │   ├── managed_team.rb
│   │   │   │   ├── managing_user.rb
│   │   │   │   ├── nested_fan.rb
│   │   │   │   ├── nested_favorite_player.rb
│   │   │   │   ├── nested_field_test.rb
│   │   │   │   ├── paper_trail_test/
│   │   │   │   │   └── subclass_in_namespace.rb
│   │   │   │   ├── paper_trail_test.rb
│   │   │   │   ├── paper_trail_test_subclass.rb
│   │   │   │   ├── paper_trail_test_with_custom_association.rb
│   │   │   │   ├── player.rb
│   │   │   │   ├── read_only_comment.rb
│   │   │   │   ├── restricted_team.rb
│   │   │   │   ├── shrine_uploader.rb
│   │   │   │   ├── shrine_versioning_uploader.rb
│   │   │   │   ├── team.rb
│   │   │   │   ├── trail.rb
│   │   │   │   ├── two_level/
│   │   │   │   │   ├── namespaced/
│   │   │   │   │   │   └── polymorphic_association_test.rb
│   │   │   │   │   └── namespaced.rb
│   │   │   │   ├── user/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── user.rb
│   │   │   │   └── without_table.rb
│   │   │   ├── assets/
│   │   │   │   ├── builds/
│   │   │   │   │   └── .keep
│   │   │   │   ├── config/
│   │   │   │   │   └── manifest.js
│   │   │   │   ├── javascripts/
│   │   │   │   │   ├── application.js
│   │   │   │   │   ├── rails-ujs.esm.js.erb
│   │   │   │   │   └── rails_admin/
│   │   │   │   │       └── custom/
│   │   │   │   │           └── ui.js
│   │   │   │   └── stylesheets/
│   │   │   │       ├── application.css
│   │   │   │       ├── rails_admin/
│   │   │   │       │   └── custom/
│   │   │   │       │       └── theming.scss
│   │   │   │       └── rails_admin.scss
│   │   │   ├── controllers/
│   │   │   │   ├── application_controller.rb
│   │   │   │   └── players_controller.rb
│   │   │   ├── eager_loaded/
│   │   │   │   └── basketball.rb
│   │   │   ├── frontend/
│   │   │   │   ├── entrypoints/
│   │   │   │   │   ├── application.js
│   │   │   │   │   └── rails_admin.js
│   │   │   │   └── stylesheets/
│   │   │   │       └── rails_admin.scss
│   │   │   ├── javascript/
│   │   │   │   ├── application.js
│   │   │   │   ├── rails_admin.js
│   │   │   │   └── rails_admin.scss
│   │   │   ├── jobs/
│   │   │   │   ├── application_job.rb
│   │   │   │   └── null_job.rb
│   │   │   ├── locales/
│   │   │   │   └── models.en.yml
│   │   │   ├── mailers/
│   │   │   │   └── .gitkeep
│   │   │   ├── mongoid/
│   │   │   │   ├── another_field_test.rb
│   │   │   │   ├── ball.rb
│   │   │   │   ├── carrierwave_uploader.rb
│   │   │   │   ├── category.rb
│   │   │   │   ├── cms/
│   │   │   │   │   └── basic_page.rb
│   │   │   │   ├── cms.rb
│   │   │   │   ├── comment/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── comment.rb
│   │   │   │   ├── concerns/
│   │   │   │   │   └── taggable.rb
│   │   │   │   ├── deeply_nested_field_test.rb
│   │   │   │   ├── division.rb
│   │   │   │   ├── draft.rb
│   │   │   │   ├── embed.rb
│   │   │   │   ├── fan.rb
│   │   │   │   ├── field_test.rb
│   │   │   │   ├── hardball.rb
│   │   │   │   ├── image.rb
│   │   │   │   ├── league.rb
│   │   │   │   ├── managed_team.rb
│   │   │   │   ├── managing_user.rb
│   │   │   │   ├── nested_field_test.rb
│   │   │   │   ├── player.rb
│   │   │   │   ├── read_only_comment.rb
│   │   │   │   ├── restricted_team.rb
│   │   │   │   ├── shrine_uploader.rb
│   │   │   │   ├── shrine_versioning_uploader.rb
│   │   │   │   ├── team.rb
│   │   │   │   ├── two_level/
│   │   │   │   │   └── namespaced/
│   │   │   │   │       └── polymorphic_association_test.rb
│   │   │   │   ├── user/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   └── user.rb
│   │   │   └── views/
│   │   │       ├── layouts/
│   │   │       │   └── application.html.erb
│   │   │       └── players/
│   │   │           └── show.html.erb
│   │   ├── babel.config.js
│   │   ├── bin/
│   │   │   ├── bundle
│   │   │   ├── dev
│   │   │   ├── docker-entrypoint
│   │   │   ├── importmap
│   │   │   ├── rails
│   │   │   ├── rake
│   │   │   ├── setup
│   │   │   ├── update
│   │   │   ├── vite
│   │   │   ├── webpack
│   │   │   └── webpack-dev-server
│   │   ├── config/
│   │   │   ├── application.rb
│   │   │   ├── boot.rb
│   │   │   ├── database.yml
│   │   │   ├── dockerfile.yml
│   │   │   ├── environment.rb
│   │   │   ├── environments/
│   │   │   │   ├── development.rb
│   │   │   │   ├── production.rb
│   │   │   │   └── test.rb
│   │   │   ├── importmap.rails_admin.rb
│   │   │   ├── importmap.rb
│   │   │   ├── initializers/
│   │   │   │   ├── application_controller_renderer.rb
│   │   │   │   ├── assets.rb
│   │   │   │   ├── backtrace_silencers.rb
│   │   │   │   ├── cookies_serializer.rb
│   │   │   │   ├── cors.rb
│   │   │   │   ├── devise.rb
│   │   │   │   ├── dragonfly.rb
│   │   │   │   ├── filter_parameter_logging.rb
│   │   │   │   ├── inflections.rb
│   │   │   │   ├── mime_types.rb
│   │   │   │   ├── mongoid.rb
│   │   │   │   ├── rails_admin.rb
│   │   │   │   ├── secret_token.rb
│   │   │   │   ├── session_patch.rb
│   │   │   │   ├── session_store.rb
│   │   │   │   ├── shrine.rb
│   │   │   │   └── wrap_parameters.rb
│   │   │   ├── locales/
│   │   │   │   ├── devise.en.yml
│   │   │   │   ├── en.yml
│   │   │   │   └── fr.yml
│   │   │   ├── mongoid5.yml
│   │   │   ├── mongoid6.yml
│   │   │   ├── puma.rb
│   │   │   ├── routes.rb
│   │   │   ├── secrets.yml
│   │   │   ├── storage.yml
│   │   │   ├── vite.json
│   │   │   ├── webpack/
│   │   │   │   ├── development.js
│   │   │   │   ├── environment.js
│   │   │   │   ├── production.js
│   │   │   │   └── test.js
│   │   │   └── webpacker.yml
│   │   ├── config.ru
│   │   ├── db/
│   │   │   ├── migrate/
│   │   │   │   ├── 00000000000001_create_divisions_migration.rb
│   │   │   │   ├── 00000000000002_create_drafts_migration.rb
│   │   │   │   ├── 00000000000003_create_leagues_migration.rb
│   │   │   │   ├── 00000000000004_create_players_migration.rb
│   │   │   │   ├── 00000000000005_create_teams_migration.rb
│   │   │   │   ├── 00000000000006_devise_create_users.rb
│   │   │   │   ├── 00000000000007_create_histories_table.rb
│   │   │   │   ├── 00000000000008_create_fans_migration.rb
│   │   │   │   ├── 00000000000009_create_fans_teams_migration.rb
│   │   │   │   ├── 00000000000010_add_revenue_to_team_migration.rb
│   │   │   │   ├── 00000000000011_add_suspended_to_player_migration.rb
│   │   │   │   ├── 00000000000012_add_avatar_columns_to_user.rb
│   │   │   │   ├── 00000000000013_add_roles_to_user.rb
│   │   │   │   ├── 00000000000014_add_color_to_team_migration.rb
│   │   │   │   ├── 20101223222233_create_rel_tests.rb
│   │   │   │   ├── 20110103205808_create_comments.rb
│   │   │   │   ├── 20110123042530_rename_histories_to_rails_admin_histories.rb
│   │   │   │   ├── 20110224184303_create_field_tests.rb
│   │   │   │   ├── 20110328193014_create_cms_basic_pages.rb
│   │   │   │   ├── 20110329183136_remove_league_id_from_teams.rb
│   │   │   │   ├── 20110607152842_add_format_to_field_test.rb
│   │   │   │   ├── 20110714095433_create_balls.rb
│   │   │   │   ├── 20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
│   │   │   │   ├── 20110901131551_change_division_primary_key.rb
│   │   │   │   ├── 20110901142530_rename_league_id_foreign_key_on_divisions.rb
│   │   │   │   ├── 20110901150912_set_primary_key_not_null_for_divisions.rb
│   │   │   │   ├── 20110901154834_change_length_for_rails_admin_histories.rb
│   │   │   │   ├── 20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
│   │   │   │   ├── 20111115041025_add_type_to_balls.rb
│   │   │   │   ├── 20111123092549_create_nested_field_tests.rb
│   │   │   │   ├── 20111130075338_add_dragonfly_asset_name_to_field_tests.rb
│   │   │   │   ├── 20111215083258_create_foo_bars.rb
│   │   │   │   ├── 20120117151733_add_custom_field_to_teams.rb
│   │   │   │   ├── 20120118122004_add_categories.rb
│   │   │   │   ├── 20120319041705_drop_rel_tests.rb
│   │   │   │   ├── 20120720075608_create_another_field_tests.rb
│   │   │   │   ├── 20120928075608_create_images.rb
│   │   │   │   ├── 20140412075608_create_deeply_nested_field_tests.rb
│   │   │   │   ├── 20140826093220_create_paper_trail_tests.rb
│   │   │   │   ├── 20140826093552_create_versions.rb
│   │   │   │   ├── 20150815102450_add_refile_to_field_tests.rb
│   │   │   │   ├── 20151027181550_change_field_test_id_to_nested_field_tests.rb
│   │   │   │   ├── 20160728152942_add_main_sponsor_to_teams.rb
│   │   │   │   ├── 20160728153058_add_formation_to_players.rb
│   │   │   │   ├── 20171229220713_add_enum_fields_to_field_tests.rb
│   │   │   │   ├── 20180701084251_create_active_storage_tables.active_storage.rb
│   │   │   │   ├── 20180707101855_add_carrierwave_assets_to_field_tests.rb
│   │   │   │   ├── 20181029101829_add_shrine_data_to_field_tests.rb
│   │   │   │   ├── 20190531065324_create_action_text_tables.action_text.rb
│   │   │   │   ├── 20201127111952_update_active_storage_tables.rb
│   │   │   │   ├── 20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
│   │   │   │   ├── 20210812115908_create_custom_versions.rb
│   │   │   │   ├── 20211011235734_add_bool_field_open.rb
│   │   │   │   ├── 20220416102741_create_composite_key_tables.rb
│   │   │   │   └── 20240921171953_add_non_nullable_boolean_field.rb
│   │   │   ├── schema.rb
│   │   │   └── seeds.rb
│   │   ├── doc/
│   │   │   └── README_FOR_APP
│   │   ├── fly.toml
│   │   ├── lib/
│   │   │   ├── assets/
│   │   │   │   └── .gitkeep
│   │   │   ├── does_not_load_autoload_paths_not_in_eager_load.rb
│   │   │   └── tasks/
│   │   │       └── .gitkeep
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── public/
│   │   │   ├── 404.html
│   │   │   ├── 422.html
│   │   │   ├── 500.html
│   │   │   ├── robots.txt
│   │   │   └── system/
│   │   │       └── dragonfly/
│   │   │           └── development/
│   │   │               └── 2011/
│   │   │                   └── 11/
│   │   │                       ├── 24/
│   │   │                       │   └── 10_36_27_888_Pensive_Parakeet.jpg.meta
│   │   │                       └── 30/
│   │   │                           └── 08_54_39_906_Costa_Rican_Frog.jpg.meta
│   │   ├── vendor/
│   │   │   └── javascript/
│   │   │       └── .keep
│   │   ├── vite.config.ts
│   │   └── webpack.config.js
│   ├── factories.rb
│   ├── fixtures/
│   │   └── test.txt
│   ├── helpers/
│   │   └── rails_admin/
│   │       ├── application_helper_spec.rb
│   │       ├── form_builder_spec.rb
│   │       └── main_helper_spec.rb
│   ├── integration/
│   │   ├── actions/
│   │   │   ├── base_spec.rb
│   │   │   ├── bulk_delete_spec.rb
│   │   │   ├── dashboard_spec.rb
│   │   │   ├── delete_spec.rb
│   │   │   ├── edit_spec.rb
│   │   │   ├── export_spec.rb
│   │   │   ├── history_index_spec.rb
│   │   │   ├── history_show_spec.rb
│   │   │   ├── index_spec.rb
│   │   │   ├── new_spec.rb
│   │   │   ├── show_in_app_spec.rb
│   │   │   └── show_spec.rb
│   │   ├── auditing/
│   │   │   └── paper_trail_spec.rb
│   │   ├── authentication/
│   │   │   └── devise_spec.rb
│   │   ├── authorization/
│   │   │   ├── cancancan_spec.rb
│   │   │   └── pundit_spec.rb
│   │   ├── fields/
│   │   │   ├── action_text_spec.rb
│   │   │   ├── active_record_enum_spec.rb
│   │   │   ├── active_storage_spec.rb
│   │   │   ├── base_spec.rb
│   │   │   ├── belongs_to_association_spec.rb
│   │   │   ├── boolean_spec.rb
│   │   │   ├── carrierwave_spec.rb
│   │   │   ├── ck_editor_spec.rb
│   │   │   ├── code_mirror_spec.rb
│   │   │   ├── color_spec.rb
│   │   │   ├── date_spec.rb
│   │   │   ├── datetime_spec.rb
│   │   │   ├── enum_spec.rb
│   │   │   ├── file_upload_spec.rb
│   │   │   ├── floara_spec.rb
│   │   │   ├── has_and_belongs_to_many_association_spec.rb
│   │   │   ├── has_many_association_spec.rb
│   │   │   ├── has_one_association_spec.rb
│   │   │   ├── hidden_spec.rb
│   │   │   ├── multiple_active_storage_spec.rb
│   │   │   ├── multiple_carrierwave_spec.rb
│   │   │   ├── multiple_file_upload_spec.rb
│   │   │   ├── paperclip_spec.rb
│   │   │   ├── polymorphic_assosiation_spec.rb
│   │   │   ├── serialized_spec.rb
│   │   │   ├── shrine_spec.rb
│   │   │   ├── simple_mde_spec.rb
│   │   │   ├── time_spec.rb
│   │   │   └── wysihtml5_spec.rb
│   │   ├── rails_admin_spec.rb
│   │   └── widgets/
│   │       ├── datetimepicker_spec.rb
│   │       ├── filter_box_spec.rb
│   │       ├── filtering_multi_select_spec.rb
│   │       ├── filtering_select_spec.rb
│   │       ├── nested_many_spec.rb
│   │       ├── nested_one_spec.rb
│   │       └── remote_form_spec.rb
│   ├── orm/
│   │   ├── active_record.rb
│   │   └── mongoid.rb
│   ├── policies.rb
│   ├── rails_admin/
│   │   ├── abstract_model_spec.rb
│   │   ├── active_record_extension_spec.rb
│   │   ├── adapters/
│   │   │   ├── active_record/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── object_extension_spec.rb
│   │   │   │   └── property_spec.rb
│   │   │   ├── active_record_spec.rb
│   │   │   ├── mongoid/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── object_extension_spec.rb
│   │   │   │   └── property_spec.rb
│   │   │   └── mongoid_spec.rb
│   │   ├── config/
│   │   │   ├── actions/
│   │   │   │   └── base_spec.rb
│   │   │   ├── actions_spec.rb
│   │   │   ├── configurable_spec.rb
│   │   │   ├── const_load_suppressor_spec.rb
│   │   │   ├── fields/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── base_spec.rb
│   │   │   │   └── types/
│   │   │   │       ├── action_text_spec.rb
│   │   │   │       ├── active_record_enum_spec.rb
│   │   │   │       ├── active_storage_spec.rb
│   │   │   │       ├── belongs_to_association_spec.rb
│   │   │   │       ├── boolean_spec.rb
│   │   │   │       ├── bson_object_id_spec.rb
│   │   │   │       ├── carrierwave_spec.rb
│   │   │   │       ├── citext_spec.rb
│   │   │   │       ├── ck_editor_spec.rb
│   │   │   │       ├── code_mirror_spec.rb
│   │   │   │       ├── color_spec.rb
│   │   │   │       ├── date_spec.rb
│   │   │   │       ├── datetime_spec.rb
│   │   │   │       ├── decimal_spec.rb
│   │   │   │       ├── drangonfly_spec.rb
│   │   │   │       ├── enum_spec.rb
│   │   │   │       ├── file_upload_spec.rb
│   │   │   │       ├── float_spec.rb
│   │   │   │       ├── froala_spec.rb
│   │   │   │       ├── has_and_belongs_to_many_association_spec.rb
│   │   │   │       ├── has_many_association_spec.rb
│   │   │   │       ├── has_one_association_spec.rb
│   │   │   │       ├── hidden_spec.rb
│   │   │   │       ├── inet_spec.rb
│   │   │   │       ├── integer_spec.rb
│   │   │   │       ├── json_spec.rb
│   │   │   │       ├── multiple_active_storage_spec.rb
│   │   │   │       ├── multiple_carrierwave_spec.rb
│   │   │   │       ├── multiple_file_upload_spec.rb
│   │   │   │       ├── numeric_spec.rb
│   │   │   │       ├── paperclip_spec.rb
│   │   │   │       ├── password_spec.rb
│   │   │   │       ├── serialized_spec.rb
│   │   │   │       ├── shrine_spec.rb
│   │   │   │       ├── simple_mde_spec.rb
│   │   │   │       ├── string_like_spec.rb
│   │   │   │       ├── string_spec.rb
│   │   │   │       ├── text_spec.rb
│   │   │   │       ├── time_spec.rb
│   │   │   │       ├── timestamp_spec.rb
│   │   │   │       ├── uuid_spec.rb
│   │   │   │       └── wysihtml5_spec.rb
│   │   │   ├── fields_spec.rb
│   │   │   ├── has_description_spec.rb
│   │   │   ├── has_fields_spec.rb
│   │   │   ├── lazy_model_spec.rb
│   │   │   ├── model_spec.rb
│   │   │   ├── proxyable_spec.rb
│   │   │   ├── sections/
│   │   │   │   └── list_spec.rb
│   │   │   └── sections_spec.rb
│   │   ├── config_spec.rb
│   │   ├── engine_spec.rb
│   │   ├── extentions/
│   │   │   ├── cancancan/
│   │   │   │   └── authorization_adapter_spec.rb
│   │   │   └── paper_trail/
│   │   │       ├── auditing_adapter_spec.rb
│   │   │       └── version_proxy_spec.rb
│   │   ├── install_generator_spec.rb
│   │   ├── support/
│   │   │   ├── csv_converter_spec.rb
│   │   │   ├── datetime_spec.rb
│   │   │   └── hash_helper_spec.rb
│   │   └── version_spec.rb
│   ├── shared_examples/
│   │   └── shared_examples_for_field_types.rb
│   ├── spec_helper.rb
│   └── support/
│       ├── cuprite_logger.rb
│       ├── fakeio.rb
│       ├── fixtures.rb
│       └── jquery.simulate.drag-sortable.js
├── src/
│   └── rails_admin/
│       ├── abstract-select.js
│       ├── base.js
│       ├── filter-box.js
│       ├── filtering-multiselect.js
│       ├── filtering-select.js
│       ├── i18n.js
│       ├── jquery.js
│       ├── nested-form-hooks.js
│       ├── remote-form.js
│       ├── sidescroll.js
│       ├── styles/
│       │   ├── base/
│       │   │   ├── README.txt
│       │   │   ├── mixins.scss
│       │   │   ├── theming.scss
│       │   │   └── variables.scss
│       │   ├── base.scss
│       │   ├── filtering-multiselect.scss
│       │   ├── filtering-select.scss
│       │   └── widgets.scss
│       ├── ui.js
│       ├── vendor/
│       │   └── jquery_nested_form.js
│       └── widgets.js
└── vendor/
    └── assets/
        ├── javascripts/
        │   └── rails_admin/
        │       ├── bootstrap.js
        │       ├── flatpickr-with-locales.js
        │       ├── jquery-ui/
        │       │   ├── data.js
        │       │   ├── effect.js
        │       │   ├── ie.js
        │       │   ├── keycode.js
        │       │   ├── position.js
        │       │   ├── safe-active-element.js
        │       │   ├── scroll-parent.js
        │       │   ├── unique-id.js
        │       │   ├── version.js
        │       │   ├── widget.js
        │       │   └── widgets/
        │       │       ├── autocomplete.js
        │       │       ├── menu.js
        │       │       ├── mouse.js
        │       │       └── sortable.js
        │       ├── jquery3.js
        │       └── popper.js
        └── stylesheets/
            └── rails_admin/
                ├── bootstrap/
                │   ├── _accordion.scss
                │   ├── _alert.scss
                │   ├── _badge.scss
                │   ├── _breadcrumb.scss
                │   ├── _button-group.scss
                │   ├── _buttons.scss
                │   ├── _card.scss
                │   ├── _carousel.scss
                │   ├── _close.scss
                │   ├── _containers.scss
                │   ├── _dropdown.scss
                │   ├── _forms.scss
                │   ├── _functions.scss
                │   ├── _grid.scss
                │   ├── _helpers.scss
                │   ├── _images.scss
                │   ├── _list-group.scss
                │   ├── _mixins.scss
                │   ├── _modal.scss
                │   ├── _nav.scss
                │   ├── _navbar.scss
                │   ├── _offcanvas.scss
                │   ├── _pagination.scss
                │   ├── _placeholders.scss
                │   ├── _popover.scss
                │   ├── _progress.scss
                │   ├── _reboot.scss
                │   ├── _root.scss
                │   ├── _spinners.scss
                │   ├── _tables.scss
                │   ├── _toasts.scss
                │   ├── _tooltip.scss
                │   ├── _transitions.scss
                │   ├── _type.scss
                │   ├── _utilities.scss
                │   ├── _variables.scss
                │   ├── bootstrap.scss
                │   ├── forms/
                │   │   ├── _floating-labels.scss
                │   │   ├── _form-check.scss
                │   │   ├── _form-control.scss
                │   │   ├── _form-range.scss
                │   │   ├── _form-select.scss
                │   │   ├── _form-text.scss
                │   │   ├── _input-group.scss
                │   │   ├── _labels.scss
                │   │   └── _validation.scss
                │   ├── helpers/
                │   │   ├── _clearfix.scss
                │   │   ├── _colored-links.scss
                │   │   ├── _position.scss
                │   │   ├── _ratio.scss
                │   │   ├── _stacks.scss
                │   │   ├── _stretched-link.scss
                │   │   ├── _text-truncation.scss
                │   │   ├── _visually-hidden.scss
                │   │   └── _vr.scss
                │   ├── mixins/
                │   │   ├── _alert.scss
                │   │   ├── _backdrop.scss
                │   │   ├── _border-radius.scss
                │   │   ├── _box-shadow.scss
                │   │   ├── _breakpoints.scss
                │   │   ├── _buttons.scss
                │   │   ├── _caret.scss
                │   │   ├── _clearfix.scss
                │   │   ├── _color-scheme.scss
                │   │   ├── _container.scss
                │   │   ├── _deprecate.scss
                │   │   ├── _forms.scss
                │   │   ├── _gradients.scss
                │   │   ├── _grid.scss
                │   │   ├── _image.scss
                │   │   ├── _list-group.scss
                │   │   ├── _lists.scss
                │   │   ├── _pagination.scss
                │   │   ├── _reset-text.scss
                │   │   ├── _resize.scss
                │   │   ├── _table-variants.scss
                │   │   ├── _text-truncate.scss
                │   │   ├── _transition.scss
                │   │   ├── _utilities.scss
                │   │   └── _visually-hidden.scss
                │   ├── utilities/
                │   │   └── _api.scss
                │   └── vendor/
                │       └── _rfs.scss
                ├── flatpickr.css
                └── font-awesome.scss

================================================
FILE CONTENTS
================================================

================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Create a report to help us improve
title: ""
labels: ""
assignees: ""
---

**Describe the bug**
A clear and concise description of what the bug is.

**Reproduction steps**
Steps to reproduce the issue seen.

**Expected behavior**
A clear and concise description of what you expected to happen.

**Additional context**

- `rails` version:
- `rails_admin` version:
- `rails_admin` npm package version:
- full stack trace (if there's an exception)

Add any other context about the problem here.


================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for this project
title: ""
labels: enhancement
assignees: ""
---

**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]

**Describe proposed solution(s)**
A clear and concise description of what you want to happen.

**Additional context**
Add any other context or screenshots about the feature request here.


================================================
FILE: .github/workflows/code-ql.yml
================================================
name: "CodeQL"

on:
  push:
    branches: [master]
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [master]
  schedule:
    - cron: "12 00 * * 5"

jobs:
  analyze:
    name: Analyze
    runs-on: ubuntu-latest
    permissions:
      actions: read
      contents: read
      security-events: write

    strategy:
      fail-fast: false
      matrix:
        language: ["ruby"]

    steps:
      - name: Checkout repository
        uses: actions/checkout@v3

      # Initializes the CodeQL tools for scanning.
      - name: Initialize CodeQL
        uses: github/codeql-action/init@v2
        with:
          languages: ${{ matrix.language }}

      - name: Perform CodeQL Analysis
        uses: github/codeql-action/analyze@v2


================================================
FILE: .github/workflows/test.yml
================================================
name: Test

on: [push, pull_request]

jobs:
  rspec:
    name: RSpec
    strategy:
      fail-fast: false
      matrix:
        ruby:
          - "3.2"
          - "3.3"
          - "3.4"
        gemfile: [gemfiles/rails_8.0.gemfile]
        orm: [active_record]
        adapter: [sqlite3]
        asset: [webpack]
        include:
          - ruby: 2.6
            gemfile: gemfiles/rails_6.0.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: 2.7
            gemfile: gemfiles/rails_6.1.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: 2.7
            gemfile: gemfiles/rails_6.1.gemfile
            orm: active_record
            adapter: sqlite3
            asset: webpacker
          - ruby: "3.0"
            gemfile: gemfiles/rails_7.0.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.1"
            gemfile: gemfiles/rails_7.1.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.2"
            gemfile: gemfiles/rails_7.2.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.4"
            gemfile: gemfiles/rails_8.0.gemfile
            orm: active_record
            adapter: mysql2
            asset: importmap
          - ruby: "3.4"
            gemfile: gemfiles/rails_8.0.gemfile
            orm: active_record
            adapter: postgresql
            asset: sprockets
          - ruby: "3.4"
            gemfile: gemfiles/rails_8.0.gemfile
            orm: active_record
            adapter: sqlite3
            asset: vite
          - ruby: "3.4"
            gemfile: gemfiles/rails_8.0.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.2"
            gemfile: gemfiles/composite_primary_keys.gemfile
            orm: active_record
            adapter: sqlite3
            asset: sprockets
          - ruby: 2.7
            gemfile: gemfiles/rails_6.0.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.0"
            gemfile: gemfiles/rails_6.1.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.1"
            gemfile: gemfiles/rails_7.0.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.2"
            gemfile: gemfiles/rails_7.1.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.3"
            gemfile: gemfiles/rails_7.2.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: "3.4"
            gemfile: gemfiles/rails_8.0.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
          - ruby: jruby-9.4
            gemfile: gemfiles/rails_7.1.gemfile
            orm: active_record
            adapter: mysql2
            asset: sprockets
          - ruby: jruby-9.4
            gemfile: gemfiles/rails_7.1.gemfile
            orm: mongoid
            adapter: sqlite3
            asset: sprockets
    runs-on: ubuntu-latest
    services:
      mysql:
        image: mysql:8.0
        ports:
          - 3306:3306
        env:
          MYSQL_ALLOW_EMPTY_PASSWORD: yes
      postgres:
        image: postgres:11
        ports:
          - 5432:5432
        env:
          POSTGRES_USER: postgres
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
      mongo:
        image: mongo:4.4
        ports:
          - 27017:27017
    env:
      BUNDLE_GEMFILE: ${{ matrix.gemfile }}
      CI_ORM: ${{ matrix.orm }}
      CI_ASSET: ${{ matrix.asset }}
      JRUBY_OPTS: --debug
    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: ${{ matrix.ruby }}
          bundler-cache: true
          cache-version: gems-${{ hashFiles('Gemfile', 'gemfiles/*.gemfile') }}
        env:
          MAKEFLAGS: make --jobs 4
          BUNDLE_WITHOUT: development
      - name: Set up Node
        uses: actions/setup-node@v4
        with:
          node-version: "20"
      - name: Install ImageMagick
        run: sudo apt-get install imagemagick
      - name: Setup application
        env:
          BUNDLE_GEMFILE: ../../${{ matrix.gemfile }}
          CI_ASSET: ${{ matrix.asset }}
          CI_DB_ADAPTER: ${{ matrix.adapter }}
          RAILS_ENV: test
          NODE_OPTIONS: --openssl-legacy-provider
        run: |
          yarn install
          cd spec/dummy_app
          bundle exec rake rails_admin:prepare_ci_env db:create db:schema:load
          yarn install
          case "$CI_ASSET" in
          "webpack" ) yarn build && yarn build:css ;;
          "importmap" ) yarn build:css ;;
          esac
          cd ../../
      - name: Run tests
        run: bundle exec rspec
      - name: Coveralls Parallel
        if: ${{ github.repository_owner == 'railsadminteam' }}
        uses: coverallsapp/github-action@v2
        continue-on-error: true
        with:
          github-token: ${{ secrets.github_token }}
          flag-name: run-${{ matrix.ruby }}-${{ matrix.gemfile }}-${{ matrix.orm }}-${{ matrix.adapter }}
          parallel: true

  coveralls:
    name: Coveralls
    if: ${{ github.repository_owner == 'railsadminteam' }}
    needs: rspec
    runs-on: ubuntu-latest
    steps:
      - name: Coveralls Finished
        uses: coverallsapp/github-action@v2
        with:
          github-token: ${{ secrets.github_token }}
          parallel-finished: true

  prettier:
    name: Prettier
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Node.js
        uses: actions/setup-node@v4
      - name: Install dependencies
        run: yarn install
      - name: Run check
        run: yarn run prettier --check .

  rubocop:
    name: RuboCop
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up Ruby
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: "3.2"
          bundler-cache: true
          cache-version: gems-${{ hashFiles('Gemfile') }}
      - name: Install dependencies
        run: bundle install --without development --jobs=3 --retry=3 --path=vendor/bundle
      - name: Run check
        run: bundle exec rake rubocop


================================================
FILE: .gitignore
================================================
*.gem
*.log
*.rbc
*.swp
.bundle
.idea/
.vscode/
.rvmrc
.sass-cache
.yardoc
/.emacs.desktop
/gemfiles/*.lock
/node_modules/*
/rails_admin.gems
/spec/generators/tmp
/spec/lib/tmp
/yarn.lock
Gemfile.lock
coverage/*
db/*.sqlite3
db/*.sqlite3-journal
doc/*
log/*.log
pkg/*
spec/dummy_app/db/*.sqlite3
spec/dummy_app/db/*.sqlite3-journal
spec/dummy_app/log/*.log
spec/dummy_app/public/uploads
spec/dummy_app/Gemfile*.lock
tmp/**/*
nbproject


================================================
FILE: .prettierignore
================================================
coverage
lib/generators/rails_admin/templates
spec/dummy_app/app/assets/builds
spec/dummy_app/public
spec/dummy_app/tmp
spec/support/jquery.simulate.drag-sortable.js
vendor


================================================
FILE: .rspec
================================================
--color
--order=random
--profile
--exclude-pattern 'dummy_app/node_modules/rails_admin/**/*_spec.rb'


================================================
FILE: .rubocop.yml
================================================
inherit_from: .rubocop_todo.yml

require:
  - rubocop-performance

AllCops:
  Exclude:
    - "gemfiles/*"
    - "node_modules/**/*"
    - "spec/dummy_app/bin/**/*"
    - "spec/dummy_app/db/schema.rb"
    - "spec/dummy_app/node_modules/**/*"
    - "spec/dummy_app/tmp/**/*"
    - "vendor/bundle/**/*"
  NewCops: disable
  SuggestExtensions: false
  TargetRubyVersion: 2.6

Gemspec/DeprecatedAttributeAssignment:
  Enabled: true

Layout/AccessModifierIndentation:
  EnforcedStyle: outdent

Layout/DotPosition:
  EnforcedStyle: trailing

Layout/LineEndStringConcatenationIndentation:
  Enabled: true

Layout/LineLength:
  AllowURI: true
  Enabled: false

Layout/MultilineAssignmentLayout:
  Enabled: true
  SupportedTypes: [case, if]

Layout/SpaceBeforeBrackets:
  Enabled: true

Layout/SpaceInsideHashLiteralBraces:
  EnforcedStyle: no_space

Lint/AmbiguousAssignment:
  Enabled: true

Lint/AmbiguousRange:
  Enabled: true

Lint/DeprecatedConstants:
  Enabled: true

Lint/DuplicateBranch:
  Enabled: true
  IgnoreLiteralBranches: true

Lint/DuplicateRegexpCharacterClassElement:
  Enabled: true

Lint/EmptyBlock:
  Enabled: true
  Exclude:
    - "spec/**/*"

Lint/EmptyClass:
  Enabled: true
  Exclude:
    - "spec/**/*"

Lint/EmptyInPattern:
  Enabled: true

Lint/LambdaWithoutLiteralBlock:
  Enabled: true

Lint/NoReturnInBeginEndBlocks:
  Enabled: true

Lint/NumberedParameterAssignment:
  Enabled: true

Lint/OrAssignmentToConstant:
  Enabled: true

Lint/RedundantDirGlobSort:
  Enabled: true

Lint/SymbolConversion:
  Enabled: true

Lint/ToEnumArguments:
  Enabled: true

Lint/TripleQuotes:
  Enabled: true

Lint/UnexpectedBlockArity:
  Enabled: true

Lint/UnmodifiedReduceAccumulator:
  Enabled: true

Metrics/AbcSize:
  Max: 69.98 # TODO: Lower to 15

Metrics/BlockNesting:
  Max: 3

Metrics/ClassLength:
  CountComments: false
  Max: 201 # TODO: Lower to 100

Metrics/CyclomaticComplexity:
  Max: 15 # TODO: Lower to 6

Metrics/MethodLength:
  CountComments: false
  Max: 29 # TODO: Lower to 15

Metrics/ModuleLength:
  Max: 219 # TODO: Lower to 100

Metrics/ParameterLists:
  Max: 8 # TODO: Lower to 4
  CountKeywordArgs: true

Metrics/PerceivedComplexity:
  Max: 17 # TODO: Lower to 7

Naming/FileName:
  Exclude:
    - "lib/rails_admin/bootstrap-sass.rb"

Naming/InclusiveLanguage:
  Enabled: true

Style/Alias:
  Enabled: false

Style/ArgumentsForwarding:
  Enabled: true

Style/CollectionCompact:
  Enabled: true

Style/CollectionMethods:
  PreferredMethods:
    map: "collect"
    reduce: "inject"
    find: "detect"
    find_all: "select"

Style/Documentation:
  Enabled: false

Style/DocumentDynamicEvalDefinition:
  Enabled: false

Style/DoubleNegation:
  Enabled: false

Style/EachWithObject:
  Enabled: false

Style/EndlessMethod:
  Enabled: true

Style/HashConversion:
  Enabled: true

Style/HashExcept:
  Enabled: true

Style/IfWithBooleanLiteralBranches:
  Enabled: true

Style/InPatternThen:
  Enabled: true

Style/Lambda:
  Enabled: false

Style/MultilineInPatternThen:
  Enabled: true

Style/NegatedIfElseCondition:
  Enabled: true

Style/NumericPredicate:
  Enabled: false

Style/NilLambda:
  Enabled: true

Style/QuotedSymbols:
  Enabled: true

Style/RaiseArgs:
  EnforcedStyle: compact

Style/RedundantArgument:
  Enabled: true

Style/RedundantParentheses:
  Enabled: false

Style/RedundantSelfAssignmentBranch:
  Enabled: true

Style/StringChars:
  Enabled: true

Style/SwapValues:
  Enabled: true

Style/TrailingCommaInArguments:
  EnforcedStyleForMultiline: "comma"

Style/TrailingCommaInArrayLiteral:
  EnforcedStyleForMultiline: "comma"

Style/TrailingCommaInHashLiteral:
  EnforcedStyleForMultiline: "comma"


================================================
FILE: .rubocop_todo.yml
================================================
# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2021-11-20 13:57:54 UTC using RuboCop version 1.23.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again.

# Offense count: 51
# Configuration parameters: AllowedMethods.
# AllowedMethods: enums
Lint/ConstantDefinitionInBlock:
  Enabled: false

# Offense count: 1
Lint/ReturnInVoidContext:
  Exclude:
    - "lib/rails_admin/support/csv_converter.rb"

# Offense count: 226
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
# IgnoredMethods: refine
Metrics/BlockLength:
  Max: 1135

# Offense count: 1
# Configuration parameters: Max, CountKeywordArgs.
Metrics/ParameterLists:
  MaxOptionalParameters: 4

# Offense count: 6
Naming/AccessorMethodName:
  Exclude:
    - "app/controllers/rails_admin/application_controller.rb"
    - "app/controllers/rails_admin/main_controller.rb"
    - "lib/rails_admin/abstract_model.rb"

# Offense count: 2
# Configuration parameters: EnforcedStyleForLeadingUnderscores.
# SupportedStylesForLeadingUnderscores: disallowed, required, optional
Naming/MemoizedInstanceVariableName:
  Exclude:
    - "app/controllers/rails_admin/application_controller.rb"
    - "lib/rails_admin/config/has_description.rb"

# Offense count: 2
# Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
# AllowedNames: at, by, db, id, in, io, ip, of, on, os, pp, to
Naming/MethodParameterName:
  Exclude:
    - "lib/rails_admin/abstract_model.rb"
    - "spec/rails_admin/adapters/mongoid/property_spec.rb"

# Offense count: 1
# Configuration parameters: EnforcedStyle, CheckMethodNames, CheckSymbols, AllowedIdentifiers.
# SupportedStyles: snake_case, normalcase, non_integer
# AllowedIdentifiers: capture3, iso8601, rfc1123_date, rfc822, rfc2822, rfc3339
Naming/VariableNumber:
  Exclude:
    - "spec/helpers/rails_admin/application_helper_spec.rb"

# Offense count: 11
Style/ClassVars:
  Exclude:
    - "lib/rails_admin/abstract_model.rb"
    - "lib/rails_admin/config.rb"
    - "lib/rails_admin/config/actions.rb"
    - "lib/rails_admin/config/fields.rb"
    - "lib/rails_admin/config/fields/types.rb"

# Offense count: 2
# Configuration parameters: MaxUnannotatedPlaceholdersAllowed, IgnoredMethods.
# SupportedStyles: annotated, template, unannotated
Style/FormatStringToken:
  EnforcedStyle: template

# Offense count: 8
# Configuration parameters: MinBodyLength.
Style/GuardClause:
  Exclude:
    - "app/helpers/rails_admin/main_helper.rb"
    - "lib/rails_admin.rb"
    - "lib/rails_admin/bootstrap-sass.rb"
    - "lib/rails_admin/config.rb"
    - "lib/rails_admin/config/actions.rb"
    - "lib/rails_admin/config/fields/types/polymorphic_association.rb"
    - "lib/rails_admin/config/sections/list.rb"

# Offense count: 2
Style/MissingRespondToMissing:
  Exclude:
    - "lib/rails_admin/config/model.rb"
    - "lib/rails_admin/config/proxyable/proxy.rb"

# Offense count: 17
# Configuration parameters: AllowedMethods.
# AllowedMethods: respond_to_missing?
Style/OptionalBooleanParameter:
  Exclude:
    - "app/helpers/rails_admin/application_helper.rb"
    - "lib/rails_admin/config/fields/types/active_storage.rb"
    - "lib/rails_admin/config/fields/types/carrierwave.rb"
    - "lib/rails_admin/config/fields/types/dragonfly.rb"
    - "lib/rails_admin/config/fields/types/multiple_active_storage.rb"
    - "lib/rails_admin/config/fields/types/multiple_carrierwave.rb"
    - "lib/rails_admin/config/fields/types/multiple_file_upload.rb"
    - "lib/rails_admin/config/fields/types/paperclip.rb"
    - "lib/rails_admin/config/has_fields.rb"
    - "spec/integration/fields/file_upload_spec.rb"
    - "spec/integration/fields/multiple_file_upload_spec.rb"
    - "spec/orm/active_record.rb"
    - "spec/orm/mongoid.rb"
    - "spec/rails_admin/config/fields/types/multiple_file_upload_spec.rb"

# Offense count: 3
# Cop supports --auto-correct.
# Configuration parameters: Mode.
Style/StringConcatenation:
  Exclude:
    - "app/helpers/rails_admin/application_helper.rb"
    - "lib/rails_admin/extensions/paper_trail/auditing_adapter.rb"

# Offense count: 2
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, ConsistentQuotesInMultiline.
# SupportedStyles: single_quotes, double_quotes
Style/StringLiterals:
  Exclude:
    - "app/helpers/rails_admin/application_helper.rb"


================================================
FILE: .teatro.yml
================================================
project:
  platform: rails

stage:
  before:
    - export CI_DB_ADAPTER=postgresql
    - export CI_ORM=active_record
    - cp Procfile.teatro Procfile
    - cd spec/dummy_app
    - cp ../../config/database.yml config/
    - bundle install --without development --jobs=3 --retry=3
    - ln -sf $PWD/public ../../public

  database:
    - bundle exec rake db:create db:migrate db:seed

config:
  database: postgresql
  services:
    - postgresql


================================================
FILE: .yardopts
================================================
--no-private
--protected
--markup markdown
-
LICENSE.md


================================================
FILE: Appraisals
================================================
# frozen_string_literal: true

appraise 'rails-6.0' do
  gem 'rails', '~> 6.0.0'
  gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
  gem 'psych', '~> 3.3'
  gem 'turbo-rails', '< 2.0.8'

  group :test do
    gem 'cancancan', ['~> 3.0', '< 3.6']
    gem 'pundit', '~> 2.1.0'
  end

  group :active_record do
    platforms :jruby do
      gem 'activerecord-jdbcmysql-adapter', '~> 60.0'
      gem 'activerecord-jdbcpostgresql-adapter', '~> 60.0'
      gem 'activerecord-jdbcsqlite3-adapter', '~> 60.0'
    end
  end

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 7.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'rails-6.1' do
  gem 'rails', '~> 6.1.0'
  gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260

  group :active_record do
    platforms :jruby do
      gem 'activerecord-jdbcmysql-adapter', '~> 61.0'
      gem 'activerecord-jdbcpostgresql-adapter', '~> 61.0'
      gem 'activerecord-jdbcsqlite3-adapter', '~> 61.0'
    end
  end

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 7.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'rails-7.0' do
  gem 'rails', '~> 7.0.0', '7.0.8.6' # Pinning until the fix for https://github.com/basecamp/trix/issues/1209 become available in actiontext
  gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260
  gem 'importmap-rails', require: false
  gem 'nokogiri', '~> 1.16.0', platform: :jruby

  group :active_record do
    platforms :ruby, :mswin, :mingw, :x64_mingw do
      gem 'sqlite3', '~> 1.3'
    end

    platforms :jruby do
      gem 'activerecord-jdbcmysql-adapter', '~> 70.0'
      gem 'activerecord-jdbcpostgresql-adapter', '~> 70.0'
      gem 'activerecord-jdbcsqlite3-adapter', '~> 70.0'
    end
  end

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 8.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'rails-7.1' do
  gem 'rails', '~> 7.1.0'
  gem 'importmap-rails', require: false

  group :active_record do
    platforms :ruby, :mswin, :mingw, :x64_mingw do
      gem 'sqlite3', '~> 1.3'
    end

    platforms :jruby do
      gem 'activerecord-jdbcmysql-adapter', '~> 71.0'
      gem 'activerecord-jdbcpostgresql-adapter', '~> 71.0'
      gem 'activerecord-jdbcsqlite3-adapter', '~> 71.0'
    end
  end

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 8.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'rails-7.2' do
  gem 'rails', '~> 7.2.0'
  gem 'importmap-rails', require: false

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 8.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'rails-8.0' do
  gem 'rails', '~> 8.0.0'
  gem 'importmap-rails', require: false

  group :mongoid do
    gem 'cancancan-mongoid'
    gem 'carrierwave-mongoid', '>= 0.6.3', require: 'carrierwave/mongoid'
    gem 'database_cleaner-mongoid', '>= 2.0', require: false
    gem 'kaminari-mongoid'
    gem 'mongoid', '~> 9.0'
    gem 'mongoid-paperclip', '>= 0.0.8', require: 'mongoid_paperclip'
    gem 'shrine-mongoid', '~> 1.0'
  end
end

appraise 'composite_primary_keys' do
  gem 'rails', '~> 7.0.0', '7.0.8.6' # Pinning until the fix for https://github.com/basecamp/trix/issues/1209 become available in actiontext
  gem 'concurrent-ruby', '1.3.4' # Workaround for https://github.com/rails/rails/issues/54260

  group :active_record do
    gem 'composite_primary_keys'

    platforms :ruby, :mswin, :mingw, :x64_mingw do
      gem 'sqlite3', '~> 1.3'
    end
  end
end


================================================
FILE: CHANGELOG.md
================================================
# RailsAdmin Changelog

## [Unreleased](https://github.com/railsadminteam/rails_admin/tree/HEAD)

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.3.0...HEAD)

## [3.3.0](https://github.com/railsadminteam/rails_admin/tree/v3.3.0) - 2024-12-08

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.1...v3.3.0)

### Added

- Rails 8.0 support ([#3702](https://github.com/railsadminteam/rails_admin/pull/3702))

## [3.2.1](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-10-10

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0...v3.2.1)

### Fixed

- Disable Turbo's prefetch behavior globally, to prevent custom actions unintentionally triggered ([f54a102](https://github.com/railsadminteam/rails_admin/commit/f54a102c6b0a420244ef044503944574ef1dfbd2), [#3701](https://github.com/railsadminteam/rails_admin/issues/3701))

## [3.2.0](https://github.com/railsadminteam/rails_admin/tree/v3.2.0) - 2024-09-08

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0.rc...v3.2.0)

### Fixed

- Fix polymorphic id doesn't reset properly in an edge case ([7b2ffb1](https://github.com/railsadminteam/rails_admin/commit/7b2ffb12386e06a0e6e0bace6d331fc5af989e38), [#3630](https://github.com/railsadminteam/rails_admin/pull/3630))

## [3.2.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.2.0.rc) - 2024-08-25

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.2.0.beta...v3.2.0.rc)

### Added

- ActiveRecord 7.1 composite primary keys support ([53b89c9](https://github.com/railsadminteam/rails_admin/commit/53b89c9161e48c0f9b4ecd5f544398c9360ea50f))

### Changed

- Introduce SingularAssociation and CollectionAssociation to tidy up the view files ([876be11](https://github.com/railsadminteam/rails_admin/commit/876be11ec01237596b2f27e15239e86418ce7610))

### Fixed

- Fix to show a thumbnail of all representable ActiveStorage attachments ([#3656](https://github.com/railsadminteam/rails_admin/pull/3656), [7754ac3](https://github.com/railsadminteam/rails_admin/commit/7754ac34eb8e0af7605b2e52ae0646b17e9bb0c6))
- Fix to detect images properly in FileUpload and MultipleFileUpload field ([35c8702](https://github.com/railsadminteam/rails_admin/commit/35c8702351aa300bddcc950d36d68b80742f5011), [#3633](https://github.com/railsadminteam/rails_admin/pull/3633))
- Fix to reset polymorphic id selection upon type change ([#3630](https://github.com/railsadminteam/rails_admin/pull/3630), [13114e5](https://github.com/railsadminteam/rails_admin/commit/13114e5629d49eab14d58df1319eb068dacedba7))
- Lock jQuery UI version due to incompatibility with 1.14 ([5245d5b](https://github.com/railsadminteam/rails_admin/commit/5245d5bb91691d646219b5243f3f881a0144a3fd), [#3692](https://github.com/railsadminteam/rails_admin/issues/3692))

## [3.2.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.2.0.beta) - 2024-07-13

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.4...v3.2.0.beta)

### Added

- Allow turbo-rails 2 in gemspec ([#3671](https://github.com/railsadminteam/rails_admin/pull/3671))
- ViteRuby integration ([#3643](https://github.com/railsadminteam/rails_admin/pull/3643), [0e12e5b](https://github.com/railsadminteam/rails_admin/commit/0e12e5b465997c14d5b7a4d500a0d4cebed21aa9))
- Support client-side dynamic scoping ([12715f2](https://github.com/railsadminteam/rails_admin/commit/12715f2dd12d97f0676e548e4271906df424b89d), [#2934](https://github.com/railsadminteam/rails_admin/issues/2934))
- Add support for `%-l` option to Flatpickr ([#3616](https://github.com/railsadminteam/rails_admin/pull/3616))

### Changed

- Handle has_one assignment on the field level, making patched has_one getters/setters unnecessary ([91737ab](https://github.com/railsadminteam/rails_admin/commit/91737ab3c2fa22cbe08aedd28770a12704fde6c7))

### Fixed

- Use require_relative to avoid modifying $LOAD_PATH in gemspec ([#3690](https://github.com/railsadminteam/rails_admin/pull/3690))
- Tidy up trailing whitespace in gem post_install_message ([#3689](https://github.com/railsadminteam/rails_admin/pull/3689))
- Fix enum filter breaking when pre-populated ([d62f604](https://github.com/railsadminteam/rails_admin/commit/d62f604cc8d7d1434f7dfe0c5aca3aaf3dc2547b), [#3651](https://github.com/railsadminteam/rails_admin/issues/3651))
- Fix error on searching or sorting by ActiveStorage field ([dba6c4b](https://github.com/railsadminteam/rails_admin/commit/dba6c4b815fbe4aa4f62a13b660e865a89151838), [#3678](https://github.com/railsadminteam/rails_admin/issues/3678))
- Fix to remove trailing slash from meta tags ([#3672](https://github.com/railsadminteam/rails_admin/pull/3672))
- Fix default config path for ImportmapFormatter being misspelled ([#3676](https://github.com/railsadminteam/rails_admin/pull/3676))
- Fix table names not quoted properly on sorting ([#3652](https://github.com/railsadminteam/rails_admin/pull/3652), [#1631](https://github.com/railsadminteam/rails_admin/issues/1631))
- Fix ActiveStorage/ActionText detection less likely to cause false positives ([073b809](https://github.com/railsadminteam/rails_admin/commit/073b809853b6bc231841e3f8dd9d35875220c616), [#3659](https://github.com/railsadminteam/rails_admin/issues/3659))
- Fix boolean fields in a Mongoid embedded document fails to be updated ([#3555](https://github.com/railsadminteam/rails_admin/pull/3555), [#3554](https://github.com/railsadminteam/rails_admin/issues/3554))
- Fix wrongly referring to `:update_only` in nested fields ([#3649](https://github.com/railsadminteam/rails_admin/pull/3649))
- Fix to use HTML `q` element for better localization support ([#3636](https://github.com/railsadminteam/rails_admin/pull/3636))
- Fix `is_blank` and `is_present` filters breaking for uuid columns ([#3629](https://github.com/railsadminteam/rails_admin/pull/3629), [#3669](https://github.com/railsadminteam/rails_admin/issues/3669))
- Fix polymorphic association target classes not set correctly in subclasses ([2a89ebc](https://github.com/railsadminteam/rails_admin/commit/2a89ebcfa96243697988f6570b9c9be19a7a01b5), [#3631](https://github.com/railsadminteam/rails_admin/issues/3631))

### Security

- Validate `return_to` param using `request.base_url` to prevent arbitrary redirection ([#3627](https://github.com/railsadminteam/rails_admin/pull/3627))

## [3.1.4](https://github.com/railsadminteam/rails_admin/tree/v3.1.4) - 2024-07-09

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.3...v3.1.4)

### Fixed

- Fix [32f91e4](https://github.com/railsadminteam/rails_admin/commit/32f91e4b49205e44d3931c2e36d9f7273384a250) broke fields with HTML tags ([758d249](https://github.com/railsadminteam/rails_admin/commit/758d249d950062be6840f9c96e2a286e02b92a1e), [#3686](https://github.com/railsadminteam/rails_admin/issues/3686#issuecomment-2215491140))

## [3.1.3](https://github.com/railsadminteam/rails_admin/tree/v3.1.3) - 2024-07-06

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.2...v3.1.3)

### Fixed

- Fix bson 5.0 compatibility ([13da4f0](https://github.com/railsadminteam/rails_admin/commit/13da4f0191f5185dadecdfe9e6fc9ca808f7f73d))
- Fix Importmap 2.0 compatibility ([bd0cf97](https://github.com/railsadminteam/rails_admin/commit/bd0cf97530d93dc66577e5d1ea0da2ebf3b57737))

### Security

- Fix XSS vulnerability in the list view ([b5a287d](https://github.com/railsadminteam/rails_admin/commit/b5a287d82e2cbd1737a1a01e11ede2911cce7fef), [GHSA-8qgm-g2vv-vwvc](https://github.com/railsadminteam/rails_admin/security/advisories/GHSA-8qgm-g2vv-vwvc))

## [3.1.2](https://github.com/railsadminteam/rails_admin/tree/v3.1.2) - 2023-03-23

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.1...v3.1.2)

### Fixed

- Fix install failing with importmap setup ([aca22b6](https://github.com/railsadminteam/rails_admin/commit/aca22b6ba1eca1ac618525334cf14fc946e1c99e), [#3609](https://github.com/railsadminteam/rails_admin/issues/3609))
- Fix to show non-eager-loaded models which are explicitly configured ([87c9d5b](https://github.com/railsadminteam/rails_admin/commit/87c9d5bc5b6ffb423e72054b3cfe8f949c12c178), [#3604](https://github.com/railsadminteam/rails_admin/issues/3604))
- Fix `rails_admin.dom_ready` event not triggered with jQuery `on` ([2ee43de](https://github.com/railsadminteam/rails_admin/commit/2ee43deb1fa8d3a9e3ea0e589c1687d684e19ad6), [33773d7](https://github.com/railsadminteam/rails_admin/commit/33773d7f8dd43eeb0f6a7c125c4bee170132e5d2), [#3600](https://github.com/railsadminteam/rails_admin/discussions/3600))
- Restore caching in RailsAdmin::Config::Model#excluded? ([#3587](https://github.com/railsadminteam/rails_admin/pull/3587))
- Optimize/simplify viable_models file path to class name logic ([#3589](https://github.com/railsadminteam/rails_admin/pull/3589))

## [3.1.1](https://github.com/railsadminteam/rails_admin/tree/v3.1.1) - 2022-12-18

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0...v3.1.1)

### Changed

- Relax Font-Awesome dependency to allow Webpacker users to stay on 5.x ([3a7f348](https://github.com/railsadminteam/rails_admin/commit/3a7f34875248e446b48fd76870f0c337fee6dcf9), [#3565](https://github.com/railsadminteam/rails_admin/issues/3565))

### Removed

- Remove unused glphyicon assets ([#3578](https://github.com/railsadminteam/rails_admin/pull/3578))

### Fixed

- Simplify uses of defined? ([#3561](https://github.com/railsadminteam/rails_admin/pull/3561))
- Define jQuery object in separate file to support esbuild ([#3571](https://github.com/railsadminteam/rails_admin/pull/3571))
- Fix filter box being duplicated on browser back ([c6b1893](https://github.com/railsadminteam/rails_admin/commit/c6b18934cff3db0768836d799ee1bea54045709c), [#3570](https://github.com/railsadminteam/rails_admin/issues/3570))
- Fix sidebar menu expanding horizontally, preventing vertical scroll ([9997c10](https://github.com/railsadminteam/rails_admin/commit/9997c1095066aaac39afb27bf8de705cf6ccb1ef), [#3564](https://github.com/railsadminteam/rails_admin/issues/3564))

## [3.1.0](https://github.com/railsadminteam/rails_admin/tree/v3.1.0) - 2022-11-06

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.rc2...v3.1.0)

### Fixed

- Fix to use defer instead of async to ensure script loading order ([2a40976](https://github.com/railsadminteam/rails_admin/commit/2a409764b13a4e23fc848725c604d318e3375484), [#3513](https://github.com/railsadminteam/rails_admin/issues/3513))
- Improve filter method select box appearance ([#3559](https://github.com/railsadminteam/rails_admin/pull/3559))

## [3.1.0.rc2](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.rc2) - 2022-10-02

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.rc...v3.1.0.rc2)

### Fixed

- Fix sidebar style broken in attempt to support Bootstrap 5.2 ([d7abba4](https://github.com/railsadminteam/rails_admin/commit/d7abba4e8a2e380b4d7f8fb3b37302300af63de5), [#3553](https://github.com/railsadminteam/rails_admin/issues/3553))

## [3.1.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.rc) - 2022-09-22

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.1.0.beta...v3.1.0.rc)

### Added

- Add ability to limit filter operators ([be9a75e](https://github.com/railsadminteam/rails_admin/commit/be9a75e504edd9a754157a4ddba590e8a5d14149))
- Support filtering has_one associations ([9657774](https://github.com/railsadminteam/rails_admin/commit/9657774b423912357d8ad8a476b644bb4e36dc30))
- Add ability to set default order of PaperTrail versions ([a1c4c67](https://github.com/railsadminteam/rails_admin/commit/a1c4c673041642ae2a2aa07e3f0555e17be9d940), [#3095](https://github.com/railsadminteam/rails_admin/pull/3095))
- Add block-style DSL support for extension adapters ([951b708](https://github.com/railsadminteam/rails_admin/commit/951b70878cb007d54b4a7aeadd708d4c7668727b))
- Make sidebar navigation collapsible ([e8cb8ed](https://github.com/railsadminteam/rails_admin/commit/e8cb8edd39246bf75ed72295b7832faf5056367c), [#3198](https://github.com/railsadminteam/rails_admin/pull/3198))
- Add ability to show a help text under the search box ([94f16fb](https://github.com/railsadminteam/rails_admin/commit/94f16fb5fdfdaa867173e95820583a68e5a306c5))
- Support for ActiveStorage direct uploads ([e13c7e2](https://github.com/railsadminteam/rails_admin/commit/e13c7e23f789ed2a575eff01b75e52a41cc930b7), [#3296](https://github.com/railsadminteam/rails_admin/issues/3296))

### Changed

- Load ActionText assets statically to enable full-featured setup ([458d0fb](https://github.com/railsadminteam/rails_admin/commit/458d0fb56d79d4fa0a252ad1ca715fd0a3b4b900), [#3251](https://github.com/railsadminteam/rails_admin/issues/3251), [#3386](https://github.com/railsadminteam/rails_admin/issues/3386))
- Change ES Module processing not to affect non-RailsAdmin assets ([f8219bf](https://github.com/railsadminteam/rails_admin/commit/f8219bf3bc508c5e42f5d044cf6355a56726f8b2))
- Change RailsAdmin initialization process to evaluate the config block immediately but load constants lazily ([#3541](https://github.com/railsadminteam/rails_admin/pull/3541), [33e9214](https://github.com/railsadminteam/rails_admin/commit/33e92147214975cddace61737cbbde3117663efe))
- Restore the loading indicator back ([32e6b14](https://github.com/railsadminteam/rails_admin/commit/32e6b1463ecf66b38e6fdc7924426d9753d71eab), [b9ee7f0](https://github.com/railsadminteam/rails_admin/commit/b9ee7f0c202abc7c09726bdaa28536e7ec25127e), [#3500](https://github.com/railsadminteam/rails_admin/issues/3500))

### Fixed

- Fix Bootstrap 5.2 compatibility ([ef76fce](https://github.com/railsadminteam/rails_admin/commit/ef76fcea0b23aed04f6568448cd157ccc9ba30a0))
- Fix filtering select widget options being empty on browser back ([3cffc00](https://github.com/railsadminteam/rails_admin/commit/3cffc0002079bc9d515dc0f3b31513c7166aa2b9))
- Fix RailsAdmin widgets not activated after a validation error ([a604da5](https://github.com/railsadminteam/rails_admin/commit/a604da5670378e57da7b5492afad40e4f4ad083d))
- Fix export action didn't use export section for eager loading ([4cc3f30](https://github.com/railsadminteam/rails_admin/commit/4cc3f304cc0bc4a7dbaf41a6e4e12ecbdbba6e22), [#1954](https://github.com/railsadminteam/rails_admin/issues/1954))
- Fix Dart Sass 2.0 division deprecations ([#3544](https://github.com/railsadminteam/rails_admin/pull/3544), [3a177c2](https://github.com/railsadminteam/rails_admin/commit/3a177c2e8c1b1d782186ee5bbb3c0d44cc4c0060))
- Fix unable to focus elements on modals opened from remote forms ([#3539](https://github.com/railsadminteam/rails_admin/pull/3539), [#3538](https://github.com/railsadminteam/rails_admin/issues/3538))
- Improve pagination appearance on smaller screens ([a2e366e](https://github.com/railsadminteam/rails_admin/commit/a2e366e8839c9046b9f9fde219875a05bc1a66bb), [#3516](https://github.com/railsadminteam/rails_admin/issues/3516))
- Fix the value of submit buttons being lost on submission ([60e1150](https://github.com/railsadminteam/rails_admin/commit/60e115053ea34fa42c3099464106cf6e58dbfa03), [#3513](https://github.com/railsadminteam/rails_admin/issues/3513))
- Fix breaking with a has_and_belongs_to_many association with scope given ([c2bf6db](https://github.com/railsadminteam/rails_admin/commit/c2bf6db41a97b46741bc41b56fd9700c8bdfc9e4), [#2067](https://github.com/railsadminteam/rails_admin/issues/2067))
- Fix nested fields don't toggle properly after pushing 'Add a new ...' button ([d1f1154](https://github.com/railsadminteam/rails_admin/commit/d1f115425c4a8d119fdeb37802fe472ae278918d), [#3528](https://github.com/railsadminteam/rails_admin/issues/3528))

## [3.1.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.1.0.beta) - 2022-06-20

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0...v3.1.0.beta)

### Added

- Support Importmap and Webpack, via [importmap-rails](https://github.com/rails/importmap-rails) / [jsbundling-rails](https://github.com/rails/jsbundling-rails) and [cssbundling-rails](https://github.com/rails/cssbundling-rails) ([#3488](https://github.com/railsadminteam/rails_admin/pull/3488))
- Support [Composite Primary Keys](https://github.com/composite-primary-keys/composite_primary_keys) gem ([#3527](https://github.com/railsadminteam/rails_admin/pull/3527))
- Allow configuration of Navbar css class ([126f7ac](https://github.com/railsadminteam/rails_admin/commit/126f7ac79b2ce7846cbbed7bbca1cc26dfe46fb6), [#3507](https://github.com/railsadminteam/rails_admin/issues/3507))

### Changed

- Update vendorized jQuery to 3.6.0 ([#3524](https://github.com/railsadminteam/rails_admin/pull/3524))
- Enable frozen string literals across the project ([#3483](https://github.com/railsadminteam/rails_admin/pull/3483))

### Fixed

- Fix edit user link in the top navigation pointing to wrong URL ([#3531](https://github.com/railsadminteam/rails_admin/pull/3531))
- Fix MultipleActiveStorage field deleting previous attachments when updating a record in Rails 7.0 ([974c54a](https://github.com/railsadminteam/rails_admin/commit/974c54a2a3372690ca189f6e7e90ce365bcd4ff5), [#3520](https://github.com/railsadminteam/rails_admin/issues/3520))
- Fix remote form submission breaking when used with HTTP/2 ([#3515](https://github.com/railsadminteam/rails_admin/pull/3515))
- Fix to maintain 2.x hover / active behavior for side navigation links ([#3511](https://github.com/railsadminteam/rails_admin/pull/3511))
- Fix default sort by behavior when `list.sort_by` points to a field with a table reference for `:sortable` ([#3509](https://github.com/railsadminteam/rails_admin/pull/3509), [9959925](https://github.com/railsadminteam/rails_admin/commit/9959925e49812d6fdaf7341ede4b1d66d926e8d8))
- Fix to insert whitespace after sidebar navigation icon to maintain visual consistency ([#3504](https://github.com/railsadminteam/rails_admin/pull/3504))
- Fix orderable multiselect buttons not rendered correctly ([#3506](https://github.com/railsadminteam/rails_admin/pull/3506))
- Fix to use badges instead of labels, which are removed in Bootstrap 5 ([#3503](https://github.com/railsadminteam/rails_admin/pull/3503))

## [3.0.0](https://github.com/railsadminteam/rails_admin/tree/v3.0.0) - 2022-03-21

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc4...v3.0.0)

### Fixed

- Fix table sorting not working ([83a0c88](https://github.com/railsadminteam/rails_admin/commit/83a0c889f1de38a0b24c412b0f0f7484add86b29), [#3497](https://github.com/railsadminteam/rails_admin/issues/3497))
- Fix reset button by the query box not working ([4a583e9](https://github.com/railsadminteam/rails_admin/commit/4a583e924c5bef6bfc46d6a49ab751c2323ba23e))

## [3.0.0.rc4](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc4) - 2022-03-13

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc3...v3.0.0.rc4)

### Added

- Instruct users on potential issues with npm package installation ([2b0594c](https://github.com/railsadminteam/rails_admin/commit/2b0594c6824eb4eed217cbab9477639b61eb99db), [c7a74f1](https://github.com/railsadminteam/rails_admin/commit/c7a74f1ce7a040b8c87b24fe1907ddd9088bf1e5))

### Changed

- Upgrade vendorized Flatpickr to 4.6.11 ([7f8c831](https://github.com/railsadminteam/rails_admin/commit/7f8c831b9aa407987ba89191c21040e2e72e366e))

### Fixed

- Fix not utilizing full browser width after Bootstrap 5 upgrade ([#3493](https://github.com/railsadminteam/rails_admin/pull/3493))
- Fix the style for show views broken on Bootstrap 5 upgrade ([#3491](https://github.com/railsadminteam/rails_admin/pull/3491))
- Fix Pundit 2.2 deprecation for not using Pundit::Authorization ([e38eb46](https://github.com/railsadminteam/rails_admin/commit/e38eb46ffe79cd866c34b837dd4cfbb65361558f))
- Fix JS issues when navigating across the main app and RailsAdmin ([eb4a185](https://github.com/railsadminteam/rails_admin/commit/eb4a18558e9d8c69aeea3fd733f5dc251f3f79f9), [#3484](https://github.com/railsadminteam/rails_admin/pull/3484))

## [3.0.0.rc3](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc3) - 2022-02-27

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc2...v3.0.0.rc3)

### Fixed

- Fix the style of list scope tabs ([#3477](https://github.com/railsadminteam/rails_admin/pull/3477))
- Fix rake tasks executed twice ([7d56cd6](https://github.com/railsadminteam/rails_admin/commit/7d56cd6af2d468cca44af5211559af0e744f5cb4))
- Fix the style of the header user link when show_gravatar is false ([#3475](https://github.com/railsadminteam/rails_admin/pull/3475))
- Fix 'Cancel' button for delete/bulk_delete action also didn't work ([1fa8486](https://github.com/railsadminteam/rails_admin/commit/1fa8486ead39596e9e0ac62a945fb0aed63929a8), [#3468](https://github.com/railsadminteam/rails_admin/issues/3468))
- Fix failing to export after introducing Turbo Drive ([c749d93](https://github.com/railsadminteam/rails_admin/commit/c749d939e29434937e8558bcb1f3e219fe98c69d), [#3461 (comment)](https://github.com/railsadminteam/rails_admin/pull/3461#issuecomment-1048588801))

## [3.0.0.rc2](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc2) - 2022-02-20

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.rc...v3.0.0.rc2)

### Added

- Some improvements to make the upgrade process more friendlier ([#3471](https://github.com/railsadminteam/rails_admin/pull/3471), [3771542](https://github.com/railsadminteam/rails_admin/commit/377154268257d3753093dcd3dd2fd79b7438b9aa), [3b04a96](https://github.com/railsadminteam/rails_admin/commit/3b04a9616169d568b1a6cee26becf9bfea0ee386))

### Fixed

- Fix 'Save and add another', 'Save and edit', 'Cancel' buttons didn't work right ([ac0a563](https://github.com/railsadminteam/rails_admin/commit/ac0a563a0bf91bf33c693e19717148ed77f843fd), [#3468](https://github.com/railsadminteam/rails_admin/issues/3468))
- Fix failing to precompile assets when the database connection is unavailable ([#3470](https://github.com/railsadminteam/rails_admin/pull/3470), [#3469](https://github.com/railsadminteam/rails_admin/issues/3469))
- Fix custom theme overrides not working ([3d7f3b3](https://github.com/railsadminteam/rails_admin/commit/3d7f3b33a1ca6fabbd8606bb178babae930cce25), [#3466](https://github.com/railsadminteam/rails_admin/issues/3466))

## [3.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.rc) - 2022-02-06

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.beta2...v3.0.0.rc)

### Added

- Support Mongoid's Storage Field Names ([cefa23c](https://github.com/railsadminteam/rails_admin/commit/cefa23c9d23d06dc1134228e142e6f0aa4655c54), [#1745](https://github.com/railsadminteam/rails_admin/issues/1745))
- Allow save/delete operations to be disabled based on an object's `#read_only?` status ([9cd7541](https://github.com/railsadminteam/rails_admin/commit/9cd7541a2e6af4ae4941b200840a1474baeb2f06), [#1684](https://github.com/railsadminteam/rails_admin/issues/1684))
- Allow customizing model's last created time ([d6d380a](https://github.com/railsadminteam/rails_admin/commit/d6d380a02e955c3b14ff7dc30f1809a2a6cd0f47), [#3010](https://github.com/railsadminteam/rails_admin/issues/3010))
- Add ability to hide the dashboard history section ([#3189](https://github.com/railsadminteam/rails_admin/pull/3189))
- Add model scope configuration option, which enables 'unscoped' mode ([8d905f9](https://github.com/railsadminteam/rails_admin/commit/8d905f9e2f1102e8addf324b496720e3fd47bf1d), [#1348](https://github.com/railsadminteam/rails_admin/issues/1348))

### Changed

- Switch from pjax to Turbo Drive, due to pjax's low maintenance activity ([#3461](https://github.com/railsadminteam/rails_admin/pull/3461), [#3435](https://github.com/railsadminteam/rails_admin/pull/3435))
- Upgrade Bootstrap to 5.1.3 ([#3455](https://github.com/railsadminteam/rails_admin/pull/3455), [#3083](https://github.com/railsadminteam/rails_admin/issues/3083))
- Switch datetime picker library to Flatpickr ([#3455](https://github.com/railsadminteam/rails_admin/pull/3455))

### Removed

- Drop support for Ruby 2.5 ([#3430](https://github.com/railsadminteam/rails_admin/pull/3430))
- Remove Sections::List#sort_reverse because of having very limited usecase ([0c7bc61](https://github.com/railsadminteam/rails_admin/commit/0c7bc6124a189e5307f2bd1f960dd06495932d10), [#1181](https://github.com/railsadminteam/rails_admin/issues/1181))

### Fixed

- Fix failing to detect encoding with JDBC MySQL adapter ([0dfe2e4](https://github.com/railsadminteam/rails_admin/commit/0dfe2e4d1301cc353f972b28ab19554a53cad482))
- Fix unable to start app when using redis-session-store ([#3462](https://github.com/railsadminteam/rails_admin/pull/3462))
- Fix ActiveRecord ObjectExtension has_one setter breaks with custom primary key class ([0e2e0e4](https://github.com/railsadminteam/rails_admin/commit/0e2e0e4e24328a063813a3a5266a15faee7960c8), [#3460](https://github.com/railsadminteam/rails_admin/issues/3460))
- Fix inheritance of parent_controller not updated properly when controllers were eagerly loaded ([#3458](https://github.com/railsadminteam/rails_admin/pull/3458))
- Fix to retrieve actions correctly in the action `#bulk_action` ([#3407](https://github.com/railsadminteam/rails_admin/pull/3407))
- Fix issue when RailsAdmin::MainController needs to dispatch a method call using `#respond_to_missing?` ([da51b91](https://github.com/railsadminteam/rails_admin/commit/da51b91f712b235c0c6e2a120724fcb31ff28168), [#3454](https://github.com/railsadminteam/rails_admin/issues/3454))
- Fix modal foreign keys are not prepopulated unless the association inverse_of is configured ([75504d0](https://github.com/railsadminteam/rails_admin/commit/75504d08ee6197a3a2c72a56ea30f01272b1d28b), [#2585](https://github.com/railsadminteam/rails_admin/issues/2585))

## [3.0.0.beta2](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.beta2) - 2021-12-25

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v3.0.0.beta...v3.0.0.beta2)

### Fixed

- Fix NameError 'uninitialized constant RailsAdmin::Version' on install ([d2ad520](https://github.com/railsadminteam/rails_admin/commit/d2ad5209f98d8678c6317b49f13727b8605048b3), [#3452](https://github.com/railsadminteam/rails_admin/issues/3452))

## [3.0.0.beta](https://github.com/railsadminteam/rails_admin/tree/v3.0.0.beta) - 2021-12-20

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.2.1...v3.0.0.beta)

### Added

- Rails 7.0.0 support ([011b9ae](https://github.com/railsadminteam/rails_admin/commit/011b9aea12d2c3a5e8654786e49071254baacf18), [670d803](https://github.com/railsadminteam/rails_admin/commit/670d803c262429600c6eb7f59f8b36aa145081e5))
- Webpacker support ([#3414](https://github.com/railsadminteam/rails_admin/pull/3414))
- Add #link_target to action configuration ([#3419](https://github.com/railsadminteam/rails_admin/pull/3419))
- Add not like (=does not contain) operator ([#3410](https://github.com/railsadminteam/rails_admin/pull/3410))
- Support for PostgreSQL citext data type ([#3413](https://github.com/railsadminteam/rails_admin/pull/3413), [#2177](https://github.com/railsadminteam/rails_admin/issues/2177))
- Allow #configure to handle multiple fields for a section at once ([#3406](https://github.com/railsadminteam/rails_admin/pull/3406), [#2667](https://github.com/railsadminteam/rails_admin/issues/2667))
- Add has_one id setters/getters, eliminating the need for explicitly defining them ([42f0a5f](https://github.com/railsadminteam/rails_admin/commit/42f0a5f5aac4b7481dcd4950803d12077b598ce5), [#2625](https://github.com/railsadminteam/rails_admin/issues/2625))
- Support for Mongoid's has_and_belongs_to_many custom primary_key ([3f67637](https://github.com/railsadminteam/rails_admin/commit/3f676371ce7fc088220095afa12d3e20c2c6123a), [#3097](https://github.com/railsadminteam/rails_admin/pull/3097))
- Support for eager-loading arbitrary associations ([4404758](https://github.com/railsadminteam/rails_admin/commit/44047580b7d536a84a92c173a3bd00dc9d211399), [#2928](https://github.com/railsadminteam/rails_admin/issues/2928))
- Support for nullable boolean field ([7583369](https://github.com/railsadminteam/rails_admin/commit/7583369a1d1763e542d36930a968726425cacb6c), [#3145](https://github.com/railsadminteam/rails_admin/issues/3145))
- Support for configuration reload in development mode ([e4ae669](https://github.com/railsadminteam/rails_admin/commit/e4ae6698e52e56a1cefdf5c4097b29b8306f21e2), [#2726](https://github.com/railsadminteam/rails_admin/issues/2726), [08f50aa](https://github.com/railsadminteam/rails_admin/commit/08f50aabc1922aeb289ced4ccbe9f983bc1aaa89), [#3420](https://github.com/railsadminteam/rails_admin/issues/3420))
- Add 'No objects found' placeholder in filtering-select as well ([7e3a1a6](https://github.com/railsadminteam/rails_admin/commit/7e3a1a632811a917f2cbd8dbe471861bc0a1ac85), [#3332](https://github.com/railsadminteam/rails_admin/issues/3332))
- Add inline_edit to HasManyAssociation as well ([798ab1b](https://github.com/railsadminteam/rails_admin/commit/798ab1b6ae400f2b853441a9fa48f8e7ad24208d), [#1911](https://github.com/railsadminteam/rails_admin/issues/1911))
- Add hover highlight to the list table for better visibility ([#3221](https://github.com/railsadminteam/rails_admin/pull/3221))
- Add ability to show disabled actions, as well as completely hiding ([6c877ea](https://github.com/railsadminteam/rails_admin/commit/6c877eac1a052881b2d4950a44d41f7fd77b044f), [#1765](https://github.com/railsadminteam/rails_admin/issues/1765))
- Add the message 'no records found' when a list is empty ([#3365](https://github.com/railsadminteam/rails_admin/pull/3365), [a5fe6f8](https://github.com/railsadminteam/rails_admin/commit/a5fe6f806498975a91ae11544ce21310592774a2), [#3329](https://github.com/railsadminteam/rails_admin/issues/3329))
- Add a way to clear belongs_to selection using mouse ([ac3fe35](https://github.com/railsadminteam/rails_admin/commit/ac3fe35b65e858a3b528a523e1b6fbeafe1d359b), [#2090](https://github.com/railsadminteam/rails_admin/issues/2090))
- Add HTML5 validation for float-like field types ([#3378](https://github.com/railsadminteam/rails_admin/pull/3378), [#3289](https://github.com/railsadminteam/rails_admin/issues/3289))

### Changed

- Remove horizontal pagination and always use sidescroll view for list action table ([d51e943](https://github.com/railsadminteam/rails_admin/commit/d51e94314de4b510df0767a695d5953bb7b3fad5))
- Replace image assets with Font Awesome icons ([a0a568b](https://github.com/railsadminteam/rails_admin/commit/a0a568bc866158382b52ec24639699695146794c))
- Switch templates from HAML to ERB ([#3425](https://github.com/railsadminteam/rails_admin/pull/3425), [#3439](https://github.com/railsadminteam/rails_admin/pull/3439), [#3173](https://github.com/railsadminteam/rails_admin/issues/3173))
- Rewrite some JavaScript code not to use jQuery ([#3416](https://github.com/railsadminteam/rails_admin/pull/3416), [#3417](https://github.com/railsadminteam/rails_admin/pull/3417))
- Upgrade FontAwesome to 5.15.4 ([cb1ac73](https://github.com/railsadminteam/rails_admin/commit/cb1ac732c4df85cc082c4e40f2c8a7d144ceb9f2))
- Stop using AbstractObject and use raw model instances with extension ([af88091](https://github.com/railsadminteam/rails_admin/commit/af88091d11590dc95df4866c62fba0c49a7bb9a8), [#2847](https://github.com/railsadminteam/rails_admin/issues/2847))
- Switch from jquery_ujs to rails-ujs ([#3390](https://github.com/railsadminteam/rails_admin/pull/3390), [dea63f4](https://github.com/railsadminteam/rails_admin/commit/dea63f49ee18644ee5e8dee1fb57e0c742d27a97))
- Make colorpicker field use HTML5 native color picker ([#3387](https://github.com/railsadminteam/rails_admin/pull/3387))
- Change to use ISO 8601 time format for browser-server communication, instead of localized value ([01e8d5f](https://github.com/railsadminteam/rails_admin/commit/01e8d5fc8ec94e68af6fdbd80759a751cd83f74a), [#3344](https://github.com/railsadminteam/rails_admin/issues/3344))

### Removed

- Remove dependency for builder and remotipart ([#3427](https://github.com/railsadminteam/rails_admin/pull/3427), [58b76d1](https://github.com/railsadminteam/rails_admin/commit/58b76d1e66ec06b752567da9c118f611105ff39f))
- Remove capitalization helper, letting I18n to perform necessary transformation ([#3396](https://github.com/railsadminteam/rails_admin/pull/3396))
- Remove jQuery Migrate ([#3389](https://github.com/railsadminteam/rails_admin/pull/3389), [b385d4d](https://github.com/railsadminteam/rails_admin/commit/b385d4d50f372de65d8c6c33a4b8256403894483))
- Remove the legacy history adapter([#3374](https://github.com/railsadminteam/rails_admin/issues/3374), [b627580](https://github.com/railsadminteam/rails_admin/commit/b62758039308872e7abe91a51715e1608bfd0915))
- Drop support for Ruby < 2.5 and Rails 5.x([decf428](https://github.com/railsadminteam/rails_admin/commit/decf4280183b8b6a453aa802942fc825524c2f13), [17e20b6](https://github.com/railsadminteam/rails_admin/commit/17e20b6daef1708598ab8cff5678501f8bac4709))

### Fixed

- Reduce object allocations when rendering main navigation menu ([#3412](https://github.com/railsadminteam/rails_admin/pull/3412))
- Fix N+1 queries for ActiveStorage attachments ([e4d5b2f](https://github.com/railsadminteam/rails_admin/commit/e4d5b2f3bece0f5f3e5f588e20e52031ad33e124), [#3282](https://github.com/railsadminteam/rails_admin/issues/3282))
- Fix to convert DateTime format for Moment.js as much as possible ([6d5c049](https://github.com/railsadminteam/rails_admin/commit/6d5c049124d0b390f4612e8e6524f00500afe52e), [#2736](https://github.com/railsadminteam/rails_admin/issues/2736), [#3009](https://github.com/railsadminteam/rails_admin/issues/3009))
- Fix config.parent_controller to work after the class loading ([5bd9805](https://github.com/railsadminteam/rails_admin/commit/5bd980564a565906a6fda87d2ef31590d3e3b0a5), [#2790](https://github.com/railsadminteam/rails_admin/issues/2790))
- Fix NoMethodError when Mongoid's raise_not_found_error is false ([973bd8e](https://github.com/railsadminteam/rails_admin/commit/973bd8e50591a538841575c33b6221706481dae3), [#2623](https://github.com/railsadminteam/rails_admin/issues/2623))
- Fix NoMethodError "undefined method 'has_one_attached'" ([e4ae669](https://github.com/railsadminteam/rails_admin/commit/e4ae6698e52e56a1cefdf5c4097b29b8306f21e2), [#3025](https://github.com/railsadminteam/rails_admin/issues/3025))
- Fix NoMethodError "undefined method `label' for nil:NilClass" on export ([f2104b5](https://github.com/railsadminteam/rails_admin/commit/f2104b595930491a18ede44c9e1a8c881a0316b8), [#1685](https://github.com/railsadminteam/rails_admin/issues/1685))
- Fix Kaminari's custom param_name was not used in history_index and history_show ([#3227](https://github.com/railsadminteam/rails_admin/pull/3227), [#3400](https://github.com/railsadminteam/rails_admin/pull/3400))
- Fix Gravater and email were not shown when the current user is not editable ([bd44929](https://github.com/railsadminteam/rails_admin/commit/bd449292088cb68aad22b282b6344778862187e5), [#3237](https://github.com/railsadminteam/rails_admin/issues/3237))
- Fix RailsAdmin::Config.reset didn't clear the effect of previous included_models/excluded_models ([1190d51](https://github.com/railsadminteam/rails_admin/commit/1190d510ee73949af618bd279e4712f1be4550b6), [#3305](https://github.com/railsadminteam/rails_admin/issues/3305))
- Fix duplication of filtering-multiselect on browser back ([3c10b09](https://github.com/railsadminteam/rails_admin/commit/3c10b0918b65e64624f06ebd5e402181f478cc64), [#3211](https://github.com/railsadminteam/rails_admin/issues/3211))
- Fix no error message is shown on failure with dependent: :restrict_with_error ([bf353cc](https://github.com/railsadminteam/rails_admin/commit/bf353cc76d6e56d511e9c5a87d0ffbd83669e3f2), [#3323](https://github.com/railsadminteam/rails_admin/issues/3223))
- Fix read-only associations are shown empty if it has no value ([7580f33](https://github.com/railsadminteam/rails_admin/commit/7580f3366a6e4a16b439de7fd64860fe26628ad7), [#2681](https://github.com/railsadminteam/rails_admin/issues/2681))
- Fix hidden fields taking up some space ([5aaee51](https://github.com/railsadminteam/rails_admin/commit/5aaee5153441fd82854a998ac02ebbe303b82bf2), [#3380](https://github.com/railsadminteam/rails_admin/issues/3380))
- Fix to show validation errors in modals ([f67defb](https://github.com/railsadminteam/rails_admin/commit/f67defb55ad9d1a1fe8428029c947bcd00b5ce8a), [#1735](https://github.com/railsadminteam/rails_admin/issues/1735))
- Fix image file detection by using Mime::Type ([#3398](https://github.com/railsadminteam/rails_admin/pull/3398), [#3239](https://github.com/railsadminteam/rails_admin/issues/3239))
- Fix 'no objects' message not showing up in filtering-multiselect widget ([aa5545c](https://github.com/railsadminteam/rails_admin/commit/aa5545c928ce0de80142966c19b64be76d88286f))
- Fix 'Delete Image' translation does not work well in some languages ([#3382](https://github.com/railsadminteam/rails_admin/pull/3382), [#3260](https://github.com/railsadminteam/rails_admin/issues/3260))
- Fix polymorphic associations don't work with namespaced classes ([#3377](https://github.com/railsadminteam/rails_admin/pull/3377), [#3376](https://github.com/railsadminteam/rails_admin/issues/3376))
- Fix Boolean pretty_value to include default fallback ([#3379](https://github.com/railsadminteam/rails_admin/pull/3379))
- Fix history#index not supporting models with custom version classes ([ed19f9e](https://github.com/railsadminteam/rails_admin/commit/ed19f9e793b91de1c2bc9133e026b0396e6ec777))
- Fix models stored in eager_load_paths are not picked up by #viable_models ([#3373](https://github.com/railsadminteam/rails_admin/issues/3373), [238f18e](https://github.com/railsadminteam/rails_admin/commit/238f18ee2386f9858670b7995dcb628b8fe6bde9))
- Fix polymorphic associations don't work with namespaced classes([#3376](https://github.com/railsadminteam/rails_admin/issues/3376))

## [2.2.1](https://github.com/railsadminteam/rails_admin/tree/v2.2.0) - 2021-08-08

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.2.0...v2.2.1)

### Fixed

- Fix missing select options for single-select enum filters([#3372](https://github.com/railsadminteam/rails_admin/pull/3372))

## [2.2.0](https://github.com/railsadminteam/rails_admin/tree/v2.2.0) - 2021-07-24

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.1.1...v2.2.0)

### Added

- Support for PaperTrail's alternative versions association name([#3354](https://github.com/railsadminteam/rails_admin/pull/3354))

### Changed

- Update jQuery to 3.x with introducing jQuery.migrate([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421), [#3370](https://github.com/railsadminteam/rails_admin/pull/3370))
- Update Moment.js to 2.29.1([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421), [7962a194](https://github.com/railsadminteam/rails_admin/commit/7962a19469a709c00f481a50a6d1e7ddd1e37cc6))
- Update Bootstrap to 3.4.1([#3348](https://github.com/railsadminteam/rails_admin/pull/3348), [973dee06](https://github.com/railsadminteam/rails_admin/commit/973dee065938a58d1aef4119a4bc90ac15792421))
- Update Bootstrap Datetime Picker to 4.17.49([7962a194](https://github.com/railsadminteam/rails_admin/commit/7962a19469a709c00f481a50a6d1e7ddd1e37cc6))

### Removed

- Remove unnecessary devise patch([#3352](https://github.com/railsadminteam/rails_admin/pull/3352))

### Fixed

- Zeitwerk incompatibility([#3190](https://github.com/railsadminteam/rails_admin/issues/3328), [97ccc289](https://github.com/railsadminteam/rails_admin/commit/97ccc28940d65fee53b30c409c49032fbb0885db))

## [2.1.1](https://github.com/railsadminteam/rails_admin/tree/v2.1.1) - 2021-03-14

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.1.0...v2.1.1)

### Fixed

- Fix AbstractObject's proxying was incompatible with keyword arguments in Ruby 3.0 ([#3342](https://github.com/railsadminteam/rails_admin/issues/3342))

## [2.1.0](https://github.com/railsadminteam/rails_admin/tree/v2.1.0) - 2021-02-28

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.2...v2.1.0)

### Added

- Ability to set default filter operator for fields ([#3318](https://github.com/railsadminteam/rails_admin/pull/3318))
- Shrine 3.x support ([#3257](https://github.com/railsadminteam/rails_admin/pull/3257))
- Rails 6.1 compatibility ([f0c46f1e](https://github.com/railsadminteam/rails_admin/commit/f0c46f1e128b5d31d812ff3a80d15db8692c848b))

### Fixed

- Some translation entries of filtering-multiselect weren't localizable ([#3315](https://github.com/railsadminteam/rails_admin/pull/3315))
- Thumbnail generation breaks when used with ActiveStorage 6.x and ruby-vips ([#3255](https://github.com/railsadminteam/rails_admin/pull/3255), [2dba791c](https://github.com/railsadminteam/rails_admin/commit/2dba791c9135b3202d662f90fac443d282869bd6))
- Hide present/blank filter options for required fields ([#3340](https://github.com/railsadminteam/rails_admin/pull/3340))
- Fix to show correct filename for multiple attachments ([#3295](https://github.com/railsadminteam/rails_admin/pull/3295))
- Fix encoding detection was incompatible with DB connection proxies like active_record_host_pool gem ([#3313](https://github.com/railsadminteam/rails_admin/pull/3313))
- Fix hidden fields breaking indentation ([#3278](https://github.com/railsadminteam/rails_admin/pull/3278), [#2487](https://github.com/railsadminteam/rails_admin/issues/2487))

### Removed

- Remove `yell_for_non_accessible_fields` option since it has no effect since 0.5.0 ([#3249](https://github.com/railsadminteam/rails_admin/pull/3249))

## [2.0.2](https://github.com/railsadminteam/rails_admin/tree/v2.0.2) - 2020-03-17

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.1...v2.0.2)

### Fixed

- Fix to use I18n to translate the button 'Reset filters'([#3248](https://github.com/railsadminteam/rails_admin/pull/3248))

### Security

- Fix XSS vulnerability in nested forms([d72090ec](https://github.com/railsadminteam/rails_admin/commit/d72090ec6a07c3b9b7b48ab50f3d405f91ff4375))

## [2.0.1](https://github.com/railsadminteam/rails_admin/tree/v2.0.1) - 2019-12-31

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0...v2.0.1)

### Fixed

- Fix Zeitwerk incompatible behavior of autoloading constants during initialization([#3190](https://github.com/railsadminteam/rails_admin/issues/3190), [e275012b](https://github.com/railsadminteam/rails_admin/commit/e275012b630453cb1187e71a938382a3c5d3ef39))
- Fix empty fields being hidden regardless of `compact_show_view`([#3213](https://github.com/railsadminteam/rails_admin/pull/3213))
- Fix `filter_scope` not using `default_search_operator` as default([#3212](https://github.com/railsadminteam/rails_admin/pull/3212))
- Fix PaperTrail integration returning `nil` as username instead of `whodunnit`([#3210](https://github.com/railsadminteam/rails_admin/pull/3210))
- Fix Sprockets 4 incompatibility of vendorized Fontawesome([#3204](https://github.com/railsadminteam/rails_admin/issues/3204), [#3207](https://github.com/railsadminteam/rails_admin/pull/3207))

### Security

- Update moment.js to 2.24.0 to address security vulnerability([#3182](https://github.com/railsadminteam/rails_admin/issues/3182), [#3201](https://github.com/railsadminteam/rails_admin/pull/3201))

## [2.0.0](https://github.com/railsadminteam/rails_admin/tree/v2.0.0) - 2019-08-18

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0.rc...v2.0.0)

### Fixed

- Fix support for belongs_to with custom primary key was broken in 2.0.0.rc([#3184](https://github.com/railsadminteam/rails_admin/issues/3184), [0e92ca43](https://github.com/railsadminteam/rails_admin/commit/0e92ca43fe7782a8d62ae9285a8d3de7857c9853))
- Fix missing translation `en.admin.misc.ago`([#3180](https://github.com/railsadminteam/rails_admin/pull/3180))

## [2.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v2.0.0.rc) - 2019-08-04

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v2.0.0.beta...v2.0.0.rc)

### Added

- Add Support for CarrierWave 2.0 multiple file upload's keep, append and reorder feature([fb093e04](https://github.com/railsadminteam/rails_admin/commit/fb093e04502e7bff30594f5baf1227abb7199384))
- Add ability to configure way how custom actions show up in root/top/sidebar navigation([#2844](https://github.com/railsadminteam/rails_admin/pull/2844))

### Changed

- [BREAKING CHANGE] Stop authorization adapters assigning attributes on create and update, just check for permission instead([#3120](https://github.com/railsadminteam/rails_admin/pull/3120), [c84d1703](https://github.com/railsadminteam/rails_admin/commit/c84d1703b47b396382d152471dac8fc8dc41aefd))
- [BREAKING CHANGE] Do not show tableless models by default([#3157](https://github.com/railsadminteam/rails_admin/issues/3157), [87b38b33](https://github.com/railsadminteam/rails_admin/commit/87b38b336cc668a74803dec4628215e2e2941248))
- [BREAKING CHANGE] Convert empty string into nil for nullable string-like fields to achieve uniqueness-index friendliness([#2099](https://github.com/railsadminteam/rails_admin/issues/2099), [#3172](https://github.com/railsadminteam/rails_admin/issues/3172), [3f9ab1cc](https://github.com/railsadminteam/rails_admin/commit/3f9ab1cc009caa8b466f34da692c3561da2235e4))
- Extract head from application template for ease of customization([#3114](https://github.com/railsadminteam/rails_admin/pull/3114))
- Rename `delete_key` to `delete_value`, used to identify which file to delete in multiple file upload([8b8c3a44](https://github.com/railsadminteam/rails_admin/commit/8b8c3a44177465823128e9b48b11467ccf7db001))
- Get rid of CoffeeScript, use plain JavaScript instead([#3111](https://github.com/railsadminteam/rails_admin/issues/3111), [#3168](https://github.com/railsadminteam/rails_admin/pull/3168))
- Replace sass-rails with sassc-rails([#3156](https://github.com/railsadminteam/rails_admin/pull/3156))

### Removed

- Drop support for CanCan, please use its successor CanCanCan([6b7495f1](https://github.com/railsadminteam/rails_admin/commit/6b7495f1454e30027a9d77b911206cc7703170a3))
- Drop support for CanCanCan legacy `can :dashboard` style dashboard ability notation([5bebac24](https://github.com/railsadminteam/rails_admin/commit/5bebac2488906f3739717108efadedaa091ccaf5))
- Drop Refile support due to maintenance inactivity([25ae06a9](https://github.com/railsadminteam/rails_admin/commit/25ae06a9a6eb534afa4a5f17e64ca346086bb3b8))

### Fixed

- Fix PaperTrail pagination breaks when Kaminari's `page_method_name` is set([#3170](https://github.com/railsadminteam/rails_admin/issues/3170), [136b943c](https://github.com/railsadminteam/rails_admin/commit/136b943ce842eba6b0a13dc2956ddc9ce20d006c))
- Fix failing to pass config location to CKEditor([#3162](https://github.com/railsadminteam/rails_admin/issues/3162), [c38b76d7](https://github.com/railsadminteam/rails_admin/commit/c38b76d707f198be0ac8baa1ff02dde7bd02344f))
- Fix CarrierWave multiple file uploader breaking when used with Fog([#3070](https://github.com/railsadminteam/rails_admin/issues/3070))
- Fix placeholder being picked up as a selection in filtering-multiselect([#2807](https://github.com/railsadminteam/rails_admin/issues/2807), [15502601](https://github.com/railsadminteam/rails_admin/commit/15502601ccd0bbbaeb364a0ee605f360d65c5cbb))
- Fix breaking with has_many and custom primary key([#1878](https://github.com/railsadminteam/rails_admin/issues/1878), [be7d2f4a](https://github.com/railsadminteam/rails_admin/commit/be7d2f4a3ad1fda788f92a0e0dd4a83b98f141f4))
- Fix to choose right LIKE statement in per-model basis([#1676](https://github.com/railsadminteam/rails_admin/issues/1676), [4ea4575e](https://github.com/railsadminteam/rails_admin/commit/4ea4575e934e26cec4a5b214b9fe68cb96b40247))
- Fix polymorphic associations not using STI base classes for polymorphic type([#2136](https://github.com/railsadminteam/rails_admin/pull/2136))

### Security

- Add `rel="noopener"` to all `target="_blank"` links to prevent Reverse tabnabbing([#2960](https://github.com/railsadminteam/rails_admin/issues/2960), [#3169](https://github.com/railsadminteam/rails_admin/pull/3169))

## [2.0.0.beta](https://github.com/railsadminteam/rails_admin/tree/v2.0.0.beta) - 2019-06-08

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.2...v2.0.0.beta)

### Added

- Rails 6 support([#3122](https://github.com/railsadminteam/rails_admin/pull/3122))
- ActionText support([#3144](https://github.com/railsadminteam/rails_admin/issues/3144), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/ActionText))
- sass-rails 6 support([#3129](https://github.com/railsadminteam/rails_admin/issues/3129))
- Sidescroll feature([#3017](https://github.com/railsadminteam/rails_admin/pull/3017), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/Horizontally-scrolling-table-with-frozen-columns-in-list-view))
- Custom search feature([#343](https://github.com/railsadminteam/rails_admin/issues/343), [#3019](https://github.com/railsadminteam/rails_admin/pull/3019), [Wiki](https://github.com/railsadminteam/rails_admin/wiki/Custom-Search))
- Filtering-select feature for polymorphic association([#2886](https://github.com/railsadminteam/rails_admin/pull/2886))
- Shrine support([#3081](https://github.com/railsadminteam/rails_admin/pull/3081))
- Flexibility for localication of _time_ ago([#3135](https://github.com/railsadminteam/rails_admin/pull/3135), [49add741](https://github.com/railsadminteam/rails_admin/commit/49add7413794e2a1423b86399ef476414d22970f))

### Changed

- Vendorize font-awesome to allow using different version in app([#3039](https://github.com/railsadminteam/rails_admin/issues/3039))
- Stop inlining JavaScripts for CSP friendliness([#3087](https://github.com/railsadminteam/rails_admin/issues/3087))
- Richtext editors now uses CDN-hosted assets([#3126](https://github.com/railsadminteam/rails_admin/issues/3126))

### Removed

- Remove deprecated DSL syntax for richtext editors([e0b390d9](https://github.com/railsadminteam/rails_admin/commit/e0b390d99eab64c99f1f3cccae2029649e90e11c))
- Drop support for Ruby 2.1 and Rails 4.x([dd247804](https://github.com/railsadminteam/rails_admin/commit/dd24780445f4dd676ae033c69a5b64347b80c3bc))

### Fixed

- Fix Mongoid query and filter parsing value twice([#2755](https://github.com/railsadminteam/rails_admin/issues/2755))
- Fix thread-safety issues([#2897](https://github.com/railsadminteam/rails_admin/issues/2897), [#2942](https://github.com/railsadminteam/rails_admin/issues/2942), [1d22bc66](https://github.com/railsadminteam/rails_admin/commit/1d22bc66168ac9ea478ea95b4b3b79f41263c0bd))
- Fix compact_show_view not showing Boolean falses([#2416](https://github.com/railsadminteam/rails_admin/issues/2416))
- Fix PaperTrail fail to fetch versions for STI subclasses([#2865](https://github.com/railsadminteam/rails_admin/pull/2865))
- Fix Dragonfly factory breaks if a model not extending Dragonfly::Model is passed([#2720](https://github.com/railsadminteam/rails_admin/pull/2720))
- Fix PaperTrail adapter not using Kaminari's `page_method_name` for pagination([#2712](https://github.com/railsadminteam/rails_admin/pull/2712))
- Fix #bulk_menu was not using passed `abstract_model` ([#2782](https://github.com/railsadminteam/rails_admin/pull/2782))
- Fix wrong styles when using multiple instances of CodeMirror([#3107](https://github.com/railsadminteam/rails_admin/pull/3107))
- Fix password being cleared when used with Devise 4.6([72bc0373](https://github.com/railsadminteam/rails_admin/commit/72bc03736162ffef8e5b99f42ca605d17fe7e7d0))
- ActiveStorage factory caused const missing for Mongoid([#3088](https://github.com/railsadminteam/rails_admin/pull/3088), [db927687](https://github.com/railsadminteam/rails_admin/commit/db9276879c8e8c5e8772261725ef0e0cdadd9cf1))
- Fix exact matches were using LIKE, which was not index-friendly([#3000](https://github.com/railsadminteam/rails_admin/pull/3000))
- Middleware check failed when using RedisStore([#3076](https://github.com/railsadminteam/rails_admin/issues/3076))
- Fix field being reset to default after an error([#3066](https://github.com/railsadminteam/rails_admin/pull/3066))

## [1.4.2](https://github.com/railsadminteam/rails_admin/tree/v1.4.2) - 2018-09-23

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.1...v1.4.2)

### Fixed

- Fix `can't modify frozen Array` error on startup([#3060](https://github.com/railsadminteam/rails_admin/issues/3060))
- Fix deprecation warning with PaperTrail.whodunnit([#3059](https://github.com/railsadminteam/rails_admin/pull/3059))

## [1.4.1](https://github.com/railsadminteam/rails_admin/tree/v1.4.1) - 2018-08-19

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.4.0...v1.4.1)

### Fixed

- Export crashes for models with JSON field([#3056](https://github.com/railsadminteam/rails_admin/pull/3056))
- Middlewares being mangled by engine initializer, causing app's session store configuration to be overwritten([#3048](https://github.com/railsadminteam/rails_admin/issues/3048), [59478af9](https://github.com/railsadminteam/rails_admin/commit/59478af9a05c76bdfe35e94e63c60ba89c27a483))

## [1.4.0](https://github.com/railsadminteam/rails_admin/tree/v1.4.0) - 2018-07-22

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.3.0...v1.4.0)

### Added

- Support for ActiveStorage([#2990](https://github.com/railsadminteam/rails_admin/issues/2990), [#3037](https://github.com/railsadminteam/rails_admin/pull/3037))
- Support for multiple file upload for ActiveStorage and CarrierWave ([5bb2d375](https://github.com/railsadminteam/rails_admin/commit/5bb2d375a236268e51c7e8682c2d110d9e52970f))
- Support for Mongoid 7.0([9ef623f6](https://github.com/railsadminteam/rails_admin/commit/9ef623f6cba73adbf86833d9eb07f1be3924a133), [#3013](https://github.com/railsadminteam/rails_admin/issues/3013))
- Support for CanCanCan 2.0([a32d49e4](https://github.com/railsadminteam/rails_admin/commit/a32d49e4b96944905443588a1216b3362ee64c1a), [#2901](https://github.com/railsadminteam/rails_admin/issues/2901))
- Support for Pundit 2.0([bc60c978](https://github.com/railsadminteam/rails_admin/commit/bc60c978adfebe09cdad2c199878d8ff966374f1))
- Support for jquery-ui-rails 6.0([#2951](https://github.com/railsadminteam/rails_admin/issues/2951), [#3003](https://github.com/railsadminteam/rails_admin/issues/3003))

### Fixed

- Make code reloading work([#3041](https://github.com/railsadminteam/rails_admin/pull/3041))
- Improved support for Rails API mode, requiring needed middlewares in engine's initializer([#2919](https://github.com/railsadminteam/rails_admin/issues/2919), [#3006](https://github.com/railsadminteam/rails_admin/pull/3006))
- Make the link text to uploaded file shorter, instead of showing full url([#2983](https://github.com/railsadminteam/rails_admin/pull/2983))
- Fix duplication of filters on browser back([#2998](https://github.com/railsadminteam/rails_admin/pull/2998))
- Fix "can't modify frozen array" exception on code reload([#2999](https://github.com/railsadminteam/rails_admin/pull/2999))
- Fix incorrectly comparing numeric columns with empty string when handling blank operator([#3007](https://github.com/railsadminteam/rails_admin/pull/3007))

## [1.3.0](https://github.com/railsadminteam/rails_admin/tree/v1.3.0) - 2018-02-18

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.2.0...v1.3.0)

### Added

- Configurability for forgery protection setting([#2989](https://github.com/railsadminteam/rails_admin/pull/2989))
- Configurability for the number of audit records displayed into dashboard([#2982](https://github.com/railsadminteam/rails_admin/pull/2982))
- Add limited pagination mode, which doesn't require count query([#2968](https://github.com/railsadminteam/rails_admin/pull/2968))
- Prettier output of JSON field value([#2937](https://github.com/railsadminteam/rails_admin/pull/2937), [#2973](https://github.com/railsadminteam/rails_admin/pull/2973), [#2980](https://github.com/railsadminteam/rails_admin/pull/2980))
- Add markdown field support through SimpleMDE([#2949](https://github.com/railsadminteam/rails_admin/pull/2949))
- Checkboxes for bulk actions in index page can be turned off now([#2917](https://github.com/railsadminteam/rails_admin/pull/2917))

### Fixed

- Parse JS translations as JSON([#2925](https://github.com/railsadminteam/rails_admin/pull/2925))
- Re-selecting an item after unselecting has no effect in filtering-multiselect([#2912](https://github.com/railsadminteam/rails_admin/issues/2912))
- Stop memoization of datetime parser to handle locale changes([#2824](https://github.com/railsadminteam/rails_admin/pull/2824))
- Filters for ActiveRecord Enum field behaved incorrectly for enums whose labels are different from values([#2971](https://github.com/railsadminteam/rails_admin/pull/2971))
- Client-side required validation was not enforced in filtering-select widget([#2905](https://github.com/railsadminteam/rails_admin/pull/2905))
- Filter refresh button was broken([#2890](https://github.com/railsadminteam/rails_admin/pull/2890))

### Security

- Fix XSS vulnerability in filter and multi-select widget([#2985](https://github.com/railsadminteam/rails_admin/issues/2985), [44f09ed7](https://github.com/railsadminteam/rails_admin/commit/44f09ed72b5e0e917a5d61bd89c48d97c494b41c))

## [1.2.0](https://github.com/railsadminteam/rails_admin/tree/v1.2.0) - 2017-05-31

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.1.1...v1.2.0)

### Added

- Add ILIKE support for PostgreSQL/PostGIS adapter, multibyte downcase for other adapters([#2766](https://github.com/railsadminteam/rails_admin/pull/2766))
- Support for UUID query([#2766](https://github.com/railsadminteam/rails_admin/pull/2766))
- Support for Haml 5([#2840](https://github.com/railsadminteam/rails_admin/pull/2840), [#2870](https://github.com/railsadminteam/rails_admin/pull/2870), [#2877](https://github.com/railsadminteam/rails_admin/pull/2877))
- Add instance option to append a CSS class for rows([#2860](https://github.com/railsadminteam/rails_admin/pull/2860))

### Fixed

- Remove usage of alias_method_chain, deprecated in Rails 5.0([#2864](https://github.com/railsadminteam/rails_admin/pull/2864))
- Load models from eager_load, not autoload_paths([#2771](https://github.com/railsadminteam/rails_admin/pull/2771))
- jQuery 3.0 doesn't have size(), use length instead([#2841](https://github.com/railsadminteam/rails_admin/pull/2841))
- Prepopulation of the new form didn't work with namespaced models([#2701](https://github.com/railsadminteam/rails_admin/pull/2701))

## [1.1.1](https://github.com/railsadminteam/rails_admin/tree/v1.1.1) - 2016-12-25

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.1.0...v1.1.1)

### Fixed

- CSV export broke with empty tables([#2796](https://github.com/railsadminteam/rails_admin/issues/2796), [#2797](https://github.com/railsadminteam/rails_admin/pull/2797))
- ActiveRecord adapter's #encoding did not work with Oracle enhanced adapter([#2789](https://github.com/railsadminteam/rails_admin/pull/2789))
- ActiveRecord 5 belongs_to presence validators were unintentionally disabled due to initialization mishandling([#2785](https://github.com/railsadminteam/rails_admin/issues/2785), [#2786](https://github.com/railsadminteam/rails_admin/issues/2786))
- Destroy failure caused subsequent index action to return 404, instead of 200([#2775](https://github.com/railsadminteam/rails_admin/issues/2775), [#2776](https://github.com/railsadminteam/rails_admin/pull/2776))
- CSVConverter#to_csv now accepts string-keyed hashes([#2740](https://github.com/railsadminteam/rails_admin/issues/2740), [#2741](https://github.com/railsadminteam/rails_admin/pull/2741))

### Security

- Fix CSRF vulnerability([b13e879e](https://github.com/railsadminteam/rails_admin/commit/b13e879eb93b661204e9fb5e55f7afa4f397537a))

## [1.1.0](https://github.com/railsadminteam/rails_admin/tree/v1.1.0) - 2016-10-30

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.0.0...v1.1.0)

### Added

- DSL for association eager-loading([#1325](https://github.com/railsadminteam/rails_admin/issues/1325), [#1342](https://github.com/railsadminteam/rails_admin/issues/1342))

### Fixed

- Fix nested has_many form failing to add items([#2737](https://github.com/railsadminteam/rails_admin/pull/2737))

## [1.0.0](https://github.com/railsadminteam/rails_admin/tree/v1.0.0) - 2016-09-19

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v1.0.0.rc...v1.0.0)

### Added

- Introduce setup hook for authorization/auditing adapters([ba2088c6](https://github.com/railsadminteam/rails_admin/commit/ba2088c6ecabd354b4b67c50bb00fccdbd1e6240))
- Add viewport meta tag for mobile layout adjustment([#2664](https://github.com/railsadminteam/rails_admin/pull/2664))
- Support for ActiveRecord::Enum using string columns([#2680](https://github.com/railsadminteam/rails_admin/pull/2680))

### Changed

- Limit children for deletion notice([#2491](https://github.com/railsadminteam/rails_admin/pull/2491))
- [BREAKING CHANGE] Change parent controller to ActionController::Base for out-of-box support of Rails 5 API mode([#2688](https://github.com/railsadminteam/rails_admin/issues/2688))
  - To keep old behavior, add `config.parent_controller = '::ApplicationController'` in your RailsAdmin initializer.

### Fixed

- ActiveRecord Enum fields could not be updated correctly([#2659](https://github.com/railsadminteam/rails_admin/pull/2659), [#2713](https://github.com/railsadminteam/rails_admin/issues/2713))
- Fix performance issue with filtering-multiselect widget([#2715](https://github.com/railsadminteam/rails_admin/pull/2715))
- Restore back rails_admin_controller?([#2268](https://github.com/railsadminteam/rails_admin/issues/2268))
- Duplication of autocomplete fields when using browser back/forward buttons([#2677](https://github.com/railsadminteam/rails_admin/issues/2677), [#2678](https://github.com/railsadminteam/rails_admin/pull/2678))
- Filter refresh button was broken([#2705](https://github.com/railsadminteam/rails_admin/issues/2705), [#2706](https://github.com/railsadminteam/rails_admin/pull/2706))
- Fix presence filtering on boolean columns([#1099](https://github.com/railsadminteam/rails_admin/issues/1099), [#2675](https://github.com/railsadminteam/rails_admin/pull/2675))
- Pundit::AuthorizationNotPerformedError was raised when used with Pundit([#2683](https://github.com/railsadminteam/rails_admin/pull/2683))

## [1.0.0.rc](https://github.com/railsadminteam/rails_admin/tree/v1.0.0.rc) - 2016-07-18

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.8.1...v1.0.0.rc)

### Added

- Rails 5 support
- PaperTrail 5 support([9c42783a](https://github.com/railsadminteam/rails_admin/commit/9c42783aa65b704f4a5d467608c49b746c47b81b))
- Support for multiple configuration blocks([#1781](https://github.com/railsadminteam/rails_admin/pull/1781), [#2670](https://github.com/railsadminteam/rails_admin/pull/2670))
- Default association limit is now configurable([#2508](https://github.com/railsadminteam/rails_admin/pull/2058))

### Changed

- Prefix kaminari bootstrap views with `ra-` to avoid name conflict([#2283](https://github.com/railsadminteam/rails_admin/issues/2283), [#2651](https://github.com/railsadminteam/rails_admin/pull/2651))
- Gravatar icon is now optional([#2570](https://github.com/railsadminteam/rails_admin/pull/2570))
- Improve bootstrap-wysihtml5-rails support([#2650](https://github.com/railsadminteam/rails_admin/pull/2650))
- Explicitly call the #t method on I18n([#2564](https://github.com/railsadminteam/rails_admin/pull/2564))
- Improve dashboard performance by querying with id instead of updated_at([#2514](https://github.com/railsadminteam/rails_admin/issues/2514), [#2551](https://github.com/railsadminteam/rails_admin/pull/2551))
- Improve encoding support in CSV converter([#2508](https://github.com/railsadminteam/rails_admin/pull/2508), [dca8911f](https://github.com/railsadminteam/rails_admin/commit/dca8911f240ea11ebb186c33573188aa9e1b031d))
- Add SVG file extension to the image detection method([#2533](https://github.com/railsadminteam/rails_admin/pull/2533))
- Update linear gradient syntax to make autoprefixer happy([#2531](https://github.com/railsadminteam/rails_admin/pull/2531))
- Improve export layout ([#2505](https://github.com/railsadminteam/rails_admin/pull/2505))

### Removed

- Remove safe_yaml dependency([#2397](https://github.com/railsadminteam/rails_admin/pull/2397))
- Drop support for Ruby < 2.1.0

### Fixed

- Pagination did not work when showing all history([#2553](https://github.com/railsadminteam/rails_admin/pull/2553))
- Make filter-box label clickable([#2573](https://github.com/railsadminteam/rails_admin/pull/2573))
- Colorpicker form did not have the default css class `form-control`([#2571](https://github.com/railsadminteam/rails_admin/pull/2571))
- Stop assuming locale en is available([#2155](https://github.com/railsadminteam/rails_admin/issues/2155))
- Fix undefined method error with nested polymorphics([#1338](https://github.com/railsadminteam/rails_admin/issues/1338), [#2110](https://github.com/railsadminteam/rails_admin/pull/2110))
- Fix issue with nav does not check pjax config from an action([#2309](https://github.com/railsadminteam/rails_admin/pull/2309))
- Model label should be pluralized with locale([#1983](https://github.com/railsadminteam/rails_admin/pull/1983))
- Fix delocalize strftime_format for DateTime.strptime to support minus([#2547](https://github.com/railsadminteam/rails_admin/pull/2547))
- Fix Syntax Error in removal of new nested entity([#2539](https://github.com/railsadminteam/rails_admin/pull/2539))
- Fix momentjs translations for '%-d' format day of the month([#2540](https://github.com/railsadminteam/rails_admin/pull/2540))
- Fix Mongoid BSON object field ([#2495](https://github.com/railsadminteam/rails_admin/issues/2495))
- Make browser ignore validations of removed nested child models([#2443](https://github.com/railsadminteam/rails_admin/issues/2443), [#2490](https://github.com/railsadminteam/rails_admin/pull/2490))

## [0.8.1](https://github.com/railsadminteam/rails_admin/tree/v0.8.1) - 2015-11-24

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.8.0...v0.8.1)

### Fixed

- `vendor/` directory was missing from gemspec([#2481](https://github.com/railsadminteam/rails_admin/issues/2481), [#2482](https://github.com/railsadminteam/rails_admin/pull/2482))

## [0.8.0](https://github.com/railsadminteam/rails_admin/tree/v0.8.0) - 2015-11-23

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.7.0...v0.8.0)

### Added

- Feature to deactivate filtering-multiselect widget's remove buttons through `removable?` field option([#2446](https://github.com/railsadminteam/rails_admin/issues/2446))
- Pundit integration([#2399](https://github.com/railsadminteam/rails_admin/pull/2399) by Team CodeBenders, RGSoC'15)
- Refile support([#2385](https://github.com/railsadminteam/rails_admin/pull/2385))

### Changed

- Some UI improvements in export view([#2394](https://github.com/railsadminteam/rails_admin/pull/2394))
- `rails_admin/custom/variables.scss` is now imported first to take advantage of Sass's `default!`([#2404](https://github.com/railsadminteam/rails_admin/pull/2404))
- Proxy classes now inherit from BasicObject([#2434](https://github.com/railsadminteam/rails_admin/issues/2434))
- Show sidebar scrollbar only on demand([#2419](https://github.com/railsadminteam/rails_admin/pull/2419))
- RailsAdmin no longer gets excluded from NewRelic instrumentation by default([#2402](https://github.com/railsadminteam/rails_admin/pull/2402))
- Improve efficiency of filter query in Postgres([#2401](https://github.com/railsadminteam/rails_admin/pull/2401))
- Replace old jQueryUI datepicker with jQuery Bootstrap datetimepicker ([#2391](https://github.com/railsadminteam/rails_admin/pull/2391))
- Turn Hash#symbolize into a helper to prevent namespace conflict([#2388](https://github.com/railsadminteam/rails_admin/pull/2388))

### Removed

- The L10n translation `admin.misc.filter_date_format` datepicker search filters, has been dropped in favor of field oriented configuration ([#2391](https://github.com/railsadminteam/rails_admin/pull/2391))

### Fixed

- AR#count broke when default-scoped with select([#2129](https://github.com/railsadminteam/rails_admin/pull/2129), [#2447](https://github.com/railsadminteam/rails_admin/issues/2447))
- Datepicker could not handle Spanish date properly([#982](https://github.com/railsadminteam/rails_admin/issues/982), [#2451](https://github.com/railsadminteam/rails_admin/pull/2451))
- Paperclip's `attachment_definitions` does not exist unless `has_attached_file`-ed([#1674](https://github.com/railsadminteam/rails_admin/issues/1674))
- `.btn` class was used without a modifier([#2417](https://github.com/railsadminteam/rails_admin/pull/2417))
- Filtering-multiselect widget ignored order([#2231](https://github.com/railsadminteam/rails_admin/issues/2231), [#2412](https://github.com/railsadminteam/rails_admin/pull/2412))
- Add missing .alert-dismissible class to flash([#2411](https://github.com/railsadminteam/rails_admin/pull/2411))
- Keep field order on changing the existing field's type([#2409](https://github.com/railsadminteam/rails_admin/pull/2409))
- Add button for nested-many form in modal disappeared on click([#2372](https://github.com/railsadminteam/rails_admin/issues/2372), [#2383](https://github.com/railsadminteam/rails_admin/pull/2383))

### Security

- Fix XSS vulnerability in polymorphic select([#2479](https://github.com/railsadminteam/rails_admin/pull/2479))

## [0.7.0](https://github.com/railsadminteam/rails_admin/tree/v0.7.0) - 2015-08-16

[Full Changelog](https://github.com/railsadminteam/rails_admin/compare/v0.6.8...v0.7.0)

### Added

- Support for ActiveRecord::Enum ([#1993](https://github.com/railsadminteam/rails_admin/issues/1993))
- Multiselect-widget shows user friendly message, instead of just being blank ([#1369](https://github.com/railsadminteam/rails_admin/issues/1369), [#2360](https://github.com/railsadminteam/rails_admin/pull/2360))
- Configuration option to turn browser validation off ([#2339](https://github.com/railsadminteam/rails_admin/pull/2339), [#2373](https://github.com/railsadminteam/rails_admin/pull/2373))

### Changed

- Multiselect-widget inserts a new item to the bottom, instead of top ([#2167](https://github.com/railsadminteam/rails_admin/pull/2167))
- Migrated Cerulean theme to Bootstrap3 ([#2352](https://github.com/railsadminteam/rails_admin/pull/2352))
- Better html markup for input fields ([#2336](https://github.com/railsadminteam/rails_admin/pull/2336))
- Update filter dropdown button to Bootstrap3 ([#2277](https://github.com/railsadminteam/rails_admin/pull/2277))
- Improve navbar appearance ([#2310](https://github.com/railsadminteam/rails_admin/pull/2310))
- Do not monkey patch the app's YAML ([#2331](https://github.com/railsadminteam/rails_admin/pull/2331))

### Fixed

- Browser validation prevented saving of persisted upload fields ([#2376](https://github.com/railsadminteam/rails_admin/issues/2376))
- Fix inconsistent styling in static_navigation ([#2378](https://github.com/railsadminteam/rails_admin/pull/2378))
- Fix css regression for has_one and has_many nested form ([#2337](https://github.com/railsadminteam/rails_admin/pull/2337))
- HTML string inputs should not have a size attribute valorized with 0 ([#2335](https://github.com/railsadminteam/rails_admin/pull/2335))

### Security

- Fix XSS vulnerability in filtering-select widget
- Fix XSS vulnerability in association fields ([#2343](https://github.com/railsadminteam/rails_admin/issues/2343))


================================================
FILE: CONTRIBUTING.md
================================================
## Contributing

In the spirit of [free software][free-sw], **everyone** is encouraged to help
improve this project.

[free-sw]: http://www.fsf.org/licensing/essays/free-sw.html

Here are some ways _you_ can contribute:

- by using alpha, beta, and prerelease versions
- by triaging bug reports
- by writing or editing documentation
- by writing specifications
- by writing code (**no patch is too small**: fix typos, add comments, clean up
  inconsistent whitespace)
- by refactoring code
- by fixing [issues][]
- by reviewing patches
- by suggesting new features
- [financially][gittip]

[issues]: https://github.com/railsadminteam/rails_admin/issues
[gittip]: https://www.gittip.com/sferik/

## Development

### Running tests locally

To run the test suite, you need Google Chrome and ImageMagick (or GraphicsMagick).

Example installation on macOS using Homebrew:

```bash
# install imagemagick:
brew install imagemagick
# install google chrome with cask:
brew install brew-cask
brew install google-chrome --cask
# install mysql
brew install mysql
# install openssl
brew install openssl@3
```

Example installation on Ubuntu:

```bash
# install imagemagick:
sudo apt update -y && sudo apt install imagemagick -y
# install google chrome:
sudo apt update -y && wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && sudo apt install ./google-chrome-stable_current_amd64.deb -y
```

Then you need to do this one-time setup:

```bash
# On Mac, you may run into problems with the mysql2 gem that require flags to be set in bundle config
# See: https://github.com/brianmario/mysql2/issues/1345
bundle config build.mysql2 '-- --with-cflags="-Wno-error=implicit-function-declaration" --with-ldflags=-L/opt/homebrew/opt/zstd/lib'

bundle install
yarn install
# install dependencies for each appraisal:
bundle exec appraisal install
# precompile assets in the dummy app:
cd spec/dummy_app && yarn install && yarn build && yarn build:css && cd -
```

Then you will be able to run the specs:

```bash
bundle exec appraisal rails-7.0 rspec
```

### Tests run against multiple versions of Rails

In CI, we use [appraisal] to run tests against multiple versions of Rails. The
[gemfiles/ directory] contains the Gemfiles used to create the CI build matrix.
See the [GitHub Actions configuration] for more details on what Ruby versions
run what Rails versions.

[appraisal]: https://github.com/thoughtbot/appraisal
[gemfiles/ directory]: ./gemfiles
[github actions configuration]: ./.github/workflows/test.yml

## Getting Help

We use a [mailing list][list] for user support. If you've got a "how do
I do this?" or "this doesn't seem to work the way I expect" type of
issue or just want some help, please post a message to the [mailing
list][list].

## Submitting an Issue

If you're confident that you've found a bug in
rails_admin, please [open an issue][issues], but check to make sure it hasn't
already been submitted. When submitting a bug report, please include a
[Gist][] that includes a stack trace and any details that may be
necessary to reproduce the bug, including your gem version, Ruby
version, and operating system. Ideally, a bug report should include a
pull request with failing specs.

[gist]: https://gist.github.com/
[list]: http://groups.google.com/group/rails_admin

## Submitting a Pull Request

1. [Fork the repository.][fork]
2. Create a branch.
3. Add specs for your unimplemented feature or bug fix.
4. Run `bundle exec rake spec`. If your specs pass, return to step 3.
5. Implement your feature or bug fix.
6. Run `bundle exec rake default`. If your specs fail, return to step 5.
7. Run `open coverage/index.html`. If your changes are not completely covered
   by your tests, return to step 3.
8. Add, commit, and push your changes.
9. [Submit a pull request.][pr]

[fork]: http://help.github.com/fork-a-repo/
[pr]: http://help.github.com/send-pull-requests/


================================================
FILE: Gemfile
================================================
# frozen_string_literal: true

source 'https://rubygems.org'

gem 'appraisal', '>= 2.0'
gem 'devise', '~> 4.7'
gem 'net-smtp', require: false
gem 'rails'
gem 'sassc-rails', '~> 2.1'
gem 'turbo-rails'
gem 'vite_rails', require: false
gem 'webpacker', require: false
gem 'webrick'

group :development, :test do
  gem 'pry', '>= 0.9'
end

group :test do
  gem 'cancancan', '~> 3.0'
  gem 'carrierwave', ['>= 2.0.0.rc', '< 3']
  gem 'cuprite', '!= 0.15.1'
  gem 'database_cleaner-active_record', '>= 2.0', require: false
  gem 'dragonfly', '~> 1.0'
  gem 'factory_bot', '>= 4.2', '!= 6.4.5'
  gem 'generator_spec', '>= 0.8'
  gem 'kt-paperclip'
  gem 'launchy', '>= 2.2'
  gem 'mini_magick', '>= 3.4'
  gem 'pundit'
  gem 'rack-cache', require: 'rack/cache'
  gem 'rspec-expectations', '!= 3.8.3'
  gem 'rspec-rails', '>= 4.0.0.beta2'
  gem 'rspec-retry'
  gem 'rubocop', ['~> 1.20', '!= 1.22.2'], require: false
  gem 'rubocop-performance', require: false
  gem 'shrine', '~> 3.0'
  gem 'simplecov', '>= 0.9', require: false
  gem 'simplecov-lcov', require: false
  gem 'timecop', '>= 0.5'

  # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
  gem 'tzinfo-data', platforms: %i[mingw mswin x64_mingw jruby]
end

group :active_record do
  gem 'paper_trail', '>= 12.0'

  platforms :ruby, :mswin, :mingw, :x64_mingw do
    gem 'mysql2', '>= 0.3.14'
    gem 'pg', '>= 1.0.0'
    gem 'sqlite3', '>= 1.3.0'
  end
end

gemspec


================================================
FILE: LICENSE.md
================================================
Copyright (c) 2010-2016 Erik Michaels-Ober

Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:

The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


================================================
FILE: Procfile.teatro
================================================
web: cd spec/dummy_app && bundle exec rails server


================================================
FILE: README.md
================================================
# RailsAdmin

[![Gem Version](https://img.shields.io/gem/v/rails_admin.svg)][gem]
[![Build Status](https://github.com/railsadminteam/rails_admin/actions/workflows/test.yml/badge.svg)][ghactions]
[![Coverage Status](https://img.shields.io/coveralls/railsadminteam/rails_admin.svg)][coveralls]
[![Code Climate](https://codeclimate.com/github/railsadminteam/rails_admin.svg)][codeclimate]
[![SemVer](https://api.dependabot.com/badges/compatibility_score?dependency-name=rails_admin&package-manager=bundler&version-scheme=semver)][semver]

[gem]: https://rubygems.org/gems/rails_admin
[ghactions]: https://github.com/railsadminteam/rails_admin/actions/workflows/test.yml
[coveralls]: https://coveralls.io/r/railsadminteam/rails_admin
[codeclimate]: https://codeclimate.com/github/railsadminteam/rails_admin
[semver]: https://dependabot.com/compatibility-score.html?dependency-name=rails_admin&package-manager=bundler&version-scheme=semver

RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data.

## Getting started

- Check out [the docs][docs].
- Try the [live demo][demo]. ([Source code][dummy_app])

[demo]: https://rails-admin.fly.dev/admin/
[dummy_app]: https://github.com/railsadminteam/rails_admin/tree/master/spec/dummy_app
[docs]: https://github.com/railsadminteam/rails_admin/wiki

## Features

- CRUD any data with ease
- Custom actions
- Automatic form validation
- Search and filtering
- Export data to CSV/JSON/XML
- Authentication (via [Devise](https://github.com/plataformatec/devise) or other)
- Authorization (via [CanCanCan](https://github.com/CanCanCommunity/cancancan) or [Pundit](https://github.com/elabs/pundit))
- User action history (via [PaperTrail](https://github.com/airblade/paper_trail))
- Supported ORMs
  - ActiveRecord
  - Mongoid

## Installation

1. On your gemfile: `gem 'rails_admin', '~> 3.0'`
2. Run `bundle install`
3. Run `rails g rails_admin:install`
4. Provide a namespace for the routes when asked
5. Start a server `rails s` and administer your data at [/admin](http://localhost:3000/admin). (if you chose default namespace: /admin)

## Upgrading from 2.x

Due to introduction of Webpack/Webpacker support, some additional dependency and configuration will be needed.
Running `rails g rails_admin:install` will suggest you some required changes, based on current setup of your app.

## Configuration

### Global

In `config/initializers/rails_admin.rb`:

[Details](https://github.com/railsadminteam/rails_admin/wiki/Base-configuration)

To begin with, you may be interested in setting up [Devise](https://github.com/railsadminteam/rails_admin/wiki/Devise), [CanCanCan](https://github.com/railsadminteam/rails_admin/wiki/Cancancan) or [Papertrail](https://github.com/railsadminteam/rails_admin/wiki/Papertrail)!

### Per model

```ruby
class Ball < ActiveRecord::Base
  validates :name, presence: true
  belongs_to :player

  rails_admin do
    configure :player do
      label 'Owner of this ball: '
    end
  end
end
```

Details: [Models](https://github.com/railsadminteam/rails_admin/wiki/Models), [Groups](https://github.com/railsadminteam/rails_admin/wiki/Groups), [Fields](https://github.com/railsadminteam/rails_admin/wiki/Fields)

## Support

If you have a question, please check this README, the wiki, and the [list of
known issues][troubleshoot].

[troubleshoot]: https://github.com/railsadminteam/rails_admin/wiki/Troubleshoot

If you still have a question, you can ask the [official RailsAdmin mailing
list][list].

[list]: http://groups.google.com/group/rails_admin

If you think you found a bug in RailsAdmin, you can [submit an issue](https://github.com/railsadminteam/rails_admin/issues/new).

## Supported Ruby Versions

This library aims to support and is [tested against][ghactions] the following Ruby implementations:

- Ruby 2.6
- Ruby 2.7
- Ruby 3.0
- Ruby 3.1
- Ruby 3.2
- [JRuby][]

[jruby]: http://jruby.org/


================================================
FILE: Rakefile
================================================
# frozen_string_literal: true

# Add your own tasks in files placed in lib/tasks ending in .rake,
# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.

Dir['lib/tasks/*.rake'].each { |rake| load rake }

require 'bundler'
Bundler::GemHelper.install_tasks

require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)

task test: :spec

begin
  require 'rubocop/rake_task'
  RuboCop::RakeTask.new
rescue LoadError
  desc 'Run RuboCop'
  task :rubocop do
    warn 'Rubocop is disabled'
  end
end

task default: %i[spec rubocop]

namespace :vendorize do
  desc 'Tasks for vendorizing assets'

  task :flatpickr do
    Dir.chdir(__dir__)
    flatpickr = File.read('node_modules/flatpickr/dist/flatpickr.js')
    locales = Dir.glob('node_modules/flatpickr/dist/l10n/*.js').map { |f| File.read(f) }
    File.write('vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js', ([flatpickr] + locales).join("\n"))
  end
end


================================================
FILE: app/assets/javascripts/rails_admin/application.js.erb
================================================
//=  require 'rails-ujs'
//=  require 'turbo'
//=  require 'rails_admin/jquery3'
//=  require 'jquery_nested_form'
//=  require 'rails_admin/jquery-ui/effect'
//=  require 'rails_admin/jquery-ui/widgets/sortable'
//=  require 'rails_admin/jquery-ui/widgets/autocomplete'
//=  require 'rails_admin/flatpickr-with-locales'
//=  require 'rails_admin/popper'
//=  require 'rails_admin/bootstrap'

//=  require 'rails_admin/abstract-select'
//=  require 'rails_admin/filter-box'
//=  require 'rails_admin/filtering-multiselect'
//=  require 'rails_admin/filtering-select'
//=  require 'rails_admin/remote-form'
//=  require 'rails_admin/nested-form-hooks'
//=  require 'rails_admin/i18n'
//=  require 'rails_admin/widgets'
//=  require 'rails_admin/sidescroll'
//=  require 'rails_admin/ui'
//=  require 'rails_admin/custom/ui'

<% if defined?(ActiveStorage::Engine) %>
//= require activestorage
<% end %>
<% if defined?(ActionText::Engine) && Rails.gem_version >= Gem::Version.new('7.0') %>
//= require trix
//= require actiontext
<% end %>


================================================
FILE: app/assets/javascripts/rails_admin/custom/ui.js
================================================
// override this file in your application to add custom behaviour


================================================
FILE: app/assets/stylesheets/rails_admin/application.scss.erb
================================================
@charset "UTF-8";

/***  Variables  ***/

@import "rails_admin/custom/variables";
@import "rails_admin/styles/base/variables";

/***  Mixins  ***/

@import "rails_admin/styles/base/mixins";
@import "rails_admin/custom/mixins";

/***  Bootstrap ***/

@import "rails_admin/bootstrap/bootstrap";

/***  Libraries  ***/

@import "rails_admin/flatpickr";
@import "rails_admin/styles/filtering-select";
@import "rails_admin/styles/filtering-multiselect";
@import "rails_admin/styles/widgets";

/*** Font-awesome ***/

@import "rails_admin/font-awesome";

/***  RailsAdmin Theming  ***/

@import "rails_admin/styles/base/theming";
@import "rails_admin/custom/theming";

<% if defined?(ActionText::Engine) && Rails.gem_version >= Gem::Version.new('7.0') %>
@import "trix";
<% end %>


================================================
FILE: app/assets/stylesheets/rails_admin/custom/mixins.scss
================================================
/*
  Customize Sass mixins from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.
  Copy this file to your app/assets/rails_admin/custom/mixins.scss, leave this one untouched
  Don't require it in your application.rb

  Available mixins to use/override:

  https://github.com/twbs/bootstrap-sass/tree/master/assets/stylesheets/bootstrap/mixins
  https://github.com/railsadminteam/rails_admin/blob/master/src/rails_admin/styles/base/mixins.scss
  Plus the ones from your theme.
*/


================================================
FILE: app/assets/stylesheets/rails_admin/custom/theming.scss
================================================
/*
  Customize RailsAdmin theme here.
  Copy this file to your app/assets/stylesheets/rails_admin/custom/theming.scss, leave this one untouched
  Don't require it in your application.rb

  Look at the markup in RailsAdmin and go there to get inspiration from:

  http://getbootstrap.com

  Test me: (actual color should be the one defined in variables.scss if you did)

  body { background-color: $link-color; }
*/


================================================
FILE: app/assets/stylesheets/rails_admin/custom/variables.scss
================================================
/*
  Customize Sass variables from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.
  Copy this file to your app/assets/rails_admin/custom/variables.scss, leave this one untouched
  Don't require it in your application.rb

  Available variables to use/override:

  https://github.com/twbs/bootstrap-sass/blob/master/assets/stylesheets/bootstrap/_variables.scss
  https://github.com/railsadminteam/rails_admin/blob/master/src/rails_admin/styles/base/variables.scss
  Plus the ones from your themes.

  Test me: pink links

  $link-color: #F0F;
*/


================================================
FILE: app/controllers/rails_admin/application_controller.rb
================================================
# frozen_string_literal: true

require 'rails_admin/abstract_model'

module RailsAdmin
  class ModelNotFound < ::StandardError
  end

  class ObjectNotFound < ::StandardError
  end

  class ActionNotAllowed < ::StandardError
  end

  class ApplicationController < Config.parent_controller.constantize
    include RailsAdmin::Extensions::ControllerExtension

    protect_from_forgery(Config.forgery_protection_settings)

    before_action :_authenticate!
    before_action :_authorize!
    before_action :_audit!

    helper_method :_current_user, :_get_plugin_name

    attr_reader :object, :model_config, :abstract_model, :authorization_adapter

    def get_model
      @model_name = to_model_name(params[:model_name])
      raise RailsAdmin::ModelNotFound unless (@abstract_model = RailsAdmin::AbstractModel.new(@model_name))
      raise RailsAdmin::ModelNotFound if (@model_config = @abstract_model.config).excluded?

      @properties = @abstract_model.properties
    end

    def get_object
      raise RailsAdmin::ObjectNotFound unless (@object = @abstract_model.get(params[:id], @model_config.scope))
    end

    def to_model_name(param)
      param.split('~').collect(&:camelize).join('::')
    end

    def _current_user
      instance_eval(&RailsAdmin::Config.current_user_method)
    end

  private

    def _get_plugin_name
      @plugin_name_array ||= [RailsAdmin.config.main_app_name.is_a?(Proc) ? instance_eval(&RailsAdmin.config.main_app_name) : RailsAdmin.config.main_app_name].flatten
    end

    def _authenticate!
      instance_eval(&RailsAdmin::Config.authenticate_with)
    end

    def _authorize!
      instance_eval(&RailsAdmin::Config.authorize_with)
    end

    def _audit!
      instance_eval(&RailsAdmin::Config.audit_with)
    end

    def rails_admin_controller?
      true
    end

    rescue_from RailsAdmin::ObjectNotFound do
      flash[:error] = I18n.t('admin.flash.object_not_found', model: @model_name, id: params[:id])
      params[:action] = 'index'
      @status_code = :not_found
      index
    end

    rescue_from RailsAdmin::ModelNotFound do
      flash[:error] = I18n.t('admin.flash.model_not_found', model: @model_name)
      params[:action] = 'dashboard'
      @status_code = :not_found
      dashboard
    end
  end
end


================================================
FILE: app/controllers/rails_admin/main_controller.rb
================================================
# frozen_string_literal: true

module RailsAdmin
  class MainController < RailsAdmin::ApplicationController
    include ActionView::Helpers::TextHelper
    include RailsAdmin::MainHelper
    include RailsAdmin::ApplicationHelper

    before_action :check_for_cancel

    def bulk_action
      get_model
      process(params[:bulk_action]) if params[:bulk_action].in?(RailsAdmin::Config::Actions.all(:bulkable, controller: self, abstract_model: @abstract_model).collect(&:route_fragment))
    end

    def list_entries(model_config = @model_config, auth_scope_key = :index, additional_scope = get_association_scope_from_params, pagination = !(params[:associated_collection] || params[:all] || params[:bulk_ids]))
      scope = model_config.scope
      auth_scope = @authorization_adapter&.query(auth_scope_key, model_config.abstract_model)
      scope = scope.merge(auth_scope) if auth_scope
      scope = scope.instance_eval(&additional_scope) if additional_scope
      get_collection(model_config, scope, pagination)
    end

  private

    def action_missing(name, *_args)
      action = RailsAdmin::Config::Actions.find(name.to_sym)
      raise AbstractController::ActionNotFound.new("The action '#{name}' could not be found for #{self.class.name}") unless action

      get_model unless action.root?
      get_object if action.member?
      @authorization_adapter.try(:authorize, action.authorization_key, @abstract_model, @object)
      @action = action.with({controller: self, abstract_model: @abstract_model, object: @object})
      raise(ActionNotAllowed) unless @action.enabled?

      @page_name = wording_for(:title)

      instance_eval(&@action.controller)
    end

    def method_missing(name, *args, &block)
      action = RailsAdmin::Config::Actions.find(name.to_sym)
      if action
        action_missing name, *args, &block
      else
        super
      end
    end

    def respond_to_missing?(sym, include_private)
      if RailsAdmin::Config::Actions.find(sym)
        true
      else
        super
      end
    end

    def back_or_index
      allowed_return_to?(params[:return_to].to_s) ? params[:return_to] : index_path
    end

    def allowed_return_to?(url)
      url != request.fullpath && url.start_with?(request.base_url, '/') && !url.start_with?('//')
    end

    def get_sort_hash(model_config)
      field = model_config.list.fields.detect { |f| f.name.to_s == params[:sort] }
      # If no sort param, default to the `sort_by` specified in the list config
      field ||= model_config.list.possible_fields.detect { |f| f.name == model_config.list.sort_by.try(:to_sym) }

      column =
        if field.nil? || field.sortable == false # use default sort, asked field does not exist or is not sortable
          model_config.list.sort_by
        else
          field.sort_column
        end

      params[:sort_reverse] ||= 'false'
      {sort: column, sort_reverse: (params[:sort_reverse] == (field&.sort_reverse&.to_s || 'true'))}
    end

    def redirect_to_on_success
      notice = I18n.t('admin.flash.successful', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done"))
      if params[:_add_another]
        redirect_to new_path(return_to: params[:return_to]), flash: {success: notice}
      elsif params[:_add_edit]
        redirect_to edit_path(id: @object.id, return_to: params[:return_to]), flash: {success: notice}
      else
        redirect_to back_or_index, flash: {success: notice}
      end
    end

    def visible_fields(action, model_config = @model_config)
      model_config.send(action).with(controller: self, view: view_context, object: @object).visible_fields
    end

    def sanitize_params_for!(action, model_config = @model_config, target_params = params[@abstract_model.param_key])
      return unless target_params.present?

      fields = visible_fields(action, model_config)
      allowed_methods = fields.collect(&:allowed_methods).flatten.uniq.collect(&:to_s) << 'id' << '_destroy'
      fields.each { |field| field.parse_input(target_params) }
      target_params.slice!(*allowed_methods)
      target_params.permit! if target_params.respond_to?(:permit!)
      fields.select(&:nested_form).each do |association|
        children_params = association.multiple? ? target_params[association.method_name].try(:values) : [target_params[association.method_name]].compact
        (children_params || []).each do |children_param|
          sanitize_params_for!(:nested, association.associated_model_config, children_param)
        end
      end
    end

    def handle_save_error(whereto = :new)
      flash.now[:error] = I18n.t('admin.flash.error', name: @model_config.label, action: I18n.t("admin.actions.#{@action.key}.done").html_safe).html_safe
      flash.now[:error] += %(<br>- #{@object.errors.full_messages.join('<br>- ')}).html_safe

      respond_to do |format|
        format.html { render whereto, status: :not_acceptable }
        format.js   { render whereto, layout: 'rails_admin/modal', status: :not_acceptable, content_type: Mime[:html].to_s }
      end
    end

    def check_for_cancel
      return unless params[:_continue] || (params[:bulk_action] && !params[:bulk_ids])

      redirect_to(back_or_index, notice: I18n.t('admin.flash.noaction'))
    end

    def get_collection(model_config, scope, pagination)
      section = @action.key == :export ? model_config.export : model_config.list
      eager_loads = section.fields.flat_map(&:eager_load_values)
      options = {}
      options = options.merge(page: (params[Kaminari.config.param_name] || 1).to_i, per: (params[:per] || model_config.list.items_per_page)) if pagination
      options = options.merge(include: eager_loads) unless eager_loads.blank?
      options = options.merge(get_sort_hash(model_config))
      options = options.merge(query: params[:query]) if params[:query].present?
      options = options.merge(filters: params[:f]) if params[:f].present?
      options = options.merge(bulk_ids: params[:bulk_ids]) if params[:bulk_ids]
      model_config.abstract_model.all(options, scope)
    end

    def get_association_scope_from_params
      return nil unless params[:associated_collection].present?

      source_abstract_model = RailsAdmin::AbstractModel.new(to_model_name(params[:source_abstract_model]))
      source_model_config = source_abstract_model.config
      source_object = source_abstract_model.get(params[:source_object_id])
      action = params[:current_action].in?(%w[create update]) ? params[:current_action] : 'edit'
      @association = source_model_config.send(action).fields.detect { |f| f.name == params[:associated_collection].to_sym }.with(controller: self, object: source_object)
      @association.associated_collection_scope
    end
  end
end


================================================
FILE: app/helpers/rails_admin/application_helper.rb
================================================
# frozen_string_literal: true

module RailsAdmin
  module ApplicationHelper
    def authorized?(action_name, abstract_model = nil, object = nil)
      object = nil if object.try :new_record?
      action(action_name, abstract_model, object).try(:authorized?)
    end

    def current_action
      params[:action].in?(%w[create new]) ? 'create' : 'update'
    end

    def current_action?(action, abstract_model = @abstract_model, object = @object)
      @action.custom_key == action.custom_key &&
        abstract_model.try(:to_param) == @abstract_model.try(:to_param) &&
        (@object.try(:persisted?) ? @object.id == object.try(:id) : !object.try(:persisted?))
    end

    def action(key, abstract_model = nil, object = nil)
      RailsAdmin::Config::Actions.find(key, controller: controller, abstract_model: abstract_model, object: object)
    end

    def actions(scope = :all, abstract_model = nil, object = nil)
      RailsAdmin::Config::Actions.all(scope, controller: controller, abstract_model: abstract_model, object: object)
    end

    def edit_user_link
      return nil unless _current_user.try(:email).present?
      return nil unless (abstract_model = RailsAdmin.config(_current_user.class).abstract_model)

      edit_action = action(:edit, abstract_model, _current_user)
      authorized = edit_action.try(:authorized?)
      content = edit_user_link_label

      if authorized
        edit_url = rails_admin.url_for(
          action: edit_action.action_name,
          model_name: abstract_model.to_param,
          controller: 'rails_admin/main',
          id: _current_user.id,
        )

        link_to content, edit_url, class: 'nav-link'
      else
        content_tag :span, content, class: 'nav-link'
      end
    end

    def logout_path
      if defined?(Devise)
        scope = Devise::Mapping.find_scope!(_current_user)
        begin
          main_app.send("destroy_#{scope}_session_path")
        rescue StandardError
          false
        end
      elsif main_app.respond_to?(:logout_path)
        main_app.logout_path
      end
    end

    def logout_method
      return [Devise.sign_out_via].flatten.first if defined?(Devise)

      :delete
    end

    def wording_for(label, action = @action, abstract_model = @abstract_model, object = @object)
      model_config = abstract_model.try(:config)
      object = nil unless abstract_model && object.is_a?(abstract_model.model)
      action = RailsAdmin::Config::Actions.find(action.to_sym) if action.is_a?(Symbol) || action.is_a?(String)

      I18n.t(
        "admin.actions.#{action.i18n_key}.#{label}",
        model_label: model_config&.label,
        model_label_plural: model_config&.label_plural,
        object_label: model_config && object.try(model_config.object_label_method),
      )
    end

    def main_navigation
      nodes_stack = RailsAdmin::Config.visible_models(controller: controller)
      node_model_names = nodes_stack.collect { |c| c.abstract_model.model_name }
      parent_groups = nodes_stack.group_by { |n| n.parent&.to_s }

      nodes_stack.group_by(&:navigation_label).collect do |navigation_label, nodes|
        nodes = nodes.select { |n| n.parent.nil? || !n.parent.to_s.in?(node_model_names) }
        li_stack = navigation parent_groups, nodes

        label = navigation_label || t('admin.misc.navigation')

        collapsible_stack(label, 'main', li_stack)
      end.join.html_safe
    end

    def root_navigation
      actions(:root).select(&:show_in_sidebar).group_by(&:sidebar_label).collect do |label, nodes|
        li_stack = nodes.map do |node|
          url = rails_admin.url_for(action: node.action_name, controller: 'rails_admin/main')
          nav_icon = node.link_icon ? %(<i class="#{node.link_icon}"></i>).html_safe : ''
          content_tag :li do
            link_to nav_icon + " " + wording_for(:menu, node), url, class: "nav-link"
          end
        end.join.html_safe
        label ||= t('admin.misc.root_navigation')

        collapsible_stack(label, 'action', li_stack)
      end.join.html_safe
    end

    def static_navigation
      li_stack = RailsAdmin::Config.navigation_static_links.collect do |title, url|
        content_tag(:li, link_to(title.to_s, url, target: '_blank', rel: 'noopener noreferrer', class: 'nav-link'))
      end.join.html_safe

      label = RailsAdmin::Config.navigation_static_label || t('admin.misc.navigation_static_label')
      collapsible_stack(label, 'static', li_stack) || ''
    end

    def navigation(parent_groups, nodes, level = 0)
      nodes.collect do |node|
        abstract_model = node.abstract_model
        model_param = abstract_model.to_param
        url         = rails_admin.url_for(action: :index, controller: 'rails_admin/main', model_name: model_param)
        nav_icon = node.navigation_icon ? %(<i class="#{node.navigation_icon}"></i>).html_safe : ''
        css_classes = ['nav-link']
        css_classes.push("nav-level-#{level}") if level > 0
        css_classes.push('active') if @action && current_action?(@action, model_param)
        li = content_tag :li, data: {model: model_param} do
          link_to nav_icon + " " + node.label_plural, url, class: css_classes.join(' ')
        end
        child_nodes = parent_groups[abstract_model.model_name]
        child_nodes ? li + navigation(parent_groups, child_nodes, level + 1) : li
      end.join.html_safe
    end

    def breadcrumb(action = @action, _acc = [])
      begin
        (parent_actions ||= []) << action
      end while action.breadcrumb_parent && (action = action(*action.breadcrumb_parent)) # rubocop:disable Lint/Loop

      content_tag(:ol, class: 'breadcrumb') do
        parent_actions.collect do |a|
          am = a.send(:eval, 'bindings[:abstract_model]')
          o = a.send(:eval, 'bindings[:object]')
          content_tag(:li, class: ['breadcrumb-item', current_action?(a, am, o) && 'active']) do
            if current_action?(a, am, o)
              wording_for(:breadcrumb, a, am, o)
            elsif a.http_methods.include?(:get)
              link_to rails_admin.url_for(action: a.action_name, controller: 'rails_admin/main', model_name: am.try(:to_param), id: (o.try(:persisted?) && o.try(:id) || nil)) do
                wording_for(:breadcrumb, a, am, o)
              end
            else
              content_tag(:span, wording_for(:breadcrumb, a, am, o))
            end
          end
        end.reverse.join.html_safe
      end
    end

    # parent => :root, :collection, :member
    # perf matters here (no action view trickery)
    def menu_for(parent, abstract_model = nil, object = nil, only_icon = false)
      actions = actions(parent, abstract_model, object).select { |a| a.http_methods.include?(:get) && a.show_in_menu }
      actions.collect do |action|
        wording = wording_for(:menu, action)
        li_class = ['nav-item', 'icon', "#{action.key}_#{parent}_link"].
                   concat(action.enabled? ? [] : ['disabled'])
        content_tag(:li, {class: li_class}.merge(only_icon ? {title: wording, rel: 'tooltip'} : {})) do
          label = content_tag(:i, '', {class: action.link_icon}) + ' ' + content_tag(:span, wording, (only_icon ? {style: 'display:none'} : {}))
          if action.enabled? || !only_icon
            href =
              if action.enabled?
                rails_admin.url_for(action: action.action_name, controller: 'rails_admin/main', model_name: abstract_model.try(:to_param), id: (object.try(:persisted?) && object.try(:id) || nil))
              else
                'javascript:void(0)'
              end
            content_tag(:a, label, {href: href, target: action.link_target, class: ['nav-link', current_action?(action) && 'active', !action.enabled? && 'disabled'].compact}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}))
          else
            content_tag(:span, label)
          end
        end
      end.join(' ').html_safe
    end

    def bulk_menu(abstract_model = @abstract_model)
      actions = actions(:bulkable, abstract_model)
      return '' if actions.empty?

      content_tag :li, class: 'nav-item dropdown dropdown-menu-end' do
        content_tag(:a, class: 'nav-link dropdown-toggle', data: {'bs-toggle': 'dropdown'}, href: '#') { t('admin.misc.bulk_menu_title').html_safe + ' ' + '<b class="caret"></b>'.html_safe } +
          content_tag(:ul, class: 'dropdown-menu', style: 'left:auto; right:0;') do
            actions.collect do |action|
              content_tag :li do
                link_to wording_for(:bulk_link, action, abstract_model), '#', class: 'dropdown-item bulk-link', data: {action: action.action_name}
              end
            end.join.html_safe
          end
      end.html_safe
    end

    def flash_alert_class(flash_key)
      case flash_key.to_s
      when 'error'  then 'alert-danger'
      when 'alert'  then 'alert-warning'
      when 'notice' then 'alert-info'
      else "alert-#{flash_key}"
      end
    end

    def handle_asset_dependency_error
      yield
    rescue LoadError => e
      if /sassc/.match?(e.message)
        e = e.exception <<~MSG
          #{e.message}
          RailsAdmin requires the gem sassc-rails, make sure to put `gem 'sassc-rails'` to Gemfile.
        MSG
      end
      raise e
    end

    # Workaround for https://github.com/rails/rails/issues/31325
    def image_tag(source, options = {})
      if %w[ActiveStorage::Variant ActiveStorage::VariantWithRecord ActiveStorage::Preview].include? source.class.to_s
        super main_app.route_for(ActiveStorage.resolve_model_to_route, source), options
      else
        super
      end
    end

  private

    def edit_user_link_label
      [
        RailsAdmin::Config.show_gravatar &&
          image_tag(gravatar_url(_current_user.email), alt: ''),

        content_tag(:span, _current_user.email),
      ].filter(&:present?).join.html_safe
    end

    def gravatar_url(email)
      "https://secure.gravatar.com/avatar/#{Digest::MD5.hexdigest email}?s=30"
    end

    def collapsible_stack(label, class_prefix, li_stack)
      return nil unless li_stack.present?

      collapse_classname = "#{class_prefix}-#{Digest::MD5.hexdigest(label)[0..7]}"
      content_tag(:li, class: 'mb-1') do
        content_tag(:button, 'aria-expanded': true, class: 'btn btn-toggle align-items-center rounded', data: {bs_toggle: "collapse", bs_target: ".sidebar .#{collapse_classname}"}) do
          content_tag(:i, '', class: 'fas fa-chevron-down') + html_escape(' ' + label)
        end +
          content_tag(:div, class: "collapse show #{collapse_classname}") do
            content_tag(:ul, class: 'btn-toggle-nav list-unstyled fw-normal pb-1') do
              li_stack
            end
          end
      end
    end
  end
end


================================================
FILE: app/helpers/rails_admin/form_builder.rb
================================================
# frozen_string_literal: true

require 'nested_form/builder_mixin'

module RailsAdmin
  class FormBuilder < ::ActionView::Helpers::FormBuilder
    include ::NestedForm::BuilderMixin
    include ::RailsAdmin::ApplicationHelper

    def generate(options = {})
      without_field_error_proc_added_div do
        options.reverse_merge!(
          action: @template.controller.params[:action],
          model_config: @template.instance_variable_get(:@model_config),
          nested_in: false,
        )

        object_infos +
          visible_groups(options[:model_config], generator_action(options[:action], options[:nested_in])).collect do |fieldset|
            fieldset_for fieldset, options[:nested_in]
          end.join.html_safe +
          (options[:nested_in] ? '' : @template.render(partial: 'rails_admin/main/submit_buttons'))
      end
    end

    def fieldset_for(fieldset, nested_in)
      fields = fieldset.with(
        form: self,
        object: @object,
        view: @template,
        controller: @template.controller,
      ).visible_fields
      return if fields.empty?

      @template.content_tag :fieldset do
        contents = []
        contents << @template.content_tag(:legend, %(<i class="fas fa-chevron-#{fieldset.active? ? 'down' : 'right'}"></i> #{fieldset.label}).html_safe, style: fieldset.name == :default ? 'display:none' : '')
        contents << @template.content_tag(:p, fieldset.help) if fieldset.help.present?
        contents << fields.collect { |field| field_wrapper_for(field, nested_in) }.join
        contents.join.html_safe
      end
    end

    def field_wrapper_for(field, nested_in)
      # do not show nested field if the target is the origin
      return if nested_field_association?(field, nested_in)

      @template.content_tag(:div, class: "control-group row mb-3 #{field.type_css_class} #{field.css_class} #{'error' if field.errors.present?}", id: "#{dom_id(field)}_field") do
        if field.label
          label(field.method_name, field.label, class: 'col-sm-2 col-form-label text-md-end') +
            (field.nested_form ? field_for(field) : input_for(field))
        else
          field.nested_form ? field_for(field) : input_for(field)
        end
      end
    end

    def input_for(field)
      css = 'col-sm-10 controls'
      css += ' has-error' if field.errors.present?
      @template.content_tag(:div, class: css) do
        field_for(field) +
          errors_for(field) +
          help_for(field)
      end
    end

    def errors_for(field)
      field.errors.present? ? @template.content_tag(:span, field.errors.to_sentence, class: 'help-inline text-danger') : ''.html_safe
    end

    def help_for(field)
      field.help.present? ? @template.content_tag(:div, field.help, class: 'form-text') : ''.html_safe
    end

    def field_for(field)
      field.read_only? ? @template.content_tag(:div, field.pretty_value, class: 'form-control-static') : field.render
    end

    def object_infos
      model_config = RailsAdmin.config(object)
      model_label = model_config.label
      object_label =
        if object.new_record?
          I18n.t('admin.form.new_model', name: model_label)
        else
          object.send(model_config.object_label_method).presence || "#{model_config.label} ##{object.id}"
        end

      %(<span style="display:none" class="object-infos" data-model-label="#{model_label}" data-object-label="#{CGI.escapeHTML(object_label.to_s)}"></span>).html_safe
    end

    def jquery_namespace(field)
      %(#{'#modal ' if @template.controller.params[:modal]}##{dom_id(field)}_field)
    end

    def dom_id(field)
      (@dom_id ||= {})[field.name] ||=
        [
          @object_name.to_s.gsub(/\]\[|[^-a-zA-Z0-9:.]/, '_').sub(/_$/, ''),
          options[:index],
          field.method_name,
        ].reject(&:blank?).join('_')
    end

    def dom_name(field)
      (@dom_name ||= {})[field.name] ||= %(#{@object_name}#{options[:index] && "[#{options[:index]}]"}[#{field.method_name}]#{field.is_a?(Config::Fields::Association) && field.multiple? ? '[]' : ''})
    end

    def hidden_field(method, options = {})
      if method == :id && object.id.is_a?(Array)
        super method, {value: RailsAdmin.config.composite_keys_serializer.serialize(object.id)}
      else
        super
      end
    end

  protected

    def generator_action(action, nested)
      if nested
        action = :nested
      elsif @template.request.format == 'text/javascript'
        action = :modal
      end

      action
    end

    def visible_groups(model_config, action)
      model_config.send(action).with(
        form: self,
        object: @object,
        view: @template,
        controller: @template.controller,
      ).visible_groups
    end

    def without_field_error_proc_added_div
      default_field_error_proc = ::ActionView::Base.field_error_proc
      begin
        ::ActionView::Base.field_error_proc = proc { |html_tag, _instance| html_tag }
        yield
      ensure
        ::ActionView::Base.field_error_proc = default_field_error_proc
      end
    end

  private

    def nested_field_association?(field, nested_in)
      field.inverse_of.presence && nested_in.presence && field.inverse_of == nested_in.name &&
        (@template.instance_variable_get(:@model_config).abstract_model == field.abstract_model ||
         field.name == nested_in.inverse_of)
    end
  end
end


================================================
FILE: app/helpers/rails_admin/main_helper.rb
================================================
# frozen_string_literal: true

module RailsAdmin
  module MainHelper
    def rails_admin_form_for(*args, &block)
      options = args.extract_options!.reverse_merge(builder: RailsAdmin::FormBuilder)
      (options[:html] ||= {})[:novalidate] ||= !RailsAdmin::Config.browser_validations

      form_for(*(args << options), &block) << after_nested_form_callbacks
    end

    def get_indicator(percent)
      return '' if percent < 0          # none
      return 'info' if percent < 34     # < 1/100 of max
      return 'success' if percent < 67  # < 1/10 of max
      return 'warning' if percent < 84  # < 1/3 of max

      'danger'                          # > 1/3 of max
    end

    def filterable_fields
      @filterable_fields ||= @model_config.list.fields.select(&:filterable?)
    end

    def ordered_filters
      return @ordered_filters if @ordered_filters.present?

      @index = 0
      @ordered_filters = (params[:f].try(:permit!).try(:to_h) || @model_config.list.filters).inject({}) do |memo, filter|
        field_name = filter.is_a?(Array) ? filter.first : filter
        (filter.is_a?(Array) ? filter.last : {(@index += 1) => {'v' => ''}}).each do |index, filter_hash|
          if filter_hash['disabled'].blank?
            memo[index] = {field_name => filter_hash}
          else
            params[:f].delete(field_name)
          end
        end
        memo
      end.to_a.sort_by(&:first)
    end

    def ordered_filter_options
      if ordered_filters
        @ordered_filter_options ||= ordered_filters.map do |duplet|
          filter_for_field = duplet[1]
          filter_name = filter_for_field.keys.first
          filter_hash = filter_for_field.values.first
          unless (field = filterable_fields.find { |f| f.name == filter_name.to_sym }&.with({view: self}))
            raise "#{filter_name} is not currently filterable; filterable fields are #{filterable_fields.map(&:name).join(', ')}"
          end

          field.filter_options.merge(
            index: duplet[0],
            operator: filter_hash['o'] || field.default_filter_operator,
            value: filter_hash['v'],
          )
        end
      end
    end
  end
end


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb
================================================
<li class="page-item disabled">
  <a href="#" class="page-link">
    <%= raw(t 'admin.pagination.truncate') %>
  </a>
</li>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb
================================================
<% if current_page.last? %>
  <li class="page-item next disabled">
    <%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
  </li>
<% else %>
  <li class="page-item next">
    <%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
  </li>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_page.html.erb
================================================
<% if page.current? %>
  <li class="page-item active">
    <%= link_to page, url, class: 'page-link' %>
  </li>
<% else %>
  <li class="page-item">
    <%= link_to page, url, class: 'page-link' %>
  </li>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb
================================================
<%= paginator.render do %>
  <nav aria-label="Page navigation">
    <ul class="pagination">
      <%= prev_page_tag %>
      <% each_page do |page| %>
        <% if page.left_outer? or page.right_outer? or page.inside_window? %>
          <%= page_tag page %>
        <% elsif !page.was_truncated? %>
          <%= gap_tag %>
        <% end %>
      <% end %>
      <%= next_page_tag %>
    </ul>
  </nav>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb
================================================
<% if current_page.first? %>
  <li class="page-item prev disabled">
    <%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
  </li>
<% else %>
  <li class="page-item prev">
    <%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
  </li>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb
================================================
<% if current_page.last? %>
  <li class="page-item next disabled">
    <%= link_to raw(t 'admin.pagination.next'), '#', class: 'page-link' %>
  </li>
<% else %>
  <li class="page-item next">
    <%= link_to raw(t 'admin.pagination.next'), url, class: 'page-link' %>
  </li>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb
================================================
<%= paginator.render do %>
  <nav aria-label="Page navigation">
    <ul class="pagination">
      <%= prev_page_tag if !current_page.first? %>
      <%= next_page_tag %>
    </ul>
  </nav>
<% end %>


================================================
FILE: app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb
================================================
<% if current_page.first? %>
  <li class="page-item prev disabled">
    <%= link_to raw(t 'admin.pagination.previous'), '#', class: 'page-link' %>
  </li>
<% else %>
  <li class="page-item prev">
    <%= link_to raw(t 'admin.pagination.previous'), url, class: 'page-link' %>
  </li>
<% end %>


================================================
FILE: app/views/layouts/rails_admin/_head.html.erb
================================================
<meta content="IE=edge" http-equiv="X-UA-Compatible">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="width=device-width, initial-scale=1" name="viewport; charset=utf-8">
<meta content="NONE,NOARCHIVE" name="robots">
<meta content="false" name="turbo-prefetch">
<%= csrf_meta_tag %>
<% case RailsAdmin::config.asset_source
   when :webpacker %>
  <%= stylesheet_pack_tag "rails_admin", data: {'turbo-track': 'reload'} %>
  <%= javascript_pack_tag "rails_admin", defer: true, data: {'turbo-track': 'reload'} %>
<% when :sprockets %>
  <% handle_asset_dependency_error do %>
    <%= stylesheet_link_tag "rails_admin/application.css", media: :all, data: {'turbo-track': 'reload'} %>
    <%= javascript_include_tag "rails_admin/application.js", defer: true, data: {'turbo-track': 'reload'} %>
  <% end %>
<% when :vite %>
  <%= vite_javascript_tag "rails_admin", defer: true, data: {'turbo-track': 'reload'} %>
<% when :webpack %>
  <%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
  <%= javascript_include_tag "rails_admin.js", defer: true, data: {'turbo-track': 'reload'} %>
<% when :importmap %>
  <%= stylesheet_link_tag "rails_admin.css", media: :all, data: {'turbo-track': 'reload'} %>
  <%= javascript_inline_importmap_tag(RailsAdmin::Engine.importmap.to_json(resolver: self)) %>
  <%= javascript_importmap_module_preload_tags(RailsAdmin::Engine.importmap) %>
  <%= javascript_importmap_shim_nonce_configuration_tag if respond_to? :javascript_importmap_shim_nonce_configuration_tag %>
  <%= javascript_importmap_shim_tag if respond_to? :javascript_importmap_shim_tag %>
  <%= # Preload jQuery and make it global, unless jQuery UI fails to initialize
      tag.script "import jQuery from 'jquery'; window.jQuery = jQuery;".html_safe, type: "module" %>
  <%= javascript_import_module_tag 'rails_admin' %>
<% else
     raise "Unknown asset_source: #{RailsAdmin::config.asset_source}"
   end %>


================================================
FILE: app/views/layouts/rails_admin/_navigation.html.erb
================================================
<div class="container-fluid">
  <a class="navbar-brand" href="<%= dashboard_path %>">
    <%= _get_plugin_name[0] || 'Rails' %>
    <small>
      <%= _get_plugin_name[1] || 'Admin' %>
    </small>
  </a>
  <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#secondary-navigation">
    <span class="sr-only">
      <%= t('admin.toggle_navigation') %>
    </span>
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="secondary-navigation">
    <%= render partial: 'layouts/rails_admin/secondary_navigation' %>
  </div>
</div>


================================================
FILE: app/views/layouts/rails_admin/_secondary_navigation.html.erb
================================================
<ul class="navbar-nav ms-auto root_links">
  <% actions(:root).select(&:show_in_navigation).each do |action| %>
    <li class="nav-item <%= action.action_name %>_root_link">
      <%= link_to wording_for(:menu, action), { action: action.action_name, controller: 'rails_admin/main' }, {class: ['nav-link']}.merge(action.turbo? ? {} : {data: {turbo: 'false'}}) %>
    </li>
  <% end %>
  <% if main_app_root_path = (main_app.root_path rescue false) %>
    <li class="nav-item">
      <%= link_to t('admin.home.name'), main_app_root_path, class: 'nav-link' %>
    </li>
  <% end %>
  <% if _current_user %>
    <% if user_link = edit_user_link %>
      <li class="nav-item edit_user_root_link">
        <%= user_link %>
      </li>
    <% end %>
    <% if logout_path.present? %>
      <li class="nav-item">
        <%= link_to logout_path, method: logout_method, class: 'nav-link', data: {turbo: 'false'} do %>
          <span class="badge bg-danger"><%= t('admin.misc.log_out') %></span>
        <% end %>
      </li>
    <% end %>
  <% end %>
</ul>


================================================
FILE: app/views/layouts/rails_admin/_sidebar_navigation.html.erb
================================================
<ul class="sidebar col-sm-3 col-md-2 nav btn-toggle-nav flex-column flex-nowrap bg-light">
  <%= main_navigation %>
  <%= root_navigation %>
  <%= static_navigation %>
</ul>


================================================
FILE: app/views/layouts/rails_admin/application.html.erb
================================================
<!DOCTYPE html>
<html lang="<%= I18n.locale %>">
  <head>
    <%= render "layouts/rails_admin/head" %>
  </head>
  <body class="rails_admin">
    <div data-i18n-options="<%= I18n.t("admin.js").to_json %>" id="admin-js"></div>
    <div class="badge bg-warning" id="loading" style="display:none; position:fixed; right:20px; bottom:20px; z-index:100000">
      <%= t('admin.loading') %>
    </div>
    <nav class="navbar navbar-expand-md fixed-top <%= RailsAdmin::Config.navbar_css_classes.join(' ') %>">
      <%= render "layouts/rails_admin/navigation" %>
    </nav>
    <div class="container-fluid">
      <div class="row">
        <div class="col-sm-3 col-md-2 flex-wrap p-0">
          <%= render "layouts/rails_admin/sidebar_navigation" %>
        </div>
        <div class="col-sm-9 col-sm-offset-3 col-md-10 col-md-offset-2">
          <div class="container-fluid">
            <%= render template: 'layouts/rails_admin/content' %>
          </div>
        </div>
      </div>
    </div>
  </body>
</html>


================================================
FILE: app/views/layouts/rails_admin/content.html.erb
================================================
<title>
  <%= "#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name[1] || 'Admin'].join(' ')}" %>
</title>
<header class="py-2 m-2 border-bottom" data-model="<%= @abstract_model.to_param %>">
  <h1>
    <%= @page_name %>
  </h1>
</header>
<% flash && flash.each do |key, value| %>
  <div class="<%= flash_alert_class(key) %> alert alert-dismissible">
    <%= value %>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  </div>
<% end %>
<nav aria-label="breadcrumb">
  <%= breadcrumb %>
</nav>
<ul class="nav nav-tabs mb-3">
  <%= menu_for((@abstract_model ? (@object.try(:persisted?) ? :member : :collection) : :root), @abstract_model, @object) %>
  <%= content_for :contextual_tabs %>
</ul>
<%= yield %>


================================================
FILE: app/views/layouts/rails_admin/modal.js.erb
================================================
<% flash && flash.each do |key, value| %>
  <div class="<%= flash_alert_class(key) %> alert alert-dismissible">
    <%= value %>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
  </div>
<% end %>
<%= yield %>


================================================
FILE: app/views/rails_admin/main/_dashboard_history.html.erb
================================================
<table class="table table-condensed table-striped table-hover">
  <thead>
    <tr>
      <th class="shrink user">
        <%= t("admin.table_headers.username") %>
      </th>
      <th class="shrink items">
        <%= t("admin.table_headers.item") %>
      </th>
      <th class="changes">
        <%= t("admin.table_headers.changes") %>
      </th>
    </tr>
  </thead>
  <tbody class="table-group-divider">
    <% @history.each do |t| %>
      <% abstract_model = RailsAdmin.config(t.table).abstract_model %>
      <tr>
        <td>
          <%= t.try :username %>
        </td>
        <% if o = abstract_model.try(:get, t.item) %>
          <% label = o.send(abstract_model.config.object_label_method) %>
          <% if show_action = action(:show, abstract_model, o) %>
            <td>
              <%= link_to(label, url_for(action: show_action.action_name, model_name: abstract_model.to_param, id: o.id)) %>
            </td>
          <% else %>
            <td>
              <%= label %>
            </td>
          <% end %>
        <% else %>
          <% label = Object.const_defined?(t.table) ? t.table.constantize.model_name.human : t.table %>
          <td>
            <%= "#{label} ##{t.item}" %>
          </td>
        <% end %>
        <td>
          <%= t.message %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>


================================================
FILE: app/views/rails_admin/main/_delete_notice.html.erb
================================================
<% object = delete_notice %>
<li style="display:block; margin-top:10px">
  <span class="label label-default">
    <%= @abstract_model.pretty_name %>
  </span>
  <% wording = object.send(@model_config.object_label_method) %>
  <% if show_action = action(:show, @abstract_model, object) %>
    <%= link_to(wording, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: object.id)) %>
  <% else %>
    <%= wording %>
  <% end %>
  <ul>
    <% @abstract_model.each_associated_children(object) do |association, children| %>
      <% humanized_association = @abstract_model.model.human_attribute_name association.name %>
      <% limit = children.count > 12 ? 10 : children.count %>
      <% children.first(limit).each do |child| %>
        <%= content_tag :li, class: dom_class(child) do %>
          <% child_config = RailsAdmin.config(child) %>
          <%= humanized_association.singularize %>
          <% wording = child.send(child_config.object_label_method) %>
          <% if child.id && (show_action = action(:show, child_config.abstract_model, child)) %>
            <%= link_to(wording, url_for(action: show_action.action_name, model_name: child_config.abstract_model.to_param, id: child.id)) %>
          <% else %>
            <%= wording %>
          <% end %>
        <% end %>
      <% end %>
      <% if children.count > limit %>
        <li>
          <%= t('admin.misc.more', count: children.count - limit, models_name: humanized_association) %>
        </li>
      <% end %>
    <% end %>
  </ul>
</li>


================================================
FILE: app/views/rails_admin/main/_form_action_text.html.erb
================================================
<%
  js_data = {
    csspath: field.css_location,
    jspath: field.js_location,
    warn_dynamic_load: field.warn_dynamic_load
  }
%>
<%= form.rich_text_area field.method_name, field.html_attributes.reverse_merge(data: { options: js_data.to_json }) %>


================================================
FILE: app/views/rails_admin/main/_form_boolean.html.erb
================================================
<% if field.nullable? %>
  <div class="btn-group" role="group">
    <% {'1': [true, 'btn-outline-success'], '0': [false, 'btn-outline-danger'], '': [nil, 'btn-outline-secondary']}.each do |text, (value, btn_class)| %>
      <%= form.radio_button field.method_name, text, field.html_attributes.reverse_merge({ checked: field.form_value == value, required: field.required, class: 'btn-check' }) %>
      <%= form.label "#{field.method_name}_#{text}", class: "#{field.css_classes[value]} btn #{btn_class}" do %>
        <%= field.labels[value].html_safe %>
      <% end %>
    <% end %>
  </div>
<% else %>
  <div class="col-form-label">
    <%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, checked: field.form_value.in?([true, '1']), required: field.required, class: 'form-check-input' }) %>
  </div>
<% end %>


================================================
FILE: app/views/rails_admin/main/_form_ck_editor.html.erb
================================================
<%
  js_data = {
    jspath: field.location ? field.location : field.base_location + "ckeditor.js",
    base_location: field.base_location,
    options: {
      customConfig: field.config_js ? field.config_js : field.base_location + "config.js"
    }
  }
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'ckeditor', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>


================================================
FILE: app/views/rails_admin/main/_form_code_mirror.html.erb
================================================
<%
  js_data = {
    csspath: field.css_location,
    jspath: field.js_location,
    options: field.config,
    locations: field.assets
  }
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'codemirror', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>


================================================
FILE: app/views/rails_admin/main/_form_colorpicker.html.erb
================================================
<div class="row">
  <div class="col-sm-2">
    <%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({class: 'form-control', value: field.form_value}) %>
  </div>
</div>


================================================
FILE: app/views/rails_admin/main/_form_datetime.html.erb
================================================
<div class="row">
  <div class="col-sm-4">
    <div class="input-group">
      <%= form.text_field field.method_name, field.html_attributes.reverse_merge({autocomplete: 'off', class: 'form-control', data: {datetimepicker: true, options: field.datepicker_options.to_json}, value: field.form_value}) %>
      <%= form.label(field.method_name, class: 'input-group-text') do %>
        <i class="fa fa-fw fa-calendar"></i>
      <% end %>
    </div>
  </div>
</div>


================================================
FILE: app/views/rails_admin/main/_form_enumeration.html.erb
================================================
<% unless field.multiple? %>
  <div class="row">
    <div class="col-sm-4">
      <%= form.select field.method_name, field.enum, { include_blank: true }.reverse_merge({ selected: field.form_value }), field.html_attributes.reverse_merge({ data: { enumeration: true }, placeholder: t('admin.misc.search') }) %>
    </div>
  </div>
<% else %>
  <%
    js_data = {
      xhr: false,
      sortable: false,
      cacheAll: true,
      regional: {
        add: t("admin.misc.add_new"),
        chooseAll: t("admin.misc.chose_all"),
        clearAll: t("admin.misc.clear_all"),
        down: t("admin.misc.down"),
        remove: t("admin.misc.remove"),
        search: t("admin.misc.search"),
        up: t("admin.misc.up")
      }
    }
  %>
  <%= form.select field.method_name, field.enum, { selected: field.form_value, object: form.object }, field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: js_data.to_json }, multiple: true}) %>
<% end %>


================================================
FILE: app/views/rails_admin/main/_form_field.html.erb
================================================
<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, class: 'form-control', required: field.required}) %>


================================================
FILE: app/views/rails_admin/main/_form_file_upload.html.erb
================================================
<% file = field.value %>
<% if field.cache_method %>
  <%= form.hidden_field(field.cache_method, value: field.cache_value) %>
<% end %>
<div class="toggle mb-2" style="<%= ('display:none;' if file && field.delete_method && form.object.send(field.delete_method) == '1') %>">
  <% if value = field.pretty_value %>
    <%= value %>
  <% end %>
  <%= form.file_field(field.name, {data: {fileupload: true}}.deep_merge(field.html_attributes)) %>
</div>
<% if field.optional? && field.errors.blank? && file && field.delete_method %>
  <a class="btn btn-info btn-remove-image" data-toggle="button" href="#" role="button">
    <i class="fas fa-trash"></i>
    <%= I18n.t('admin.actions.delete.link', object_label: field.label) %>
  </a>
  <%= form.check_box(field.delete_method, style: 'display:none;') %>
<% end %>


================================================
FILE: app/views/rails_admin/main/_form_filtering_multiselect.html.erb
================================================
<%
  config = field.associated_model_config
%>

<div class="row">
  <div class="col-auto">
    <input name="<%= form.dom_name(field) %>" type="hidden" />
    <%=
      form.select field.method_name, field.collection, { selected: field.form_value, object: form.object },
                  field.html_attributes.reverse_merge({data: { filteringmultiselect: true, options: field.widget_options.to_json }, multiple: true})
    %>
  </div>
  <% if authorized?(:new, config.abstract_model) && field.inline_add %>
    <div class="col-sm-4 modal-actions">
      <% path_hash = { model_name: config.abstract_model.to_param, modal: true }.merge!(field.associated_prepopulate_params) %>
      <%= link_to "<i class=\"fas fa-plus\"></i> ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "create btn btn-info", style: 'margin-left:10px' %>
    </div>
  <% end %>
</div>

================================================
FILE: app/views/rails_admin/main/_form_filtering_select.html.erb
================================================
<%
  config = field.associated_model_config
%>

<div class="row">
  <div class="col-sm-4">
    <%=
      form.select field.method_name, field.collection, { selected: field.form_value, include_blank: true },
                  field.html_attributes.reverse_merge({ data: { filteringselect: true, options: field.widget_options.to_json }, placeholder: t('admin.misc.search') })
    %>
  </div>
  <div class="col-sm-8 mt-2 mt-md-0 modal-actions">
    <% if authorized?(:new, config.abstract_model) && field.inline_add %>
      <% path_hash = { model_name: config.abstract_model.to_param, modal: true }.merge!(field.associated_prepopulate_params) %>
      <%= link_to "<i class=\"fas fa-plus\"></i> ".html_safe + wording_for(:link, :new, config.abstract_model), '#', data: { link: new_path(path_hash) }, class: "btn btn-info create" %>
    <% end %>
    <% if authorized?(:edit, config.abstract_model) && field.inline_edit %>
      <%= link_to "<i class=\"fas fa-pencil-alt\"></i> ".html_safe + wording_for(:link, :edit, config.abstract_model), '#', data: { link: edit_path(model_name: config.abstract_model.to_param, modal: true, id: '__ID__') }, class: "btn btn-info update ms-2#{' disabled' if field.value.nil?}" %>
    <% end %>
  </div>
</div>

================================================
FILE: app/views/rails_admin/main/_form_froala.html.erb
================================================
<%
  js_data = {
    csspath: field.css_location,
    jspath: field.js_location,
    config_options: field.config_options.to_json
  }
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'froala-wysiwyg', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>


================================================
FILE: app/views/rails_admin/main/_form_multiple_file_upload.html.erb
================================================
<% field.attachments.each_with_index do |attachment, i| %>
  <div class="<%= field.reorderable? ? 'sortables' : '' %> toggle mb-2">
    <%= attachment.pretty_value %>
    <% if field.delete_method || field.keep_method %>
      <a class="btn btn-info btn-remove-image" data-toggle="button" href="#" role="button">
        <i class="fas fa-trash"></i>
        <%= I18n.t('admin.form.delete_file', field_label: field.label, number: i + 1) %>
      </a>
      <% if field.keep_method %>
        <%= form.check_box(field.keep_method, {multiple:true, checked: true, style: 'display:none;'}, attachment.keep_value, nil) %>
      <% elsif field.delete_method %>
        <%= form.check_box(field.delete_method, {multiple:true, style: 'display:none;'}, attachment.delete_value, nil) %>
      <% end %>
    <% end %>
  </div>
<% end %>
<%= form.file_field(field.name, { data: { :"multiple-fileupload" => true }, multiple: true }.deep_merge(field.html_attributes)) %>
<% if field.cache_method %>
  <%= form.hidden_field(field.cache_method) %>
<% end %>


================================================
FILE: app/views/rails_admin/main/_form_nested_many.html.erb
================================================
<div class="controls col-sm-10" data-nestedmany="true">
  <div class="btn-group">
    <a class="<%= (field.active? ? 'active' : '') %> btn btn-info toggler" data-bs-target="<%= form.jquery_namespace(field) %> .collapse" data-bs-toggle="collapse" role="button">
      <i class="fas"></i>
    </a>
    <% if field.inline_add %>
      <%= form.link_to_add "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe, field.name, { class: 'btn btn-info' } %>
    <% end %>
  </div>
  <%= form.errors_for(field) %>
  <%= form.help_for(field) %>
  <ul class="nav nav-tabs collapse"></ul>
</div>
<div class="tab-content collapse">
  <%= form.fields_for field.name do |nested_form| %>
    <% if field.nested_form[:allow_destroy] || nested_form.options[:child_index] == "new_#{field.name}" %>
      <%= nested_form.link_to_remove '<span class="btn btn-danger"><i class="fas fa-trash"></i></span>'.html_safe %>
    <% end %>
    <%= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field }) %>
  <% end %>
</div>


================================================
FILE: app/views/rails_admin/main/_form_nested_one.html.erb
================================================
<div class="controls col-sm-10" data-nestedone="true">
  <ul class="nav collapse"></ul>
  <div class="btn-group">
    <a class="<%= (field.active? ? 'active' : '') %> btn btn-info toggler" data-bs-target="<%= form.jquery_namespace(field) %> .collapse" data-bs-toggle="collapse" role="button">
      <i class="fas"></i>
    </a>
    <% if field.inline_add %>
      <%= form.link_to_add "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".html_safe, field.name, { class: 'btn btn-info', :'data-add-label' => "<i class=\"fas fa-plus\"></i> #{wording_for(:link, :new, field.associated_model_config.abstract_model)}".gsub("\n", "") } %>
    <% end %>
  </div>
  <%= form.errors_for(field) %>
  <%= form.help_for(field) %>
</div>
<div class="tab-content collapse">
  <%= form.fields_for field.name do |nested_form| %>
    <% if field.nested_form[:allow_destroy] %>
      <%= nested_form.link_to_remove '<span class="btn btn-danger"><i class="fas fa-trash"></i></span>'.html_safe %>
    <% end %>
    <%= nested_form.generate({action: :nested, model_config: field.associated_model_config, nested_in: field }) %>
  <% end %>
</div>


================================================
FILE: app/views/rails_admin/main/_form_polymorphic_association.html.erb
================================================
<%
  column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, field.type_column)
%>

<div class="row">
  <div class="col-sm-3">
    <% field.widget_options_for_types.each do |model, value| %>
      <div data-options="<%= value.to_json %>" id="<%= model %>-js-options"></div>
    <% end %>
    <%=
      form.select field.type_column, field.type_collection, {include_blank: true, selected: field.selected_type},
                  class: "form-select", id: column_type_dom_id, data: { polymorphic: true, urls: field.type_urls.to_json },
                  style: "float: left; margin-right: 10px;"
    %>
  </div>
  <div class="col-sm-4">
    <%=
      form.select field.method_name, field.collection, {include_blank: true, selected: field.selected_id},
                  class: "form-control", data: { filteringselect: true, options: field.widget_options },
                  placeholder: 'Search'
    %>
  </div>
</div>


================================================
FILE: app/views/rails_admin/main/_form_simple_mde.html.erb
================================================
<%
  js_data = {
    js_location: field.js_location,
    css_location: field.css_location,
    instance_config: field.instance_config
  }
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'simplemde', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>


================================================
FILE: app/views/rails_admin/main/_form_text.html.erb
================================================
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: false, options: {}.to_json }).reverse_merge({ value: field.form_value, class: 'form-control', required: field.required }) %>


================================================
FILE: app/views/rails_admin/main/_form_wysihtml5.html.erb
================================================
<%
  js_data = {
    csspath: field.css_location,
    jspath: field.js_location,
    config_options: field.config_options.to_json
  }
%>
<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: 'bootstrap-wysihtml5', options: js_data.to_json }).reverse_merge({ value: field.form_value }) %>


================================================
FILE: app/views/rails_admin/main/_submit_buttons.html.erb
================================================
<div class="form-actions row justify-content-end my-3">
  <div class="col-sm-10">
    <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
    <button class="btn btn-primary" data-disable-with="<%= t("admin.form.save") %>" name="_save" type="submit"<%= ' disabled' unless @action.enabled? %>>
      <i class="fas fa-check"></i>
      <%= t("admin.form.save") %>
    </button>
    <span class="extra_buttons">
      <% if @action.enabled? && authorized?(:new, @abstract_model) %>
        <button class="btn btn-info" data-disable-with="<%= t("admin.form.save_and_add_another") %>" name="_add_another" type="submit">
          <%= t("admin.form.save_and_add_another") %>
        </button>
      <% end %>
      <% if @action.enabled? && authorized?(:edit, @abstract_model) %>
        <button class="btn btn-info" data-disable-with="<%= t("admin.form.save_and_edit") %>" name="_add_edit" type="submit"<%= ' disabled' unless @action.enabled? %>>
          <%= t("admin.form.save_and_edit") %>
        </button>
      <% end %>
      <button class="btn btn-light" data-disable-with="<%= t("admin.form.cancel") %>" formnovalidate="<%= true %>" name="_continue" type="submit">
        <i class="fas fa-times"></i>
        <%= t("admin.form.cancel") %>
      </button>
    </span>
  </div>
</div>


================================================
FILE: app/views/rails_admin/main/bulk_delete.html.erb
================================================
<h4>
  <%= I18n.t('admin.form.bulk_delete') %>
</h4>
<ul>
  <%= render partial: "delete_notice", collection: @objects %>
</ul>
<%= form_tag bulk_delete_path(model_name: @abstract_model.to_param, bulk_ids: @objects.map(&:id)), method: :delete do %>
  <div class="form-actions">
    <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
    <button class="btn btn-danger" data-disable-with="<%= t("admin.form.confirmation") %>" type="submit">
      <i class="fas fa-check"></i>
      <%= t("admin.form.confirmation") %>
    </button>
    <button class="btn" data-disable-with="<%= t("admin.form.cancel") %>" name="_continue" type="submit">
      <i class="fas fa-times"></i>
      <%= t("admin.form.cancel") %>
    </button>
  </div>
<% end %>


================================================
FILE: app/views/rails_admin/main/dashboard.html.erb
================================================
<% if @abstract_models %>
  <table class="table table-condensed table-striped table-hover">
    <thead>
      <tr>
        <th class="shrink model-name">
          <%= t "admin.table_headers.model_name" %>
        </th>
        <th class="shrink last-created">
          <%= t "admin.table_headers.last_created" %>
        </th>
        <th class="records">
          <%= t "admin.table_headers.records" %>
        </th>
        <th class="shrink controls"></th>
      </tr>
    </thead>
    <tbody class="table-group-divider">
      <% @abstract_models.each do |abstract_model| %>
        <% if authorized? :index, abstract_model %>
          <% index_path = index_path(model_name: abstract_model.to_param) %>
          <% row_class = "#{cycle("odd", "even")}#{" link" if index_path} #{abstract_model.param_key}_links" %>
          <tr class="<%= row_class %>" data-link="<%= index_path %>">
            <% last_created = @most_recent_created[abstract_model.model.name] %>
            <% active = last_created.try(:today?) %>
            <td>
              <span class="show">
                <%= link_to abstract_model.config.label_plural, index_path %>
              </span>
            </td>
            <td>
              <% if last_created %>
                <%= t "admin.misc.time_ago", time: time_ago_in_words(last_created), default: "#{time_ago_in_words(last_created)} #{t("admin.misc.ago")}" %>
              <% end %>
            </td>
            <td>
              <% count = @count[abstract_model.model.name] %>
              <% percent = count > 0 ? (@max <= 1 ? count : ((Math.log(count+1) * 100.0) / Math.log(@max+1)).to_i) : -1 %>
              <div class="<%= active ? 'active progress-bar-striped ' : '' %>progress" style="margin-bottom:0px">
                <div class="bg-<%= get_indicator(percent) %> progress-bar animate-width-to" data-animate-length="<%= ([1.0, percent].max.to_i * 20) %>" data-animate-width-to="<%= [2.0, percent].max.to_i %>%" style="width:2%">
                  <%= @count[abstract_model.model.name] %>
                </div>
              </div>
            </td>
            <td class="links">
              <ul class="nav d-inline list-inline">
                <%= menu_for :collection, abstract_model, nil, true %>
              </ul>
            </td>
          </tr>
        <% end %>
      <% end %>
    </tbody>
  </table>
<% end %>
<% if @history && authorized?(:history_index) %>
  <div class="block" id="block-tables">
    <div class="content">
      <h2>
        <%= t("admin.actions.history_index.menu") %>
      </h2>
      <%= render partial: 'rails_admin/main/dashboard_history' %>
    </div>
  </div>
<% end %>


================================================
FILE: app/views/rails_admin/main/delete.html.erb
================================================
<h4>
  <%= t("admin.form.are_you_sure_you_want_to_delete_the_object", model_name: @abstract_model.pretty_name.downcase) %>
  <q><strong><%= @model_config.with(object: @object).object_label %></strong></q>
  <%= t("admin.form.all_of_the_following_related_items_will_be_deleted") %>
</h4>
<ul>
  <%= render partial: "delete_notice", object: @object %>
</ul>
<%= form_for(@object, url: delete_path(model_name: @abstract_model.to_param, id: @object.id), html: {method: "delete"}) do %>
  <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
  <div class="form-actions">
    <button class="btn btn-danger" data-disable-with="<%= t("admin.form.confirmation") %>" type="submit">
      <i class="fas fa-check"></i>
      <%= t("admin.form.confirmation") %>
    </button>
    <button class="btn" data-disable-with="<%= t("admin.form.cancel") %>" name="_continue" type="submit">
      <i class="fas fa-times"></i>
      <%= t("admin.form.cancel") %>
    </button>
  </div>
<% end %>


================================================
FILE: app/views/rails_admin/main/edit.html.erb
================================================
<%= rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { method: "put", multipart: true, class: "main", data: { title: @page_name } } do |form| %>
  <%= form.generate action: :update %>
<% end %>


================================================
FILE: app/views/rails_admin/main/export.html.erb
================================================
<% params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token) %>
<% visible_fields = @model_config.export.with(view: self, object: @abstract_model.model.new, controller: self.controller).visible_fields %>
<%= form_tag export_path(params.merge(all: true)), method: 'post', class: "main", data: {turbo: false} do %>
  <input name="send_data" type="hidden" value="true" />
  <fieldset id="fields_to_export" class="mb-3">
    <legend>
      <i class="fas fa-chevron-down"></i>
      <%= t('admin.export.select') %>
    </legend>
    <div class="form-group control-group">
      <div class="col-sm-12">
        <div class="checkbox">
          <label for="check_all">
            <%= check_box_tag 'all', 'all', true, { id: 'check_all' } %>
            <b>
              <%= t('admin.export.select_all_fields') %>
            </b>
          </label>
        </div>
      </div>
    </div>
    <div class="control-group row">
      <div class="col-sm-12">
        <div class="card bg-light my-2 reverse-selection" rel="tooltip" role="button" title="<%= t('admin.export.click_to_reverse_selection') %>">
          <div class="card-body p-2">
            <b><%= t('admin.export.fields_from', name: @model_config.label_plural.downcase) %></b>
          </div>
        </div>
        <div class="controls">
          <div class="row">
            <% visible_fields.select{ |f| !f.association? || f.association.polymorphic? }.each do |field| %>
              <% list = field.virtual? ? 'methods' : 'only' %>
              <div class="checkbox col-sm-3 my-1">
                <% if field.association? && field.association.polymorphic? %>
                  <label for="schema_<%= list %>_<%= field.method_name %>">
                    <%= check_box_tag "schema[#{list}][]", field.method_name, true, { id: "schema_#{list}_#{field.method_name}" } %>
                    <%= field.label + " [id]" %>
                  </label>
                  <% polymorphic_type_column_name = @abstract_model.properties.detect {|p| field.association.foreign_type == p.name }.name %>
                  <label for="schema_<%= list %>_<%= polymorphic_type_column_name %>">
                    <%= check_box_tag "schema[#{list}][]", polymorphic_type_column_name, true, { id: "schema_#{list}_#{polymorphic_type_column_name}" } %>
                    <%= field.label + " [type]" %>
                  </label>
                <% else %>
                  <label for="schema_<%= list %>_<%= field.name %>">
                    <%= check_box_tag "schema[#{list}][]", field.name, true, { id: "schema_#{list}_#{field.name}" } %>
                    <%= field.label %>
                  </label>
                <% end %>
              </div>
            <% end %>
          </div>
        </div>
      </div>
    </div>
    <% visible_fields.select{ |f| f.association? && !f.association.polymorphic? }.each do |field| %>
      <% fields = field.associated_model_config.export.with(controller: self.controller, view: self, object: (associated_model = field.associated_model_config.abstract_model.model).new).visible_fields.select{ |f| !f.association? } %>
      <div class="control-group row">
        <div class="col-sm-12">
          <div class="card bg-light my-2 reverse-selection" rel="tooltip" role="button" title="<%= t('admin.export.click_to_reverse_selection') %>">
            <div class="card-body p-2">
              <b><%= t('admin.export.fields_from_associated', name: field.label.downcase) %></b>
            </div>
          </div>
          <div class="controls">
            <div class="row">
              <% fields.each do |associated_model_field| %>
                <% list = associated_model_field.virtual? ? 'methods' : 'only' %>
                <div class="checkbox col-sm-3 my-1">
                  <label for="schema_include_<%= field.name %>_<%= list %>_<%= associated_model_field.name %>">
                    <%= check_box_tag "schema[include][#{field.name}][#{list}][]", associated_model_field.name, true, { id: "schema_include_#{field.name}_#{list}_#{associated_model_field.name}" } %>
                    <%= associated_model_field.label %>
                  </label>
                </div>
              <% end %>
            </div>
          </div>
        </div>
      </div>
    <% end %>
  </fieldset>
  <fieldset>
    <legend>
      <i class="fas fa-chevron-down"></i>
      <%= t('admin.export.options_for', name: 'csv') %>
    </legend>
    <div class="control-group row">
      <% guessed_encoding = @abstract_model.encoding %>
      <label class="col-sm-2 col-form-label text-md-end" for="csv_options_encoding_to">
        <%= t('admin.export.csv.encoding_to') %>
      </label>
      <div class="col-sm-10 controls">
        <div class="w-50">
          <%= select_tag 'csv_options[encoding_to]', options_for_select(Encoding.name_list.sort), include_blank: true, placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
        </div>
        <p class="form-text">
          <%= t('admin.export.csv.encoding_to_help', name: guessed_encoding) %>
        </p>
      </div>
    </div>
    <div class="control-group row">
      <label class="col-sm-2 col-form-label text-md-end" for="csv_options_skip_header">
        <%= t('admin.export.csv.skip_header') %>
      </label>
      <div class="col-sm-10 controls">
        <div class="col-form-label">
          <label>
            <%= check_box_tag 'csv_options[skip_header]', 'true' %>
          </label>
        </div>
        <p class="form-text">
          <%= t('admin.export.csv.skip_header_help') %>
        </p>
      </div>
    </div>
    <div class="control-group row">
      <label class="col-sm-2 col-form-label text-md-end" for="csv_options_generator_col_sep">
        <%= t('admin.export.csv.col_sep') %>
      </label>
      <div class="col-sm-10 controls">
        <div class="w-50">
          <%= select_tag 'csv_options[generator][col_sep]', options_for_select({ '' => t('admin.export.csv.default_col_sep'), "<comma> ','" => ',', "<semicolon> ';'" => ';', '<tabs>' => "'\t'" }), placeholder: t('admin.misc.search'), :'data-enumeration' => true %>
        </div>
        <p class="form-text">
          <%= t('admin.export.csv.col_sep_help', value: t('admin.export.csv.default_col_sep')) %>
        </p>
      </div>
    </div>
  </fieldset>
  <div class="form-actions row justify-content-end mb-3">
    <div class="col-sm-offset-2 col-sm-10">
      <input name="return_to" type="<%= :hidden %>" value="<%= (params[:return_to].presence || request.referer) %>" />
      <button class="btn btn-primary" name="csv" type="submit">
        <i class="fas fa-check"></i>
        <%= t("admin.export.confirmation", name: 'csv') %>
      </button>
      <button class="btn btn-info" name="json" type="submit">
        <%= t("admin.export.confirmation", name: 'json') %>
      </button>
      <button class="btn btn-info" name="xml" type="submit">
        <%= t("admin.export.confirmation", name: 'xml') %>
      </button>
      <button class="btn btn-light" name="_continue" type="submit">
        <i class="fas fa-times"></i>
        <%= t("admin.form.cancel") %>
      </button>
    </div>
  </div>
<% end %>


================================================
FILE: app/views/rails_admin/main/history.html.erb
================================================
<% params = request.params.except(:action, :controller, :model_name) %>
<% query = params[:query] %>
<% filter = params[:filter] %>
<% sort = params[:sort] %>
<% sort_reverse = params[:sort_reverse] %>
<% path_method = params[:id] ? "history_show_path" : "history_index_path" %>
<%= form_tag("", method: "get", class: "search form-inline") do %>
  <div class="card mb-3 p-3 bg-light">
    <div class="row">
      <div class="col-sm-6">
        <div class="input-group">
          <input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
          <button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i> ' + t('admin.misc.refresh') %>" type="submit">
            <i class="fas fa-sync"></i>
            <%= t("admin.misc.refresh") %>
          </button>
        </div>
      </div>
    </div>
  </div>
<% end %>
<table class="table table-condensed table-striped table-hover" id="history">
  <thead>
    <tr>
      <% columns = [] %>
      <% columns << { property_name: "created_at", css_class: "created_at",link_text: t('admin.table_headers.created_at') } %>
      <% columns << { property_name: "username",   css_class: "username",  link_text: t('admin.table_headers.username')   } %>
      <% columns << { property_name: "item",       css_class: "item",      link_text: t('admin.table_headers.item')       } if @general %>
      <% columns << { property_name: "message",    css_class: "message",   link_text: t('admin.table_headers.message')    } %>
      <% columns.each do |column| %>
        <% property_name = column[:property_name] %>
        <% selected = (sort == property_name) %>
        <% sort_direction = (sort_reverse ? "headerSortUp" : "headerSortDown" if selected) %>
        <% sort_location = send(path_method, params.except("sort_reverse").merge(model_name: @abstract_model.to_param, sort: property_name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {})) %>
        <th class="header <%= column[:css_class] %> <%= sort_direction if selected %>" data-href="<%= sort_location %>">
          <%= column[:link_text] %>
        </th>
      <% end %>
    </tr>
  </thead>
  <tbody class="table-group-divider">
    <% @history.each_with_index do |object, index| %>
      <tr>
        <% unless object.created_at.nil? %>
          <td>
            <%= l(object.created_at, format: :long, default: l(object.created_at, format: :long)) %>
          </td>
        <% end %>
        <td>
          <%= object.username %>
        </td>
        <% if @general %>
          <% if o = @abstract_model.get(object.item) %>
            <% label = o.send(@abstract_model.config.object_label_method) %>
            <% if show_action = action(:show, @abstract_model, o) %>
              <td>
                <%= link_to(label, url_for(action: show_action.action_name, model_name: @abstract_model.to_param, id: o.id)) %>
              </td>
            <% else %>
              <td>
                <%= label %>
              </td>
            <% end %>
          <% else %>
            <td>
              <%= "#{@abstract_model.config.label} ##{object.item}" %>
            </td>
          <% end %>
        <% end %>
        <td>
          <%= object.message.in?(['delete', 'new']) ? t("admin.actions.#{object.message}.done").capitalize : object.message %>
        </td>
      </tr>
    <% end %>
  </tbody>
</table>
<% unless params[:all] || !@history.respond_to?(:current_page) %>
  <%= paginate(@history, theme: 'ra-twitter-bootstrap') %>
  <%= link_to(t("admin.misc.show_all"), send(path_method, params.merge(all: true)), class: "show-all btn btn-light") unless (tc = @history.total_count) <= @history.size || tc > 100 %>
<% end %>


================================================
FILE: app/views/rails_admin/main/index.html.erb
================================================
<%
  query = params[:query]
  params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_export)
  params.delete(:query) if params[:query].blank?
  params.delete(:sort_reverse) unless params[:sort_reverse] == 'true'
  sort_reverse = params[:sort_reverse]
  sort = params[:sort]
  params.delete(:sort) if params[:sort] == @model_config.list.sort_by.to_s
  export_action = RailsAdmin::Config::Actions.find(:export, { controller: self.controller, abstract_model: @abstract_model })
  export_action = nil unless export_action && authorized?(export_action.authorization_key, @abstract_model)
  description = RailsAdmin.config(@abstract_model.model_name).description
  properties = @model_config.list.with(controller: self.controller, view: self, object: @abstract_model.model.new).fields_for_table
  checkboxes = @model_config.list.checkboxes?
  table_table_header_count = begin
    count = checkboxes ? 1 : 0
    count = count + properties.count
  end
%>

<% content_for :contextual_tabs do %>
  <% if filterable_fields.present? %>
    <li class="nav-item dropdown">
      <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#">
        <%= t('admin.misc.add_filter') %>
        <b class="caret"></b>
      </a>
      <ul class="dropdown-menu dropdown-menu-end" id="filters">
        <% filterable_fields.each do |field| %>
          <li>
            <a
              href="#"
              class="dropdown-item"
              data-options="<%= field.with(view: self).filter_options.to_json %>"
            >
              <%= field.label %>
            </a>
          </li>
        <% end %>
      </ul>
    </li>
  <% end %>
  <% if checkboxes %>
    <%= bulk_menu %>
  <% end %>
<% end %>

<style>
  <% properties.select{ |p| p.column_width.present? }.each do |property| %>
    <%= "#list th.#{property.css_class} { width: #{property.column_width}px; min-width: #{property.column_width}px; }" %>
    <%= "#list td.#{property.css_class} { max-width: #{property.column_width}px;}" %>
  <% end %>
</style>

<div id="list">
  <%= form_tag(index_path(params.except(*%w[page f query])), method: :get) do %>
    <div class="card mb-3 p-3 bg-light">
      <div class="row" data-options="<%= ordered_filter_options.to_json %>" id="filters_box"></div>
      <hr class="filters_box" style="display:<%= ordered_filters.empty? ? 'none' : 'block' %>"/>
      <div class="row">
        <div class="col-sm-6">
          <div class="input-group">
            <input class="form-control" name="query" placeholder="<%= t("admin.misc.filter") %>" type="search" value="<%= query %>" />
            <button class="btn btn-primary" data-disable-with="<%= '<i class="fas fa-sync"></i>' + t('admin.misc.refresh') %>" type="submit">
              <i class="fas fa-sync"></i>
              <%= t('admin.misc.refresh') %>
            </button>
            <button class="btn btn-info" id="remove_filter" title="<%= t('admin.misc.reset_filters') %>">
              <i class="fas fa-times"></i>
            </button>
          </div>
          <% if @model_config.list.search_help.present? %>
            <div class="form-text"><%= @model_config.list.search_help %></div>
          <% end %>
        </div>
        <div class="col-sm-6 text-end">
          <% if export_action %>
            <%= link_to wording_for(:link, export_action), export_path(params.except('page')), class: 'btn btn-info' %>
          <% end %>
        </div>
      </div>
    </div>
  <% end %>
  <% unless @model_config.list.scopes.empty? %>
    <ul class="nav nav-tabs" id="scope_selector">
      <% @model_config.list.scopes.each_with_index do |scope, index| %>
        <% scope = '_all' if scope.nil? %>
        <li class="nav-item">
          <a href="<%= index_path(params.merge(scope: scope, page: nil)) %>" class="nav-link <%= 'active' if scope.to_s == params[:scope] || (params[:scope].blank? && index == 0) %>">
            <%= I18n.t("admin.scopes.#{@abstract_model.to_param}.#{scope}", default: I18n.t("admin.scopes.#{scope}", default: scope.to_s.titleize)) %>
          </a>
        </li>
      <% end %>
    </ul>
  <% end %>
  <%= form_tag bulk_action_path(model_name: @abstract_model.to_param), method: :post, id: "bulk_form", class: ["form", "mb-3"] do %>
    <%= hidden_field_tag :bulk_action %>
    <% if description.present? %>
      <p>
        <strong>
          <%= description %>
        </strong>
      </p>
    <% end %>
    <div id="sidescroll">
      <table class="table table-condensed table-striped table-hover">
        <thead>
          <tr>
            <% if checkboxes %>
              <th class="shrink sticky">
                <input class="toggle" type="checkbox" />
              </th>
            <% end %>
            <% properties.each do |property| %>
              <% selected = (sort == property.name.to_s) %>
              <% if property.sortable %>
                <% sort_location = index_path params.except('sort_reverse').except('page').merge(sort: property.name).merge(selected && sort_reverse != "true" ? {sort_reverse: "true"} : {}) %>
                <% sort_direction = (sort_reverse == 'true' ? "headerSortUp" : "headerSortDown" if selected) %>
              <% end %>
              <th class="<%= [property.sortable && "header", property.sortable && sort_direction, property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?).join(' ') %>" data-href="<%= property.sortable && sort_location %>" rel="tooltip" title="<%= property.hint %>">
                <%= property.label %>
              </th>
            <% end %>
            <th class="last shrink"></th>
          </tr>
        </thead>
        <tbody class="table-group-divider">
          <% @objects.each do |object| %>
            <tr class="<%= @abstract_model.param_key %>_row <%= @model_config.list.with(object: object).row_css_class %>">
              <% if checkboxes %>
                <td class="sticky">
                  <%= check_box_tag "bulk_ids[]", object.id.to_s, false %>
                </td>
              <% end %>
              <% properties.map{ |property| property.bind(:object, object) }.each do |property| %>
                <% value = property.pretty_value %>
                <%= content_tag(:td, class: [property.sticky? && 'sticky', property.css_class, property.type_css_class].select(&:present?), title: strip_tags(value.to_s)) do %>
                  <%= value %>
                <% end %>
              <% end %>
              <td class="last links ra-sidescroll-frozen">
                <ul class="nav d-inline list-inline">
                  <%= menu_for :member, @abstract_model, object, true %>
                </ul>
              </td>
            </tr>
          <% end %>
          <% if @objects.empty? %>
            <tr class="empty_row">
              <td colspan="<%= table_table_header_count %>">
                <%= I18n.t('admin.actions.index.no_records') %>
              </td>
            </tr>
          <% end %>
        </tbody>
      </table>
    </div>
    <% if @model_config.list.limited_pagination %>
      <div class="row">
        <div class="col-md-6">
          <%= paginate(@objects, theme: 'ra-twitter-bootstrap/without_count', total_pages: Float::INFINITY) %>
        </div>
      </div>
    <% elsif @objects.respond_to?(:total_count) %>
      <% total_count = @objects.total_count.to_i %>
      <div class="row">
        <div class="col-md-6">
          <%= paginate(@objects, theme: 'ra-twitter-bootstrap') %>
        </div>
      </div>
      <div class="row">
        <div class="col-md-6">
          <%= link_to(t("admin.misc.show_all"), index_path(params.merge(all: true)), class: "show-all btn btn-light clearfix") unless total_count > 100 || total_count <= @objects.to_a.size %>
        </div>
      </div>
      <div class="clearfix total-count">
        <%= "#{total_count} #{@model_config.pluralize(total_count).downcase}" %>
      </div>
    <% else %>
      <div class="clearfix total-count">
        <%= "#{@objects.size} #{@model_config.pluralize(@objects.size).downcase}" %>
      </div>
    <% end %>
  <% end %>
</div>


================================================
FILE: app/views/rails_admin/main/new.html.erb
================================================
<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, html: { multipart: true, class: "main", data: { title: @page_name } } do |form| %>
  <%= form.generate action: :create %>
<% end %>


================================================
FILE: app/views/rails_admin/main/show.html.erb
================================================
<% @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset| %>
  <% unless (fields = fieldset.with(object: @object, view: self, controller: self.controller).visible_fields).empty? %>
    <% unless (fields = fields.reject{ |f| RailsAdmin::config.compact_show_view && (f.formatted_value.nil? || f.formatted_value == '') }).empty? %>
      <div class="fieldset">
        <h4>
          <%= fieldset.label %>
        </h4>
        <% if fieldset.help %>
          <p>
            <%= fieldset.help %>
          </p>
        <% end %>
        <div class="list-group">
          <% fields.each_with_index do |field, index| %>
            <div class="list-group-item border-0 <%= field.type_css_class %> <%= field.css_class %>">
              <div class="card">
                <h5 class="card-header bg-light">
                  <%= field.label %>
                </h5>
                <div class="card-body">
                  <%= field.pretty_value %>
                </div>
              </div>
            </div>
          <% end %>
        </dl>
      </div>
    <% end %>
  <% end %>
<% end %>


================================================
FILE: config/initializers/active_record_extensions.rb
================================================
# frozen_string_literal: true

ActiveSupport.on_load(:active_record) do
  module ActiveRecord
    class Base
      def self.rails_admin(&block)
        RailsAdmin.config(self, &block)
      end

      def rails_admin_default_object_label_method
        new_record? ? "new #{self.class}" : "#{self.class} ##{id}"
      end

      def safe_send(value)
        if has_attribute?(value)
          read_attribute(value)
        else
          send(value)
        end
      end
    end
  end
end


================================================
FILE: config/initializers/mongoid_extensions.rb
================================================
# frozen_string_literal: true

if defined?(::Mongoid::Document)
  require 'rails_admin/adapters/mongoid/extension'
  Mongoid::Document.include RailsAdmin::Adapters::Mongoid::Extension
end


================================================
FILE: config/locales/rails_admin.en.yml
================================================
en:
  admin:
    js:
      true: "True"
      false: "False"
      is_present: Is present
      is_blank: Is blank
      date: Date ...
      between_and_: Between ... and ...
      today: Today
      yesterday: Yesterday
      this_week: This week
      last_week: Last week
      time: Time ...
      number: Number ...
      contains: Contains
      does_not_contain: Does not contain
      is_exactly: Is exactly
      starts_with: Starts with
      ends_with: Ends with
      too_many_objects: "Too many objects, use search box above"
      no_objects: "No objects found"
      clear: Clear
    lo
Download .txt
gitextract_n6znt0mu/

├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── bug_report.md
│   │   └── feature_request.md
│   └── workflows/
│       ├── code-ql.yml
│       └── test.yml
├── .gitignore
├── .prettierignore
├── .rspec
├── .rubocop.yml
├── .rubocop_todo.yml
├── .teatro.yml
├── .yardopts
├── Appraisals
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Gemfile
├── LICENSE.md
├── Procfile.teatro
├── README.md
├── Rakefile
├── app/
│   ├── assets/
│   │   ├── javascripts/
│   │   │   └── rails_admin/
│   │   │       ├── application.js.erb
│   │   │       └── custom/
│   │   │           └── ui.js
│   │   └── stylesheets/
│   │       └── rails_admin/
│   │           ├── application.scss.erb
│   │           └── custom/
│   │               ├── mixins.scss
│   │               ├── theming.scss
│   │               └── variables.scss
│   ├── controllers/
│   │   └── rails_admin/
│   │       ├── application_controller.rb
│   │       └── main_controller.rb
│   ├── helpers/
│   │   └── rails_admin/
│   │       ├── application_helper.rb
│   │       ├── form_builder.rb
│   │       └── main_helper.rb
│   └── views/
│       ├── kaminari/
│       │   └── ra-twitter-bootstrap/
│       │       ├── _gap.html.erb
│       │       ├── _next_page.html.erb
│       │       ├── _page.html.erb
│       │       ├── _paginator.html.erb
│       │       ├── _prev_page.html.erb
│       │       └── without_count/
│       │           ├── _next_page.html.erb
│       │           ├── _paginator.html.erb
│       │           └── _prev_page.html.erb
│       ├── layouts/
│       │   └── rails_admin/
│       │       ├── _head.html.erb
│       │       ├── _navigation.html.erb
│       │       ├── _secondary_navigation.html.erb
│       │       ├── _sidebar_navigation.html.erb
│       │       ├── application.html.erb
│       │       ├── content.html.erb
│       │       └── modal.js.erb
│       └── rails_admin/
│           └── main/
│               ├── _dashboard_history.html.erb
│               ├── _delete_notice.html.erb
│               ├── _form_action_text.html.erb
│               ├── _form_boolean.html.erb
│               ├── _form_ck_editor.html.erb
│               ├── _form_code_mirror.html.erb
│               ├── _form_colorpicker.html.erb
│               ├── _form_datetime.html.erb
│               ├── _form_enumeration.html.erb
│               ├── _form_field.html.erb
│               ├── _form_file_upload.html.erb
│               ├── _form_filtering_multiselect.html.erb
│               ├── _form_filtering_select.html.erb
│               ├── _form_froala.html.erb
│               ├── _form_multiple_file_upload.html.erb
│               ├── _form_nested_many.html.erb
│               ├── _form_nested_one.html.erb
│               ├── _form_polymorphic_association.html.erb
│               ├── _form_simple_mde.html.erb
│               ├── _form_text.html.erb
│               ├── _form_wysihtml5.html.erb
│               ├── _submit_buttons.html.erb
│               ├── bulk_delete.html.erb
│               ├── dashboard.html.erb
│               ├── delete.html.erb
│               ├── edit.html.erb
│               ├── export.html.erb
│               ├── history.html.erb
│               ├── index.html.erb
│               ├── new.html.erb
│               └── show.html.erb
├── config/
│   ├── initializers/
│   │   ├── active_record_extensions.rb
│   │   └── mongoid_extensions.rb
│   ├── locales/
│   │   └── rails_admin.en.yml
│   └── routes.rb
├── gemfiles/
│   ├── composite_primary_keys.gemfile
│   ├── rails_6.0.gemfile
│   ├── rails_6.1.gemfile
│   ├── rails_7.0.gemfile
│   ├── rails_7.1.gemfile
│   ├── rails_7.2.gemfile
│   └── rails_8.0.gemfile
├── lib/
│   ├── generators/
│   │   └── rails_admin/
│   │       ├── importmap_formatter.rb
│   │       ├── install_generator.rb
│   │       ├── templates/
│   │       │   ├── initializer.erb
│   │       │   ├── rails_admin.js
│   │       │   ├── rails_admin.scss.erb
│   │       │   ├── rails_admin.vite.js
│   │       │   └── rails_admin.webpacker.js
│   │       └── utils.rb
│   ├── rails_admin/
│   │   ├── abstract_model.rb
│   │   ├── adapters/
│   │   │   ├── active_record/
│   │   │   │   ├── association.rb
│   │   │   │   ├── object_extension.rb
│   │   │   │   └── property.rb
│   │   │   ├── active_record.rb
│   │   │   ├── mongoid/
│   │   │   │   ├── association.rb
│   │   │   │   ├── bson.rb
│   │   │   │   ├── extension.rb
│   │   │   │   ├── object_extension.rb
│   │   │   │   └── property.rb
│   │   │   └── mongoid.rb
│   │   ├── config/
│   │   │   ├── actions/
│   │   │   │   ├── base.rb
│   │   │   │   ├── bulk_delete.rb
│   │   │   │   ├── dashboard.rb
│   │   │   │   ├── delete.rb
│   │   │   │   ├── edit.rb
│   │   │   │   ├── export.rb
│   │   │   │   ├── history_index.rb
│   │   │   │   ├── history_show.rb
│   │   │   │   ├── index.rb
│   │   │   │   ├── new.rb
│   │   │   │   ├── show.rb
│   │   │   │   └── show_in_app.rb
│   │   │   ├── actions.rb
│   │   │   ├── configurable.rb
│   │   │   ├── const_load_suppressor.rb
│   │   │   ├── fields/
│   │   │   │   ├── association.rb
│   │   │   │   ├── base.rb
│   │   │   │   ├── collection_association.rb
│   │   │   │   ├── factories/
│   │   │   │   │   ├── action_text.rb
│   │   │   │   │   ├── active_storage.rb
│   │   │   │   │   ├── association.rb
│   │   │   │   │   ├── carrierwave.rb
│   │   │   │   │   ├── devise.rb
│   │   │   │   │   ├── dragonfly.rb
│   │   │   │   │   ├── enum.rb
│   │   │   │   │   ├── paperclip.rb
│   │   │   │   │   ├── password.rb
│   │   │   │   │   └── shrine.rb
│   │   │   │   ├── group.rb
│   │   │   │   ├── singular_association.rb
│   │   │   │   ├── types/
│   │   │   │   │   ├── action_text.rb
│   │   │   │   │   ├── active_record_enum.rb
│   │   │   │   │   ├── active_storage.rb
│   │   │   │   │   ├── all.rb
│   │   │   │   │   ├── belongs_to_association.rb
│   │   │   │   │   ├── boolean.rb
│   │   │   │   │   ├── bson_object_id.rb
│   │   │   │   │   ├── carrierwave.rb
│   │   │   │   │   ├── citext.rb
│   │   │   │   │   ├── ck_editor.rb
│   │   │   │   │   ├── code_mirror.rb
│   │   │   │   │   ├── color.rb
│   │   │   │   │   ├── date.rb
│   │   │   │   │   ├── datetime.rb
│   │   │   │   │   ├── decimal.rb
│   │   │   │   │   ├── dragonfly.rb
│   │   │   │   │   ├── enum.rb
│   │   │   │   │   ├── file_upload.rb
│   │   │   │   │   ├── float.rb
│   │   │   │   │   ├── froala.rb
│   │   │   │   │   ├── has_and_belongs_to_many_association.rb
│   │   │   │   │   ├── has_many_association.rb
│   │   │   │   │   ├── has_one_association.rb
│   │   │   │   │   ├── hidden.rb
│   │   │   │   │   ├── inet.rb
│   │   │   │   │   ├── integer.rb
│   │   │   │   │   ├── json.rb
│   │   │   │   │   ├── multiple_active_storage.rb
│   │   │   │   │   ├── multiple_carrierwave.rb
│   │   │   │   │   ├── multiple_file_upload.rb
│   │   │   │   │   ├── numeric.rb
│   │   │   │   │   ├── paperclip.rb
│   │   │   │   │   ├── password.rb
│   │   │   │   │   ├── polymorphic_association.rb
│   │   │   │   │   ├── serialized.rb
│   │   │   │   │   ├── shrine.rb
│   │   │   │   │   ├── simple_mde.rb
│   │   │   │   │   ├── string.rb
│   │   │   │   │   ├── string_like.rb
│   │   │   │   │   ├── text.rb
│   │   │   │   │   ├── time.rb
│   │   │   │   │   ├── timestamp.rb
│   │   │   │   │   ├── uuid.rb
│   │   │   │   │   └── wysihtml5.rb
│   │   │   │   └── types.rb
│   │   │   ├── fields.rb
│   │   │   ├── groupable.rb
│   │   │   ├── has_description.rb
│   │   │   ├── has_fields.rb
│   │   │   ├── has_groups.rb
│   │   │   ├── hideable.rb
│   │   │   ├── inspectable.rb
│   │   │   ├── lazy_model.rb
│   │   │   ├── model.rb
│   │   │   ├── proxyable/
│   │   │   │   └── proxy.rb
│   │   │   ├── proxyable.rb
│   │   │   ├── sections/
│   │   │   │   ├── base.rb
│   │   │   │   ├── create.rb
│   │   │   │   ├── edit.rb
│   │   │   │   ├── export.rb
│   │   │   │   ├── list.rb
│   │   │   │   ├── modal.rb
│   │   │   │   ├── nested.rb
│   │   │   │   ├── show.rb
│   │   │   │   └── update.rb
│   │   │   └── sections.rb
│   │   ├── config.rb
│   │   ├── engine.rb
│   │   ├── extension.rb
│   │   ├── extensions/
│   │   │   ├── cancancan/
│   │   │   │   └── authorization_adapter.rb
│   │   │   ├── cancancan.rb
│   │   │   ├── controller_extension.rb
│   │   │   ├── paper_trail/
│   │   │   │   └── auditing_adapter.rb
│   │   │   ├── paper_trail.rb
│   │   │   ├── pundit/
│   │   │   │   └── authorization_adapter.rb
│   │   │   ├── pundit.rb
│   │   │   └── url_for_extension.rb
│   │   ├── support/
│   │   │   ├── composite_keys_serializer.rb
│   │   │   ├── csv_converter.rb
│   │   │   ├── datetime.rb
│   │   │   ├── es_module_processor.rb
│   │   │   └── hash_helper.rb
│   │   └── version.rb
│   ├── rails_admin.rb
│   └── tasks/
│       ├── .gitkeep
│       └── rails_admin.rake
├── package.json
├── rails_admin.gemspec
├── spec/
│   ├── controllers/
│   │   └── rails_admin/
│   │       ├── application_controller_spec.rb
│   │       └── main_controller_spec.rb
│   ├── dummy_app/
│   │   ├── .browserslistrc
│   │   ├── .dockerignore
│   │   ├── .gitignore
│   │   ├── Dockerfile
│   │   ├── Gemfile
│   │   ├── Procfile.dev
│   │   ├── Rakefile
│   │   ├── app/
│   │   │   ├── active_record/
│   │   │   │   ├── .gitkeep
│   │   │   │   ├── abstract.rb
│   │   │   │   ├── another_field_test.rb
│   │   │   │   ├── ball.rb
│   │   │   │   ├── carrierwave_uploader.rb
│   │   │   │   ├── category.rb
│   │   │   │   ├── cms/
│   │   │   │   │   └── basic_page.rb
│   │   │   │   ├── cms.rb
│   │   │   │   ├── comment/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── comment.rb
│   │   │   │   ├── concerns/
│   │   │   │   │   └── taggable.rb
│   │   │   │   ├── deeply_nested_field_test.rb
│   │   │   │   ├── division.rb
│   │   │   │   ├── draft.rb
│   │   │   │   ├── fan.rb
│   │   │   │   ├── fanship.rb
│   │   │   │   ├── favorite_player.rb
│   │   │   │   ├── field_test.rb
│   │   │   │   ├── hardball.rb
│   │   │   │   ├── image.rb
│   │   │   │   ├── league.rb
│   │   │   │   ├── managed_team.rb
│   │   │   │   ├── managing_user.rb
│   │   │   │   ├── nested_fan.rb
│   │   │   │   ├── nested_favorite_player.rb
│   │   │   │   ├── nested_field_test.rb
│   │   │   │   ├── paper_trail_test/
│   │   │   │   │   └── subclass_in_namespace.rb
│   │   │   │   ├── paper_trail_test.rb
│   │   │   │   ├── paper_trail_test_subclass.rb
│   │   │   │   ├── paper_trail_test_with_custom_association.rb
│   │   │   │   ├── player.rb
│   │   │   │   ├── read_only_comment.rb
│   │   │   │   ├── restricted_team.rb
│   │   │   │   ├── shrine_uploader.rb
│   │   │   │   ├── shrine_versioning_uploader.rb
│   │   │   │   ├── team.rb
│   │   │   │   ├── trail.rb
│   │   │   │   ├── two_level/
│   │   │   │   │   ├── namespaced/
│   │   │   │   │   │   └── polymorphic_association_test.rb
│   │   │   │   │   └── namespaced.rb
│   │   │   │   ├── user/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── user.rb
│   │   │   │   └── without_table.rb
│   │   │   ├── assets/
│   │   │   │   ├── builds/
│   │   │   │   │   └── .keep
│   │   │   │   ├── config/
│   │   │   │   │   └── manifest.js
│   │   │   │   ├── javascripts/
│   │   │   │   │   ├── application.js
│   │   │   │   │   ├── rails-ujs.esm.js.erb
│   │   │   │   │   └── rails_admin/
│   │   │   │   │       └── custom/
│   │   │   │   │           └── ui.js
│   │   │   │   └── stylesheets/
│   │   │   │       ├── application.css
│   │   │   │       ├── rails_admin/
│   │   │   │       │   └── custom/
│   │   │   │       │       └── theming.scss
│   │   │   │       └── rails_admin.scss
│   │   │   ├── controllers/
│   │   │   │   ├── application_controller.rb
│   │   │   │   └── players_controller.rb
│   │   │   ├── eager_loaded/
│   │   │   │   └── basketball.rb
│   │   │   ├── frontend/
│   │   │   │   ├── entrypoints/
│   │   │   │   │   ├── application.js
│   │   │   │   │   └── rails_admin.js
│   │   │   │   └── stylesheets/
│   │   │   │       └── rails_admin.scss
│   │   │   ├── javascript/
│   │   │   │   ├── application.js
│   │   │   │   ├── rails_admin.js
│   │   │   │   └── rails_admin.scss
│   │   │   ├── jobs/
│   │   │   │   ├── application_job.rb
│   │   │   │   └── null_job.rb
│   │   │   ├── locales/
│   │   │   │   └── models.en.yml
│   │   │   ├── mailers/
│   │   │   │   └── .gitkeep
│   │   │   ├── mongoid/
│   │   │   │   ├── another_field_test.rb
│   │   │   │   ├── ball.rb
│   │   │   │   ├── carrierwave_uploader.rb
│   │   │   │   ├── category.rb
│   │   │   │   ├── cms/
│   │   │   │   │   └── basic_page.rb
│   │   │   │   ├── cms.rb
│   │   │   │   ├── comment/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   ├── comment.rb
│   │   │   │   ├── concerns/
│   │   │   │   │   └── taggable.rb
│   │   │   │   ├── deeply_nested_field_test.rb
│   │   │   │   ├── division.rb
│   │   │   │   ├── draft.rb
│   │   │   │   ├── embed.rb
│   │   │   │   ├── fan.rb
│   │   │   │   ├── field_test.rb
│   │   │   │   ├── hardball.rb
│   │   │   │   ├── image.rb
│   │   │   │   ├── league.rb
│   │   │   │   ├── managed_team.rb
│   │   │   │   ├── managing_user.rb
│   │   │   │   ├── nested_field_test.rb
│   │   │   │   ├── player.rb
│   │   │   │   ├── read_only_comment.rb
│   │   │   │   ├── restricted_team.rb
│   │   │   │   ├── shrine_uploader.rb
│   │   │   │   ├── shrine_versioning_uploader.rb
│   │   │   │   ├── team.rb
│   │   │   │   ├── two_level/
│   │   │   │   │   └── namespaced/
│   │   │   │   │       └── polymorphic_association_test.rb
│   │   │   │   ├── user/
│   │   │   │   │   └── confirmed.rb
│   │   │   │   └── user.rb
│   │   │   └── views/
│   │   │       ├── layouts/
│   │   │       │   └── application.html.erb
│   │   │       └── players/
│   │   │           └── show.html.erb
│   │   ├── babel.config.js
│   │   ├── bin/
│   │   │   ├── bundle
│   │   │   ├── dev
│   │   │   ├── docker-entrypoint
│   │   │   ├── importmap
│   │   │   ├── rails
│   │   │   ├── rake
│   │   │   ├── setup
│   │   │   ├── update
│   │   │   ├── vite
│   │   │   ├── webpack
│   │   │   └── webpack-dev-server
│   │   ├── config/
│   │   │   ├── application.rb
│   │   │   ├── boot.rb
│   │   │   ├── database.yml
│   │   │   ├── dockerfile.yml
│   │   │   ├── environment.rb
│   │   │   ├── environments/
│   │   │   │   ├── development.rb
│   │   │   │   ├── production.rb
│   │   │   │   └── test.rb
│   │   │   ├── importmap.rails_admin.rb
│   │   │   ├── importmap.rb
│   │   │   ├── initializers/
│   │   │   │   ├── application_controller_renderer.rb
│   │   │   │   ├── assets.rb
│   │   │   │   ├── backtrace_silencers.rb
│   │   │   │   ├── cookies_serializer.rb
│   │   │   │   ├── cors.rb
│   │   │   │   ├── devise.rb
│   │   │   │   ├── dragonfly.rb
│   │   │   │   ├── filter_parameter_logging.rb
│   │   │   │   ├── inflections.rb
│   │   │   │   ├── mime_types.rb
│   │   │   │   ├── mongoid.rb
│   │   │   │   ├── rails_admin.rb
│   │   │   │   ├── secret_token.rb
│   │   │   │   ├── session_patch.rb
│   │   │   │   ├── session_store.rb
│   │   │   │   ├── shrine.rb
│   │   │   │   └── wrap_parameters.rb
│   │   │   ├── locales/
│   │   │   │   ├── devise.en.yml
│   │   │   │   ├── en.yml
│   │   │   │   └── fr.yml
│   │   │   ├── mongoid5.yml
│   │   │   ├── mongoid6.yml
│   │   │   ├── puma.rb
│   │   │   ├── routes.rb
│   │   │   ├── secrets.yml
│   │   │   ├── storage.yml
│   │   │   ├── vite.json
│   │   │   ├── webpack/
│   │   │   │   ├── development.js
│   │   │   │   ├── environment.js
│   │   │   │   ├── production.js
│   │   │   │   └── test.js
│   │   │   └── webpacker.yml
│   │   ├── config.ru
│   │   ├── db/
│   │   │   ├── migrate/
│   │   │   │   ├── 00000000000001_create_divisions_migration.rb
│   │   │   │   ├── 00000000000002_create_drafts_migration.rb
│   │   │   │   ├── 00000000000003_create_leagues_migration.rb
│   │   │   │   ├── 00000000000004_create_players_migration.rb
│   │   │   │   ├── 00000000000005_create_teams_migration.rb
│   │   │   │   ├── 00000000000006_devise_create_users.rb
│   │   │   │   ├── 00000000000007_create_histories_table.rb
│   │   │   │   ├── 00000000000008_create_fans_migration.rb
│   │   │   │   ├── 00000000000009_create_fans_teams_migration.rb
│   │   │   │   ├── 00000000000010_add_revenue_to_team_migration.rb
│   │   │   │   ├── 00000000000011_add_suspended_to_player_migration.rb
│   │   │   │   ├── 00000000000012_add_avatar_columns_to_user.rb
│   │   │   │   ├── 00000000000013_add_roles_to_user.rb
│   │   │   │   ├── 00000000000014_add_color_to_team_migration.rb
│   │   │   │   ├── 20101223222233_create_rel_tests.rb
│   │   │   │   ├── 20110103205808_create_comments.rb
│   │   │   │   ├── 20110123042530_rename_histories_to_rails_admin_histories.rb
│   │   │   │   ├── 20110224184303_create_field_tests.rb
│   │   │   │   ├── 20110328193014_create_cms_basic_pages.rb
│   │   │   │   ├── 20110329183136_remove_league_id_from_teams.rb
│   │   │   │   ├── 20110607152842_add_format_to_field_test.rb
│   │   │   │   ├── 20110714095433_create_balls.rb
│   │   │   │   ├── 20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
│   │   │   │   ├── 20110901131551_change_division_primary_key.rb
│   │   │   │   ├── 20110901142530_rename_league_id_foreign_key_on_divisions.rb
│   │   │   │   ├── 20110901150912_set_primary_key_not_null_for_divisions.rb
│   │   │   │   ├── 20110901154834_change_length_for_rails_admin_histories.rb
│   │   │   │   ├── 20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
│   │   │   │   ├── 20111115041025_add_type_to_balls.rb
│   │   │   │   ├── 20111123092549_create_nested_field_tests.rb
│   │   │   │   ├── 20111130075338_add_dragonfly_asset_name_to_field_tests.rb
│   │   │   │   ├── 20111215083258_create_foo_bars.rb
│   │   │   │   ├── 20120117151733_add_custom_field_to_teams.rb
│   │   │   │   ├── 20120118122004_add_categories.rb
│   │   │   │   ├── 20120319041705_drop_rel_tests.rb
│   │   │   │   ├── 20120720075608_create_another_field_tests.rb
│   │   │   │   ├── 20120928075608_create_images.rb
│   │   │   │   ├── 20140412075608_create_deeply_nested_field_tests.rb
│   │   │   │   ├── 20140826093220_create_paper_trail_tests.rb
│   │   │   │   ├── 20140826093552_create_versions.rb
│   │   │   │   ├── 20150815102450_add_refile_to_field_tests.rb
│   │   │   │   ├── 20151027181550_change_field_test_id_to_nested_field_tests.rb
│   │   │   │   ├── 20160728152942_add_main_sponsor_to_teams.rb
│   │   │   │   ├── 20160728153058_add_formation_to_players.rb
│   │   │   │   ├── 20171229220713_add_enum_fields_to_field_tests.rb
│   │   │   │   ├── 20180701084251_create_active_storage_tables.active_storage.rb
│   │   │   │   ├── 20180707101855_add_carrierwave_assets_to_field_tests.rb
│   │   │   │   ├── 20181029101829_add_shrine_data_to_field_tests.rb
│   │   │   │   ├── 20190531065324_create_action_text_tables.action_text.rb
│   │   │   │   ├── 20201127111952_update_active_storage_tables.rb
│   │   │   │   ├── 20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
│   │   │   │   ├── 20210812115908_create_custom_versions.rb
│   │   │   │   ├── 20211011235734_add_bool_field_open.rb
│   │   │   │   ├── 20220416102741_create_composite_key_tables.rb
│   │   │   │   └── 20240921171953_add_non_nullable_boolean_field.rb
│   │   │   ├── schema.rb
│   │   │   └── seeds.rb
│   │   ├── doc/
│   │   │   └── README_FOR_APP
│   │   ├── fly.toml
│   │   ├── lib/
│   │   │   ├── assets/
│   │   │   │   └── .gitkeep
│   │   │   ├── does_not_load_autoload_paths_not_in_eager_load.rb
│   │   │   └── tasks/
│   │   │       └── .gitkeep
│   │   ├── package.json
│   │   ├── postcss.config.js
│   │   ├── public/
│   │   │   ├── 404.html
│   │   │   ├── 422.html
│   │   │   ├── 500.html
│   │   │   ├── robots.txt
│   │   │   └── system/
│   │   │       └── dragonfly/
│   │   │           └── development/
│   │   │               └── 2011/
│   │   │                   └── 11/
│   │   │                       ├── 24/
│   │   │                       │   └── 10_36_27_888_Pensive_Parakeet.jpg.meta
│   │   │                       └── 30/
│   │   │                           └── 08_54_39_906_Costa_Rican_Frog.jpg.meta
│   │   ├── vendor/
│   │   │   └── javascript/
│   │   │       └── .keep
│   │   ├── vite.config.ts
│   │   └── webpack.config.js
│   ├── factories.rb
│   ├── fixtures/
│   │   └── test.txt
│   ├── helpers/
│   │   └── rails_admin/
│   │       ├── application_helper_spec.rb
│   │       ├── form_builder_spec.rb
│   │       └── main_helper_spec.rb
│   ├── integration/
│   │   ├── actions/
│   │   │   ├── base_spec.rb
│   │   │   ├── bulk_delete_spec.rb
│   │   │   ├── dashboard_spec.rb
│   │   │   ├── delete_spec.rb
│   │   │   ├── edit_spec.rb
│   │   │   ├── export_spec.rb
│   │   │   ├── history_index_spec.rb
│   │   │   ├── history_show_spec.rb
│   │   │   ├── index_spec.rb
│   │   │   ├── new_spec.rb
│   │   │   ├── show_in_app_spec.rb
│   │   │   └── show_spec.rb
│   │   ├── auditing/
│   │   │   └── paper_trail_spec.rb
│   │   ├── authentication/
│   │   │   └── devise_spec.rb
│   │   ├── authorization/
│   │   │   ├── cancancan_spec.rb
│   │   │   └── pundit_spec.rb
│   │   ├── fields/
│   │   │   ├── action_text_spec.rb
│   │   │   ├── active_record_enum_spec.rb
│   │   │   ├── active_storage_spec.rb
│   │   │   ├── base_spec.rb
│   │   │   ├── belongs_to_association_spec.rb
│   │   │   ├── boolean_spec.rb
│   │   │   ├── carrierwave_spec.rb
│   │   │   ├── ck_editor_spec.rb
│   │   │   ├── code_mirror_spec.rb
│   │   │   ├── color_spec.rb
│   │   │   ├── date_spec.rb
│   │   │   ├── datetime_spec.rb
│   │   │   ├── enum_spec.rb
│   │   │   ├── file_upload_spec.rb
│   │   │   ├── floara_spec.rb
│   │   │   ├── has_and_belongs_to_many_association_spec.rb
│   │   │   ├── has_many_association_spec.rb
│   │   │   ├── has_one_association_spec.rb
│   │   │   ├── hidden_spec.rb
│   │   │   ├── multiple_active_storage_spec.rb
│   │   │   ├── multiple_carrierwave_spec.rb
│   │   │   ├── multiple_file_upload_spec.rb
│   │   │   ├── paperclip_spec.rb
│   │   │   ├── polymorphic_assosiation_spec.rb
│   │   │   ├── serialized_spec.rb
│   │   │   ├── shrine_spec.rb
│   │   │   ├── simple_mde_spec.rb
│   │   │   ├── time_spec.rb
│   │   │   └── wysihtml5_spec.rb
│   │   ├── rails_admin_spec.rb
│   │   └── widgets/
│   │       ├── datetimepicker_spec.rb
│   │       ├── filter_box_spec.rb
│   │       ├── filtering_multi_select_spec.rb
│   │       ├── filtering_select_spec.rb
│   │       ├── nested_many_spec.rb
│   │       ├── nested_one_spec.rb
│   │       └── remote_form_spec.rb
│   ├── orm/
│   │   ├── active_record.rb
│   │   └── mongoid.rb
│   ├── policies.rb
│   ├── rails_admin/
│   │   ├── abstract_model_spec.rb
│   │   ├── active_record_extension_spec.rb
│   │   ├── adapters/
│   │   │   ├── active_record/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── object_extension_spec.rb
│   │   │   │   └── property_spec.rb
│   │   │   ├── active_record_spec.rb
│   │   │   ├── mongoid/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── object_extension_spec.rb
│   │   │   │   └── property_spec.rb
│   │   │   └── mongoid_spec.rb
│   │   ├── config/
│   │   │   ├── actions/
│   │   │   │   └── base_spec.rb
│   │   │   ├── actions_spec.rb
│   │   │   ├── configurable_spec.rb
│   │   │   ├── const_load_suppressor_spec.rb
│   │   │   ├── fields/
│   │   │   │   ├── association_spec.rb
│   │   │   │   ├── base_spec.rb
│   │   │   │   └── types/
│   │   │   │       ├── action_text_spec.rb
│   │   │   │       ├── active_record_enum_spec.rb
│   │   │   │       ├── active_storage_spec.rb
│   │   │   │       ├── belongs_to_association_spec.rb
│   │   │   │       ├── boolean_spec.rb
│   │   │   │       ├── bson_object_id_spec.rb
│   │   │   │       ├── carrierwave_spec.rb
│   │   │   │       ├── citext_spec.rb
│   │   │   │       ├── ck_editor_spec.rb
│   │   │   │       ├── code_mirror_spec.rb
│   │   │   │       ├── color_spec.rb
│   │   │   │       ├── date_spec.rb
│   │   │   │       ├── datetime_spec.rb
│   │   │   │       ├── decimal_spec.rb
│   │   │   │       ├── drangonfly_spec.rb
│   │   │   │       ├── enum_spec.rb
│   │   │   │       ├── file_upload_spec.rb
│   │   │   │       ├── float_spec.rb
│   │   │   │       ├── froala_spec.rb
│   │   │   │       ├── has_and_belongs_to_many_association_spec.rb
│   │   │   │       ├── has_many_association_spec.rb
│   │   │   │       ├── has_one_association_spec.rb
│   │   │   │       ├── hidden_spec.rb
│   │   │   │       ├── inet_spec.rb
│   │   │   │       ├── integer_spec.rb
│   │   │   │       ├── json_spec.rb
│   │   │   │       ├── multiple_active_storage_spec.rb
│   │   │   │       ├── multiple_carrierwave_spec.rb
│   │   │   │       ├── multiple_file_upload_spec.rb
│   │   │   │       ├── numeric_spec.rb
│   │   │   │       ├── paperclip_spec.rb
│   │   │   │       ├── password_spec.rb
│   │   │   │       ├── serialized_spec.rb
│   │   │   │       ├── shrine_spec.rb
│   │   │   │       ├── simple_mde_spec.rb
│   │   │   │       ├── string_like_spec.rb
│   │   │   │       ├── string_spec.rb
│   │   │   │       ├── text_spec.rb
│   │   │   │       ├── time_spec.rb
│   │   │   │       ├── timestamp_spec.rb
│   │   │   │       ├── uuid_spec.rb
│   │   │   │       └── wysihtml5_spec.rb
│   │   │   ├── fields_spec.rb
│   │   │   ├── has_description_spec.rb
│   │   │   ├── has_fields_spec.rb
│   │   │   ├── lazy_model_spec.rb
│   │   │   ├── model_spec.rb
│   │   │   ├── proxyable_spec.rb
│   │   │   ├── sections/
│   │   │   │   └── list_spec.rb
│   │   │   └── sections_spec.rb
│   │   ├── config_spec.rb
│   │   ├── engine_spec.rb
│   │   ├── extentions/
│   │   │   ├── cancancan/
│   │   │   │   └── authorization_adapter_spec.rb
│   │   │   └── paper_trail/
│   │   │       ├── auditing_adapter_spec.rb
│   │   │       └── version_proxy_spec.rb
│   │   ├── install_generator_spec.rb
│   │   ├── support/
│   │   │   ├── csv_converter_spec.rb
│   │   │   ├── datetime_spec.rb
│   │   │   └── hash_helper_spec.rb
│   │   └── version_spec.rb
│   ├── shared_examples/
│   │   └── shared_examples_for_field_types.rb
│   ├── spec_helper.rb
│   └── support/
│       ├── cuprite_logger.rb
│       ├── fakeio.rb
│       ├── fixtures.rb
│       └── jquery.simulate.drag-sortable.js
├── src/
│   └── rails_admin/
│       ├── abstract-select.js
│       ├── base.js
│       ├── filter-box.js
│       ├── filtering-multiselect.js
│       ├── filtering-select.js
│       ├── i18n.js
│       ├── jquery.js
│       ├── nested-form-hooks.js
│       ├── remote-form.js
│       ├── sidescroll.js
│       ├── styles/
│       │   ├── base/
│       │   │   ├── README.txt
│       │   │   ├── mixins.scss
│       │   │   ├── theming.scss
│       │   │   └── variables.scss
│       │   ├── base.scss
│       │   ├── filtering-multiselect.scss
│       │   ├── filtering-select.scss
│       │   └── widgets.scss
│       ├── ui.js
│       ├── vendor/
│       │   └── jquery_nested_form.js
│       └── widgets.js
└── vendor/
    └── assets/
        ├── javascripts/
        │   └── rails_admin/
        │       ├── bootstrap.js
        │       ├── flatpickr-with-locales.js
        │       ├── jquery-ui/
        │       │   ├── data.js
        │       │   ├── effect.js
        │       │   ├── ie.js
        │       │   ├── keycode.js
        │       │   ├── position.js
        │       │   ├── safe-active-element.js
        │       │   ├── scroll-parent.js
        │       │   ├── unique-id.js
        │       │   ├── version.js
        │       │   ├── widget.js
        │       │   └── widgets/
        │       │       ├── autocomplete.js
        │       │       ├── menu.js
        │       │       ├── mouse.js
        │       │       └── sortable.js
        │       ├── jquery3.js
        │       └── popper.js
        └── stylesheets/
            └── rails_admin/
                ├── bootstrap/
                │   ├── _accordion.scss
                │   ├── _alert.scss
                │   ├── _badge.scss
                │   ├── _breadcrumb.scss
                │   ├── _button-group.scss
                │   ├── _buttons.scss
                │   ├── _card.scss
                │   ├── _carousel.scss
                │   ├── _close.scss
                │   ├── _containers.scss
                │   ├── _dropdown.scss
                │   ├── _forms.scss
                │   ├── _functions.scss
                │   ├── _grid.scss
                │   ├── _helpers.scss
                │   ├── _images.scss
                │   ├── _list-group.scss
                │   ├── _mixins.scss
                │   ├── _modal.scss
                │   ├── _nav.scss
                │   ├── _navbar.scss
                │   ├── _offcanvas.scss
                │   ├── _pagination.scss
                │   ├── _placeholders.scss
                │   ├── _popover.scss
                │   ├── _progress.scss
                │   ├── _reboot.scss
                │   ├── _root.scss
                │   ├── _spinners.scss
                │   ├── _tables.scss
                │   ├── _toasts.scss
                │   ├── _tooltip.scss
                │   ├── _transitions.scss
                │   ├── _type.scss
                │   ├── _utilities.scss
                │   ├── _variables.scss
                │   ├── bootstrap.scss
                │   ├── forms/
                │   │   ├── _floating-labels.scss
                │   │   ├── _form-check.scss
                │   │   ├── _form-control.scss
                │   │   ├── _form-range.scss
                │   │   ├── _form-select.scss
                │   │   ├── _form-text.scss
                │   │   ├── _input-group.scss
                │   │   ├── _labels.scss
                │   │   └── _validation.scss
                │   ├── helpers/
                │   │   ├── _clearfix.scss
                │   │   ├── _colored-links.scss
                │   │   ├── _position.scss
                │   │   ├── _ratio.scss
                │   │   ├── _stacks.scss
                │   │   ├── _stretched-link.scss
                │   │   ├── _text-truncation.scss
                │   │   ├── _visually-hidden.scss
                │   │   └── _vr.scss
                │   ├── mixins/
                │   │   ├── _alert.scss
                │   │   ├── _backdrop.scss
                │   │   ├── _border-radius.scss
                │   │   ├── _box-shadow.scss
                │   │   ├── _breakpoints.scss
                │   │   ├── _buttons.scss
                │   │   ├── _caret.scss
                │   │   ├── _clearfix.scss
                │   │   ├── _color-scheme.scss
                │   │   ├── _container.scss
                │   │   ├── _deprecate.scss
                │   │   ├── _forms.scss
                │   │   ├── _gradients.scss
                │   │   ├── _grid.scss
                │   │   ├── _image.scss
                │   │   ├── _list-group.scss
                │   │   ├── _lists.scss
                │   │   ├── _pagination.scss
                │   │   ├── _reset-text.scss
                │   │   ├── _resize.scss
                │   │   ├── _table-variants.scss
                │   │   ├── _text-truncate.scss
                │   │   ├── _transition.scss
                │   │   ├── _utilities.scss
                │   │   └── _visually-hidden.scss
                │   ├── utilities/
                │   │   └── _api.scss
                │   └── vendor/
                │       └── _rfs.scss
                ├── flatpickr.css
                └── font-awesome.scss
Download .txt
SYMBOL INDEX (1859 symbols across 299 files)

FILE: app/controllers/rails_admin/application_controller.rb
  type RailsAdmin (line 5) | module RailsAdmin
    class ModelNotFound (line 6) | class ModelNotFound < ::StandardError
    class ObjectNotFound (line 9) | class ObjectNotFound < ::StandardError
    class ActionNotAllowed (line 12) | class ActionNotAllowed < ::StandardError
    class ApplicationController (line 15) | class ApplicationController < Config.parent_controller.constantize
      method get_model (line 28) | def get_model
      method get_object (line 36) | def get_object
      method to_model_name (line 40) | def to_model_name(param)
      method _current_user (line 44) | def _current_user
      method _get_plugin_name (line 50) | def _get_plugin_name
      method _authenticate! (line 54) | def _authenticate!
      method _authorize! (line 58) | def _authorize!
      method _audit! (line 62) | def _audit!
      method rails_admin_controller? (line 66) | def rails_admin_controller?

FILE: app/controllers/rails_admin/main_controller.rb
  type RailsAdmin (line 3) | module RailsAdmin
    class MainController (line 4) | class MainController < RailsAdmin::ApplicationController
      method bulk_action (line 11) | def bulk_action
      method list_entries (line 16) | def list_entries(model_config = @model_config, auth_scope_key = :ind...
      method action_missing (line 26) | def action_missing(name, *_args)
      method method_missing (line 41) | def method_missing(name, *args, &block)
      method respond_to_missing? (line 50) | def respond_to_missing?(sym, include_private)
      method back_or_index (line 58) | def back_or_index
      method allowed_return_to? (line 62) | def allowed_return_to?(url)
      method get_sort_hash (line 66) | def get_sort_hash(model_config)
      method redirect_to_on_success (line 82) | def redirect_to_on_success
      method visible_fields (line 93) | def visible_fields(action, model_config = @model_config)
      method sanitize_params_for! (line 97) | def sanitize_params_for!(action, model_config = @model_config, targe...
      method handle_save_error (line 113) | def handle_save_error(whereto = :new)
      method check_for_cancel (line 123) | def check_for_cancel
      method get_collection (line 129) | def get_collection(model_config, scope, pagination)
      method get_association_scope_from_params (line 142) | def get_association_scope_from_params

FILE: app/helpers/rails_admin/application_helper.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type ApplicationHelper (line 4) | module ApplicationHelper
      function authorized? (line 5) | def authorized?(action_name, abstract_model = nil, object = nil)
      function current_action (line 10) | def current_action
      function current_action? (line 14) | def current_action?(action, abstract_model = @abstract_model, object...
      function action (line 20) | def action(key, abstract_model = nil, object = nil)
      function actions (line 24) | def actions(scope = :all, abstract_model = nil, object = nil)
      function edit_user_link (line 28) | def edit_user_link
      function logout_path (line 50) | def logout_path
      function logout_method (line 63) | def logout_method
      function wording_for (line 69) | def wording_for(label, action = @action, abstract_model = @abstract_...
      function main_navigation (line 82) | def main_navigation
      function root_navigation (line 97) | def root_navigation
      function static_navigation (line 112) | def static_navigation
      function navigation (line 121) | def navigation(parent_groups, nodes, level = 0)
      function breadcrumb (line 138) | def breadcrumb(action = @action, _acc = [])
      function menu_for (line 164) | def menu_for(parent, abstract_model = nil, object = nil, only_icon =...
      function bulk_menu (line 187) | def bulk_menu(abstract_model = @abstract_model)
      function flash_alert_class (line 203) | def flash_alert_class(flash_key)
      function handle_asset_dependency_error (line 212) | def handle_asset_dependency_error
      function image_tag (line 225) | def image_tag(source, options = {})
      function edit_user_link_label (line 235) | def edit_user_link_label
      function gravatar_url (line 244) | def gravatar_url(email)
      function collapsible_stack (line 248) | def collapsible_stack(label, class_prefix, li_stack)

FILE: app/helpers/rails_admin/form_builder.rb
  type RailsAdmin (line 5) | module RailsAdmin
    class FormBuilder (line 6) | class FormBuilder < ::ActionView::Helpers::FormBuilder
      method generate (line 10) | def generate(options = {})
      method fieldset_for (line 26) | def fieldset_for(fieldset, nested_in)
      method field_wrapper_for (line 44) | def field_wrapper_for(field, nested_in)
      method input_for (line 58) | def input_for(field)
      method errors_for (line 68) | def errors_for(field)
      method help_for (line 72) | def help_for(field)
      method field_for (line 76) | def field_for(field)
      method object_infos (line 80) | def object_infos
      method jquery_namespace (line 93) | def jquery_namespace(field)
      method dom_id (line 97) | def dom_id(field)
      method dom_name (line 106) | def dom_name(field)
      method hidden_field (line 110) | def hidden_field(method, options = {})
      method generator_action (line 120) | def generator_action(action, nested)
      method visible_groups (line 130) | def visible_groups(model_config, action)
      method without_field_error_proc_added_div (line 139) | def without_field_error_proc_added_div
      method nested_field_association? (line 151) | def nested_field_association?(field, nested_in)

FILE: app/helpers/rails_admin/main_helper.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type MainHelper (line 4) | module MainHelper
      function rails_admin_form_for (line 5) | def rails_admin_form_for(*args, &block)
      function get_indicator (line 12) | def get_indicator(percent)
      function filterable_fields (line 21) | def filterable_fields
      function ordered_filters (line 25) | def ordered_filters
      function ordered_filter_options (line 42) | def ordered_filter_options

FILE: config/initializers/active_record_extensions.rb
  type ActiveRecord (line 4) | module ActiveRecord
    class Base (line 5) | class Base
      method rails_admin (line 6) | def self.rails_admin(&block)
      method rails_admin_default_object_label_method (line 10) | def rails_admin_default_object_label_method
      method safe_send (line 14) | def safe_send(value)

FILE: lib/generators/rails_admin/importmap_formatter.rb
  type RailsAdmin (line 5) | module RailsAdmin
    class ImportmapFormatter (line 6) | class ImportmapFormatter
      method initialize (line 9) | def initialize(path = 'config/importmap.rails_admin.rb')
      method format (line 13) | def format

FILE: lib/generators/rails_admin/install_generator.rb
  type RailsAdmin (line 7) | module RailsAdmin
    class InstallGenerator (line 8) | class InstallGenerator < Rails::Generators::Base
      method install (line 16) | def install
      method asset (line 47) | def asset
      method configure_for_sprockets (line 63) | def configure_for_sprockets
      method configure_for_webpacker5 (line 67) | def configure_for_webpacker5
      method configure_for_vite (line 75) | def configure_for_vite
      method configure_for_webpack (line 83) | def configure_for_webpack
      method configure_for_importmap (line 96) | def configure_for_importmap
      method setup_css (line 104) | def setup_css(additional_script_entries = {})
      method add_package_json_field (line 122) | def add_package_json_field(name, entries, instruction = nil)

FILE: lib/generators/rails_admin/utils.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Generators (line 4) | module Generators
      type Utils (line 5) | module Utils
        type InstanceMethods (line 6) | module InstanceMethods
          function display (line 7) | def display(output, color = :green)
          function ask_for (line 11) | def ask_for(wording, default_value = nil, override_if_present_va...

FILE: lib/rails_admin.rb
  type RailsAdmin (line 15) | module RailsAdmin
    function config (line 31) | def self.config(entity = nil, &block)
    function yaml_load (line 46) | def self.yaml_load(yaml)
    function yaml_load (line 51) | def self.yaml_load(yaml)
    function yaml_dump (line 59) | def self.yaml_dump(object)

FILE: lib/rails_admin/abstract_model.rb
  type RailsAdmin (line 5) | module RailsAdmin
    class AbstractModel (line 6) | class AbstractModel
      method reset (line 11) | def reset
      method all (line 15) | def all(adapter = nil)
      method new (line 21) | def new(m)
      method polymorphic_parents (line 31) | def polymorphic_parents(adapter, model_name, name)
      method reset_polymorphic_parents (line 43) | def reset_polymorphic_parents
      method initialize (line 48) | def initialize(model_or_model_name)
      method model (line 59) | def model
      method quoted_table_name (line 63) | def quoted_table_name
      method quote_column_name (line 67) | def quote_column_name(name)
      method to_s (line 71) | def to_s
      method config (line 75) | def config
      method to_param (line 79) | def to_param
      method param_key (line 83) | def param_key
      method pretty_name (line 87) | def pretty_name
      method where (line 91) | def where(conditions)
      method each_associated_children (line 95) | def each_associated_children(object)
      method format_id (line 108) | def format_id(id)
      method parse_id (line 112) | def parse_id(id)
      method initialize_active_record (line 118) | def initialize_active_record
      method initialize_mongoid (line 124) | def initialize_mongoid
      method parse_field_value (line 130) | def parse_field_value(field, value)
      class StatementBuilder (line 134) | class StatementBuilder
        method initialize (line 135) | def initialize(column, type, value, operator)
        method to_statement (line 142) | def to_statement
        method get_filtering_duration (line 151) | def get_filtering_duration
        method build_statement_for_type_generic (line 155) | def build_statement_for_type_generic
        method build_statement_for_type (line 166) | def build_statement_for_type
        method build_statement_for_integer_decimal_or_float (line 170) | def build_statement_for_integer_decimal_or_float
        method build_statement_for_date (line 191) | def build_statement_for_date
        method build_statement_for_datetime_or_timestamp (line 210) | def build_statement_for_datetime_or_timestamp
        method unary_operators (line 217) | def unary_operators
        method range_filter (line 221) | def range_filter(_min, _max)
        class FilteringDuration (line 225) | class FilteringDuration
          method initialize (line 226) | def initialize(operator, value)
          method get_duration (line 231) | def get_duration
          method today (line 242) | def today
          method yesterday (line 246) | def yesterday
          method this_week (line 250) | def this_week
          method last_week (line 254) | def last_week
          method between (line 259) | def between
          method default (line 263) | def default
          method default_date (line 269) | def default_date

FILE: lib/rails_admin/adapters/active_record.rb
  type RailsAdmin (line 8) | module RailsAdmin
    type Adapters (line 9) | module Adapters
      type ActiveRecord (line 10) | module ActiveRecord
        function new (line 13) | def new(params = {})
        function get (line 17) | def get(id, scope = scoped)
        function scoped (line 24) | def scoped
        function first (line 28) | def first(options = {}, scope = nil)
        function all (line 32) | def all(options = {}, scope = nil)
        function count (line 44) | def count(options = {}, scope = nil)
        function destroy (line 48) | def destroy(objects)
        function associations (line 52) | def associations
        function properties (line 58) | def properties
        function base_class (line 69) | def base_class
        function quoted_table_name (line 75) | def quoted_table_name
        function quote_column_name (line 79) | def quote_column_name(name)
        function encoding (line 83) | def encoding
        function embedded? (line 106) | def embedded?
        function cyclic? (line 110) | def cyclic?
        function adapter_supports_joins? (line 114) | def adapter_supports_joins?
        function format_id (line 118) | def format_id(id)
        function parse_id (line 126) | def parse_id(id)
        function primary_key_scope (line 140) | def primary_key_scope(scope, id)
        function bulk_scope (line 148) | def bulk_scope(scope, options)
        function sort_scope (line 156) | def sort_scope(scope, options)
        class WhereBuilder (line 171) | class WhereBuilder
          method initialize (line 172) | def initialize(scope)
          method add (line 179) | def add(field, value, operator)
          method build (line 190) | def build
        function query_scope (line 197) | def query_scope(scope, query, fields = config.list.fields.select(&...
        function filter_scope (line 213) | def filter_scope(scope, filters, fields = config.list.fields.selec...
        function build_statement (line 228) | def build_statement(column, type, value, operator)
        class StatementBuilder (line 232) | class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
          method initialize (line 233) | def initialize(column, type, value, operator, adapter_name)
          method unary_operators (line 240) | def unary_operators
          method generic_unary_operators (line 255) | def generic_unary_operators
          method boolean_unary_operators (line 266) | def boolean_unary_operators
          method range_filter (line 277) | def range_filter(min, max)
          method build_statement_for_type (line 289) | def build_statement_for_type
          method build_statement_for_boolean (line 300) | def build_statement_for_boolean
          method column_for_value (line 309) | def column_for_value(value)
          method build_statement_for_belongs_to_association (line 313) | def build_statement_for_belongs_to_association
          method build_statement_for_string_or_text (line 319) | def build_statement_for_string_or_text
          method build_statement_for_enum (line 351) | def build_statement_for_enum
          method build_statement_for_uuid (line 357) | def build_statement_for_uuid
          method ar_adapter (line 361) | def ar_adapter

FILE: lib/rails_admin/adapters/active_record/association.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type ActiveRecord (line 5) | module ActiveRecord
        class Association (line 6) | class Association
          method initialize (line 9) | def initialize(association, model)
          method name (line 14) | def name
          method pretty_name (line 18) | def pretty_name
          method type (line 22) | def type
          method field_type (line 26) | def field_type
          method klass (line 34) | def klass
          method primary_key (line 42) | def primary_key
          method foreign_key (line 60) | def foreign_key
          method foreign_key_nullable? (line 70) | def foreign_key_nullable?
          method foreign_type (line 76) | def foreign_type
          method foreign_inverse_of (line 80) | def foreign_inverse_of
          method key_accessor (line 84) | def key_accessor
          method as (line 99) | def as
          method polymorphic? (line 103) | def polymorphic?
          method inverse_of (line 107) | def inverse_of
          method read_only? (line 111) | def read_only?
          method nested_options (line 117) | def nested_options
          method association? (line 121) | def association?

FILE: lib/rails_admin/adapters/active_record/object_extension.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type ActiveRecord (line 5) | module ActiveRecord
        type ObjectExtension (line 6) | module ObjectExtension
          function assign_attributes (line 7) | def assign_attributes(attributes)

FILE: lib/rails_admin/adapters/active_record/property.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type ActiveRecord (line 5) | module ActiveRecord
        class Property (line 6) | class Property
          method initialize (line 9) | def initialize(property, model)
          method name (line 14) | def name
          method pretty_name (line 18) | def pretty_name
          method type (line 22) | def type
          method length (line 30) | def length
          method nullable? (line 34) | def nullable?
          method serial? (line 38) | def serial?
          method association? (line 42) | def association?
          method read_only? (line 46) | def read_only?
          method serialized? (line 52) | def serialized?

FILE: lib/rails_admin/adapters/mongoid.rb
  type RailsAdmin (line 10) | module RailsAdmin
    type Adapters (line 11) | module Adapters
      type Mongoid (line 12) | module Mongoid
        function parse_object_id (line 15) | def parse_object_id(value)
        function new (line 19) | def new(params = {})
        function get (line 23) | def get(id, scope = scoped)
        function scoped (line 38) | def scoped
        function first (line 42) | def first(options = {}, scope = nil)
        function all (line 46) | def all(options = {}, scope = nil)
        function count (line 66) | def count(options = {}, scope = nil)
        function destroy (line 70) | def destroy(objects)
        function primary_key (line 74) | def primary_key
        function associations (line 78) | def associations
        function properties (line 84) | def properties
        function base_class (line 89) | def base_class
        function table_name (line 95) | def table_name
        function encoding (line 99) | def encoding
        function embedded? (line 103) | def embedded?
        function cyclic? (line 107) | def cyclic?
        function adapter_supports_joins? (line 111) | def adapter_supports_joins?
        function build_statement (line 117) | def build_statement(column, type, value, operator)
        function make_field_conditions (line 121) | def make_field_conditions(field, value, operator)
        function query_scope (line 134) | def query_scope(scope, query, fields = config.list.fields.select(&...
        function filter_scope (line 152) | def filter_scope(scope, filters, fields = config.list.fields.selec...
        function parse_collection_name (line 174) | def parse_collection_name(column)
        function make_condition_for_current_collection (line 183) | def make_condition_for_current_collection(target_field, conditions...
        function perform_search_on_associated_collection (line 197) | def perform_search_on_associated_collection(field_name, conditions)
        function sort_by (line 210) | def sort_by(options, scope)
        class StatementBuilder (line 227) | class StatementBuilder < RailsAdmin::AbstractModel::StatementBuilder
          method unary_operators (line 230) | def unary_operators
          method build_statement_for_type (line 243) | def build_statement_for_type
          method build_statement_for_boolean (line 253) | def build_statement_for_boolean
          method column_for_value (line 262) | def column_for_value(value)
          method build_statement_for_string_or_text (line 266) | def build_statement_for_string_or_text
          method build_statement_for_enum (line 288) | def build_statement_for_enum
          method build_statement_for_belongs_to_association_or_bson_object_id (line 294) | def build_statement_for_belongs_to_association_or_bson_object_id
          method range_filter (line 298) | def range_filter(min, max)

FILE: lib/rails_admin/adapters/mongoid/association.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type Mongoid (line 5) | module Mongoid
        class Association (line 6) | class Association
          method initialize (line 11) | def initialize(association, model)
          method name (line 16) | def name
          method pretty_name (line 20) | def pretty_name
          method type (line 24) | def type
          method field_type (line 39) | def field_type
          method klass (line 47) | def klass
          method primary_key (line 55) | def primary_key
          method foreign_key (line 64) | def foreign_key
          method foreign_key_nullable? (line 74) | def foreign_key_nullable?
          method foreign_type (line 80) | def foreign_type
          method foreign_inverse_of (line 86) | def foreign_inverse_of
          method key_accessor (line 92) | def key_accessor
          method as (line 105) | def as
          method polymorphic? (line 109) | def polymorphic?
          method inverse_of (line 113) | def inverse_of
          method read_only? (line 117) | def read_only?
          method nested_options (line 121) | def nested_options
          method association? (line 134) | def association?
          method macro (line 138) | def macro
          method embeds? (line 142) | def embeds?
          method inverse_of_field (line 148) | def inverse_of_field
          method cyclic? (line 152) | def cyclic?

FILE: lib/rails_admin/adapters/mongoid/bson.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Adapters (line 6) | module Adapters
      type Mongoid (line 7) | module Mongoid
        class Bson (line 8) | class Bson
          method parse_object_id (line 17) | def parse_object_id(value)

FILE: lib/rails_admin/adapters/mongoid/extension.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type Mongoid (line 5) | module Mongoid
        type Extension (line 6) | module Extension
          function rails_admin (line 13) | def rails_admin(&block)
          function rails_admin_default_object_label_method (line 22) | def rails_admin_default_object_label_method
          function safe_send (line 26) | def safe_send(value)
          type ClassMethods (line 34) | module ClassMethods
            function accepts_nested_attributes_for_with_rails_admin (line 37) | def accepts_nested_attributes_for_with_rails_admin(*args)

FILE: lib/rails_admin/adapters/mongoid/object_extension.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type Mongoid (line 5) | module Mongoid
        type ObjectExtension (line 6) | module ObjectExtension
          function extended (line 7) | def self.extended(object)

FILE: lib/rails_admin/adapters/mongoid/property.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Adapters (line 4) | module Adapters
      type Mongoid (line 5) | module Mongoid
        class Property (line 6) | class Property
          method initialize (line 10) | def initialize(property, model)
          method name (line 15) | def name
          method pretty_name (line 19) | def pretty_name
          method type (line 23) | def type
          method length (line 52) | def length
          method nullable? (line 56) | def nullable?
          method serial? (line 60) | def serial?
          method association? (line 64) | def association?
          method read_only? (line 68) | def read_only?
          method object_field_type (line 74) | def object_field_type
          method string_field_type (line 83) | def string_field_type
          method length_validation_lookup (line 91) | def length_validation_lookup

FILE: lib/rails_admin/config.rb
  type RailsAdmin (line 8) | module RailsAdmin
    type Config (line 9) | module Config
      function authenticate_with (line 114) | def authenticate_with(&blk)
      function audit_with (line 120) | def audit_with(*args, &block)
      function authorize_with (line 157) | def authorize_with(*args, &block)
      function configure_with (line 183) | def configure_with(extension)
      function current_user_method (line 201) | def current_user_method(&block)
      function default_search_operator= (line 206) | def default_search_operator=(operator)
      function models_pool (line 215) | def models_pool
      function model (line 231) | def model(entity, &block)
      function asset_source (line 249) | def asset_source
      function default_hidden_fields= (line 263) | def default_hidden_fields=(fields)
      function parent_controller= (line 273) | def parent_controller=(name)
      function total_columns_width= (line 286) | def total_columns_width=(_)
      function sidescroll= (line 290) | def sidescroll=(_)
      function actions (line 295) | def actions(&block)
      function models (line 305) | def models
      function reset (line 312) | def reset
      function reset_model (line 346) | def reset_model(model)
      function reload! (line 352) | def reload!
      function visible_models (line 360) | def visible_models(bindings)
      function viable_models (line 372) | def viable_models
      function visible_models_with_bindings (line 391) | def visible_models_with_bindings(bindings)

FILE: lib/rails_admin/config/actions.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        function all (line 7) | def all(scope = nil, bindings = {})
        function find (line 32) | def find(custom_key, bindings = {})
        function collection (line 38) | def collection(key, parent_class = :base, &block)
        function member (line 42) | def member(key, parent_class = :base, &block)
        function root (line 46) | def root(key, parent_class = :base, &block)
        function add_action (line 50) | def add_action(key, parent_class, parent, &block)
        function reset (line 61) | def reset
        function register (line 65) | def register(name, klass = nil)
        function init_actions! (line 81) | def init_actions!
        function add_action_custom_key (line 97) | def add_action_custom_key(action, &block)

FILE: lib/rails_admin/config/actions/base.rb
  type RailsAdmin (line 7) | module RailsAdmin
    type Config (line 8) | module Config
      type Actions (line 9) | module Actions
        class Base (line 10) | class Base
          method key (line 152) | def key
          method key (line 156) | def self.key

FILE: lib/rails_admin/config/actions/bulk_delete.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class BulkDelete (line 6) | class BulkDelete < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/dashboard.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class Dashboard (line 6) | class Dashboard < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/delete.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class Delete (line 6) | class Delete < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/edit.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class Edit (line 6) | class Edit < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/export.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class Export (line 6) | class Export < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/history_index.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class HistoryIndex (line 6) | class HistoryIndex < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/history_show.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class HistoryShow (line 6) | class HistoryShow < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/index.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Actions (line 7) | module Actions
        class Index (line 8) | class Index < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/new.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class New (line 6) | class New < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/show.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class Show (line 6) | class Show < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/actions/show_in_app.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Actions (line 5) | module Actions
        class ShowInApp (line 6) | class ShowInApp < RailsAdmin::Config::Actions::Base

FILE: lib/rails_admin/config/configurable.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Configurable (line 7) | module Configurable
        function included (line 8) | def self.included(base)
        function has_option? (line 12) | def has_option?(name) # rubocop:disable Naming/PredicatePrefix?
        function register_instance_option (line 18) | def register_instance_option(option_name, &default)
        function register_deprecated_instance_option (line 23) | def register_deprecated_instance_option(option_name, replacement_o...
        function with_recurring (line 30) | def with_recurring(option_name, value_proc, default_proc)
        type ClassMethods (line 47) | module ClassMethods
          function register_instance_option (line 51) | def register_instance_option(option_name, scope = self, &default)
          function register_deprecated_instance_option (line 84) | def register_deprecated_instance_option(option_name, replacement...
          function register_class_option (line 100) | def register_class_option(option_name, &default)

FILE: lib/rails_admin/config/const_load_suppressor.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type ConstLoadSuppressor (line 5) | module ConstLoadSuppressor
        function suppressing (line 9) | def suppressing
        function allowing (line 22) | def allowing
        function intercept_const_missing (line 37) | def intercept_const_missing
        class ConstProxy (line 44) | class ConstProxy < BasicObject
          method initialize (line 47) | def initialize(name)
          method klass (line 51) | def klass
          method method_missing (line 68) | def method_missing(method_name, *args, &block)
          method respond_to_missing? (line 72) | def respond_to_missing?(method_name, include_private = false)

FILE: lib/rails_admin/config/fields.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Fields (line 5) | module Fields
        function factory (line 48) | def self.factory(parent)
        function register_factory (line 75) | def self.register_factory(&block)

FILE: lib/rails_admin/config/fields/association.rb
  type RailsAdmin (line 6) | module RailsAdmin
    type Config (line 7) | module Config
      type Fields (line 8) | module Fields
        class Association (line 9) | class Association < RailsAdmin::Config::Fields::Base
          method association (line 11) | def association
          method method_name (line 15) | def method_name
          method dynamic_scope_relationships (line 69) | def dynamic_scope_relationships
          method associated_model_config (line 103) | def associated_model_config
          method associated_object_label_method (line 108) | def associated_object_label_method
          method associated_primary_key (line 113) | def associated_primary_key
          method associated_prepopulate_params (line 118) | def associated_prepopulate_params
          method polymorphic? (line 123) | def polymorphic?
          method value (line 133) | def value
          method collection (line 138) | def collection(scope = nil)
          method multiple? (line 144) | def multiple?
          method virtual? (line 148) | def virtual?
          method associated_model_limit (line 152) | def associated_model_limit
          method format_key (line 158) | def format_key(key)

FILE: lib/rails_admin/config/fields/base.rb
  type RailsAdmin (line 9) | module RailsAdmin
    type Config (line 10) | module Config
      type Fields (line 11) | module Fields
        class Base (line 12) | class Base # rubocop:disable Metrics/ClassLength
          method initialize (line 27) | def initialize(parent, name, properties)
          method type_css_class (line 43) | def type_css_class
          method virtual? (line 47) | def virtual?
          method sort_column (line 63) | def sort_column
          method filter_options (line 101) | def filter_options
          method eager_load_values (line 269) | def eager_load_values
          method editable? (line 284) | def editable?
          method association? (line 289) | def association?
          method errors (line 294) | def errors
          method optional? (line 303) | def optional?
          method optional (line 310) | def optional(state = nil, &block)
          method optional= (line 321) | def optional=(state)
          method type (line 326) | def type
          method value (line 331) | def value
          method generic_help (line 354) | def generic_help
          method generic_field_help (line 358) | def generic_field_help
          method parse_value (line 365) | def parse_value(value)
          method parse_input (line 369) | def parse_input(_params)
          method inverse_of (line 373) | def inverse_of
          method method_name (line 377) | def method_name
          method form_default_value (line 381) | def form_default_value
          method form_value (line 385) | def form_value

FILE: lib/rails_admin/config/fields/collection_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        class CollectionAssociation (line 8) | class CollectionAssociation < Association
          method collection (line 18) | def collection(scope = nil)
          method associated_prepopulate_params (line 30) | def associated_prepopulate_params
          method multiple? (line 34) | def multiple?
          method selected_ids (line 38) | def selected_ids
          method parse_input (line 42) | def parse_input(params)
          method form_default_value (line 59) | def form_default_value
          method form_value (line 63) | def form_value
          method widget_options (line 67) | def widget_options

FILE: lib/rails_admin/config/fields/group.rb
  type RailsAdmin (line 8) | module RailsAdmin
    type Config (line 9) | module Config
      type Fields (line 10) | module Fields
        class Group (line 12) | class Group
          method initialize (line 20) | def initialize(parent, name)
          method field (line 33) | def field(name, type = nil, &block)
          method fields (line 42) | def fields
          method fields_of_type (line 49) | def fields_of_type(type, &block)
          method visible_fields (line 56) | def visible_fields

FILE: lib/rails_admin/config/fields/singular_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        class SingularAssociation (line 8) | class SingularAssociation < Association
          method collection (line 21) | def collection(scope = nil)
          method multiple? (line 29) | def multiple?
          method selected_id (line 33) | def selected_id
          method parse_input (line 37) | def parse_input(params)
          method form_value (line 45) | def form_value
          method widget_options (line 49) | def widget_options

FILE: lib/rails_admin/config/fields/types.rb
  type RailsAdmin (line 7) | module RailsAdmin
    type Config (line 8) | module Config
      type Fields (line 9) | module Fields
        type Types (line 10) | module Types
          function load (line 13) | def self.load(type)
          function register (line 17) | def self.register(type, klass = nil)

FILE: lib/rails_admin/config/fields/types/action_text.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class ActionText (line 9) | class ActionText < Text

FILE: lib/rails_admin/config/fields/types/active_record_enum.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class ActiveRecordEnum (line 9) | class ActiveRecordEnum < Enum
            method type (line 12) | def type
            method parse_value (line 32) | def parse_value(value)
            method parse_input (line 38) | def parse_input(params)
            method form_value (line 45) | def form_value
            method parse_input_value (line 51) | def parse_input_value(value)
            method type_cast_value (line 55) | def type_cast_value(value)

FILE: lib/rails_admin/config/fields/types/active_storage.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class ActiveStorage (line 9) | class ActiveStorage < RailsAdmin::Config::Fields::Types::FileUpload
            method resource_url (line 48) | def resource_url(thumb = false)
            method value (line 62) | def value

FILE: lib/rails_admin/config/fields/types/belongs_to_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class BelongsToAssociation (line 9) | class BelongsToAssociation < RailsAdmin::Config::Fields::Singula...
            method selected_id (line 28) | def selected_id
            method parse_input (line 36) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/boolean.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Fields (line 5) | module Fields
        type Types (line 6) | module Types
          class Boolean (line 7) | class Boolean < RailsAdmin::Config::Fields::Base
            method form_value (line 51) | def form_value
            method generic_help (line 59) | def generic_help
            method parse_input (line 63) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/bson_object_id.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class BsonObjectId (line 9) | class BsonObjectId < RailsAdmin::Config::Fields::Types::String
            method generic_help (line 19) | def generic_help
            method parse_value (line 31) | def parse_value(value)
            method parse_input (line 35) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/carrierwave.rb
  type RailsAdmin (line 6) | module RailsAdmin
    type Config (line 7) | module Config
      type Fields (line 8) | module Fields
        type Types (line 9) | module Types
          class Carrierwave (line 10) | class Carrierwave < RailsAdmin::Config::Fields::Types::FileUpload
            method resource_url (line 25) | def resource_url(thumb = false)

FILE: lib/rails_admin/config/fields/types/citext.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Citext (line 9) | class Citext < Text

FILE: lib/rails_admin/config/fields/types/ck_editor.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class CKEditor (line 9) | class CKEditor < Text

FILE: lib/rails_admin/config/fields/types/code_mirror.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class CodeMirror (line 9) | class CodeMirror < Text

FILE: lib/rails_admin/config/fields/types/color.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Color (line 9) | class Color < StringLike

FILE: lib/rails_admin/config/fields/types/date.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Date (line 9) | class Date < RailsAdmin::Config::Fields::Types::Datetime
            method parse_value (line 12) | def parse_value(value)

FILE: lib/rails_admin/config/fields/types/datetime.rb
  type RailsAdmin (line 6) | module RailsAdmin
    type Config (line 7) | module Config
      type Fields (line 8) | module Fields
        type Types (line 9) | module Types
          class Datetime (line 10) | class Datetime < RailsAdmin::Config::Fields::Base
            method parse_value (line 13) | def parse_value(value)
            method parse_input (line 17) | def parse_input(params)
            method filter_options (line 25) | def filter_options
            method form_value (line 89) | def form_value

FILE: lib/rails_admin/config/fields/types/decimal.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Decimal (line 9) | class Decimal < RailsAdmin::Config::Fields::Types::Numeric

FILE: lib/rails_admin/config/fields/types/dragonfly.rb
  type RailsAdmin (line 6) | module RailsAdmin
    type Config (line 7) | module Config
      type Fields (line 8) | module Fields
        type Types (line 9) | module Types
          class Dragonfly (line 11) | class Dragonfly < RailsAdmin::Config::Fields::Types::FileUpload
            method resource_url (line 35) | def resource_url(thumb = false)

FILE: lib/rails_admin/config/fields/types/enum.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Enum (line 9) | class Enum < RailsAdmin::Config::Fields::Base

FILE: lib/rails_admin/config/fields/types/file_upload.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class FileUpload (line 9) | class FileUpload < RailsAdmin::Config::Fields::Base
            method extension (line 69) | def extension
            method resource_url (line 76) | def resource_url
            method virtual? (line 80) | def virtual?

FILE: lib/rails_admin/config/fields/types/float.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Float (line 9) | class Float < RailsAdmin::Config::Fields::Types::Numeric

FILE: lib/rails_admin/config/fields/types/froala.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Froala (line 9) | class Froala < Text

FILE: lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class HasAndBelongsToManyAssociation (line 9) | class HasAndBelongsToManyAssociation < RailsAdmin::Config::Field...

FILE: lib/rails_admin/config/fields/types/has_many_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class HasManyAssociation (line 9) | class HasManyAssociation < RailsAdmin::Config::Fields::Collectio...

FILE: lib/rails_admin/config/fields/types/has_one_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class HasOneAssociation (line 9) | class HasOneAssociation < RailsAdmin::Config::Fields::SingularAs...
            method associated_prepopulate_params (line 17) | def associated_prepopulate_params
            method parse_input (line 21) | def parse_input(params)
            method selected_id (line 28) | def selected_id

FILE: lib/rails_admin/config/fields/types/hidden.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Hidden (line 9) | class Hidden < StringLike
            method generic_help (line 24) | def generic_help

FILE: lib/rails_admin/config/fields/types/inet.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Inet (line 9) | class Inet < RailsAdmin::Config::Fields::Base

FILE: lib/rails_admin/config/fields/types/integer.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Integer (line 9) | class Integer < RailsAdmin::Config::Fields::Types::Numeric

FILE: lib/rails_admin/config/fields/types/json.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Json (line 9) | class Json < RailsAdmin::Config::Fields::Types::Text
            method parse_value (line 26) | def parse_value(value)
            method parse_input (line 30) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/multiple_active_storage.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class MultipleActiveStorage (line 9) | class MultipleActiveStorage < RailsAdmin::Config::Fields::Types:...
            class ActiveStorageAttachment (line 12) | class ActiveStorageAttachment < RailsAdmin::Config::Fields::Ty...
              method resource_url (line 29) | def resource_url(thumb = false)

FILE: lib/rails_admin/config/fields/types/multiple_carrierwave.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class MultipleCarrierwave (line 9) | class MultipleCarrierwave < RailsAdmin::Config::Fields::Types::M...
            class CarrierwaveAttachment (line 12) | class CarrierwaveAttachment < RailsAdmin::Config::Fields::Type...
              method resource_url (line 25) | def resource_url(thumb = false)
            method value (line 52) | def value

FILE: lib/rails_admin/config/fields/types/multiple_file_upload.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Fields (line 5) | module Fields
        type Types (line 6) | module Types
          class MultipleFileUpload (line 7) | class MultipleFileUpload < RailsAdmin::Config::Fields::Base
            class AbstractAttachment (line 10) | class AbstractAttachment
              method initialize (line 16) | def initialize(value)
              method resource_url (line 54) | def resource_url(_thumb = false)
              method extension (line 58) | def extension
            method initialize (line 65) | def initialize(*args)
            method attachment (line 112) | def attachment(&block)
            method attachments (line 116) | def attachments
            method virtual? (line 127) | def virtual?

FILE: lib/rails_admin/config/fields/types/numeric.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Numeric (line 9) | class Numeric < RailsAdmin::Config::Fields::Base

FILE: lib/rails_admin/config/fields/types/paperclip.rb
  type RailsAdmin (line 6) | module RailsAdmin
    type Config (line 7) | module Config
      type Fields (line 8) | module Fields
        type Types (line 9) | module Types
          class Paperclip (line 11) | class Paperclip < RailsAdmin::Config::Fields::Types::FileUpload
            method resource_url (line 23) | def resource_url(thumb = false)

FILE: lib/rails_admin/config/fields/types/password.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Password (line 9) | class Password < RailsAdmin::Config::Fields::Types::String
            method parse_input (line 17) | def parse_input(params)
            method value (line 30) | def value

FILE: lib/rails_admin/config/fields/types/polymorphic_association.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class PolymorphicAssociation (line 9) | class PolymorphicAssociation < RailsAdmin::Config::Fields::Types...
            method associated_model_config (line 54) | def associated_model_config
            method collection (line 58) | def collection(_scope = nil)
            method type_column (line 66) | def type_column
            method type_collection (line 70) | def type_collection
            method type_urls (line 76) | def type_urls
            method value (line 84) | def value
            method widget_options_for_types (line 88) | def widget_options_for_types
            method widget_options (line 100) | def widget_options
            method selected_type (line 104) | def selected_type
            method parse_input (line 108) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/serialized.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Serialized (line 9) | class Serialized < RailsAdmin::Config::Fields::Types::Text
            method parse_value (line 17) | def parse_value(value)
            method parse_input (line 21) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/shrine.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Shrine (line 9) | class Shrine < RailsAdmin::Config::Fields::Types::FileUpload
            method resource_url (line 47) | def resource_url(thumb = nil)

FILE: lib/rails_admin/config/fields/types/simple_mde.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class SimpleMDE (line 9) | class SimpleMDE < Text

FILE: lib/rails_admin/config/fields/types/string.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class String (line 9) | class String < StringLike
            method input_size (line 12) | def input_size
            method generic_help (line 24) | def generic_help

FILE: lib/rails_admin/config/fields/types/string_like.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class StringLike (line 9) | class StringLike < RailsAdmin::Config::Fields::Base
            method parse_input (line 18) | def parse_input(params)

FILE: lib/rails_admin/config/fields/types/text.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Text (line 9) | class Text < StringLike

FILE: lib/rails_admin/config/fields/types/time.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Time (line 9) | class Time < RailsAdmin::Config::Fields::Types::Datetime
            method parse_value (line 12) | def parse_value(value)

FILE: lib/rails_admin/config/fields/types/timestamp.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Timestamp (line 9) | class Timestamp < RailsAdmin::Config::Fields::Types::Datetime

FILE: lib/rails_admin/config/fields/types/uuid.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Uuid (line 9) | class Uuid < RailsAdmin::Config::Fields::Types::String

FILE: lib/rails_admin/config/fields/types/wysihtml5.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Fields (line 7) | module Fields
        type Types (line 8) | module Types
          class Wysihtml5 (line 9) | class Wysihtml5 < Text

FILE: lib/rails_admin/config/groupable.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Groupable (line 7) | module Groupable
        function group (line 14) | def group(name = nil)

FILE: lib/rails_admin/config/has_description.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type HasDescription (line 6) | module HasDescription
        function desc (line 9) | def desc(description, &_block)

FILE: lib/rails_admin/config/has_fields.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type HasFields (line 6) | module HasFields
        function field (line 8) | def field(name, type = nil, add_to_section = true, &block)
        function configure (line 43) | def configure(name, type = nil, &block)
        function include_fields (line 49) | def include_fields(*field_names, &block)
        function exclude_fields (line 63) | def exclude_fields(*field_names, &block)
        function include_all_fields (line 73) | def include_all_fields
        function fields (line 83) | def fields(*field_names, &block)
        function fields_of_type (line 103) | def fields_of_type(type, &block)
        function all_fields (line 108) | def all_fields
        function visible_fields (line 116) | def visible_fields
        function possible_fields (line 121) | def possible_fields
        function _fields (line 130) | def _fields(readonly = false)

FILE: lib/rails_admin/config/has_groups.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type HasGroups (line 7) | module HasGroups
        function group (line 12) | def group(name, &block)
        function visible_groups (line 20) | def visible_groups

FILE: lib/rails_admin/config/hideable.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Hideable (line 6) | module Hideable
        function included (line 8) | def self.included(klass)
        function hidden? (line 15) | def hidden?
        function hide (line 20) | def hide(&block)
        function show (line 25) | def show(&block)

FILE: lib/rails_admin/config/inspectable.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Inspectable (line 5) | module Inspectable
        function inspect (line 6) | def inspect
        function instance_variable_name (line 21) | def instance_variable_name(variable)
        function set_named_instance_variables (line 34) | def set_named_instance_variables

FILE: lib/rails_admin/config/lazy_model.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      class LazyModel (line 7) | class LazyModel < BasicObject
        method initialize (line 8) | def initialize(entity, &block)
        method add_deferred_block (line 14) | def add_deferred_block(&block)
        method target (line 22) | def target
        method method_missing (line 65) | def method_missing(method_name, *args, &block)
        method respond_to_missing? (line 69) | def respond_to_missing?(method_name, include_private = false)

FILE: lib/rails_admin/config/model.rb
  type RailsAdmin (line 16) | module RailsAdmin
    type Config (line 17) | module Config
      class Model (line 19) | class Model
        method initialize (line 31) | def initialize(entity)
        method excluded? (line 50) | def excluded?
        method object_label (line 56) | def object_label
        method pluralize (line 77) | def pluralize(count)
        method method_missing (line 115) | def method_missing(method_name, *args, &block)

FILE: lib/rails_admin/config/proxyable.rb
  type RailsAdmin (line 4) | module RailsAdmin
    type Config (line 5) | module Config
      type Proxyable (line 6) | module Proxyable
        function bindings (line 7) | def bindings
        function bindings= (line 12) | def bindings=(new_bindings)
        function with (line 21) | def with(bindings = {})

FILE: lib/rails_admin/config/proxyable/proxy.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Config (line 4) | module Config
      type Proxyable (line 5) | module Proxyable
        class Proxy (line 6) | class Proxy < BasicObject
          method initialize (line 7) | def initialize(object, bindings = {})
          method bind (line 13) | def bind(key, value = nil)
          method method_missing (line 22) | def method_missing(method_name, *args, &block)

FILE: lib/rails_admin/config/sections.rb
  type RailsAdmin (line 14) | module RailsAdmin
    type Config (line 15) | module Config
      type Sections (line 23) | module Sections
        function included (line 24) | def self.included(klass)

FILE: lib/rails_admin/config/sections/base.rb
  type RailsAdmin (line 10) | module RailsAdmin
    type Config (line 11) | module Config
      type Sections (line 12) | module Sections
        class Base (line 14) | class Base
          method initialize (line 27) | def initialize(parent)

FILE: lib/rails_admin/config/sections/create.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Create (line 9) | class Create < RailsAdmin::Config::Sections::Edit

FILE: lib/rails_admin/config/sections/edit.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Edit (line 9) | class Edit < RailsAdmin::Config::Sections::Base

FILE: lib/rails_admin/config/sections/export.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Export (line 9) | class Export < RailsAdmin::Config::Sections::Base

FILE: lib/rails_admin/config/sections/list.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class List (line 9) | class List < RailsAdmin::Config::Sections::Base
          method fields_for_table (line 53) | def fields_for_table

FILE: lib/rails_admin/config/sections/modal.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Modal (line 8) | class Modal < RailsAdmin::Config::Sections::Edit

FILE: lib/rails_admin/config/sections/nested.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Nested (line 8) | class Nested < RailsAdmin::Config::Sections::Edit

FILE: lib/rails_admin/config/sections/show.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Show (line 8) | class Show < RailsAdmin::Config::Sections::Base

FILE: lib/rails_admin/config/sections/update.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Config (line 6) | module Config
      type Sections (line 7) | module Sections
        class Update (line 8) | class Update < RailsAdmin::Config::Sections::Edit

FILE: lib/rails_admin/engine.rb
  type RailsAdmin (line 11) | module RailsAdmin
    class Engine (line 12) | class Engine < Rails::Engine

FILE: lib/rails_admin/extension.rb
  type RailsAdmin (line 5) | module RailsAdmin
    function add_extension (line 15) | def self.add_extension(extension_key, extension_definition, options = {})
    function setup_all_extensions (line 28) | def self.setup_all_extensions

FILE: lib/rails_admin/extensions/cancancan/authorization_adapter.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Extensions (line 4) | module Extensions
      type CanCanCan (line 5) | module CanCanCan
        class AuthorizationAdapter (line 7) | class AuthorizationAdapter
          type ControllerExtension (line 8) | module ControllerExtension
            function current_ability (line 9) | def current_ability
          method setup (line 18) | def self.setup
          method initialize (line 23) | def initialize(controller, ability = nil, &block)
          method authorize (line 44) | def authorize(action, abstract_model = nil, model_object = nil)
          method authorized? (line 55) | def authorized?(action, abstract_model = nil, model_object = nil)
          method query (line 65) | def query(action, abstract_model)
          method attributes_for (line 72) | def attributes_for(action, abstract_model)
          method resolve_action_and_subject (line 78) | def resolve_action_and_subject(action, abstract_model, model_obj...

FILE: lib/rails_admin/extensions/controller_extension.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Extensions (line 4) | module Extensions
      type ControllerExtension (line 5) | module ControllerExtension

FILE: lib/rails_admin/extensions/paper_trail/auditing_adapter.rb
  type RailsAdmin (line 5) | module RailsAdmin
    type Extensions (line 6) | module Extensions
      type PaperTrail (line 7) | module PaperTrail
        class VersionProxy (line 8) | class VersionProxy
          method initialize (line 9) | def initialize(version, user_class = User)
          method message (line 14) | def message
          method created_at (line 19) | def created_at
          method table (line 23) | def table
          method username (line 27) | def username
          method item (line 35) | def item
        type ControllerExtension (line 40) | module ControllerExtension
          function user_for_paper_trail (line 41) | def user_for_paper_trail
        class AuditingAdapter (line 46) | class AuditingAdapter
          method setup (line 75) | def self.setup
          method initialize (line 81) | def initialize(controller, user_class_name = nil, version_class_...
          method latest (line 107) | def latest(count = 100)
          method delete_object (line 113) | def delete_object(_object, _model, _user)
          method update_object (line 117) | def update_object(_object, _model, _user, _changes)
          method create_object (line 121) | def create_object(_object, _abstract_model, _user)
          method listing_for_model (line 125) | def listing_for_model(model, query, sort, sort_reverse, all, pag...
          method listing_for_object (line 129) | def listing_for_object(model, object, query, sort, sort_reverse,...
          method listing_for_model_or_object (line 136) | def listing_for_model_or_object(model, object, query, sort, sort...
          method versions_for_model (line 161) | def versions_for_model(model)
          method version_class_for (line 181) | def version_class_for(model)

FILE: lib/rails_admin/extensions/pundit/authorization_adapter.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Extensions (line 4) | module Extensions
      type Pundit (line 5) | module Pundit
        class AuthorizationAdapter (line 9) | class AuthorizationAdapter
          method setup (line 11) | def self.setup
          method initialize (line 16) | def initialize(controller)
          method authorize (line 25) | def authorize(action, abstract_model = nil, model_object = nil)
          method authorized? (line 36) | def authorized?(action, abstract_model = nil, model_object = nil)
          method query (line 44) | def query(_action, abstract_model)
          method attributes_for (line 53) | def attributes_for(action, abstract_model)
          method policy (line 60) | def policy(record)
          method action_for_pundit (line 66) | def action_for_pundit(action)

FILE: lib/rails_admin/extensions/url_for_extension.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Extensions (line 4) | module Extensions
      type UrlForExtension (line 5) | module UrlForExtension
        function url_for (line 6) | def url_for(options, *args)

FILE: lib/rails_admin/support/composite_keys_serializer.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Support (line 4) | module Support
      type CompositeKeysSerializer (line 5) | module CompositeKeysSerializer
        function serialize (line 6) | def self.serialize(keys)
        function deserialize (line 10) | def self.deserialize(string)

FILE: lib/rails_admin/support/csv_converter.rb
  type RailsAdmin (line 5) | module RailsAdmin
    class CSVConverter (line 6) | class CSVConverter
      method initialize (line 7) | def initialize(objects = [], schema = nil)
      method to_csv (line 41) | def to_csv(options = {})
      method export_field_for (line 67) | def export_field_for(method, model_config = @model_config)
      method generate_csv_string (line 71) | def generate_csv_string(options)
      method generate_csv_header (line 84) | def generate_csv_header
      method generate_csv_row (line 95) | def generate_csv_row(object)

FILE: lib/rails_admin/support/datetime.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Support (line 4) | module Support
      class Datetime (line 5) | class Datetime
        method to_flatpickr_format (line 47) | def to_flatpickr_format(strftime_format)

FILE: lib/rails_admin/support/es_module_processor.rb
  type RailsAdmin (line 3) | module RailsAdmin
    type Support (line 4) | module Support
      class ESModuleProcessor (line 5) | class ESModuleProcessor
        method instance (line 6) | def self.instance
        method call (line 10) | def self.call(input)
        method initialize (line 14) | def initialize; end
        method call (line 16) | def call(input)

FILE: lib/rails_admin/support/hash_helper.rb
  type RailsAdmin (line 3) | module RailsAdmin
    class HashHelper (line 4) | class HashHelper
      method symbolize (line 5) | def self.symbolize(obj)

FILE: lib/rails_admin/version.rb
  type RailsAdmin (line 3) | module RailsAdmin
    class Version (line 4) | class Version
      method to_s (line 12) | def to_s
      method js (line 16) | def js
      method actual_js_version (line 20) | def actual_js_version
      method warn_with_js_version (line 29) | def warn_with_js_version
      method js_version_from_node_modules (line 47) | def js_version_from_node_modules

FILE: spec/controllers/rails_admin/main_controller_spec.rb
  function get (line 8) | def get(action, params)

FILE: spec/dummy_app/app/active_record/abstract.rb
  class Abstract (line 3) | class Abstract < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/another_field_test.rb
  class AnotherFieldTest (line 3) | class AnotherFieldTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/ball.rb
  class Ball (line 3) | class Ball < ActiveRecord::Base
    method to_param (line 8) | def to_param

FILE: spec/dummy_app/app/active_record/carrierwave_uploader.rb
  class CarrierwaveUploader (line 4) | class CarrierwaveUploader < CarrierWave::Uploader::Base
    method store_dir (line 16) | def store_dir

FILE: spec/dummy_app/app/active_record/category.rb
  class Category (line 3) | class Category < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/cms.rb
  type Cms (line 3) | module Cms
    function table_name_prefix (line 4) | def self.table_name_prefix

FILE: spec/dummy_app/app/active_record/cms/basic_page.rb
  type Cms (line 3) | module Cms
    class BasicPage (line 4) | class BasicPage < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/comment.rb
  class Comment (line 3) | class Comment < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/comment/confirmed.rb
  class Comment (line 3) | class Comment
    class Confirmed (line 4) | class Confirmed < Comment

FILE: spec/dummy_app/app/active_record/concerns/taggable.rb
  type Taggable (line 3) | module Taggable

FILE: spec/dummy_app/app/active_record/deeply_nested_field_test.rb
  class DeeplyNestedFieldTest (line 3) | class DeeplyNestedFieldTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/division.rb
  class Division (line 3) | class Division < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/draft.rb
  class Draft (line 3) | class Draft < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/fan.rb
  class Fan (line 3) | class Fan < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/fanship.rb
  class Fanship (line 4) | class Fanship < ActiveRecord::Base
  class Fanship (line 21) | class Fanship; end

FILE: spec/dummy_app/app/active_record/favorite_player.rb
  class FavoritePlayer (line 4) | class FavoritePlayer < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/field_test.rb
  class FieldTest (line 3) | class FieldTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/hardball.rb
  class Hardball (line 3) | class Hardball < Ball

FILE: spec/dummy_app/app/active_record/image.rb
  class Image (line 3) | class Image < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/league.rb
  class League (line 3) | class League < ActiveRecord::Base
    method custom_name (line 11) | def custom_name

FILE: spec/dummy_app/app/active_record/managed_team.rb
  class ManagedTeam (line 3) | class ManagedTeam < Team

FILE: spec/dummy_app/app/active_record/managing_user.rb
  class ManagingUser (line 3) | class ManagingUser < User

FILE: spec/dummy_app/app/active_record/nested_fan.rb
  class NestedFan (line 4) | class NestedFan < Fan

FILE: spec/dummy_app/app/active_record/nested_favorite_player.rb
  class NestedFavoritePlayer (line 4) | class NestedFavoritePlayer < FavoritePlayer

FILE: spec/dummy_app/app/active_record/nested_field_test.rb
  class NestedFieldTest (line 3) | class NestedFieldTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/paper_trail_test.rb
  class PaperTrailTest (line 3) | class PaperTrailTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/paper_trail_test/subclass_in_namespace.rb
  class PaperTrailTest (line 3) | class PaperTrailTest < ActiveRecord::Base
    class SubclassInNamespace (line 4) | class SubclassInNamespace < self

FILE: spec/dummy_app/app/active_record/paper_trail_test_subclass.rb
  class PaperTrailTestSubclass (line 3) | class PaperTrailTestSubclass < PaperTrailTest

FILE: spec/dummy_app/app/active_record/paper_trail_test_with_custom_association.rb
  class PaperTrailTestWithCustomAssociation (line 3) | class PaperTrailTestWithCustomAssociation < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/player.rb
  class Player (line 3) | class Player < ActiveRecord::Base
    method destroy_hook (line 25) | def destroy_hook; end

FILE: spec/dummy_app/app/active_record/read_only_comment.rb
  class ReadOnlyComment (line 3) | class ReadOnlyComment < Comment
    method readonly? (line 4) | def readonly?

FILE: spec/dummy_app/app/active_record/restricted_team.rb
  class RestrictedTeam (line 3) | class RestrictedTeam < Team

FILE: spec/dummy_app/app/active_record/shrine_uploader.rb
  class ShrineUploader (line 3) | class ShrineUploader < Shrine

FILE: spec/dummy_app/app/active_record/shrine_versioning_uploader.rb
  class ShrineVersioningUploader (line 3) | class ShrineVersioningUploader < Shrine

FILE: spec/dummy_app/app/active_record/team.rb
  class Team (line 3) | class Team < ActiveRecord::Base
    method player_names_truncated (line 23) | def player_names_truncated
    method color_enum (line 27) | def color_enum

FILE: spec/dummy_app/app/active_record/trail.rb
  class Trail (line 3) | class Trail < PaperTrail::Version

FILE: spec/dummy_app/app/active_record/two_level/namespaced.rb
  type TwoLevel (line 3) | module TwoLevel
    type Namespaced (line 4) | module Namespaced
      function table_name_prefix (line 5) | def self.table_name_prefix

FILE: spec/dummy_app/app/active_record/two_level/namespaced/polymorphic_association_test.rb
  type TwoLevel (line 3) | module TwoLevel
    type Namespaced (line 4) | module Namespaced
      class PolymorphicAssociationTest (line 5) | class PolymorphicAssociationTest < ActiveRecord::Base

FILE: spec/dummy_app/app/active_record/user.rb
  class User (line 3) | class User < ActiveRecord::Base
    method attr_accessible_role (line 21) | def attr_accessible_role
    method roles_enum (line 25) | def roles_enum

FILE: spec/dummy_app/app/active_record/user/confirmed.rb
  class User (line 3) | class User
    class Confirmed (line 4) | class Confirmed < User

FILE: spec/dummy_app/app/active_record/without_table.rb
  class WithoutTable (line 3) | class WithoutTable < ActiveRecord::Base

FILE: spec/dummy_app/app/controllers/application_controller.rb
  class ApplicationController (line 3) | class ApplicationController < ActionController::Base

FILE: spec/dummy_app/app/controllers/players_controller.rb
  class PlayersController (line 3) | class PlayersController < ApplicationController
    method show (line 4) | def show

FILE: spec/dummy_app/app/eager_loaded/basketball.rb
  class Basketball (line 3) | class Basketball < Ball

FILE: spec/dummy_app/app/jobs/application_job.rb
  class ApplicationJob (line 3) | class ApplicationJob < ActiveJob::Base

FILE: spec/dummy_app/app/jobs/null_job.rb
  class NullJob (line 3) | class NullJob < ApplicationJob
    method perform (line 6) | def perform(*args)

FILE: spec/dummy_app/app/mongoid/another_field_test.rb
  class AnotherFieldTest (line 3) | class AnotherFieldTest

FILE: spec/dummy_app/app/mongoid/ball.rb
  class Ball (line 3) | class Ball
    method to_param (line 13) | def to_param

FILE: spec/dummy_app/app/mongoid/carrierwave_uploader.rb
  class CarrierwaveUploader (line 4) | class CarrierwaveUploader < CarrierWave::Uploader::Base
    method store_dir (line 16) | def store_dir

FILE: spec/dummy_app/app/mongoid/category.rb
  class Category (line 3) | class Category

FILE: spec/dummy_app/app/mongoid/cms.rb
  type Cms (line 3) | module Cms
    function table_name_prefix (line 4) | def self.table_name_prefix

FILE: spec/dummy_app/app/mongoid/cms/basic_page.rb
  type Cms (line 3) | module Cms
    class BasicPage (line 4) | class BasicPage

FILE: spec/dummy_app/app/mongoid/comment.rb
  class Comment (line 3) | class Comment

FILE: spec/dummy_app/app/mongoid/comment/confirmed.rb
  class Comment (line 3) | class Comment
    class Confirmed (line 4) | class Confirmed < Comment

FILE: spec/dummy_app/app/mongoid/concerns/taggable.rb
  type Taggable (line 3) | module Taggable

FILE: spec/dummy_app/app/mongoid/deeply_nested_field_test.rb
  class DeeplyNestedFieldTest (line 3) | class DeeplyNestedFieldTest

FILE: spec/dummy_app/app/mongoid/division.rb
  class Division (line 3) | class Division

FILE: spec/dummy_app/app/mongoid/draft.rb
  class Draft (line 3) | class Draft

FILE: spec/dummy_app/app/mongoid/embed.rb
  class Embed (line 3) | class Embed

FILE: spec/dummy_app/app/mongoid/fan.rb
  class Fan (line 3) | class Fan

FILE: spec/dummy_app/app/mongoid/field_test.rb
  class FieldTest (line 5) | class FieldTest

FILE: spec/dummy_app/app/mongoid/hardball.rb
  class Hardball (line 3) | class Hardball < Ball

FILE: spec/dummy_app/app/mongoid/image.rb
  class Image (line 3) | class Image

FILE: spec/dummy_app/app/mongoid/league.rb
  class League (line 3) | class League
    method custom_name (line 13) | def custom_name

FILE: spec/dummy_app/app/mongoid/managed_team.rb
  class ManagedTeam (line 3) | class ManagedTeam < Team

FILE: spec/dummy_app/app/mongoid/managing_user.rb
  class ManagingUser (line 3) | class ManagingUser < User

FILE: spec/dummy_app/app/mongoid/nested_field_test.rb
  class NestedFieldTest (line 3) | class NestedFieldTest

FILE: spec/dummy_app/app/mongoid/player.rb
  class Player (line 3) | class Player
    method destroy_hook (line 35) | def destroy_hook; end

FILE: spec/dummy_app/app/mongoid/read_only_comment.rb
  class ReadOnlyComment (line 3) | class ReadOnlyComment < Comment
    method readonly? (line 4) | def readonly?

FILE: spec/dummy_app/app/mongoid/restricted_team.rb
  class RestrictedTeam (line 3) | class RestrictedTeam < Team

FILE: spec/dummy_app/app/mongoid/shrine_uploader.rb
  class ShrineUploader (line 3) | class ShrineUploader < Shrine

FILE: spec/dummy_app/app/mongoid/shrine_versioning_uploader.rb
  class ShrineVersioningUploader (line 3) | class ShrineVersioningUploader < Shrine

FILE: spec/dummy_app/app/mongoid/team.rb
  class Team (line 3) | class Team
    method player_names_truncated (line 39) | def player_names_truncated
    method color_enum (line 43) | def color_enum

FILE: spec/dummy_app/app/mongoid/two_level/namespaced/polymorphic_association_test.rb
  type TwoLevel (line 3) | module TwoLevel
    type Namespaced (line 4) | module Namespaced
      class PolymorphicAssociationTest (line 5) | class PolymorphicAssociationTest

FILE: spec/dummy_app/app/mongoid/user.rb
  class User (line 3) | class User
    method attr_accessible_role (line 56) | def attr_accessible_role

FILE: spec/dummy_app/app/mongoid/user/confirmed.rb
  class User (line 3) | class User
    class Confirmed (line 4) | class Confirmed < User

FILE: spec/dummy_app/config/application.rb
  type DummyApp (line 34) | module DummyApp
    class Application (line 35) | class Application < Rails::Application

FILE: spec/dummy_app/config/initializers/session_patch.rb
  function stale_session_check! (line 12) | def stale_session_check!

FILE: spec/dummy_app/db/migrate/00000000000001_create_divisions_migration.rb
  class CreateDivisionsMigration (line 3) | class CreateDivisionsMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 12) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000002_create_drafts_migration.rb
  class CreateDraftsMigration (line 3) | class CreateDraftsMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 18) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000003_create_leagues_migration.rb
  class CreateLeaguesMigration (line 3) | class CreateLeaguesMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 11) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000004_create_players_migration.rb
  class CreatePlayersMigration (line 3) | class CreatePlayersMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 19) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000005_create_teams_migration.rb
  class CreateTeamsMigration (line 3) | class CreateTeamsMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 21) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000006_devise_create_users.rb
  class DeviseCreateUsers (line 3) | class DeviseCreateUsers < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 48) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000007_create_histories_table.rb
  class CreateHistoriesTable (line 3) | class CreateHistoriesTable < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 15) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000008_create_fans_migration.rb
  class CreateFansMigration (line 3) | class CreateFansMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 11) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000009_create_fans_teams_migration.rb
  class CreateFansTeamsMigration (line 3) | class CreateFansTeamsMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 10) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000010_add_revenue_to_team_migration.rb
  class AddRevenueToTeamMigration (line 3) | class AddRevenueToTeamMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000011_add_suspended_to_player_migration.rb
  class AddSuspendedToPlayerMigration (line 3) | class AddSuspendedToPlayerMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000012_add_avatar_columns_to_user.rb
  class AddAvatarColumnsToUser (line 3) | class AddAvatarColumnsToUser < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 11) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000013_add_roles_to_user.rb
  class AddRolesToUser (line 3) | class AddRolesToUser < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/00000000000014_add_color_to_team_migration.rb
  class AddColorToTeamMigration (line 3) | class AddColorToTeamMigration < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/20101223222233_create_rel_tests.rb
  class CreateRelTests (line 3) | class CreateRelTests < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 14) | def self.down

FILE: spec/dummy_app/db/migrate/20110103205808_create_comments.rb
  class CreateComments (line 3) | class CreateComments < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 14) | def self.down

FILE: spec/dummy_app/db/migrate/20110123042530_rename_histories_to_rails_admin_histories.rb
  class RenameHistoriesToRailsAdminHistories (line 3) | class RenameHistoriesToRailsAdminHistories < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/20110224184303_create_field_tests.rb
  class CreateFieldTests (line 3) | class CreateFieldTests < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 21) | def self.down

FILE: spec/dummy_app/db/migrate/20110328193014_create_cms_basic_pages.rb
  class CreateCmsBasicPages (line 3) | class CreateCmsBasicPages < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 13) | def self.down

FILE: spec/dummy_app/db/migrate/20110329183136_remove_league_id_from_teams.rb
  class RemoveLeagueIdFromTeams (line 3) | class RemoveLeagueIdFromTeams < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/20110607152842_add_format_to_field_test.rb
  class AddFormatToFieldTest (line 3) | class AddFormatToFieldTest < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/20110714095433_create_balls.rb
  class CreateBalls (line 3) | class CreateBalls < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 11) | def self.down

FILE: spec/dummy_app/db/migrate/20110831090841_add_protected_field_and_restricted_field_to_field_tests.rb
  class AddProtectedFieldAndRestrictedFieldToFieldTests (line 3) | class AddProtectedFieldAndRestrictedFieldToFieldTests < ActiveRecord::Mi...
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20110901131551_change_division_primary_key.rb
  class ChangeDivisionPrimaryKey (line 3) | class ChangeDivisionPrimaryKey < ActiveRecord::Migration[5.0]
    method up (line 4) | def up
    method down (line 13) | def down

FILE: spec/dummy_app/db/migrate/20110901142530_rename_league_id_foreign_key_on_divisions.rb
  class RenameLeagueIdForeignKeyOnDivisions (line 3) | class RenameLeagueIdForeignKeyOnDivisions < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20110901150912_set_primary_key_not_null_for_divisions.rb
  class SetPrimaryKeyNotNullForDivisions (line 3) | class SetPrimaryKeyNotNullForDivisions < ActiveRecord::Migration[5.0]
    method up (line 4) | def up
    method down (line 14) | def down

FILE: spec/dummy_app/db/migrate/20110901154834_change_length_for_rails_admin_histories.rb
  class ChangeLengthForRailsAdminHistories (line 3) | class ChangeLengthForRailsAdminHistories < ActiveRecord::Migration[5.0]
    method up (line 4) | def up
    method down (line 8) | def down

FILE: spec/dummy_app/db/migrate/20111108143642_add_dragonfly_and_carrierwave_to_field_tests.rb
  class AddDragonflyAndCarrierwaveToFieldTests (line 3) | class AddDragonflyAndCarrierwaveToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20111115041025_add_type_to_balls.rb
  class AddTypeToBalls (line 3) | class AddTypeToBalls < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20111123092549_create_nested_field_tests.rb
  class CreateNestedFieldTests (line 3) | class CreateNestedFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20111130075338_add_dragonfly_asset_name_to_field_tests.rb
  class AddDragonflyAssetNameToFieldTests (line 3) | class AddDragonflyAssetNameToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20111215083258_create_foo_bars.rb
  class CreateFooBars (line 3) | class CreateFooBars < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20120117151733_add_custom_field_to_teams.rb
  class AddCustomFieldToTeams (line 3) | class AddCustomFieldToTeams < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20120118122004_add_categories.rb
  class AddCategories (line 3) | class AddCategories < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20120319041705_drop_rel_tests.rb
  class DropRelTests (line 3) | class DropRelTests < ActiveRecord::Migration[5.0]
    method up (line 4) | def self.up
    method down (line 8) | def self.down

FILE: spec/dummy_app/db/migrate/20120720075608_create_another_field_tests.rb
  class CreateAnotherFieldTests (line 3) | class CreateAnotherFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20120928075608_create_images.rb
  class CreateImages (line 3) | class CreateImages < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20140412075608_create_deeply_nested_field_tests.rb
  class CreateDeeplyNestedFieldTests (line 3) | class CreateDeeplyNestedFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20140826093220_create_paper_trail_tests.rb
  class CreatePaperTrailTests (line 3) | class CreatePaperTrailTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20140826093552_create_versions.rb
  class CreateVersions (line 3) | class CreateVersions < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20150815102450_add_refile_to_field_tests.rb
  class AddRefileToFieldTests (line 3) | class AddRefileToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20151027181550_change_field_test_id_to_nested_field_tests.rb
  class ChangeFieldTestIdToNestedFieldTests (line 3) | class ChangeFieldTestIdToNestedFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20160728152942_add_main_sponsor_to_teams.rb
  class AddMainSponsorToTeams (line 3) | class AddMainSponsorToTeams < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20160728153058_add_formation_to_players.rb
  class AddFormationToPlayers (line 3) | class AddFormationToPlayers < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20171229220713_add_enum_fields_to_field_tests.rb
  class AddEnumFieldsToFieldTests (line 3) | class AddEnumFieldsToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20180701084251_create_active_storage_tables.active_storage.rb
  class CreateActiveStorageTables (line 4) | class CreateActiveStorageTables < ActiveRecord::Migration[5.0]
    method change (line 5) | def change

FILE: spec/dummy_app/db/migrate/20180707101855_add_carrierwave_assets_to_field_tests.rb
  class AddCarrierwaveAssetsToFieldTests (line 3) | class AddCarrierwaveAssetsToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20181029101829_add_shrine_data_to_field_tests.rb
  class AddShrineDataToFieldTests (line 3) | class AddShrineDataToFieldTests < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20190531065324_create_action_text_tables.action_text.rb
  class CreateActionTextTables (line 3) | class CreateActionTextTables < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20201127111952_update_active_storage_tables.rb
  class UpdateActiveStorageTables (line 3) | class UpdateActiveStorageTables < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20210811121027_create_two_level_namespaced_polymorphic_association_tests.rb
  class CreateTwoLevelNamespacedPolymorphicAssociationTests (line 3) | class CreateTwoLevelNamespacedPolymorphicAssociationTests < ActiveRecord...
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20210812115908_create_custom_versions.rb
  class CreateCustomVersions (line 3) | class CreateCustomVersions < ActiveRecord::Migration[5.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20211011235734_add_bool_field_open.rb
  class AddBoolFieldOpen (line 3) | class AddBoolFieldOpen < ActiveRecord::Migration[6.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20220416102741_create_composite_key_tables.rb
  class CreateCompositeKeyTables (line 3) | class CreateCompositeKeyTables < ActiveRecord::Migration[6.0]
    method change (line 4) | def change

FILE: spec/dummy_app/db/migrate/20240921171953_add_non_nullable_boolean_field.rb
  class AddNonNullableBooleanField (line 3) | class AddNonNullableBooleanField < ActiveRecord::Migration[6.0]
    method change (line 4) | def change

FILE: spec/dummy_app/lib/does_not_load_autoload_paths_not_in_eager_load.rb
  type DoesNotLoadAutoloadPathsNotInEagerLoad (line 3) | module DoesNotLoadAutoloadPathsNotInEagerLoad

FILE: spec/integration/actions/edit_spec.rb
  class HelpTest (line 107) | class HelpTest < Tableless
  function serialize (line 895) | def self.serialize(keys)
  function deserialize (line 899) | def self.deserialize(string)

FILE: spec/integration/actions/index_spec.rb
  function visit_page (line 726) | def visit_page(page)
  function serialize (line 1264) | def self.serialize(keys)
  function deserialize (line 1268) | def self.deserialize(string)

FILE: spec/integration/authorization/cancancan_spec.rb
  class Ability (line 6) | class Ability
    method initialize (line 8) | def initialize(user)
  class AdminAbility (line 30) | class AdminAbility
    method initialize (line 32) | def initialize(user)

FILE: spec/integration/fields/file_upload_spec.rb
  function resource_url (line 12) | def resource_url(_thumb = false)

FILE: spec/integration/fields/multiple_file_upload_spec.rb
  function resource_url (line 13) | def resource_url(_thumb = false)
  function value (line 19) | def value

FILE: spec/integration/widgets/filtering_multi_select_spec.rb
  function value (line 141) | def value
  function parse_input (line 145) | def parse_input(params)

FILE: spec/orm/active_record.rb
  function silence_stream (line 9) | def silence_stream(stream)
  class Tableless (line 30) | class Tableless < ActiveRecord::Base
    method load_schema (line 32) | def load_schema
    method columns (line 36) | def columns
    method column (line 40) | def column(name, sql_type = nil, default = nil, null = true)
    method columns_hash (line 58) | def columns_hash
    method column_names (line 62) | def column_names
    method column_defaults (line 66) | def column_defaults
    method attribute_types (line 73) | def attribute_types
    method table_exists? (line 78) | def table_exists?
    method primary_key (line 82) | def primary_key
    method lookup_attribute_type (line 88) | def lookup_attribute_type(type)
    method save (line 94) | def save(validate = true)
  function lookup_cast_type (line 106) | def lookup_cast_type(sql_type)

FILE: spec/orm/mongoid.rb
  class Tableless (line 7) | class Tableless
    method column (line 11) | def column(name, sql_type = 'string', default = nil, _null = true)

FILE: spec/policies.rb
  class ApplicationPolicy (line 3) | class ApplicationPolicy
    method initialize (line 6) | def initialize(user, record)
    method show? (line 11) | def show?
    method destroy? (line 15) | def destroy?
    method history? (line 19) | def history?
    method show_in_app? (line 23) | def show_in_app?
    method dashboard? (line 27) | def dashboard?
    method index? (line 31) | def index?
    method new? (line 35) | def new?
    method edit? (line 40) | def edit?
    method export? (line 45) | def export?
    method rails_admin_index? (line 49) | def rails_admin_index?
  class PlayerPolicy (line 54) | class PlayerPolicy < ApplicationPolicy
    method new? (line 55) | def new?
    method edit? (line 61) | def edit?
    method destroy? (line 67) | def destroy?
    method index? (line 71) | def index?

FILE: spec/rails_admin/adapters/active_record/association_spec.rb
  class ARBlog (line 10) | class ARBlog < Tableless
  class ARPost (line 16) | class ARPost < Tableless
  class ARCategory (line 22) | class ARCategory < Tableless
  class ARUser (line 28) | class ARUser < Tableless
  class ARProfile (line 33) | class ARProfile < Tableless
  class ARComment (line 38) | class ARComment < Tableless
  class FieldTestWithSymbolForeignKey (line 149) | class FieldTestWithSymbolForeignKey < FieldTest
  class ARReview (line 221) | class ARReview < ARComment; end

FILE: spec/rails_admin/adapters/active_record/property_spec.rb
  class HasReadOnlyColumn (line 32) | class HasReadOnlyColumn < Tableless

FILE: spec/rails_admin/adapters/active_record_spec.rb
  function predicates_for (line 29) | def predicates_for(scope)
  class PlayerWithDefaultScope (line 110) | class PlayerWithDefaultScope < Player
  function parse_value (line 216) | def parse_value(value)
  function parse_value (line 262) | def parse_value(value)
  function build_statement (line 298) | def build_statement(type, value, operator)

FILE: spec/rails_admin/adapters/mongoid/association_spec.rb
  class MongoBlog (line 9) | class MongoBlog
  class MongoPost (line 17) | class MongoPost
  class MongoCategory (line 26) | class MongoCategory
  class MongoUser (line 32) | class MongoUser
  class MongoProfile (line 46) | class MongoProfile
  class MongoComment (line 52) | class MongoComment
  class MongoNote (line 57) | class MongoNote
  class MongoReview (line 174) | class MongoReview < MongoComment; end
  class MongoEmbedsOne (line 253) | class MongoEmbedsOne
  class MongoEmbedsMany (line 258) | class MongoEmbedsMany
  class MongoEmbedded (line 263) | class MongoEmbedded
  class MongoRecursivelyEmbedsOne (line 269) | class MongoRecursivelyEmbedsOne
  class MongoRecursivelyEmbedsMany (line 274) | class MongoRecursivelyEmbedsMany
  class MongoEmbedsParent (line 286) | class MongoEmbedsParent
  class MongoEmbedded (line 292) | class MongoEmbedded
  class MongoEmbedsChild (line 297) | class MongoEmbedsChild < MongoEmbedsParent; end

FILE: spec/rails_admin/adapters/mongoid/object_extension_spec.rb
  class TeamWithAutoSave (line 9) | class TeamWithAutoSave < Team
  class PlayerWithAutoSave (line 65) | class PlayerWithAutoSave < Player

FILE: spec/rails_admin/adapters/mongoid/property_spec.rb
  class LengthValiated (line 211) | class LengthValiated
  class MyCustomValidator (line 220) | class MyCustomValidator < ActiveModel::Validator
    method validate (line 221) | def validate(_r); end
  class CustomValiated (line 224) | class CustomValiated
  class HasReadOnlyColumn (line 235) | class HasReadOnlyColumn

FILE: spec/rails_admin/adapters/mongoid_spec.rb
  function parse_value (line 223) | def parse_value(value)
  function parse_value (line 254) | def parse_value(value)

FILE: spec/rails_admin/config/configurable_spec.rb
  class ConfigurableTest (line 6) | class ConfigurableTest

FILE: spec/rails_admin/config/fields/association_spec.rb
  class TeamWithHasManyThrough (line 140) | class TeamWithHasManyThrough < Team
  class System (line 155) | class System < Tableless; end
  class BelongsToSystem (line 157) | class BelongsToSystem < Tableless

FILE: spec/rails_admin/config/fields/base_spec.rb
  class ConditionalValidationTest (line 63) | class ConditionalValidationTest < Tableless
  class RelTest (line 85) | class RelTest < Tableless
  class CommentReversed (line 142) | class CommentReversed < Tableless
  class FieldVisibilityTest (line 525) | class FieldVisibilityTest < Tableless

FILE: spec/rails_admin/config/fields/types/active_record_enum_spec.rb
  class FormatAsEnum (line 11) | class FormatAsEnum < FieldTest

FILE: spec/rails_admin/config/fields/types/drangonfly_spec.rb
  class NonDragonflyTest (line 33) | class NonDragonflyTest < Tableless

FILE: spec/rails_admin/config/fields/types/enum_spec.rb
  function color_enum (line 31) | def color_enum
  function color_list (line 51) | def color_list
  function color_list (line 75) | def color_list
  function color_list (line 99) | def color_list
  class TeamWithSerializedEnum (line 127) | class TeamWithSerializedEnum < Team
    method color_enum (line 134) | def color_enum

FILE: spec/rails_admin/config/fields/types/file_upload_spec.rb
  function resource_url (line 65) | def resource_url
  function resource_url (line 100) | def resource_url

FILE: spec/rails_admin/config/fields/types/multiple_file_upload_spec.rb
  function resource_url (line 54) | def resource_url(thumb = false)
  function resource_url (line 104) | def resource_url(_thumb = false)
  function value (line 109) | def value
  function resource_url (line 164) | def resource_url

FILE: spec/rails_admin/config/fields/types/paperclip_spec.rb
  class PaperclipTest (line 10) | class PaperclipTest < Tableless

FILE: spec/rails_admin/config/fields_spec.rb
  class MongoTree (line 8) | class MongoTree

FILE: spec/rails_admin/config/lazy_model_spec.rb
  function weight (line 46) | def weight

FILE: spec/rails_admin/config/proxyable_spec.rb
  class ProxyableTest (line 6) | class ProxyableTest
    method boo (line 9) | def boo
    method qux (line 14) | def qux
  function qux (line 36) | def qux

FILE: spec/rails_admin/config_spec.rb
  class ControllerMock (line 132) | class ControllerMock
    method set_paper_trail_whodunnit (line 133) | def set_paper_trail_whodunnit; end
  type PaperTrail (line 136) | module PaperTrail; end
  class Version (line 138) | class Version; end
  class RecursivelyEmbedsOne (line 243) | class RecursivelyEmbedsOne
  class RecursivelyEmbedsMany (line 248) | class RecursivelyEmbedsMany
  class TestController (line 279) | class TestController < ActionController::Base; end
  type ExampleModule (line 410) | module ExampleModule
    class AuthorizationAdapter (line 411) | class AuthorizationAdapter; end
    class ConfigurationAdapter (line 413) | class ConfigurationAdapter; end
    class AuditingAdapter (line 415) | class AuditingAdapter; end

FILE: spec/rails_admin/extentions/cancancan/authorization_adapter_spec.rb
  class MyAbility (line 9) | class MyAbility
    method initialize (line 11) | def initialize(_user)

FILE: spec/support/cuprite_logger.rb
  class ConsoleLogger (line 3) | class ConsoleLogger
    method puts (line 4) | def self.puts(message)

FILE: spec/support/fakeio.rb
  class FakeIO (line 6) | class FakeIO
    method initialize (line 9) | def initialize(content, filename: nil, content_type: nil)

FILE: spec/support/fixtures.rb
  function file_path (line 3) | def file_path(*paths)

FILE: spec/support/jquery.simulate.drag-sortable.js
  function slideUpTo (line 151) | function slideUpTo(x, y, targetOffset, goPastBy) {
  function createEvent (line 171) | function createEvent(type, target, options) {
  function dispatchEvent (line 211) | function dispatchEvent(el, type, evt) {
  function findCenter (line 220) | function findCenter(el) {

FILE: src/rails_admin/i18n.js
  method init (line 4) | init(locale, translations) {
  method t (line 11) | t(key) {

FILE: src/rails_admin/ui.js
  function triggerDomReady (line 82) | function triggerDomReady() {

FILE: vendor/assets/javascripts/rails_admin/bootstrap.js
  function _interopNamespace (line 12) | function _interopNamespace(e) {
  function getUidEvent (line 373) | function getUidEvent(element, uid) {
  function getEvent (line 377) | function getEvent(element) {
  function bootstrapHandler (line 384) | function bootstrapHandler(element, fn) {
  function bootstrapDelegationHandler (line 396) | function bootstrapDelegationHandler(element, selector, fn) {
  function findHandler (line 421) | function findHandler(events, handler, delegationSelector = null) {
  function normalizeParams (line 435) | function normalizeParams(originalTypeEvent, handler, delegationFn) {
  function addHandler (line 448) | function addHandler(element, originalTypeEvent, handler, delegationFn, o...
  function removeHandler (line 496) | function removeHandler(element, events, typeEvent, handler, delegationSe...
  function removeNamespacedHandlers (line 507) | function removeNamespacedHandlers(element, events, typeEvent, namespace) {
  function getTypeEvent (line 517) | function getTypeEvent(event) {
  method on (line 524) | on(element, event, handler, delegationFn) {
  method one (line 528) | one(element, event, handler, delegationFn) {
  method off (line 532) | off(element, originalTypeEvent, handler, delegationFn) {
  method trigger (line 569) | trigger(element, event, args) {
  method set (line 645) | set(element, key, instance) {
  method get (line 662) | get(element, key) {
  method remove (line 670) | remove(element, key) {
  class BaseComponent (line 699) | class BaseComponent {
    method constructor (line 700) | constructor(element) {
    method dispose (line 711) | dispose() {
    method _queueCallback (line 719) | _queueCallback(callback, element, isAnimated = true) {
    method getInstance (line 725) | static getInstance(element) {
    method getOrCreateInstance (line 729) | static getOrCreateInstance(element, config = {}) {
    method VERSION (line 733) | static get VERSION() {
    method NAME (line 737) | static get NAME() {
    method DATA_KEY (line 741) | static get DATA_KEY() {
    method EVENT_KEY (line 745) | static get EVENT_KEY() {
  class Alert (line 802) | class Alert extends BaseComponent {
    method NAME (line 804) | static get NAME() {
    method close (line 809) | close() {
    method _destroyElement (line 824) | _destroyElement() {
    method jQueryInterface (line 832) | static jQueryInterface(config) {
  class Button (line 891) | class Button extends BaseComponent {
    method NAME (line 893) | static get NAME() {
    method toggle (line 898) | toggle() {
    method jQueryInterface (line 904) | static jQueryInterface(config) {
  function normalizeData (line 943) | function normalizeData(val) {
  function normalizeDataKey (line 963) | function normalizeDataKey(key) {
  method setDataAttribute (line 968) | setDataAttribute(element, key, value) {
  method removeDataAttribute (line 972) | removeDataAttribute(element, key) {
  method getDataAttributes (line 976) | getDataAttributes(element) {
  method getDataAttribute (line 990) | getDataAttribute(element, key) {
  method offset (line 994) | offset(element) {
  method position (line 1002) | position(element) {
  method find (line 1019) | find(selector, element = document.documentElement) {
  method findOne (line 1023) | findOne(selector, element = document.documentElement) {
  method children (line 1027) | children(element, selector) {
  method parents (line 1031) | parents(element, selector) {
  method prev (line 1046) | prev(element, selector) {
  method next (line 1060) | next(element, selector) {
  method focusableChildren (line 1074) | focusableChildren(element) {
  class Carousel (line 1164) | class Carousel extends BaseComponent {
    method constructor (line 1165) | constructor(element, config) {
    method Default (line 1184) | static get Default() {
    method NAME (line 1188) | static get NAME() {
    method next (line 1193) | next() {
    method nextWhenVisible (line 1197) | nextWhenVisible() {
    method prev (line 1205) | prev() {
    method pause (line 1209) | pause(event) {
    method cycle (line 1223) | cycle(event) {
    method to (line 1240) | to(index) {
    method _getConfig (line 1266) | _getConfig(config) {
    method _handleSwipe (line 1275) | _handleSwipe() {
    method _addEventListeners (line 1292) | _addEventListeners() {
    method _addTouchEventListeners (line 1307) | _addTouchEventListeners() {
    method _keydown (line 1366) | _keydown(event) {
    method _getItemIndex (line 1380) | _getItemIndex(element) {
    method _getItemByOrder (line 1385) | _getItemByOrder(order, activeElement) {
    method _triggerSlideEvent (line 1390) | _triggerSlideEvent(relatedTarget, eventDirectionName) {
    method _setActiveIndicatorElement (line 1403) | _setActiveIndicatorElement(element) {
    method _updateInterval (line 1420) | _updateInterval() {
    method _slide (line 1437) | _slide(directionOrOrder, element) {
    method _directionToOrder (line 1521) | _directionToOrder(direction) {
    method _orderToDirection (line 1533) | _orderToDirection(order) {
    method carouselInterface (line 1546) | static carouselInterface(element, config) {
    method jQueryInterface (line 1574) | static jQueryInterface(config) {
    method dataApiClickHandler (line 1580) | static dataApiClickHandler(event) {
  class Collapse (line 1675) | class Collapse extends BaseComponent {
    method constructor (line 1676) | constructor(element, config) {
    method Default (line 1707) | static get Default() {
    method NAME (line 1711) | static get NAME() {
    method toggle (line 1716) | toggle() {
    method show (line 1724) | show() {
    method hide (line 1797) | hide() {
    method _isShown (line 1845) | _isShown(element = this._element) {
    method _getConfig (line 1850) | _getConfig(config) {
    method _getDimension (line 1862) | _getDimension() {
    method _initializeChildren (line 1866) | _initializeChildren() {
    method _addAriaAndCollapsedClass (line 1881) | _addAriaAndCollapsedClass(triggerArray, isOpen) {
    method jQueryInterface (line 1898) | static jQueryInterface(config) {
  class Dropdown (line 2017) | class Dropdown extends BaseComponent {
    method constructor (line 2018) | constructor(element, config) {
    method Default (line 2027) | static get Default() {
    method DefaultType (line 2031) | static get DefaultType() {
    method NAME (line 2035) | static get NAME() {
    method toggle (line 2040) | toggle() {
    method show (line 2044) | show() {
    method hide (line 2085) | hide() {
    method dispose (line 2097) | dispose() {
    method update (line 2105) | update() {
    method _completeHide (line 2114) | _completeHide(relatedTarget) {
    method _getConfig (line 2141) | _getConfig(config) {
    method _createPopper (line 2156) | _createPopper(parent) {
    method _isShown (line 2181) | _isShown(element = this._element) {
    method _getMenuElement (line 2185) | _getMenuElement() {
    method _getPlacement (line 2189) | _getPlacement() {
    method _detectNavbar (line 2210) | _detectNavbar() {
    method _getOffset (line 2214) | _getOffset() {
    method _getPopperConfig (line 2230) | _getPopperConfig() {
    method _selectMenuItem (line 2258) | _selectMenuItem({
    method jQueryInterface (line 2274) | static jQueryInterface(config) {
    method clearMenus (line 2290) | static clearMenus(event) {
    method getParentFromElement (line 2334) | static getParentFromElement(element) {
    method dataApiKeydownHandler (line 2338) | static dataApiKeydownHandler(event) {
  class ScrollBarHelper (line 2420) | class ScrollBarHelper {
    method constructor (line 2421) | constructor() {
    method getWidth (line 2425) | getWidth() {
    method hide (line 2431) | hide() {
    method _disableOverFlow (line 2445) | _disableOverFlow() {
    method _setElementAttributes (line 2451) | _setElementAttributes(selector, styleProp, callback) {
    method reset (line 2468) | reset() {
    method _saveInitialAttribute (line 2478) | _saveInitialAttribute(element, styleProp) {
    method _resetElementAttributes (line 2486) | _resetElementAttributes(selector, styleProp) {
    method _applyManipulationCallback (line 2501) | _applyManipulationCallback(selector, callBack) {
    method isOverflowing (line 2509) | isOverflowing() {
  class Backdrop (line 2542) | class Backdrop {
    method constructor (line 2543) | constructor(config) {
    method show (line 2549) | show(callback) {
    method hide (line 2568) | hide(callback) {
    method _getElement (line 2583) | _getElement() {
    method _getConfig (line 2598) | _getConfig(config) {
    method _append (line 2608) | _append() {
    method dispose (line 2621) | dispose() {
    method _emulateAnimation (line 2633) | _emulateAnimation(callback) {
  class FocusTrap (line 2663) | class FocusTrap {
    method constructor (line 2664) | constructor(config) {
    method activate (line 2670) | activate() {
    method deactivate (line 2691) | deactivate() {
    method _handleFocusin (line 2701) | _handleFocusin(event) {
    method _handleKeydown (line 2724) | _handleKeydown(event) {
    method _getConfig (line 2732) | _getConfig(config) {
  class Modal (line 2794) | class Modal extends BaseComponent {
    method constructor (line 2795) | constructor(element, config) {
    method Default (line 2808) | static get Default() {
    method NAME (line 2812) | static get NAME() {
    method toggle (line 2817) | toggle(relatedTarget) {
    method show (line 2821) | show(relatedTarget) {
    method hide (line 2861) | hide() {
    method dispose (line 2894) | dispose() {
    method handleUpdate (line 2904) | handleUpdate() {
    method _initializeBackDrop (line 2909) | _initializeBackDrop() {
    method _initializeFocusTrap (line 2917) | _initializeFocusTrap() {
    method _getConfig (line 2923) | _getConfig(config) {
    method _showElement (line 2932) | _showElement(relatedTarget) {
    method _setEscapeEvent (line 2976) | _setEscapeEvent() {
    method _setResizeEvent (line 2991) | _setResizeEvent() {
    method _hideModal (line 2999) | _hideModal() {
    method _showBackdrop (line 3021) | _showBackdrop(callback) {
    method _isAnimated (line 3042) | _isAnimated() {
    method _triggerBackdropTransition (line 3046) | _triggerBackdropTransition() {
    method _adjustDialog (line 3086) | _adjustDialog() {
    method _resetAdjustments (line 3102) | _resetAdjustments() {
    method jQueryInterface (line 3108) | static jQueryInterface(config, relatedTarget) {
  class Offcanvas (line 3215) | class Offcanvas extends BaseComponent {
    method constructor (line 3216) | constructor(element, config) {
    method NAME (line 3227) | static get NAME() {
    method Default (line 3231) | static get Default() {
    method toggle (line 3236) | toggle(relatedTarget) {
    method show (line 3240) | show(relatedTarget) {
    method hide (line 3283) | hide() {
    method dispose (line 3323) | dispose() {
    method _getConfig (line 3332) | _getConfig(config) {
    method _initializeBackDrop (line 3341) | _initializeBackDrop() {
    method _initializeFocusTrap (line 3351) | _initializeFocusTrap() {
    method _addEventListeners (line 3357) | _addEventListeners() {
    method jQueryInterface (line 3366) | static jQueryInterface(config) {
  function sanitizeHtml (line 3505) | function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {
  class Tooltip (line 3631) | class Tooltip extends BaseComponent {
    method constructor (line 3632) | constructor(element, config) {
    method Default (line 3652) | static get Default() {
    method NAME (line 3656) | static get NAME() {
    method Event (line 3660) | static get Event() {
    method DefaultType (line 3664) | static get DefaultType() {
    method enable (line 3669) | enable() {
    method disable (line 3673) | disable() {
    method toggleEnabled (line 3677) | toggleEnabled() {
    method toggle (line 3681) | toggle(event) {
    method dispose (line 3707) | dispose() {
    method show (line 3720) | show() {
    method hide (line 3811) | hide() {
    method update (line 3859) | update() {
    method isWithContent (line 3866) | isWithContent() {
    method getTipElement (line 3870) | getTipElement() {
    method setContent (line 3884) | setContent(tip) {
    method _sanitizeAndSetContent (line 3888) | _sanitizeAndSetContent(template, content, selector) {
    method setElementContent (line 3900) | setElementContent(element, content) {
    method getTitle (line 3931) | getTitle() {
    method updateAttachment (line 3937) | updateAttachment(attachment) {
    method _initializeOnDelegatedTarget (line 3950) | _initializeOnDelegatedTarget(event, context) {
    method _getOffset (line 3954) | _getOffset() {
    method _resolvePossibleFunction (line 3970) | _resolvePossibleFunction(content) {
    method _getPopperConfig (line 3974) | _getPopperConfig(attachment) {
    method _addAttachmentClass (line 4014) | _addAttachmentClass(attachment) {
    method _getAttachment (line 4018) | _getAttachment(placement) {
    method _setListeners (line 4022) | _setListeners() {
    method _fixTitle (line 4054) | _fixTitle() {
    method _enter (line 4070) | _enter(event, context) {
    method _leave (line 4097) | _leave(event, context) {
    method _isWithActiveTrigger (line 4123) | _isWithActiveTrigger() {
    method _getConfig (line 4133) | _getConfig(config) {
    method _getDelegateConfig (line 4170) | _getDelegateConfig() {
    method _cleanTipClass (line 4185) | _cleanTipClass() {
    method _getBasicClassPrefix (line 4195) | _getBasicClassPrefix() {
    method _handlePopperPlacementChange (line 4199) | _handlePopperPlacementChange(popperData) {
    method _disposePopper (line 4215) | _disposePopper() {
    method jQueryInterface (line 4224) | static jQueryInterface(config) {
  class Popover (line 4295) | class Popover extends Tooltip {
    method Default (line 4297) | static get Default() {
    method NAME (line 4301) | static get NAME() {
    method Event (line 4305) | static get Event() {
    method DefaultType (line 4309) | static get DefaultType() {
    method isWithContent (line 4314) | isWithContent() {
    method setContent (line 4318) | setContent(tip) {
    method _getContent (line 4325) | _getContent() {
    method _getBasicClassPrefix (line 4329) | _getBasicClassPrefix() {
    method jQueryInterface (line 4334) | static jQueryInterface(config) {
  class ScrollSpy (line 4406) | class ScrollSpy extends BaseComponent {
    method constructor (line 4407) | constructor(element, config) {
    method Default (line 4422) | static get Default() {
    method NAME (line 4426) | static get NAME() {
    method refresh (line 4431) | refresh() {
    method dispose (line 4459) | dispose() {
    method _getConfig (line 4465) | _getConfig(config) {
    method _getScrollTop (line 4475) | _getScrollTop() {
    method _getScrollHeight (line 4479) | _getScrollHeight() {
    method _getOffsetHeight (line 4483) | _getOffsetHeight() {
    method _process (line 4487) | _process() {
    method _activate (line 4525) | _activate(target) {
    method _clear (line 4553) | _clear() {
    method jQueryInterface (line 4558) | static jQueryInterface(config) {
  class Tab (line 4632) | class Tab extends BaseComponent {
    method NAME (line 4634) | static get NAME() {
    method show (line 4639) | show() {
    method _activate (line 4685) | _activate(element, container, callback) {
    method _transitionComplete (line 4701) | _transitionComplete(element, active, callback) {
    method jQueryInterface (line 4749) | static jQueryInterface(config) {
  class Toast (line 4836) | class Toast extends BaseComponent {
    method constructor (line 4837) | constructor(element, config) {
    method DefaultType (line 4848) | static get DefaultType() {
    method Default (line 4852) | static get Default() {
    method NAME (line 4856) | static get NAME() {
    method show (line 4861) | show() {
    method hide (line 4894) | hide() {
    method dispose (line 4921) | dispose() {
    method _getConfig (line 4932) | _getConfig(config) {
    method _maybeScheduleHide (line 4941) | _maybeScheduleHide() {
    method _onInteraction (line 4955) | _onInteraction(event, isInteracting) {
    method _setListeners (line 4983) | _setListeners() {
    method _clearTimeout (line 4990) | _clearTimeout() {
    method jQueryInterface (line 4996) | static jQueryInterface(config) {

FILE: vendor/assets/javascripts/rails_admin/flatpickr-with-locales.js
  function __spreadArrays (line 34) | function __spreadArrays() {
  function debounce (line 207) | function debounce(fn, wait) {
  function toggleClass (line 220) | function toggleClass(elem, className, bool) {
  function createElement (line 225) | function createElement(tag, className, content) {
  function clearNode (line 234) | function clearNode(node) {
  function findParent (line 238) | function findParent(node, condition) {
  function createNumberInput (line 245) | function createNumberInput(inputClassName, opts) {
  function getEventTarget (line 262) | function getEventTarget(event) {
  function compareDates (line 524) | function compareDates(date1, date2, timeless) {
  function getDefaultHours (line 545) | function getDefaultHours(config) {
  function FlatpickrInstance (line 597) | function FlatpickrInstance(element, instanceConfig) {
  function _flatpickr (line 2636) | function _flatpickr(nodeList, config) {

FILE: vendor/assets/javascripts/rails_admin/jquery-ui/effect.js
  function clamp (line 196) | function clamp( value, prop, allowEmpty ) {
  function stringParse (line 223) | function stringParse( string ) {
  function hue2rgb (line 477) | function hue2rgb( p, q, h ) {
  function getElementStyles (line 751) | function getElementStyles( elem ) {
  function styleDifference (line 779) | function styleDifference( oldStyle, newStyle ) {
  function _normalizeArguments (line 1272) | function _normalizeArguments( effect, options, speed, callback ) {
  function standardAnimationOption (line 1324) | function standardAnimationOption( option ) {
  function run (line 1401) | function run( next ) {
  function parseClip (line 1549) | function parseClip( str, element ) {

FILE: vendor/assets/javascripts/rails_admin/jquery-ui/position.js
  function getOffsets (line 42) | function getOffsets( offsets, width, height ) {
  function parseCss (line 49) | function parseCss( element, property ) {
  function getDimensions (line 53) | function getDimensions( elem ) {

FILE: vendor/assets/javascripts/rails_admin/jquery-ui/widget.js
  function _super (line 118) | function _super() {
  function _superApply (line 122) | function _superApply( args ) {
  function processClassString (line 502) | function processClassString( classes, checkOption ) {
  function handlerProxy (line 585) | function handlerProxy() {
  function handlerProxy (line 629) | function handlerProxy() {

FILE: vendor/assets/javascripts/rails_admin/jquery-ui/widgets/sortable.js
  function addItems (line 748) | function addItems() {
  function delayEvent (line 1482) | function delayEvent( type, instance, container ) {

FILE: vendor/assets/javascripts/rails_admin/jquery3.js
  function DOMEval (line 107) | function DOMEval( code, node, doc ) {
  function toType (line 137) | function toType( obj ) {
  function isArrayLike (line 507) | function isArrayLike( obj ) {
  function Sizzle (line 759) | function Sizzle( selector, context, results, seed ) {
  function createCache (line 907) | function createCache() {
  function markFunction (line 927) | function markFunction( fn ) {
  function assert (line 936) | function assert( fn ) {
  function addHandle (line 960) | function addHandle( attrs, handler ) {
  function siblingCheck (line 975) | function siblingCheck( a, b ) {
  function createInputPseudo (line 1001) | function createInputPseudo( type ) {
  function createButtonPseudo (line 1012) | function createButtonPseudo( type ) {
  function createDisabledPseudo (line 1023) | function createDisabledPseudo( disabled ) {
  function createPositionalPseudo (line 1079) | function createPositionalPseudo( fn ) {
  function testContext (line 1102) | function testContext( context ) {
  function setFilters (line 2313) | function setFilters() {}
  function toSelector (line 2387) | function toSelector( tokens ) {
  function addCombinator (line 2397) | function addCombinator( matcher, combinator, base ) {
  function elementMatcher (line 2464) | function elementMatcher( matchers ) {
  function multipleContexts (line 2478) | function multipleContexts( selector, contexts, results ) {
  function condense (line 2487) | function condense( unmatched, map, filter, context, xml ) {
  function setMatcher (line 2508) | function setMatcher( preFilter, selector, matcher, postFilter, postFinde...
  function matcherFromTokens (line 2608) | function matcherFromTokens( tokens ) {
  function matcherFromGroupMatchers (line 2671) | function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
  function nodeName (line 3029) | function nodeName( elem, name ) {
  function winnow (line 3039) | function winnow( elements, qualifier, not ) {
  function sibling (line 3334) | function sibling( cur, dir ) {
  function createOptions (line 3427) | function createOptions( options ) {
  function Identity (line 3652) | function Identity( v ) {
  function Thrower (line 3655) | function Thrower( ex ) {
  function adoptValue (line 3659) | function adoptValue( value, resolve, reject, noValue ) {
  function resolve (line 3752) | function resolve( depth, deferred, handler, special ) {
  function completed (line 4117) | function completed() {
  function fcamelCase (line 4212) | function fcamelCase( _all, letter ) {
  function camelCase (line 4219) | function camelCase( string ) {
  function Data (line 4236) | function Data() {
  function getData (line 4405) | function getData( data ) {
  function dataAttr (line 4430) | function dataAttr( elem, key, data ) {
  function adjustCSS (line 4742) | function adjustCSS( elem, prop, valueParts, tween ) {
  function getDefaultDisplay (line 4810) | function getDefaultDisplay( elem ) {
  function showHide (line 4833) | function showHide( elements, show ) {
  function getAll (line 4965) | function getAll( context, tag ) {
  function setGlobalEval (line 4990) | function setGlobalEval( elems, refElements ) {
  function buildFragment (line 5006) | function buildFragment( elems, context, scripts, selection, ignored ) {
  function returnTrue (line 5098) | function returnTrue() {
  function returnFalse (line 5102) | function returnFalse() {
  function expectSync (line 5112) | function expectSync( elem, type ) {
  function safeActiveElement (line 5119) | function safeActiveElement() {
  function on (line 5125) | function on( elem, types, selector, data, fn, one ) {
  function leverageNative (line 5613) | function leverageNative( el, type, expectSync ) {
  function manipulationTarget (line 5962) | function manipulationTarget( elem, content ) {
  function disableScript (line 5973) | function disableScript( elem ) {
  function restoreScript (line 5977) | function restoreScript( elem ) {
  function cloneCopyEvent (line 5987) | function cloneCopyEvent( src, dest ) {
  function fixInput (line 6020) | function fixInput( src, dest ) {
  function domManip (line 6033) | function domManip( collection, args, callback, ignored ) {
  function remove (line 6125) | function remove( elem, selector, keepData ) {
  function computeStyleTests (line 6439) | function computeStyleTests() {
  function roundPixelMeasures (line 6483) | function roundPixelMeasures( measure ) {
  function curCSS (line 6576) | function curCSS( elem, name, computed ) {
  function addGetHookIf (line 6629) | function addGetHookIf( conditionFn, hookFn ) {
  function vendorPropName (line 6654) | function vendorPropName( name ) {
  function finalPropName (line 6669) | function finalPropName( name ) {
  function setPositiveNumber (line 6695) | function setPositiveNumber( _elem, value, subtract ) {
  function boxModelAdjustment (line 6707) | function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, ...
  function getWidthOrHeight (line 6775) | function getWidthOrHeight( elem, dimension, extra ) {
  function Tween (line 7151) | function Tween( elem, options, prop, end, easing ) {
  function schedule (line 7274) | function schedule() {
  function createFxNow (line 7287) | function createFxNow() {
  function genFx (line 7295) | function genFx( type, includeWidth ) {
  function createTween (line 7315) | function createTween( value, prop, animation ) {
  function defaultPrefilter (line 7329) | function defaultPrefilter( elem, props, opts ) {
  function propFilter (line 7501) | function propFilter( props, specialEasing ) {
  function Animation (line 7538) | function Animation( elem, properties, options ) {
  function stripAndCollapse (line 8254) | function stripAndCollapse( value ) {
  function getClass (line 8260) | function getClass( elem ) {
  function classesToArray (line 8264) | function classesToArray( value ) {
  function buildParams (line 8894) | function buildParams( prefix, obj, traditional, add ) {
  function addToPrefiltersOrTransports (line 9047) | function addToPrefiltersOrTransports( structure ) {
  function inspectPrefiltersOrTransports (line 9081) | function inspectPrefiltersOrTransports( structure, options, originalOpti...
  function ajaxExtend (line 9110) | function ajaxExtend( target, src ) {
  function ajaxHandleResponses (line 9130) | function ajaxHandleResponses( s, jqXHR, responses ) {
  function ajaxConvert (line 9188) | function ajaxConvert( s, response, jqXHR, isSuccess ) {
  function done (line 9704) | function done( status, nativeStatusText, responses, headers ) {

FILE: vendor/assets/javascripts/rails_admin/popper.js
  function getWindow (line 11) | function getWindow(node) {
  function isElement (line 24) | function isElement(node) {
  function isHTMLElement (line 29) | function isHTMLElement(node) {
  function isShadowRoot (line 34) | function isShadowRoot(node) {
  function getBoundingClientRect (line 48) | function getBoundingClientRect(element, includeScale) {
  function getWindowScroll (line 83) | function getWindowScroll(node) {
  function getHTMLElementScroll (line 93) | function getHTMLElementScroll(element) {
  function getNodeScroll (line 100) | function getNodeScroll(node) {
  function getNodeName (line 108) | function getNodeName(element) {
  function getDocumentElement (line 112) | function getDocumentElement(element) {
  function getWindowScrollBarX (line 118) | function getWindowScrollBarX(element) {
  function getComputedStyle (line 129) | function getComputedStyle(element) {
  function isScrollParent (line 133) | function isScrollParent(element) {
  function isElementScaled (line 143) | function isElementScaled(element) {
  function getCompositeRect (line 152) | function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
  function getLayoutRect (line 195) | function getLayoutRect(element) {
  function getParentNode (line 218) | function getParentNode(element) {
  function getScrollParent (line 235) | function getScrollParent(node) {
  function listScrollParents (line 255) | function listScrollParents(element, list) {
  function isTableElement (line 271) | function isTableElement(element) {
  function getTrueOffsetParent (line 275) | function getTrueOffsetParent(element) {
  function getContainingBlock (line 286) | function getContainingBlock(element) {
  function getOffsetParent (line 318) | function getOffsetParent(element) {
  function order (line 365) | function order(modifiers) {
  function orderModifiers (line 397) | function orderModifiers(modifiers) {
  function debounce (line 408) | function debounce(fn) {
  function format (line 424) | function format(str) {
  function validateModifiers (line 437) | function validateModifiers(modifiers) {
  function uniqueBy (line 514) | function uniqueBy(arr, fn) {
  function getBasePlacement (line 526) | function getBasePlacement(placement) {
  function mergeByName (line 530) | function mergeByName(modifiers) {
  function getViewportRect (line 545) | function getViewportRect(element) {
  function getDocumentRect (line 585) | function getDocumentRect(element) {
  function contains (line 608) | function contains(parent, child) {
  function rectToClientRect (line 631) | function rectToClientRect(rect) {
  function getInnerBoundingClientRect (line 640) | function getInnerBoundingClientRect(element) {
  function getClientRectFromMixedType (line 653) | function getClientRectFromMixedType(element, clippingParent) {
  function getClippingParents (line 660) | function getClippingParents(element) {
  function getClippingRect (line 677) | function getClippingRect(element, boundary, rootBoundary) {
  function getVariation (line 696) | function getVariation(placement) {
  function getMainAxisFromPlacement (line 700) | function getMainAxisFromPlacement(placement) {
  function computeOffsets (line 704) | function computeOffsets(_ref) {
  function getFreshSideObject (line 769) | function getFreshSideObject() {
  function mergePaddingObject (line 778) | function mergePaddingObject(paddingObject) {
  function expandToHashMap (line 782) | function expandToHashMap(value, keys) {
  function detectOverflow (line 789) | function detectOverflow(state, options) {
  function areValidElements (line 851) | function areValidElements() {
  function popperGenerator (line 861) | function popperGenerator(generatorOptions) {
  function effect$2 (line 1090) | function effect$2(_ref) {
  function popperOffsets (line 1134) | function popperOffsets(_ref) {
  function roundOffsetsByDPR (line 1167) | function roundOffsetsByDPR(_ref) {
  function mapToStyles (line 1178) | function mapToStyles(_ref2) {
  function computeStyles (line 1251) | function computeStyles(_ref4) {
  function applyStyles (line 1314) | function applyStyles(_ref) {
  function effect$1 (line 1341) | function effect$1(_ref2) {
  function distanceAndSkiddingToXY (line 1395) | function distanceAndSkiddingToXY(placement, rects, offset) {
  function offset (line 1416) | function offset(_ref2) {
  function getOppositePlacement (line 1453) | function getOppositePlacement(placement) {
  function getOppositeVariationPlacement (line 1463) | function getOppositeVariationPlacement(placement) {
  function computeAutoPlacement (line 1469) | function computeAutoPlacement(state, options) {
  function getExpandedFallbackPlacements (line 1513) | function getExpandedFallbackPlacements(placement) {
  function flip (line 1522) | function flip(_ref) {
  function getAltAxis (line 1653) | function getAltAxis(axis) {
  function within (line 1657) | function within(min$1, value, max$1) {
  function withinMaxClamp (line 1660) | function withinMaxClamp(min, value, max) {
  function preventOverflow (line 1665) | function preventOverflow(_ref) {
  function arrow (line 1803) | function arrow(_ref) {
  function effect (line 1840) | function effect(_ref2) {
  function getSideOffsets (line 1887) | function getSideOffsets(overflow, rect, preventedOffsets) {
  function isAnySideFullyClipped (line 1903) | function isAnySideFullyClipped(overflow) {
  function hide (line 1909) | function hide(_ref) {
Condensed preview — 722 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,868K chars).
[
  {
    "path": ".github/ISSUE_TEMPLATE/bug_report.md",
    "chars": 520,
    "preview": "---\nname: Bug report\nabout: Create a report to help us improve\ntitle: \"\"\nlabels: \"\"\nassignees: \"\"\n---\n\n**Describe the bu"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature_request.md",
    "chars": 463,
    "preview": "---\nname: Feature request\nabout: Suggest an idea for this project\ntitle: \"\"\nlabels: enhancement\nassignees: \"\"\n---\n\n**Is "
  },
  {
    "path": ".github/workflows/code-ql.yml",
    "chars": 771,
    "preview": "name: \"CodeQL\"\n\non:\n  push:\n    branches: [master]\n  pull_request:\n    # The branches below must be a subset of the bran"
  },
  {
    "path": ".github/workflows/test.yml",
    "chars": 6677,
    "preview": "name: Test\n\non: [push, pull_request]\n\njobs:\n  rspec:\n    name: RSpec\n    strategy:\n      fail-fast: false\n      matrix:\n"
  },
  {
    "path": ".gitignore",
    "chars": 435,
    "preview": "*.gem\n*.log\n*.rbc\n*.swp\n.bundle\n.idea/\n.vscode/\n.rvmrc\n.sass-cache\n.yardoc\n/.emacs.desktop\n/gemfiles/*.lock\n/node_module"
  },
  {
    "path": ".prettierignore",
    "chars": 173,
    "preview": "coverage\nlib/generators/rails_admin/templates\nspec/dummy_app/app/assets/builds\nspec/dummy_app/public\nspec/dummy_app/tmp\n"
  },
  {
    "path": ".rspec",
    "chars": 101,
    "preview": "--color\n--order=random\n--profile\n--exclude-pattern 'dummy_app/node_modules/rails_admin/**/*_spec.rb'\n"
  },
  {
    "path": ".rubocop.yml",
    "chars": 3640,
    "preview": "inherit_from: .rubocop_todo.yml\n\nrequire:\n  - rubocop-performance\n\nAllCops:\n  Exclude:\n    - \"gemfiles/*\"\n    - \"node_mo"
  },
  {
    "path": ".rubocop_todo.yml",
    "chars": 4572,
    "preview": "# This configuration was generated by\n# `rubocop --auto-gen-config`\n# on 2021-11-20 13:57:54 UTC using RuboCop version 1"
  },
  {
    "path": ".teatro.yml",
    "chars": 444,
    "preview": "project:\n  platform: rails\n\nstage:\n  before:\n    - export CI_DB_ADAPTER=postgresql\n    - export CI_ORM=active_record\n   "
  },
  {
    "path": ".yardopts",
    "chars": 56,
    "preview": "--no-private\n--protected\n--markup markdown\n-\nLICENSE.md\n"
  },
  {
    "path": "Appraisals",
    "chars": 4763,
    "preview": "# frozen_string_literal: true\n\nappraise 'rails-6.0' do\n  gem 'rails', '~> 6.0.0'\n  gem 'concurrent-ruby', '1.3.4' # Work"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 72640,
    "preview": "# RailsAdmin Changelog\n\n## [Unreleased](https://github.com/railsadminteam/rails_admin/tree/HEAD)\n\n[Full Changelog](https"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 3901,
    "preview": "## Contributing\n\nIn the spirit of [free software][free-sw], **everyone** is encouraged to help\nimprove this project.\n\n[f"
  },
  {
    "path": "Gemfile",
    "chars": 1441,
    "preview": "# frozen_string_literal: true\n\nsource 'https://rubygems.org'\n\ngem 'appraisal', '>= 2.0'\ngem 'devise', '~> 4.7'\ngem 'net-"
  },
  {
    "path": "LICENSE.md",
    "chars": 1067,
    "preview": "Copyright (c) 2010-2016 Erik Michaels-Ober\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy"
  },
  {
    "path": "Procfile.teatro",
    "chars": 51,
    "preview": "web: cd spec/dummy_app && bundle exec rails server\n"
  },
  {
    "path": "README.md",
    "chars": 3912,
    "preview": "# RailsAdmin\n\n[![Gem Version](https://img.shields.io/gem/v/rails_admin.svg)][gem]\n[![Build Status](https://github.com/ra"
  },
  {
    "path": "Rakefile",
    "chars": 961,
    "preview": "# frozen_string_literal: true\n\n# Add your own tasks in files placed in lib/tasks ending in .rake,\n# for example lib/task"
  },
  {
    "path": "app/assets/javascripts/rails_admin/application.js.erb",
    "chars": 1037,
    "preview": "//=  require 'rails-ujs'\n//=  require 'turbo'\n//=  require 'rails_admin/jquery3'\n//=  require 'jquery_nested_form'\n//=  "
  },
  {
    "path": "app/assets/javascripts/rails_admin/custom/ui.js",
    "chars": 66,
    "preview": "// override this file in your application to add custom behaviour\n"
  },
  {
    "path": "app/assets/stylesheets/rails_admin/application.scss.erb",
    "chars": 775,
    "preview": "@charset \"UTF-8\";\n\n/***  Variables  ***/\n\n@import \"rails_admin/custom/variables\";\n@import \"rails_admin/styles/base/varia"
  },
  {
    "path": "app/assets/stylesheets/rails_admin/custom/mixins.scss",
    "chars": 499,
    "preview": "/*\n  Customize Sass mixins from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.\n  Copy this file to"
  },
  {
    "path": "app/assets/stylesheets/rails_admin/custom/theming.scss",
    "chars": 415,
    "preview": "/*\n  Customize RailsAdmin theme here.\n  Copy this file to your app/assets/stylesheets/rails_admin/custom/theming.scss, l"
  },
  {
    "path": "app/assets/stylesheets/rails_admin/custom/variables.scss",
    "chars": 566,
    "preview": "/*\n  Customize Sass variables from Twitter-Bootstrap/RailsAdmin theme or add new ones for your own use.\n  Copy this file"
  },
  {
    "path": "app/controllers/rails_admin/application_controller.rb",
    "chars": 2274,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/abstract_model'\n\nmodule RailsAdmin\n  class ModelNotFound < ::Standar"
  },
  {
    "path": "app/controllers/rails_admin/main_controller.rb",
    "chars": 6755,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  class MainController < RailsAdmin::ApplicationController\n    include "
  },
  {
    "path": "app/helpers/rails_admin/application_helper.rb",
    "chars": 10747,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module ApplicationHelper\n    def authorized?(action_name, abstract_mo"
  },
  {
    "path": "app/helpers/rails_admin/form_builder.rb",
    "chars": 5404,
    "preview": "# frozen_string_literal: true\n\nrequire 'nested_form/builder_mixin'\n\nmodule RailsAdmin\n  class FormBuilder < ::ActionView"
  },
  {
    "path": "app/helpers/rails_admin/main_helper.rb",
    "chars": 2173,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module MainHelper\n    def rails_admin_form_for(*args, &block)\n      o"
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/_gap.html.erb",
    "chars": 124,
    "preview": "<li class=\"page-item disabled\">\n  <a href=\"#\" class=\"page-link\">\n    <%= raw(t 'admin.pagination.truncate') %>\n  </a>\n</"
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/_next_page.html.erb",
    "chars": 284,
    "preview": "<% if current_page.last? %>\n  <li class=\"page-item next disabled\">\n    <%= link_to raw(t 'admin.pagination.next'), '#', "
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/_page.html.erb",
    "chars": 215,
    "preview": "<% if page.current? %>\n  <li class=\"page-item active\">\n    <%= link_to page, url, class: 'page-link' %>\n  </li>\n<% else "
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/_paginator.html.erb",
    "chars": 416,
    "preview": "<%= paginator.render do %>\n  <nav aria-label=\"Page navigation\">\n    <ul class=\"pagination\">\n      <%= prev_page_tag %>\n "
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/_prev_page.html.erb",
    "chars": 293,
    "preview": "<% if current_page.first? %>\n  <li class=\"page-item prev disabled\">\n    <%= link_to raw(t 'admin.pagination.previous'), "
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_next_page.html.erb",
    "chars": 284,
    "preview": "<% if current_page.last? %>\n  <li class=\"page-item next disabled\">\n    <%= link_to raw(t 'admin.pagination.next'), '#', "
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_paginator.html.erb",
    "chars": 199,
    "preview": "<%= paginator.render do %>\n  <nav aria-label=\"Page navigation\">\n    <ul class=\"pagination\">\n      <%= prev_page_tag if !"
  },
  {
    "path": "app/views/kaminari/ra-twitter-bootstrap/without_count/_prev_page.html.erb",
    "chars": 293,
    "preview": "<% if current_page.first? %>\n  <li class=\"page-item prev disabled\">\n    <%= link_to raw(t 'admin.pagination.previous'), "
  },
  {
    "path": "app/views/layouts/rails_admin/_head.html.erb",
    "chars": 1971,
    "preview": "<meta content=\"IE=edge\" http-equiv=\"X-UA-Compatible\">\n<meta content=\"text/html; charset=utf-8\" http-equiv=\"Content-Type\""
  },
  {
    "path": "app/views/layouts/rails_admin/_navigation.html.erb",
    "chars": 609,
    "preview": "<div class=\"container-fluid\">\n  <a class=\"navbar-brand\" href=\"<%= dashboard_path %>\">\n    <%= _get_plugin_name[0] || 'Ra"
  },
  {
    "path": "app/views/layouts/rails_admin/_secondary_navigation.html.erb",
    "chars": 1049,
    "preview": "<ul class=\"navbar-nav ms-auto root_links\">\n  <% actions(:root).select(&:show_in_navigation).each do |action| %>\n    <li "
  },
  {
    "path": "app/views/layouts/rails_admin/_sidebar_navigation.html.erb",
    "chars": 174,
    "preview": "<ul class=\"sidebar col-sm-3 col-md-2 nav btn-toggle-nav flex-column flex-nowrap bg-light\">\n  <%= main_navigation %>\n  <%"
  },
  {
    "path": "app/views/layouts/rails_admin/application.html.erb",
    "chars": 1011,
    "preview": "<!DOCTYPE html>\n<html lang=\"<%= I18n.locale %>\">\n  <head>\n    <%= render \"layouts/rails_admin/head\" %>\n  </head>\n  <body"
  },
  {
    "path": "app/views/layouts/rails_admin/content.html.erb",
    "chars": 805,
    "preview": "<title>\n  <%= \"#{@abstract_model.try(:pretty_name) || @page_name} | #{[_get_plugin_name[0] || 'Rails', _get_plugin_name["
  },
  {
    "path": "app/views/layouts/rails_admin/modal.js.erb",
    "chars": 258,
    "preview": "<% flash && flash.each do |key, value| %>\n  <div class=\"<%= flash_alert_class(key) %> alert alert-dismissible\">\n    <%= "
  },
  {
    "path": "app/views/rails_admin/main/_dashboard_history.html.erb",
    "chars": 1353,
    "preview": "<table class=\"table table-condensed table-striped table-hover\">\n  <thead>\n    <tr>\n      <th class=\"shrink user\">\n      "
  },
  {
    "path": "app/views/rails_admin/main/_delete_notice.html.erb",
    "chars": 1548,
    "preview": "<% object = delete_notice %>\n<li style=\"display:block; margin-top:10px\">\n  <span class=\"label label-default\">\n    <%= @a"
  },
  {
    "path": "app/views/rails_admin/main/_form_action_text.html.erb",
    "chars": 253,
    "preview": "<%\n  js_data = {\n    csspath: field.css_location,\n    jspath: field.js_location,\n    warn_dynamic_load: field.warn_dynam"
  },
  {
    "path": "app/views/rails_admin/main/_form_boolean.html.erb",
    "chars": 875,
    "preview": "<% if field.nullable? %>\n  <div class=\"btn-group\" role=\"group\">\n    <% {'1': [true, 'btn-outline-success'], '0': [false,"
  },
  {
    "path": "app/views/rails_admin/main/_form_ck_editor.html.erb",
    "chars": 436,
    "preview": "<%\n  js_data = {\n    jspath: field.location ? field.location : field.base_location + \"ckeditor.js\",\n    base_location: f"
  },
  {
    "path": "app/views/rails_admin/main/_form_code_mirror.html.erb",
    "chars": 323,
    "preview": "<%\n  js_data = {\n    csspath: field.css_location,\n    jspath: field.js_location,\n    options: field.config,\n    location"
  },
  {
    "path": "app/views/rails_admin/main/_form_colorpicker.html.erb",
    "chars": 204,
    "preview": "<div class=\"row\">\n  <div class=\"col-sm-2\">\n    <%= form.send field.view_helper, field.method_name, field.html_attributes"
  },
  {
    "path": "app/views/rails_admin/main/_form_datetime.html.erb",
    "chars": 462,
    "preview": "<div class=\"row\">\n  <div class=\"col-sm-4\">\n    <div class=\"input-group\">\n      <%= form.text_field field.method_name, fi"
  },
  {
    "path": "app/views/rails_admin/main/_form_enumeration.html.erb",
    "chars": 970,
    "preview": "<% unless field.multiple? %>\n  <div class=\"row\">\n    <div class=\"col-sm-4\">\n      <%= form.select field.method_name, fie"
  },
  {
    "path": "app/views/rails_admin/main/_form_field.html.erb",
    "chars": 168,
    "preview": "<%= form.send field.view_helper, field.method_name, field.html_attributes.reverse_merge({ value: field.form_value, class"
  },
  {
    "path": "app/views/rails_admin/main/_form_file_upload.html.erb",
    "chars": 807,
    "preview": "<% file = field.value %>\n<% if field.cache_method %>\n  <%= form.hidden_field(field.cache_method, value: field.cache_valu"
  },
  {
    "path": "app/views/rails_admin/main/_form_filtering_multiselect.html.erb",
    "chars": 918,
    "preview": "<%\n  config = field.associated_model_config\n%>\n\n<div class=\"row\">\n  <div class=\"col-auto\">\n    <input name=\"<%= form.dom"
  },
  {
    "path": "app/views/rails_admin/main/_form_filtering_select.html.erb",
    "chars": 1242,
    "preview": "<%\n  config = field.associated_model_config\n%>\n\n<div class=\"row\">\n  <div class=\"col-sm-4\">\n    <%=\n      form.select fie"
  },
  {
    "path": "app/views/rails_admin/main/_form_froala.html.erb",
    "chars": 321,
    "preview": "<%\n  js_data = {\n    csspath: field.css_location,\n    jspath: field.js_location,\n    config_options: field.config_option"
  },
  {
    "path": "app/views/rails_admin/main/_form_multiple_file_upload.html.erb",
    "chars": 1041,
    "preview": "<% field.attachments.each_with_index do |attachment, i| %>\n  <div class=\"<%= field.reorderable? ? 'sortables' : '' %> to"
  },
  {
    "path": "app/views/rails_admin/main/_form_nested_many.html.erb",
    "chars": 1105,
    "preview": "<div class=\"controls col-sm-10\" data-nestedmany=\"true\">\n  <div class=\"btn-group\">\n    <a class=\"<%= (field.active? ? 'ac"
  },
  {
    "path": "app/views/rails_admin/main/_form_nested_one.html.erb",
    "chars": 1178,
    "preview": "<div class=\"controls col-sm-10\" data-nestedone=\"true\">\n  <ul class=\"nav collapse\"></ul>\n  <div class=\"btn-group\">\n    <a"
  },
  {
    "path": "app/views/rails_admin/main/_form_polymorphic_association.html.erb",
    "chars": 930,
    "preview": "<%\n  column_type_dom_id = form.dom_id(field).sub(field.method_name.to_s, field.type_column)\n%>\n\n<div class=\"row\">\n  <div"
  },
  {
    "path": "app/views/rails_admin/main/_form_simple_mde.html.erb",
    "chars": 320,
    "preview": "<%\n  js_data = {\n    js_location: field.js_location,\n    css_location: field.css_location,\n    instance_config: field.in"
  },
  {
    "path": "app/views/rails_admin/main/_form_text.html.erb",
    "chars": 217,
    "preview": "<%= form.text_area field.method_name, field.html_attributes.reverse_merge(data: { richtext: false, options: {}.to_json }"
  },
  {
    "path": "app/views/rails_admin/main/_form_wysihtml5.html.erb",
    "chars": 326,
    "preview": "<%\n  js_data = {\n    csspath: field.css_location,\n    jspath: field.js_location,\n    config_options: field.config_option"
  },
  {
    "path": "app/views/rails_admin/main/_submit_buttons.html.erb",
    "chars": 1349,
    "preview": "<div class=\"form-actions row justify-content-end my-3\">\n  <div class=\"col-sm-10\">\n    <input name=\"return_to\" type=\"<%= "
  },
  {
    "path": "app/views/rails_admin/main/bulk_delete.html.erb",
    "chars": 801,
    "preview": "<h4>\n  <%= I18n.t('admin.form.bulk_delete') %>\n</h4>\n<ul>\n  <%= render partial: \"delete_notice\", collection: @objects %>"
  },
  {
    "path": "app/views/rails_admin/main/dashboard.html.erb",
    "chars": 2673,
    "preview": "<% if @abstract_models %>\n  <table class=\"table table-condensed table-striped table-hover\">\n    <thead>\n      <tr>\n     "
  },
  {
    "path": "app/views/rails_admin/main/delete.html.erb",
    "chars": 1033,
    "preview": "<h4>\n  <%= t(\"admin.form.are_you_sure_you_want_to_delete_the_object\", model_name: @abstract_model.pretty_name.downcase) "
  },
  {
    "path": "app/views/rails_admin/main/edit.html.erb",
    "chars": 257,
    "preview": "<%= rails_admin_form_for @object, url: edit_path(@abstract_model, @object.id), as: @abstract_model.param_key, html: { me"
  },
  {
    "path": "app/views/rails_admin/main/export.html.erb",
    "chars": 7225,
    "preview": "<% params = request.params.except(:action, :controller, :utf8, :page, :per_page, :format, :authenticity_token) %>\n<% vis"
  },
  {
    "path": "app/views/rails_admin/main/history.html.erb",
    "chars": 3752,
    "preview": "<% params = request.params.except(:action, :controller, :model_name) %>\n<% query = params[:query] %>\n<% filter = params["
  },
  {
    "path": "app/views/rails_admin/main/index.html.erb",
    "chars": 8138,
    "preview": "<%\n  query = params[:query]\n  params = request.params.except(:authenticity_token, :action, :controller, :utf8, :bulk_exp"
  },
  {
    "path": "app/views/rails_admin/main/new.html.erb",
    "chars": 250,
    "preview": "<%= rails_admin_form_for @object, url: new_path(model_name: @abstract_model.to_param), as: @abstract_model.param_key, ht"
  },
  {
    "path": "app/views/rails_admin/main/show.html.erb",
    "chars": 1153,
    "preview": "<% @model_config.show.with(object: @object, view: self, controller: self.controller).visible_groups.each do |fieldset| %"
  },
  {
    "path": "config/initializers/active_record_extensions.rb",
    "chars": 490,
    "preview": "# frozen_string_literal: true\n\nActiveSupport.on_load(:active_record) do\n  module ActiveRecord\n    class Base\n      def s"
  },
  {
    "path": "config/initializers/mongoid_extensions.rb",
    "chars": 188,
    "preview": "# frozen_string_literal: true\n\nif defined?(::Mongoid::Document)\n  require 'rails_admin/adapters/mongoid/extension'\n  Mon"
  },
  {
    "path": "config/locales/rails_admin.en.yml",
    "chars": 5367,
    "preview": "en:\n  admin:\n    js:\n      true: \"True\"\n      false: \"False\"\n      is_present: Is present\n      is_blank: Is blank\n     "
  },
  {
    "path": "config/routes.rb",
    "chars": 764,
    "preview": "# frozen_string_literal: true\n\nRailsAdmin::Engine.routes.draw do\n  controller 'main' do\n    RailsAdmin::Config::Actions."
  },
  {
    "path": "gemfiles/composite_primary_keys.gemfile",
    "chars": 1474,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_6.0.gemfile",
    "chars": 2014,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_6.1.gemfile",
    "chars": 1958,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_7.0.gemfile",
    "chars": 2051,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_7.1.gemfile",
    "chars": 1963,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_7.2.gemfile",
    "chars": 1773,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "gemfiles/rails_8.0.gemfile",
    "chars": 1773,
    "preview": "# This file was generated by Appraisal\n\nsource \"https://rubygems.org\"\n\ngem \"appraisal\", \">= 2.0\"\ngem \"devise\", \"~> 4.7\"\n"
  },
  {
    "path": "lib/generators/rails_admin/importmap_formatter.rb",
    "chars": 1092,
    "preview": "# frozen_string_literal: true\n\nrequire 'importmap/packager'\n\nmodule RailsAdmin\n  class ImportmapFormatter\n    attr_reade"
  },
  {
    "path": "lib/generators/rails_admin/install_generator.rb",
    "chars": 6042,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails/generators'\nrequire 'rails_admin/version'\nrequire File.expand_path('utils'"
  },
  {
    "path": "lib/generators/rails_admin/templates/initializer.erb",
    "chars": 973,
    "preview": "RailsAdmin.config do |config|\n  config.asset_source = :<%= asset %>\n\n  ### Popular gems integration\n\n  ## == Devise ==\n "
  },
  {
    "path": "lib/generators/rails_admin/templates/rails_admin.js",
    "chars": 43,
    "preview": "import \"rails_admin/src/rails_admin/base\";\n"
  },
  {
    "path": "lib/generators/rails_admin/templates/rails_admin.scss.erb",
    "chars": 118,
    "preview": "<%= @fa_font_path ? %{$fa-font-path: \"#{@fa_font_path}\";\\n} : '' %>@import \"rails_admin/src/rails_admin/styles/base\";\n"
  },
  {
    "path": "lib/generators/rails_admin/templates/rails_admin.vite.js",
    "chars": 84,
    "preview": "import \"~/stylesheets/rails_admin.scss\";\nimport \"rails_admin/src/rails_admin/base\";\n"
  },
  {
    "path": "lib/generators/rails_admin/templates/rails_admin.webpacker.js",
    "chars": 85,
    "preview": "import \"rails_admin/src/rails_admin/base\";\nimport \"../stylesheets/rails_admin.scss\";\n"
  },
  {
    "path": "lib/generators/rails_admin/utils.rb",
    "chars": 653,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Generators\n    module Utils\n      module InstanceMethods\n     "
  },
  {
    "path": "lib/rails_admin/abstract_model.rb",
    "chars": 7092,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/support/datetime'\n\nmodule RailsAdmin\n  class AbstractModel\n    cattr"
  },
  {
    "path": "lib/rails_admin/adapters/active_record/association.rb",
    "chars": 3059,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module ActiveRecord\n      class Association\n     "
  },
  {
    "path": "lib/rails_admin/adapters/active_record/object_extension.rb",
    "chars": 232,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module ActiveRecord\n      module ObjectExtension\n"
  },
  {
    "path": "lib/rails_admin/adapters/active_record/property.rb",
    "chars": 1069,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module ActiveRecord\n      class Property\n        "
  },
  {
    "path": "lib/rails_admin/adapters/active_record.rb",
    "chars": 11616,
    "preview": "# frozen_string_literal: true\n\nrequire 'active_record'\nrequire 'rails_admin/adapters/active_record/association'\nrequire "
  },
  {
    "path": "lib/rails_admin/adapters/mongoid/association.rb",
    "chars": 4083,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module Mongoid\n      class Association\n        at"
  },
  {
    "path": "lib/rails_admin/adapters/mongoid/bson.rb",
    "chars": 710,
    "preview": "# frozen_string_literal: true\n\nrequire 'mongoid'\n\nmodule RailsAdmin\n  module Adapters\n    module Mongoid\n      class Bso"
  },
  {
    "path": "lib/rails_admin/adapters/mongoid/extension.rb",
    "chars": 1613,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module Mongoid\n      module Extension\n        ext"
  },
  {
    "path": "lib/rails_admin/adapters/mongoid/object_extension.rb",
    "chars": 783,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module Mongoid\n      module ObjectExtension\n     "
  },
  {
    "path": "lib/rails_admin/adapters/mongoid/property.rb",
    "chars": 2600,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Adapters\n    module Mongoid\n      class Property\n        STRIN"
  },
  {
    "path": "lib/rails_admin/adapters/mongoid.rb",
    "chars": 10303,
    "preview": "# frozen_string_literal: true\n\nrequire 'mongoid'\nrequire 'rails_admin/config/sections/list'\nrequire 'rails_admin/adapter"
  },
  {
    "path": "lib/rails_admin/config/actions/base.rb",
    "chars": 4598,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
  },
  {
    "path": "lib/rails_admin/config/actions/bulk_delete.rb",
    "chars": 2333,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class BulkDelete < RailsAdmin:"
  },
  {
    "path": "lib/rails_admin/config/actions/dashboard.rb",
    "chars": 1787,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class Dashboard < RailsAdmin::"
  },
  {
    "path": "lib/rails_admin/config/actions/delete.rb",
    "chars": 1510,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class Delete < RailsAdmin::Con"
  },
  {
    "path": "lib/rails_admin/config/actions/edit.rb",
    "chars": 1725,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class Edit < RailsAdmin::Confi"
  },
  {
    "path": "lib/rails_admin/config/actions/export.rb",
    "chars": 1142,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class Export < RailsAdmin::Con"
  },
  {
    "path": "lib/rails_admin/config/actions/history_index.rb",
    "chars": 989,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class HistoryIndex < RailsAdmi"
  },
  {
    "path": "lib/rails_admin/config/actions/history_show.rb",
    "chars": 995,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class HistoryShow < RailsAdmin"
  },
  {
    "path": "lib/rails_admin/config/actions/index.rb",
    "chars": 3275,
    "preview": "# frozen_string_literal: true\n\nrequire 'activemodel-serializers-xml'\n\nmodule RailsAdmin\n  module Config\n    module Actio"
  },
  {
    "path": "lib/rails_admin/config/actions/new.rb",
    "chars": 2322,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class New < RailsAdmin::Config"
  },
  {
    "path": "lib/rails_admin/config/actions/show.rb",
    "chars": 825,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class Show < RailsAdmin::Confi"
  },
  {
    "path": "lib/rails_admin/config/actions/show_in_app.rb",
    "chars": 815,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class ShowInApp < RailsAdmin::"
  },
  {
    "path": "lib/rails_admin/config/actions.rb",
    "chars": 3574,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Actions\n      class << self\n        def all("
  },
  {
    "path": "lib/rails_admin/config/configurable.rb",
    "chars": 4324,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    # A module for all configurables.\n\n    module Confi"
  },
  {
    "path": "lib/rails_admin/config/const_load_suppressor.rb",
    "chars": 2122,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module ConstLoadSuppressor\n      class << self\n    "
  },
  {
    "path": "lib/rails_admin/config/fields/association.rb",
    "chars": 6199,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config'\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n"
  },
  {
    "path": "lib/rails_admin/config/fields/base.rb",
    "chars": 12587,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
  },
  {
    "path": "lib/rails_admin/config/fields/collection_association.rb",
    "chars": 3456,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/association'\n\nmodule RailsAdmin\n  module Config\n    mo"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/action_text.rb",
    "chars": 509,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\n\nRailsAdmin"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/active_storage.rb",
    "chars": 1392,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/association.rb",
    "chars": 1385,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/carrierwave.rb",
    "chars": 1441,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/devise.rb",
    "chars": 1006,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/dragonfly.rb",
    "chars": 1292,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/enum.rb",
    "chars": 876,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types/enum'\nrequir"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/paperclip.rb",
    "chars": 1294,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/password.rb",
    "chars": 660,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types/password'\n\n#"
  },
  {
    "path": "lib/rails_admin/config/fields/factories/shrine.rb",
    "chars": 1228,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields'\nrequire 'rails_admin/config/fields/types'\nrequire 'ra"
  },
  {
    "path": "lib/rails_admin/config/fields/group.rb",
    "chars": 2457,
    "preview": "# frozen_string_literal: true\n\nrequire 'active_support/core_ext/string/inflections'\nrequire 'rails_admin/config/proxyabl"
  },
  {
    "path": "lib/rails_admin/config/fields/singular_association.rb",
    "chars": 1889,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/association'\n\nmodule RailsAdmin\n  module Config\n    mo"
  },
  {
    "path": "lib/rails_admin/config/fields/types/action_text.rb",
    "chars": 884,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/active_record_enum.rb",
    "chars": 1439,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/enum'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/active_storage.rb",
    "chars": 2078,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/file_upload'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/all.rb",
    "chars": 2236,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/action_text'\nrequire 'rails_admin/config/fields/"
  },
  {
    "path": "lib/rails_admin/config/fields/types/belongs_to_association.rb",
    "chars": 1935,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/singular_association'\n\nmodule RailsAdmin\n  module Conf"
  },
  {
    "path": "lib/rails_admin/config/fields/types/boolean.rb",
    "chars": 1848,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Fields\n      module Types\n        class Bool"
  },
  {
    "path": "lib/rails_admin/config/fields/types/bson_object_id.rb",
    "chars": 1091,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n  module Config\n    m"
  },
  {
    "path": "lib/rails_admin/config/fields/types/carrierwave.rb",
    "chars": 1014,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
  },
  {
    "path": "lib/rails_admin/config/fields/types/citext.rb",
    "chars": 286,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/ck_editor.rb",
    "chars": 1120,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/code_mirror.rb",
    "chars": 1390,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/color.rb",
    "chars": 1019,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/date.rb",
    "chars": 927,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n  module Config\n   "
  },
  {
    "path": "lib/rails_admin/config/fields/types/datetime.rb",
    "chars": 2672,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/support/datetime'\n\nmodule R"
  },
  {
    "path": "lib/rails_admin/config/fields/types/decimal.rb",
    "chars": 531,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n  module Config\n    "
  },
  {
    "path": "lib/rails_admin/config/fields/types/dragonfly.rb",
    "chars": 1247,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
  },
  {
    "path": "lib/rails_admin/config/fields/types/enum.rb",
    "chars": 1787,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n  module Config\n    m"
  },
  {
    "path": "lib/rails_admin/config/fields/types/file_upload.rb",
    "chars": 2315,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n  module Config\n    m"
  },
  {
    "path": "lib/rails_admin/config/fields/types/float.rb",
    "chars": 529,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n  module Config\n    "
  },
  {
    "path": "lib/rails_admin/config/fields/types/froala.rb",
    "chars": 989,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb",
    "chars": 410,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/collection_association'\n\nmodule RailsAdmin\n  module Co"
  },
  {
    "path": "lib/rails_admin/config/fields/types/has_many_association.rb",
    "chars": 398,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/collection_association'\n\nmodule RailsAdmin\n  module Co"
  },
  {
    "path": "lib/rails_admin/config/fields/types/has_one_association.rb",
    "chars": 998,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/singular_association'\n\nmodule RailsAdmin\n  module Conf"
  },
  {
    "path": "lib/rails_admin/config/fields/types/hidden.rb",
    "chars": 597,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/inet.rb",
    "chars": 297,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n  module Config\n    module Fi"
  },
  {
    "path": "lib/rails_admin/config/fields/types/integer.rb",
    "chars": 459,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/numeric'\n\nmodule RailsAdmin\n  module Config\n    "
  },
  {
    "path": "lib/rails_admin/config/fields/types/json.rb",
    "chars": 1026,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/multiple_active_storage.rb",
    "chars": 2602,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/multiple_file_upload'\n\nmodule RailsAdmin\n  modul"
  },
  {
    "path": "lib/rails_admin/config/fields/types/multiple_carrierwave.rb",
    "chars": 1785,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/multiple_file_upload'\n\nmodule RailsAdmin\n  modul"
  },
  {
    "path": "lib/rails_admin/config/fields/types/multiple_file_upload.rb",
    "chars": 3719,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Fields\n      module Types\n        class Mult"
  },
  {
    "path": "lib/rails_admin/config/fields/types/numeric.rb",
    "chars": 599,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n  module Config\n    module Fi"
  },
  {
    "path": "lib/rails_admin/config/fields/types/paperclip.rb",
    "chars": 964,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\nrequire 'rails_admin/config/fields/types/file_up"
  },
  {
    "path": "lib/rails_admin/config/fields/types/password.rb",
    "chars": 1075,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n  module Config\n    m"
  },
  {
    "path": "lib/rails_admin/config/fields/types/polymorphic_association.rb",
    "chars": 3722,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/belongs_to_association'\n\nmodule RailsAdmin\n  mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/serialized.rb",
    "chars": 750,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/shrine.rb",
    "chars": 1619,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/file_upload'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/simple_mde.rb",
    "chars": 1117,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types/string.rb",
    "chars": 1555,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/string_like.rb",
    "chars": 685,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/base'\n\nmodule RailsAdmin\n  module Config\n    module Fi"
  },
  {
    "path": "lib/rails_admin/config/fields/types/text.rb",
    "chars": 609,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string_like'\n\nmodule RailsAdmin\n  module Config\n"
  },
  {
    "path": "lib/rails_admin/config/fields/types/time.rb",
    "chars": 969,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n  module Config\n   "
  },
  {
    "path": "lib/rails_admin/config/fields/types/timestamp.rb",
    "chars": 375,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/datetime'\n\nmodule RailsAdmin\n  module Config\n   "
  },
  {
    "path": "lib/rails_admin/config/fields/types/uuid.rb",
    "chars": 314,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/string'\n\nmodule RailsAdmin\n  module Config\n    m"
  },
  {
    "path": "lib/rails_admin/config/fields/types/wysihtml5.rb",
    "chars": 1241,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/types/text'\n\nmodule RailsAdmin\n  module Config\n    mod"
  },
  {
    "path": "lib/rails_admin/config/fields/types.rb",
    "chars": 717,
    "preview": "# frozen_string_literal: true\n\nrequire 'active_support/core_ext/string/inflections'\nrequire 'rails_admin/config/fields'\n"
  },
  {
    "path": "lib/rails_admin/config/fields.rb",
    "chars": 4076,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Fields\n      # Default field factory loads f"
  },
  {
    "path": "lib/rails_admin/config/groupable.rb",
    "chars": 617,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/group'\n\nmodule RailsAdmin\n  module Config\n    module G"
  },
  {
    "path": "lib/rails_admin/config/has_description.rb",
    "chars": 293,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    # Provides accessor and autoregistering of model's "
  },
  {
    "path": "lib/rails_admin/config/has_fields.rb",
    "chars": 5454,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    # Provides accessors and autoregistering of model's"
  },
  {
    "path": "lib/rails_admin/config/has_groups.rb",
    "chars": 891,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/fields/group'\n\nmodule RailsAdmin\n  module Config\n    module H"
  },
  {
    "path": "lib/rails_admin/config/hideable.rb",
    "chars": 635,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    # Defines a visibility configuration\n    module Hid"
  },
  {
    "path": "lib/rails_admin/config/inspectable.rb",
    "chars": 1078,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Inspectable\n      def inspect\n        set_na"
  },
  {
    "path": "lib/rails_admin/config/lazy_model.rb",
    "chars": 2601,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/model'\n\nmodule RailsAdmin\n  module Config\n    class LazyModel"
  },
  {
    "path": "lib/rails_admin/config/model.rb",
    "chars": 4112,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config'\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/"
  },
  {
    "path": "lib/rails_admin/config/proxyable/proxy.rb",
    "chars": 965,
    "preview": "# frozen_string_literal: true\n\nmodule RailsAdmin\n  module Config\n    module Proxyable\n      class Proxy < BasicObject\n  "
  },
  {
    "path": "lib/rails_admin/config/proxyable.rb",
    "chars": 671,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable/proxy'\nmodule RailsAdmin\n  module Config\n    module"
  },
  {
    "path": "lib/rails_admin/config/sections/base.rb",
    "chars": 1001,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/proxyable'\nrequire 'rails_admin/config/configurable'\nrequire "
  },
  {
    "path": "lib/rails_admin/config/sections/create.rb",
    "chars": 269,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/edit.rb",
    "chars": 273,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/export.rb",
    "chars": 258,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/list.rb",
    "chars": 1633,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/modal.rb",
    "chars": 212,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/nested.rb",
    "chars": 213,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/edit'\n\nmodule RailsAdmin\n  module Config\n    module "
  },
  {
    "path": "lib/rails_admin/config/sections/show.rb",
    "chars": 211,
    "preview": "# frozen_string_literal: true\n\nrequire 'rails_admin/config/sections/base'\n\nmodule RailsAdmin\n  module Config\n    module "
  }
]

// ... and 522 more files (download for full content)

About this extraction

This page contains the full source code of the railsadminteam/rails_admin GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 722 files (2.5 MB), approximately 703.6k tokens, and a symbol index with 1859 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!