Commit Graph
1098 Commits
Author SHA1 Message Date
Craig AndersonandDan Harrin 669ae00934 Fix Summarizer Issue with BelongsToMany Pivot Fields (#19625)
* Allow Summarizer on BelongsToMany pivot columns

* Allow fields that begin with "pivot."

* Fix PHPStan error

* PHPStan fixes

* Add tests

* cleanup and fix edge cases

* Update Summarizer.php

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-04-03 15:26:08 +01:00
BenandDan Harrin 71ebff1c3e Fix dehydration drops shared statePath when a sibling Group is hidden (#19543)
* Failing test for Repeater: dehydration drops shared statePath when a sibling Group is hidden

* Fix Repeater: dehydration drops shared statePath when a sibling Group is hidden

* cleanup

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-04-03 15:25:42 +01:00
Alexander JensenandDan Harrin 7d3d3165d3 [4.x] Fix all-table summaries (#19592)
* Fix all-table summaries

* Avoid table wrapper if no page or all table summary

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-04-03 14:19:41 +01:00
Daniel Haaker c9b6ecd0fb fix: Preserve hint tooltip on single-arg hintIcon (#19626) 2026-04-03 14:11:23 +01:00
RenHai WenandDan Harrin c80dbf4f98 Fix dashboard route overwritten by home redirect when using tenant domain binding field (#19598)
* Fix dashboard route overwritten by home redirect when using tenant domain binding field

* Update web.php

* Update web.php

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-04-02 15:13:48 +01:00
Chris JonesandDan Harrin 7e4b8a5b0e Fix dashboard route overwritten by home redirect when using tenant slug attribute (#19584)
* Fix dashboard route overwritten by home redirect when using tenant slug attribute

`Route::getLastGroupPrefix()` returns the raw group prefix including
binding syntax (e.g. `admin/{tenant:slug}`), but Laravel's
`RouteCollection` indexes routes by the normalized URI without binding
syntax (e.g. `admin/{tenant}`). The `isset()` check on line 182 fails
due to this key mismatch when a tenant slug attribute is configured,
causing the home redirect to be created at `/` and overwrite the
Dashboard route.

The fix strips binding syntax from the root URI before looking it up
in the route collection.

Fixes filamentphp/filament#19582

* update snapshots

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-03-30 10:12:39 +01:00
RenHai WenandDan Harrin 15c6354ac8 Fix dashboard route silently dropped on domain panels (#19562)
* fix: prevent registering home route when a page owns the root path

* Make check less dependent on page `getRoutePath()`

* Update HasRoutes.php

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-03-29 10:07:39 +01:00
Gideon AppohandDan Harrin 3685caa7a0 Fix FilamentTimezone not working as expected (#19568)
* Fix FilamentTimezone not working as expected

* Update and rename tests/src/Support/FilamentTimezoneTest.php to tests/src/Support/Facades/FilamentTimezoneTest.php

Signed-off-by: Dan Harrin <git@danharrin.com>

---------

Signed-off-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-03-27 22:58:11 +00:00
Dan Harrin b7e6cf10a9 chore: Prevent app authentication code reuse in same time window (#19553)
* chore: Prevent TOTP reuse in same time window

* Update AppAuthentication.php
2026-03-23 13:35:17 +00:00
Dan Harrin b339564975 fix: Rich editor glitching when list items without child block nodes are clicked (#19534)
* fix: Rich editor glitching when list items without child block nodes are clicked

* Update RichEditorStateCast.php
2026-03-19 13:13:21 +00:00
Dan Harrin 20342aa700 Update RichEditorTest.php 2026-03-19 12:23:04 +00:00
Dan Harrin 2a67f4c6a4 feature: Laravel 13 support (#19514)
* feature: Laravel 13 support

* Swap VerifyCsrfToken out for PreventRequestForgery

* Replace capture directive

* Update TestCase.php

* Remove EloquentSerialize package
2026-03-17 19:37:33 +00:00
Dan Harrin 8916fe5c0d feature: Global search resource opt-in (#19513) 2026-03-17 17:22:29 +00:00
RenHai Wen d051c159d5 fix: pass item argument when calling query builder actions (#19493)
* fix: pass item argument when calling query builder actions

* fix: add browser test for query builder rule deletion

* fix: add browser test for query builder rule deletion

* fix: run filament:assets before browser test for query builder rule deletion
2026-03-13 11:42:41 +00:00
Dan Harrin 44205a1d2b fix: Strip characters for numeric input (#19454) 2026-03-08 20:12:39 +00:00
Dan Harrin f91c807393 fix: Cached configurable resources/pages (#19449) 2026-03-08 20:09:08 +00:00
RenHai Wen d30efb2fb3 fix: Escape URL in generate_href_html() output (#19428) 2026-03-05 16:27:40 +00:00
Dan Harrin 0fd67ee602 fix: Login with username (instead of email) (#19387) 2026-03-02 14:49:53 +01:00
Dan Harrin e3aef3418b Update RichEditorTest.php 2026-02-28 23:14:51 +01:00
0d12e3f5ab feat: add controls slot to callout component (#19263)
* Add support for callout control actions.

* Update documentation

* chore: fix code style

* cleanup

* screenshots

* better example

---------

Co-authored-by: gehrisandro <gehrisandro@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-28 23:13:41 +01:00
3a3db66ba3 feat: ability for RichEditor plugins to provide enabled/disabled toolbar buttons (#19260)
* WIP

* chore: fix code style

* Fix tests

* fix and clean up

---------

Co-authored-by: ralphjsmit <ralphjsmit@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-28 22:12:31 +00:00
e59be12127 Add deferred badge loading for tabs (#19336)
* Add deferred badge loading for tabs

Tab badges that rely on expensive queries (e.g. COUNT on large tables)
can now be loaded asynchronously after the initial page render using
`deferBadge()`. A loading indicator is shown in place of each deferred
badge until the values are fetched via a single renderless Livewire call.

* chore: fix code style

* chore: fix code style

* Revert "chore: fix code style"

This reverts commit e1fc507b88.

* fix and clean up

* Update Tabs.php

* chore: fix code style

* bugs

* docs

* Update tabs.blade.php

---------

Co-authored-by: oddvalue <oddvalue@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: danharrin <danharrin@users.noreply.github.com>
2026-02-28 23:09:49 +01:00
Dan Harrin 788ce251e0 feature: Additional rate limits by user ID / email (#19327)
* fix: Additional rate limits by user ID / email

* Hash emails

* prevent account lockouts
2026-02-28 19:14:47 +01:00
Dan Harrin 57c346a237 feature: Configurable resources (#19225)
* feature: Configurable resources/pages

* phpstan

* Update ResourceConfiguration.php

* Update Resource.php

* Update HasNavigation.php

* Update HasComponents.php

* cleanup

* generics

* phpstan

* Update HasComponents.php

* better exceptions

* docs
2026-02-28 19:12:39 +01:00
3d3833d3b1 feat: ability for RichEditor plugins to provide file attachment provider (#19187)
* WIP

* Update composer.lock

* WIP

* chore: fix code style

* fix perf and add better test

---------

Co-authored-by: ralphjsmit <ralphjsmit@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-28 19:11:50 +01:00
Ibrahim IsmailandDan Harrin faaa5cab16 Fix: Use fill() instead of rawState() when creating another inside CreateRecord (#19343)
* Refactor form state handling to use `fill` instead of `rawState`.

* fix

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-27 13:42:06 +00:00
Guilherme SaadeandDan Harrin a8a42ffb0c fix: Pass linkProtocols to PHP-side Tiptap Link mark in RichContentRenderer (#19337)
* fix: Pass `linkProtocols` to PHP-side Tiptap `Link` mark in `RichContentRenderer`

Standard protocols (`http`, `https`, `mailto`, `tel`, etc.) work by
default because they're hardcoded in tiptap-php's `Link` mark
`allowedProtocols`. However, custom protocols configured via
`->linkProtocols()` on the `RichEditor` (e.g., app deeplinks like
`myapp://`) only reached the JS-side Tiptap editor — tiptap-php was
never informed. This caused `RichEditorStateCast` to silently strip
links with custom protocols when parsing HTML from the database into
Tiptap JSON.

This fix passes the `RichEditor`'s `linkProtocols` through
`RichContentRenderer` to tiptap-php's `Link` mark as
`allowedProtocols`.

* fixes

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-27 12:50:46 +00:00
Dan Harrin 5c4462f5ba fix: Autofocus in tabs (#19306) 2026-02-19 22:38:05 +00:00
Dan Harrin 4415250dd2 fix: Validation hooks mutate value before dehydration (#19300)
* fix: Validation hooks mutate value before dehydration

* Update HasState.php
2026-02-19 11:23:16 +00:00
Martin Rohrlack 249404308d fix: add null check (#19292)
* Add null check

* update tests
2026-02-19 10:30:26 +00:00
Pjotr van der Horstandpjotrvdh 4cef47099a fix: drop down cannot be expanded with the keyboard (#19275)
* chore: fix code style

* fix: drop down cannot be expanded with the keyboard

---------

Co-authored-by: pjotrvdh <pjotrvdh@users.noreply.github.com>
2026-02-19 10:00:36 +00:00
Alexander JensenandDan Harrin a6d0236e21 [4.x] Add array record support for table grouping (#19253)
* Support array groups

* Support array groups in bulk actions

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-12 18:37:15 +00:00
Dan MasonandDan Harrin 58e92c2932 [4.x] Arguments resolution issue in testing (#19193)
* Add failing test replicating arguments resolution issue

* fix

* cleanup

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-05 09:15:08 +00:00
WEN RENHAIandDan Harrin b0de8ef154 fix: actionJs serialization in notification actions (#19199)
* fix: actionJs serialization in notification actions

* test: update notification snapshots for `alpineClickHandler`

* cleanup

* fix snapshots

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-04 15:36:41 +00:00
Dan Harrin d412a316f3 fix: File nested state path validation (#19201) 2026-02-04 12:27:23 +00:00
Dan Harrin 17598418c0 fix: Column testing helpers with aggregation (#19192) 2026-02-03 22:25:13 +00:00
Dan Harrin 15866b910b fix: Missing schema visibility testing methods (#19191)
* fix: Missing schema visibility testing methods

* Update 04-testing-schemas.md
2026-02-03 22:01:13 +00:00
M. Muqiit FaturrahmanandDan Harrin 64110555a8 [4.x] Add Deferred Filters Support for Chart Widget (#19082)
* feat(chart-widget): add support for deferred filters

- Implemented deferred filter updates to improve user experience by allowing users to apply multiple filters before updating the chart.
- Added "Apply" and "Reset" actions for deferred filters with customizable labels.
- Enhanced the chart widget's CSS for better filter layout and styling.
- Updated the chart widget's Blade view to accommodate new filter actions and structure.
- Introduced tests for deferred filters functionality, ensuring correct behavior for applying and resetting filters.

* refactor: resolved phpstan error & optimize trait mounting

* Fix instantiation of ComponentAttributeBag to support PHP =< 8.4

Signed-off-by: M. Muqiit Faturrahman <24507383+mmuqiitf@users.noreply.github.com>

* feat(chart-widget): add method to count active filters and update trigger action

* formatting

* cleanup

* Update 03-charts.md

* fix

* Update chart-widget.blade.php

* translations

* css

* css

* cs

* Update HasFiltersSchema.php

* styling

* css

* cs

* Update ChartWidgetTest.php

---------

Signed-off-by: M. Muqiit Faturrahman <24507383+mmuqiitf@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-03 21:29:21 +00:00
Dan Harrin 65f418f59f feature: Callout component (#19189)
* feature: Callouts

* screenshots

* more ss

* Update LayoutDemo.php
2026-02-03 20:37:00 +00:00
608bf9bb55 [4.x] Fixed ColumnTests Assertions with Custom Data Table (#19092)
* Added TestsColumns::assertTableRecordKeyExists

* Fixed: TestsColumns assertions when used with CustomData indexes

* chore: fix code style

* Update TestsColumns.php

* cleanup

---------

Co-authored-by: Patabugen <Patabugen@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-02-03 20:15:44 +00:00
Dan Harrin 23ea868d6a Backport tests to 4.x 2026-02-03 08:45:33 +00:00
Oliver Payne 1c46baadc0 fix: ColumnGroup doesn't accept HtmlString as label (#19152) (#19157) 2026-02-02 08:24:25 +00:00
Dan Harrin cceaaf976c fix: Saving relationships when disabled (#19153) 2026-01-31 09:22:29 +00:00
WEN RENHAIandDan Harrin 7c6151a46d [4.x] Fix allow tabs to exclude query when resolving records (#19101)
* fix: Allow tabs to exclude query when resolving records

* docs: Add `excludeQueryWhenResolvingRecord()` for tabs

* Update 02-listing-records.md

* Update 02-listing-records.md

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-27 11:53:10 +00:00
Dan Harrin 0b5b56a3b5 Update RepeatableEntryTest.php 2026-01-24 21:33:39 +00:00
WEN RENHAIandDan Harrin e802887c2c [4.x] Fix getConstantStatePath() resolution with nested statePath() (#19056)
* Fix getConstantStatePath() resolution with nested statePath()

* more tests

* move tests

* clean up

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-23 10:34:56 +00:00
Florian RaithandDan Harrin a35b5f4f44 [4.x] Add shouldRegisterSubNavigation to Clusters (#19051)
* Add shouldRegisterSubNavigation to Clusters

* Format code

* cleanup

* fix tests

* cs

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-23 10:01:51 +00:00
f40337df70 feat: #18651 Ability to add ActionGroup to ->extraModalFooterActions() (#18968)
* feat: Added ability to add ActionGroup to extraModalFooterActions.

* tests: Implement multiple actions within ActionGroup for extraModalFooterActions

* test: Fixed ActionGroup test coverage for extraModalFooterActions()

Can't test locally, will rely on GitHub actions.

* test: Update ActionGroup test descriptions for clarity in extraModalFooterActions

* test: Simplify ActionGroup test by removing unnecessary assertions in extraModalFooterActions

* fix: Update the mountTableAction test to account for the recordKey in assertTableActionMounted

* refactor: Rename prepareActionGroup to prepareModalGroupAction for to match prepareModalAction naming.

* chore: fix code style

* cleanup

* Update CanOpenModal.php

* Update CanOpenModal.php

---------

Co-authored-by: GeminiDev1 <GeminiDev1@users.noreply.github.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-22 21:42:02 +00:00
WEN RENHAIandDan Harrin 2821a94689 fix: resolve table record without applying filter query conditions (#19040)
* fix: resolve table record without applying filter query conditions

* test: ensure action can access record after filter exclusion in BelongsToMany relation manager

* exclude when resolving record

* cs

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-22 16:00:27 +00:00
Sandro GehriandDan Harrin 655fc9aaf9 Fallback to existing mention label if provider does not return a label (#19000)
* Fallback to existing mention label if provider does not return a label

* Update RichEditorStateCast.php

---------

Co-authored-by: Dan Harrin <git@danharrin.com>
2026-01-21 13:33:36 +00:00