darvis/livewire-flux-editor-filemanager
A Livewire Flux editor file manager package for Laravel. Browse, upload, and manage files through a clean interface, and integrate file selection into Flux-powered editors. A simple way to add media handling to Livewire applications.
class, style, data-align), adds image resize/align, an HTML-source modal, drop/paste handling, and table toolbar wiring. If the roadmap says "CMS-grade authoring in Laravel," this is a credible 1–2 week alternative to a quarter of custom glue work — assuming the stack match is already in place.?type=Images, ?type=Files), Laravel storage disks, upload limits, and whatever authorization Filemanager already enforces. Adopting the package therefore implies adopting Filemanager's folder model, permission model, and retention/cleanup policy. That is a platform decision with its own review — not merely an editor feature ticket.full for CMS and marketing pages with images, file links, tables, code blocks, horizontal rules, and HTML-source editing. Every capability shipped is also a capability authors can misuse — HTML source editing plus direct style/class injection on images and links makes the sanitizer and the content style guide part of the product surface.getHTML() → setContent(), and tags without a registered extension are dropped (the modal names them in advance). Tables now survive because Flux's table extensions are enabled. Any ingestion path — API payloads, imports, legacy CMS migrations, email-to-content — must be tested against this rule. "What survives an edit-and-save" belongs in the written requirements, not in a production discovery.flux-filemanager:install publishes config/assets and patches the app.js setup block; flux-filemanager:check reports missing wiring; a checklist page mirrors the same signal in the admin UI. That tooling — not the feature list — is the durable reason to adopt rather than copy-pasting Flux docs, and it frames rollout as an upgrade plus a validation gate.app.js registration contract. "Do we take this package?" is inseparable from "are we willing to track Flux Pro releases?" Anyone below the floor gets a disabled table button and a console-only explanation.drag_drop.method = upload produces stored URLs appropriate for persisted content; the base64 default is fine for prototypes but bloats the database column and the HTML source. Decide once per editor instance and write it down.full for a non-English market is a checklist item, not an afterthought.Consider it when:
flux:editor in forms. The package assumes Flux's setup-block convention and the flux:editor extension-registration event; outside that stack it delivers nothing.window.SetUrl callback. There is no supported path to swap in a different media backend without custom work.Look elsewhere when:
style/class/data-* on inline elements. The image and link extensions deliberately persist those attributes; retrofitting a stricter model means fighting the package's data shape.For executives — a one-paragraph summary:
This package gives our Laravel forms a production-quality rich-text editor with media, file links, tables, and image sizing, in roughly the time it takes to wire one integration rather than build one. It is not a new platform: it sits on top of Flux Pro, which we license, and Laravel Filemanager, which owns our media storage and permissions. The cost is a dependency on a young, single-maintainer, MIT-licensed package plus a commitment to track Flux Pro releases — bounded risk, because the code is small and replaceable. Recommendation: pilot it on one internal, non-customer-facing authoring surface, gate the pilot on our existing Filemanager governance review, and revisit for the customer-facing CMS once the upgrade-tracking cadence is proven.
For engineering — what we are actually signing up for:
resources/js/app.js must import the package's JS and CSS from vendor/, register Image and Link extensions on the flux:editor event, and enable Flux's bundled table extensions. Treat that block as a versioned interface: keep the namespace import and the optional calls (createImageDropPastePlugin?.(), enableExtension?.()) so a lagging vendor/ copy degrades one feature instead of killing the whole toolbar.config/flux-filemanager.php — disk, paths, upload limits, resize_presets, drag_drop.method. That config is now part of our deployment surface.php artisan flux-filemanager:check plus the checklist page in CI and in the admin. Run it after every Flux or package upgrade; a missing extension should fail a build, not ship as a silently disabled button.check → checklist page → app.js import/registration → browser console → editor.getHTML(). That ordering resolves nearly every "the button does nothing" ticket without an investigation.hr, code-block, or table-* in app.js — Flux's toolbar handler owns those clicks and a second handler runs the command twice. Do not break the CSS chain (tiptap-table.css is imported by tiptap-image.css); skipping the image stylesheet silently loses table styling. Review the installer diff — it is a codemod against an existing setup block and can duplicate lines on a customized app.js.<p>, tables require the full preset, and cell backgrounds, column widths, cell alignment, and Word/Sheets paste fidelity are not covered. Disabled-button state is console-only today; if table authoring matters to content editors, we surface it in our own UI.<table> was stripped.How can I help you explore Laravel packages today?