зеркало из
https://github.com/rs-pro/activeadmin-quill_editor.git
synced 2026-08-28 15:36:17 +03:00
- Update ActiveAdmin from beta16 to beta20 - Drop support for Rails 6.1, 7.0, 7.1 and ActiveAdmin 2.x/3.x - Minimum requirements now: Rails 7.2+, Ruby 3.2+, ActiveAdmin 4.x - Reduce CI jobs from 22+ to 6 (2 gemfiles × 3 Ruby versions) - Clean up obsolete documentation files Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.5 KiB
5.5 KiB
Migration Guide: ActiveAdmin Tom Select (Tailwind v4)
This guide helps you migrate from activeadmin-searchable_select to activeadmin-tom_select on ActiveAdmin 4.0.0.beta20 with Tailwind CSS v4.
Quick Start (New Installation)
# Gem
bundle add activeadmin-tom_select
# NPM
npm install activeadmin-tom_select tom-select
Why Update?
- Tom Select replaces Select2 (no jQuery)
- ActiveAdmin 4.0.0.beta20 compatible (requires Rails 7.2+)
- Tailwind CSS v4 styles included
- Auto-init helpers for searchable selects
- Ruby 3.2+ and 4.0 compatible
1. Update Gemfile
# Remove legacy gem(s)
# gem "activeadmin-searchable_select"
# gem "rs-activeadmin-searchable_select"
gem "activeadmin-tom_select", "~> 4.1.0"
2. Update JavaScript Dependencies
npm uninstall @codevise/activeadmin-searchable_select activeadmin-searchable_select jquery select2
npm install activeadmin-tom_select tom-select
3. JavaScript Imports
import "@activeadmin/activeadmin";
import TomSelect from "tom-select";
window.TomSelect = TomSelect;
import { setupAutoInit } from "activeadmin-tom_select";
setupAutoInit();
4. Tailwind CSS Build (ActiveAdmin 4.0.0.beta20)
4.1 Tailwind Input
/* app/assets/stylesheets/active_admin.tailwind.css */
@import "tailwindcss";
@config "../../../tailwind-active_admin.config.mjs";
@import "activeadmin-tom_select/css";
4.2 Tailwind Config (ESM)
// tailwind-active_admin.config.mjs
import { execSync } from "child_process";
import activeAdminPlugin from "@activeadmin/activeadmin/plugin";
const activeAdminPath = execSync("bundle show activeadmin", {
encoding: "utf-8"
}).trim();
export default {
content: [
`${activeAdminPath}/vendor/javascript/flowbite.js`,
`${activeAdminPath}/plugin.js`,
`${activeAdminPath}/app/views/**/*.{arb,erb,html,rb}`,
"./app/admin/**/*.{arb,erb,html,rb}",
"./app/views/active_admin/**/*.{arb,erb,html,rb}",
"./app/views/admin/**/*.{arb,erb,html,rb}",
"./app/views/layouts/active_admin*.{erb,html}",
"./app/javascript/**/*.js"
],
darkMode: "selector",
plugins: [activeAdminPlugin]
};
4.3 Tailwind Build Tasks
# lib/tasks/active_admin.rake
namespace :active_admin do
desc "Build Active Admin Tailwind stylesheets"
task build: :environment do
command = [
Rails.root.join("bin/tailwindcss").to_s,
"-i", Rails.root.join("app/assets/stylesheets/active_admin.tailwind.css").to_s,
"-o", Rails.root.join("app/assets/builds/active_admin.css").to_s,
"-m"
]
system(*command, exception: true)
end
desc "Watch Active Admin Tailwind stylesheets"
task watch: :environment do
command = [
Rails.root.join("bin/tailwindcss").to_s,
"--watch",
"-i", Rails.root.join("app/assets/stylesheets/active_admin.tailwind.css").to_s,
"-o", Rails.root.join("app/assets/builds/active_admin.css").to_s,
"-m"
]
system(*command, exception: true)
end
end
Rake::Task["assets:precompile"].enhance(["active_admin:build"])
Rake::Task["spec:prepare"].enhance(["active_admin:build"]) if Rake::Task.task_defined?("spec:prepare")
Rake::Task["db:test:prepare"].enhance(["active_admin:build"]) if Rake::Task.task_defined?("db:test:prepare")
4.4 package.json scripts
{
"scripts": {
"build:js": "esbuild app/javascript/*.* --bundle --sourcemap --format=esm --outdir=app/assets/builds --public-path=/assets",
"build:css": "bundle exec rake active_admin:build",
"build": "npm run build:js && npm run build:css",
"watch:css": "bundle exec rake active_admin:watch"
}
}
4.5 Tailwind CLI binstub
bundle binstubs tailwindcss-ruby --force
5. Importmap (Optional)
# config/importmap.rb
pin "tom-select", to: "https://ga.jspm.io/npm:tom-select@2.4.3/dist/js/tom-select.complete.min.js"
pin "activeadmin-tom_select", to: "activeadmin-tom_select.js"
6. ActiveAdmin Usage
ActiveAdmin.register Product do
form do |f|
f.inputs do
f.input :category, as: :searchable_select
f.input :tags, as: :searchable_select, ajax: true, multiple: true
end
f.actions
end
filter :category, as: :searchable_select
filter :tags, as: :searchable_select, ajax: true, multiple: true
end
Troubleshooting
Styles missing
- Confirm
app/assets/builds/active_admin.cssexists. - Verify
active_admin.tailwind.cssimportsactiveadmin-tom_select/css.
Tom Select not initializing
- Ensure
window.TomSelectis set. - Ensure
setupAutoInit()runs.
ActiveAdmin 4.0.0.beta20 Notes (from upgrade guide)
Version Requirements:
- Rails 7.2+ (Rails 7.0 and 7.1 are no longer supported)
- Ruby 3.2+ (Ruby 3.0 and 3.1 are no longer supported)
Breaking Changes from earlier v4 betas:
_site_header.html.erbcontainer class changed fromstickytofixed.active_admin.html.erbadds thept-16utility class.- Tailwind v4 requires
@import "tailwindcss"+@config. - jQuery and jQuery UI removed;
columnsandtabscomponents removed. - Replace
default_main_contentwithrender "show_default". - Replace
as: :datepickerwithas: :date_picker. - Replace
active_admin_commentswithactive_admin_comments_for(resource). - Replace
attributes_tablewithattributes_table_for(resource)in sidebars.
New in beta20:
- Parent menu item linking support
- Improved comments pagination styling
- Better vertical spacing for has-many forms
- Pointer cursor restored on eligible buttons
- Various accessibility improvements