* fix broken Cropper.js documentation link
it seems the link changed with the Cropper.js update to v2 and they introduced a new website
Signed-off-by: Niklas Wildenburg <niklascanisius@me.com>
* Update FileUpload.php
---------
Signed-off-by: Niklas Wildenburg <niklascanisius@me.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
* feat: expose TipTap/ProseMirror globals for custom extensions
Custom extensions loaded via RichContentPlugin::getTipTapJsExtensions()
are fetched at runtime via dynamic import(). Each extension bundle must
currently include its own copy of TipTap/ProseMirror, leading to:
- Duplicate ProseMirror instances on the page
- instanceof checks failing across bundles (e.g. DecorationSet)
- ~150-200 KB of redundant JS per extension
This adds window.Filament.TipTap with the core ProseMirror modules
(@tiptap/core, @tiptap/pm/state, @tiptap/pm/view, @tiptap/pm/model)
already bundled in rich-editor.js. Custom extension builds can mark
@tiptap/* as external and resolve from this global at runtime,
sharing the same ProseMirror instance as the host editor.
Non-breaking: existing extensions that bundle their own TipTap
continue to work unchanged.
* Discard changes to packages/forms/dist/components/rich-editor.js
* chore: fix code style
* clean up & docs
---------
Co-authored-by: leek <leek@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
* Add openableUrl support for file uploads
Include server-provided openable URLs in uploaded file metadata and use them for the file open action. JS: add uploadedFile.metadata to the file options and prefer metadata.openableUrl (falling back to file.source) when generating the open link. PHP: introduce a getOpenableUrlUsing closure property and setter, and populate metadata.openableUrl for each stored file by evaluating the callback. This enables customizable/signed URLs or alternate domains for opening uploaded files.
* chore: fix code style
* Add downloadable URL support for file uploads
Support custom downloadable URLs for uploaded files. Backend: add a getDownloadableUrlUsing callback and property on BaseFileUpload, populate metadata.downloadableUrl when isDownloadable() and the callback is set, and ensure openable URL generation checks isOpenable(). Frontend: prefer metadata.downloadableUrl for the download anchor href (fallback to file.source behavior removed). This enables serving custom download links separate from the file source.
* Format conditionals in BaseFileUpload
Remove an extra blank line and standardize conditional formatting in BaseFileUpload: add consistent spacing and braces for the openable/downloadable URL checks and tidy up the getDownloadableUrlUsing method. Purely stylistic changes with no functional impact.
* run composer cs
* clean up
---------
Co-authored-by: Abdulmajeed-Jamaan <Abdulmajeed-Jamaan@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
* screenshots
* fix cut off sidebar
* Screenshots
* Screenshots
* retake
* fix loading data issue
* retake
* screenshots
* Update custom-toolbar.jpg
* retake
* ss
* retake
* ss
* ss
* ss
* ss
* ss
* ss
* ss
* ss
* Update dashboard.jpg
* ss
* Update openable.jpg
* ss
* ss
* ss
* Update database.sqlite
* Update database.sqlite
* ss
* ss
* ss
* ss
* ss
* ss
* clean up
* cs
* feat(forms): Add afterCreateUsing callback to Repeater for relationship items
Adds a new callback that is executed after a new relationship record is created and saved. This allows performing operations that require the record's ID, such as attaching pivot table data or creating related records.
The callback receives the original form data and the newly created model instance
* Update docs
* clean up
---------
Co-authored-by: Dan Harrin <git@danharrin.com>
* fix: new image dimensions in ImageExtension
* Update ImageExtension.php
fix: Type declaration missing
* Update theme.css
* clean up
* make it configurable
* Update extension-image.js
---------
Co-authored-by: Dan Harrin <git@danharrin.com>
* feature: `saved()` control for schema components
* Update 04-building-a-standalone-plugin.md
* fix being able to prevent dehydration with saved(false) on field which only has a relationship sometimes
* Update 12-repeater.md
* test case names
* Fix: Select with searchable and preloaded option empty state #18529https://github.com/filamentphp/filament/issues/18529
comments
* Introduce isPreloaded in select fields (both forms and tables package).
Make use of isPreloaded to decide whether the showNoResultsMessage should be rendered immediately when the dropdown is opened.
* suggestions
---------
Co-authored-by: Χρήστος Γεωργούλης <chrisgeorgoulis@192.168.2.4>
Co-authored-by: Dan Harrin <git@danharrin.com>
* docs: Fixed documentation for $get() in repeaters
Clarified usage of $get() with examples for accessing client_id in repeater items.
Signed-off-by: Daniel Speichert <DSpeichert@users.noreply.github.com>
* Fix formatting in repeater documentation
---------
Signed-off-by: Daniel Speichert <DSpeichert@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>