activeadmin-tom_select 4.1.2 → 4.2.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Appraisals +2 -2
- data/CHANGELOG.md +12 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +146 -102
- data/README.md +1 -1
- data/activeadmin-tom_select.gemspec +1 -0
- data/docs/activeadmin-4-asset-setup.md +171 -0
- data/docs/activeadmin-tailwind-4.md +125 -0
- data/docs/guide-update-your-app.md +89 -356
- data/docs/setup-activeadmin-app.md +69 -492
- data/docs/setup-activeadmin-gem.md +83 -449
- data/gemfiles/rails_7.x_active_admin_4.x.gemfile +2 -1
- data/gemfiles/rails_7.x_active_admin_4.x.gemfile.lock +158 -116
- data/gemfiles/rails_8.x_active_admin_4.x.gemfile +2 -1
- data/gemfiles/rails_8.x_active_admin_4.x.gemfile.lock +145 -101
- data/lib/activeadmin/tom_select/option_collection.rb +4 -6
- data/lib/activeadmin/tom_select/select_input_extension.rb +15 -7
- data/lib/activeadmin/tom_select/version.rb +1 -1
- data/npm-package/package.json +1 -1
- data/spec/features/end_to_end_spec.rb +2 -2
- data/spec/features/input_errors_spec.rb +1 -3
- data/spec/features/options_dsl_spec.rb +6 -6
- data/spec/internal/Gemfile +1 -0
- data/spec/internal/Gemfile.lock +152 -107
- data/spec/internal/app/assets/stylesheets/active_admin.tailwind.css +8 -5
- data/spec/internal/bin/tailwindcss +27 -0
- data/spec/internal/lib/tasks/active_admin.rake +9 -4
- data/spec/internal/package-lock.json +15 -1371
- data/spec/internal/package.json +1 -2
- data/{docs/tailwind-4/tailwind-active_admin.config.js → spec/internal/tailwind-active_admin.config.mjs} +9 -4
- data/spec/internal/yarn.lock +128 -728
- metadata +21 -23
- data/docs/activeadmin-4-detailed-reference.md +0 -932
- data/docs/activeadmin-4-gem-migration-guide.md +0 -313
- data/docs/combustion.md +0 -213
- data/docs/fail.png +0 -0
- data/docs/normal.png +0 -0
- data/docs/propshaft-readme.md +0 -320
- data/docs/propshaft-upgrade.md +0 -484
- data/docs/tailwind/blog-page.md +0 -341
- data/docs/tailwind/upgrade-guide-enhanced.md +0 -438
- data/docs/tailwind/upgrade-guide.md +0 -416
- data/docs/tailwind-4/active_admin.rake +0 -38
- data/docs/tailwind-4/active_admin.tailwind.css +0 -415
- data/docs/test-app-change.md +0 -154
- data/docs/test-environment-fixes.md +0 -58
- data/docs/update-tom-select.md +0 -348
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# ActiveAdmin 4 Asset Setup (Tailwind CSS v4)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
This guide documents the current, working setup for ActiveAdmin 4.0.0.beta19 with Tailwind CSS v4 and Tom Select (no jQuery).
|
|
5
|
+
|
|
6
|
+
## Requirements
|
|
7
|
+
- ActiveAdmin 4.0.0.beta19
|
|
8
|
+
- Tailwind CSS v4 via `tailwindcss-rails` (ships `bin/tailwindcss`)
|
|
9
|
+
- ESBuild (or other JS bundler) for ActiveAdmin JS + Tom Select
|
|
10
|
+
|
|
11
|
+
## 1. Gemfile
|
|
12
|
+
|
|
13
|
+
```ruby
|
|
14
|
+
# ActiveAdmin 4 beta
|
|
15
|
+
gem "activeadmin", "4.0.0.beta19"
|
|
16
|
+
|
|
17
|
+
gem "activeadmin-tom_select"
|
|
18
|
+
|
|
19
|
+
# Tailwind CSS v4 (bundled CLI)
|
|
20
|
+
gem "tailwindcss-rails", "~> 4.4.0"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## 2. package.json
|
|
24
|
+
|
|
25
|
+
```json
|
|
26
|
+
{
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@activeadmin/activeadmin": "^4.0.0-beta19",
|
|
29
|
+
"tom-select": "^2.4.3",
|
|
30
|
+
"activeadmin-tom_select": "^4.1.0"
|
|
31
|
+
},
|
|
32
|
+
"devDependencies": {
|
|
33
|
+
"esbuild": "^0.27.2"
|
|
34
|
+
},
|
|
35
|
+
"scripts": {
|
|
36
|
+
"build:js": "node esbuild-active_admin.config.js",
|
|
37
|
+
"build:css": "bundle exec rake active_admin:build",
|
|
38
|
+
"build": "npm run build:js && npm run build:css",
|
|
39
|
+
"watch:js": "node esbuild-active_admin.config.js --watch",
|
|
40
|
+
"watch:css": "bundle exec rake active_admin:watch",
|
|
41
|
+
"dev": "npm run watch:js & npm run watch:css"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 3. JavaScript Entry (app/javascript/active_admin.js)
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import "@activeadmin/activeadmin";
|
|
50
|
+
|
|
51
|
+
import TomSelect from "tom-select";
|
|
52
|
+
window.TomSelect = TomSelect;
|
|
53
|
+
|
|
54
|
+
import { setupAutoInit, initSearchableSelects } from "activeadmin-tom_select";
|
|
55
|
+
window.initSearchableSelects = initSearchableSelects;
|
|
56
|
+
setupAutoInit();
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 4. Tailwind Input (app/assets/stylesheets/active_admin.tailwind.css)
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
@import "tailwindcss";
|
|
63
|
+
@config "../../../tailwind-active_admin.config.mjs";
|
|
64
|
+
|
|
65
|
+
@import "activeadmin-tom_select/css";
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## 5. Tailwind Config (tailwind-active_admin.config.mjs)
|
|
69
|
+
|
|
70
|
+
```javascript
|
|
71
|
+
import { execSync } from "child_process";
|
|
72
|
+
import activeAdminPlugin from "@activeadmin/activeadmin/plugin";
|
|
73
|
+
|
|
74
|
+
const activeAdminPath = execSync("bundle show activeadmin", {
|
|
75
|
+
encoding: "utf-8"
|
|
76
|
+
}).trim();
|
|
77
|
+
|
|
78
|
+
export default {
|
|
79
|
+
content: [
|
|
80
|
+
`${activeAdminPath}/vendor/javascript/flowbite.js`,
|
|
81
|
+
`${activeAdminPath}/plugin.js`,
|
|
82
|
+
`${activeAdminPath}/app/views/**/*.{arb,erb,html,rb}`,
|
|
83
|
+
"./app/admin/**/*.{arb,erb,html,rb}",
|
|
84
|
+
"./app/views/active_admin/**/*.{arb,erb,html,rb}",
|
|
85
|
+
"./app/views/admin/**/*.{arb,erb,html,rb}",
|
|
86
|
+
"./app/views/layouts/active_admin*.{erb,html}",
|
|
87
|
+
"./app/javascript/**/*.js"
|
|
88
|
+
],
|
|
89
|
+
darkMode: "selector",
|
|
90
|
+
plugins: [activeAdminPlugin]
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 6. Tailwind Build Tasks (lib/tasks/active_admin.rake)
|
|
95
|
+
|
|
96
|
+
```ruby
|
|
97
|
+
namespace :active_admin do
|
|
98
|
+
desc "Build Active Admin Tailwind stylesheets"
|
|
99
|
+
task build: :environment do
|
|
100
|
+
command = [
|
|
101
|
+
Rails.root.join("bin/tailwindcss").to_s,
|
|
102
|
+
"-i", Rails.root.join("app/assets/stylesheets/active_admin.tailwind.css").to_s,
|
|
103
|
+
"-o", Rails.root.join("app/assets/builds/active_admin.css").to_s,
|
|
104
|
+
"-m"
|
|
105
|
+
]
|
|
106
|
+
|
|
107
|
+
system(*command, exception: true)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
desc "Watch Active Admin Tailwind stylesheets"
|
|
111
|
+
task watch: :environment do
|
|
112
|
+
command = [
|
|
113
|
+
Rails.root.join("bin/tailwindcss").to_s,
|
|
114
|
+
"--watch",
|
|
115
|
+
"-i", Rails.root.join("app/assets/stylesheets/active_admin.tailwind.css").to_s,
|
|
116
|
+
"-o", Rails.root.join("app/assets/builds/active_admin.css").to_s,
|
|
117
|
+
"-m"
|
|
118
|
+
]
|
|
119
|
+
|
|
120
|
+
system(*command, exception: true)
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
Rake::Task["assets:precompile"].enhance(["active_admin:build"])
|
|
125
|
+
Rake::Task["test:prepare"].enhance(["active_admin:build"]) if Rake::Task.task_defined?("test:prepare")
|
|
126
|
+
Rake::Task["spec:prepare"].enhance(["active_admin:build"]) if Rake::Task.task_defined?("spec:prepare")
|
|
127
|
+
Rake::Task["db:test:prepare"].enhance(["active_admin:build"]) if Rake::Task.task_defined?("db:test:prepare")
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## 7. Tailwind CLI Binstub
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
bundle binstubs tailwindcss-ruby --force
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## 8. Upgrade Notes (ActiveAdmin 4.0.0.beta19)
|
|
137
|
+
|
|
138
|
+
From ActiveAdmin's upgrade guide:
|
|
139
|
+
- `_site_header.html.erb` container class changed from `sticky` to `fixed`.
|
|
140
|
+
- `active_admin.html.erb` adds the `pt-16` utility class.
|
|
141
|
+
- Tailwind v4 uses `@import "tailwindcss"` and `@config` (no `@tailwind` directives).
|
|
142
|
+
- The Tailwind config file is ESM. Use `tailwind-active_admin.config.mjs`.
|
|
143
|
+
- jQuery/jQuery UI removed; `columns` and `tabs` components removed.
|
|
144
|
+
- Replace `default_main_content` with `render "show_default"`.
|
|
145
|
+
- Replace `as: :datepicker` with `as: :date_picker`.
|
|
146
|
+
- Replace `active_admin_comments` with `active_admin_comments_for(resource)`.
|
|
147
|
+
- Replace `attributes_table` with `attributes_table_for(resource)` in sidebars.
|
|
148
|
+
|
|
149
|
+
## Troubleshooting
|
|
150
|
+
|
|
151
|
+
### CSS not building
|
|
152
|
+
- Ensure `tailwindcss-rails` is pinned to `~> 4.4.0`.
|
|
153
|
+
- Run `bundle binstubs tailwindcss-ruby --force`.
|
|
154
|
+
- Confirm `bin/tailwindcss` exists.
|
|
155
|
+
|
|
156
|
+
### ActiveAdmin styles not loading
|
|
157
|
+
- Verify `app/assets/builds/active_admin.css` exists.
|
|
158
|
+
- Check that `active_admin.tailwind.css` imports `activeadmin-tom_select/css`.
|
|
159
|
+
|
|
160
|
+
### Tom Select not initializing
|
|
161
|
+
- Verify `window.TomSelect` in the console.
|
|
162
|
+
- Ensure `setupAutoInit()` is called.
|
|
163
|
+
|
|
164
|
+
## Migration Checklist
|
|
165
|
+
|
|
166
|
+
- [ ] Update ActiveAdmin to 4.0.0.beta19
|
|
167
|
+
- [ ] Use Tailwind v4 `@import` + `@config`
|
|
168
|
+
- [ ] Add `tailwindcss-rails` (~> 4.4.0) and binstub
|
|
169
|
+
- [ ] Create `tailwind-active_admin.config.mjs` (ESM)
|
|
170
|
+
- [ ] Update rake tasks to use `bin/tailwindcss` (no `-c`)
|
|
171
|
+
- [ ] Rebuild assets and verify UI
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# ActiveAdmin + Tailwind CSS v4 Guide
|
|
2
|
+
|
|
3
|
+
This guide consolidates the ActiveAdmin 4.0.0.beta19 upgrade notes with a working Tailwind v4 build setup. Use it as a template when updating other ActiveAdmin extension gems.
|
|
4
|
+
|
|
5
|
+
## What Changed in ActiveAdmin 4.0.0.beta19 (from UPGRADING.md)
|
|
6
|
+
|
|
7
|
+
### Template Updates
|
|
8
|
+
- `_site_header.html.erb` container class changed from `sticky` to `fixed`.
|
|
9
|
+
- `active_admin.html.erb` now includes the `pt-16` utility class.
|
|
10
|
+
|
|
11
|
+
### Tailwind v4 Updates
|
|
12
|
+
Replace the old Tailwind directives with the new v4 import and config:
|
|
13
|
+
|
|
14
|
+
```diff
|
|
15
|
+
-@tailwind base;
|
|
16
|
+
-@tailwind components;
|
|
17
|
+
-@tailwind utilities;
|
|
18
|
+
+@import "tailwindcss";
|
|
19
|
+
+
|
|
20
|
+
+@config "../../../tailwind-active_admin.config.mjs";
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Update your CSS build command:
|
|
24
|
+
|
|
25
|
+
```diff
|
|
26
|
+
-"build:css": "tailwindcss -i ./app/assets/stylesheets/active_admin.css -o ./app/assets/builds/active_admin.css --minify -c tailwind-active_admin.config.js"
|
|
27
|
+
+"build:css": "npx @tailwindcss/cli -i ./app/assets/stylesheets/active_admin.css -o ./app/assets/builds/active_admin.css --minify"
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If you use `tailwindcss-rails`, prefer the bundled `bin/tailwindcss` and the `@config` directive instead of passing `-c`.
|
|
31
|
+
|
|
32
|
+
### ESM Config Warning
|
|
33
|
+
Tailwind config now uses ESM. To avoid the warning:
|
|
34
|
+
- Rename `tailwind-active_admin.config.js` to `tailwind-active_admin.config.mjs`, or
|
|
35
|
+
- Add `"type": "module"` to `package.json`.
|
|
36
|
+
|
|
37
|
+
### Breaking Changes Summary
|
|
38
|
+
- jQuery and jQuery UI removed.
|
|
39
|
+
- `columns` component removed (use Tailwind grid).
|
|
40
|
+
- `tabs` component removed.
|
|
41
|
+
- Replace `default_main_content` with `render "show_default"`.
|
|
42
|
+
- Replace `as: :datepicker` with `as: :date_picker`.
|
|
43
|
+
- Replace `active_admin_comments` with `active_admin_comments_for(resource)`.
|
|
44
|
+
- Replace `attributes_table` with `attributes_table_for(resource)` in sidebars.
|
|
45
|
+
- Removed `IndexAsBlog`, `IndexAsBlock`, `IndexAsGrid`.
|
|
46
|
+
- Batch action form DSL replaced with partial support.
|
|
47
|
+
- Deeply nested submenus removed (only one level supported).
|
|
48
|
+
- Removed `Panel#header_action` and `index_column`.
|
|
49
|
+
|
|
50
|
+
## Recommended Build Setup (tailwindcss-rails)
|
|
51
|
+
|
|
52
|
+
### 1. Gemfile
|
|
53
|
+
|
|
54
|
+
```ruby
|
|
55
|
+
gem "activeadmin", "4.0.0.beta19"
|
|
56
|
+
gem "tailwindcss-rails", "~> 4.4.0"
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
### 2. Tailwind Input
|
|
60
|
+
|
|
61
|
+
```css
|
|
62
|
+
/* app/assets/stylesheets/active_admin.tailwind.css */
|
|
63
|
+
@import "tailwindcss";
|
|
64
|
+
@config "../../../tailwind-active_admin.config.mjs";
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 3. Tailwind Config
|
|
68
|
+
|
|
69
|
+
```javascript
|
|
70
|
+
// tailwind-active_admin.config.mjs
|
|
71
|
+
import { execSync } from "child_process";
|
|
72
|
+
import activeAdminPlugin from "@activeadmin/activeadmin/plugin";
|
|
73
|
+
|
|
74
|
+
const activeAdminPath = execSync("bundle show activeadmin", {
|
|
75
|
+
encoding: "utf-8"
|
|
76
|
+
}).trim();
|
|
77
|
+
|
|
78
|
+
export default {
|
|
79
|
+
content: [
|
|
80
|
+
`${activeAdminPath}/vendor/javascript/flowbite.js`,
|
|
81
|
+
`${activeAdminPath}/plugin.js`,
|
|
82
|
+
`${activeAdminPath}/app/views/**/*.{arb,erb,html,rb}`,
|
|
83
|
+
"./app/admin/**/*.{arb,erb,html,rb}",
|
|
84
|
+
"./app/views/active_admin/**/*.{arb,erb,html,rb}",
|
|
85
|
+
"./app/views/admin/**/*.{arb,erb,html,rb}",
|
|
86
|
+
"./app/views/layouts/active_admin*.{erb,html}",
|
|
87
|
+
"./app/javascript/**/*.js"
|
|
88
|
+
],
|
|
89
|
+
darkMode: "selector",
|
|
90
|
+
plugins: [activeAdminPlugin]
|
|
91
|
+
};
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### 4. Build Tasks
|
|
95
|
+
|
|
96
|
+
```ruby
|
|
97
|
+
# lib/tasks/active_admin.rake
|
|
98
|
+
namespace :active_admin do
|
|
99
|
+
desc "Build Active Admin Tailwind stylesheets"
|
|
100
|
+
task build: :environment do
|
|
101
|
+
command = [
|
|
102
|
+
Rails.root.join("bin/tailwindcss").to_s,
|
|
103
|
+
"-i", Rails.root.join("app/assets/stylesheets/active_admin.tailwind.css").to_s,
|
|
104
|
+
"-o", Rails.root.join("app/assets/builds/active_admin.css").to_s,
|
|
105
|
+
"-m"
|
|
106
|
+
]
|
|
107
|
+
|
|
108
|
+
system(*command, exception: true)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 5. Tailwind CLI Binstub
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
bundle binstubs tailwindcss-ruby --force
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
## Notes for Extension Gems
|
|
120
|
+
|
|
121
|
+
When updating other ActiveAdmin extension gems:
|
|
122
|
+
- Keep all JS/CSS inside the gem or npm package; do not copy large files into host apps.
|
|
123
|
+
- Add only a thin import to the host app (`import "your_gem"`).
|
|
124
|
+
- Use Tailwind v4 `@import` + `@config` and ESM config files.
|
|
125
|
+
- Avoid jQuery-based plugins or require them explicitly.
|