> ## Documentation Index
> Fetch the complete documentation index at: https://docs.advancedtables.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Release notes for Advanced Tables v4.

## August 2026

<Update label="v4.5.0" description="August 25, 2026">
  ## What's Changed

  * Add SQL Server (2017+) support across the plugin

    Adds SQL Server 2017+ support across the entire plugin. All runtime changes are additive `sqlsrv` driver branches — MySQL, MariaDB, PostgreSQL, and SQLite take exactly the same code paths as before and generate identical SQL.
  * Bump esbuild from 0.28.1 to 0.28.2

    Bumps [esbuild](https://github.com/evanw/esbuild) from 0.28.1 to 0.28.2.
</Update>

## July 2026

<Update label="v4.4.2" description="July 30, 2026">
  ## What's Changed

  * Add definite articles before dates in French and Spanish filter indicators

    Following user feedback on the recent filter translation updates, this adds the grammatically required definite articles before date placeholders in the parameterized date-indicator strings for French and Spanish. In both languages a specific calendar date takes an article — « avant le 15 mars », « antes del 15 de marzo » — so the previous strings read slightly telegraphic.
</Update>

<Update label="v4.4.1" description="July 29, 2026">
  ## What's Changed

  * Improve parameterized translations
  * Bump @tailwindcss/cli from 4.3.2 to 4.3.3

    Bumps [@tailwindcss/cli](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-cli) from 4.3.2 to 4.3.3.
  * Bump actions/checkout from 7.0.0 to 7.0.1

    Bumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.
  * Bump actions/setup-node from 6.5.0 to 7.0.0

    Bumps [actions/setup-node](https://github.com/actions/setup-node) from 6.5.0 to 7.0.0.
</Update>

<Update label="v4.4.0" description="July 18, 2026">
  ## What's Changed

  * Fix custom builder views being bypassed on Filament 4.12+

    * `AdvancedFilterBuilder` and `MultiSortBuilder` now declare their custom views via the `protected string $view` property instead of overriding `getView()`. - The `getContainer()->getParentComponent()` chains in `AdvancedFilterBuilder` (`getAddAction()`, `getDeleteAction()`, `removeFilter()`) are replaced with a null-safe `getOrGroupBuilder()` helper that returns early when the component is not nested inside an `or_group` builder. - New regression tests in `tests/Feature/AdvancedFilterBuilderRenderingTest.php` (custom view renders instead of the default `Builder` chrome, `delete` action on the `and_group` builder, graceful `delete` on the outer `or_group` builder) and a rendering test for `MultiSortBuilder` in `tests/Feature/MultiSortTest.php`.
</Update>

<Update label="v4.3.13" description="July 16, 2026">
  ## What's Changed

  * Fix multi-sort ordering while reordering records

    * Delegate table sorting to Filament while record reordering is active, ensuring rows are ordered by the configured reorder column. - Preserve the existing Advanced Tables multi-sort state so the user's previous sort resumes after leaving reorder mode. - Add a Livewire regression test covering a single header sort, reorder mode, and restoration of the prior sort.
  * Bump esbuild from 0.25.3 to 0.28.1

    Bumps [esbuild](https://github.com/evanw/esbuild) from 0.25.3 to 0.28.1.
  * Fix filter picker overflow in slide-overs

    * Enable Floating UI `shift` and `teleport` behavior on the shared filter-builder picker. - Allow wide, multi-column filter pickers to escape narrow modal and slide-over clipping while remaining within the viewport.
  * Clean up frontend dependencies and asset validation

    * remove unused Choices.js, Autoprefixer, Prettier, PostCSS, purge, and script-runner dependencies and configuration - remove the stale, unregistered standalone CSS artifact - retain esbuild for the shipped JavaScript artifact and pin `@tailwindcss/cli` for CSS validation - add CI that verifies the JavaScript artifact and compiles the package CSS through a real Filament theme - document the asset-compilation requirement for Panel Builder and standalone Table Builder installations - remove the non-functional Dependabot auto-merge workflow
</Update>

<Update label="v4.3.12" description="July 14, 2026">
  ## What's Changed

  * Harden CI supply chain: pin actions to commit SHAs, extend Dependabot config

    * Pin all GitHub Actions in workflows to full commit SHAs with version comments - Add `npm` ecosystem to Dependabot updates - Add a 7-day `cooldown` to all Dependabot update entries
</Update>

<Update label="v4.3.11" description="July 4, 2026">
  ## What's Changed

  * Add `advanced-tables-multi-sort-trigger` CSS class to Multi-Sort trigger

    The Multi-Sort trigger button was the only Advanced Tables button without a custom `advanced-tables-*` class, making it hard to target (e.g. in a guided page tour). Add one via `extraAttributes()`, matching the pattern used by the other view actions (`advanced-tables-show-view-manager`, etc.).
  * Bump actions/checkout from 6 to 7

    Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.
</Update>

## June 2026

<Update label="v4.3.10" description="June 23, 2026">
  ## What's Changed

  * Fix standalone filter builder crashes and fallback translation config

    * Add a standalone config fallback for parameterized filter-builder translations when the plugin is not registered. - Route advanced filter indicator generation through the shared config helper instead of relying only on plugin state. - Cover standalone Table Builder behavior with feature tests for indicator rendering and config-driven translation access.
</Update>

<Update label="v4.3.9" description="June 12, 2026">
  ## What's Changed

  * Fix changelog
  * Fix brittle tests
  * Fix brittle preset view search test

    * Pin deterministic auth, matching, and non-matching user emails in PresetViewTest - Prevent defaultSearch('John') from matching Faker-generated emails unexpectedly
  * Fix `default()` Preset View being ignored when internal Default View is enabled

    On a stock install the internal Default View (injected under the `default` key) is always marked `default()` and was merged ahead of user Preset Views. Because `getDefaultPresetViewName()` returned the first view whose `isDefault()` was true, the internal Default View always won, so a Preset View explicitly marked `->default()` under another key was silently ignored on mount unless the user disabled the Default View or used the `default` key.
</Update>

## May 2026

<Update label="v4.3.8" description="May 22, 2026">
  ## What's Changed

  * Fix empty select filter queries on integer relationship columns

    Fixes is\_empty / is\_not\_empty handling for text/select-style filters so non-string columns are no longer compared to an empty string. This prevents PostgreSQL errors like invalid input syntax for type bigint when filtering relationship keys such as author.id. Also adds coverage for empty/not-empty behavior across plain text, non-string, relationship, JSON, and relationship JSON filter paths.
</Update>

<Update label="v4.3.7" description="May 20, 2026">
  ## What's Changed

  * Fix advanced filters with nested json

    Fixes Advanced Filters when used with nested json columns.
</Update>

## April 2026

<Update label="v4.3.6" description="April 29, 2026">
  ## What's Changed

  * Refine type hints for preset views and tenancy configuration

    This PR improves type safety and clarity by refining return type hints across the preset views and tenancy concerns, making the codebase more type-strict and better aligned with actual usage patterns.
  * Add opt-in parameterised filter builder indicator translations

    The legacy filter builder indicator strings are assembled by PHP-side concatenation (e.g. "\{column} \{operator} \{value} \{unit}"), which forces translators into awkward word orderings — notably French, where "il y a 5 ans" requires :value to sit inside the phrase, not after it.
  * Prevent badge truncation in Favorites Bar Tabs theme on mobile

    The badge inside a tab (e.g. count "4" in the "Today" view) could be visually clipped on narrow viewports because the label has `whitespace-nowrap` and the surrounding wrapper has `overflow-hidden`, so the badge — the only flex item without shrink protection — would lose width and get cut off by the wrapper. Add `shrink-0` to both the Filament badge component and the Github theme inline badge `<div>`, matching the pattern already used in `view-manager/label.blade.php`.
  * Bump dependabot/fetch-metadata from 3.0.0 to 3.1.0

    Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 3.0.0 to 3.1.0.
</Update>

<Update label="v4.3.5" description="April 15, 2026">
  ## What's Changed

  * Fix TypeError in AdvancedFilter when filter row is missing `type` key

    `Arr::exists($collectedFilters, $filter['type'] ?? [])` passed `[]` to `array_key_exists()` when a row in an `advanced_filter_builder` state had no `type` key (e.g. URL-carried partial state), crashing with a TypeError on PHP 8. Using `null` as the fallback is a valid array-offset type and lets the `array_filter` guard correctly drop malformed rows.
</Update>

<Update label="v4.3.4" description="April 10, 2026">
  ## What's Changed

  * Add Heroicon type support to icon configuration methods

    This PR extends icon configuration methods across multiple plugin concerns to accept `Heroicon` instances in addition to strings and closures, providing more flexible icon customization options.
</Update>

<Update label="v4.3.3" description="April 1, 2026">
  ## What's Changed

  * Add empty labels array initialization to indicator setup

    This change adds an explicit empty labels array initialization to the indicator configuration in the AdvancedFilter's setUp method.
</Update>

<Update label="v4.3.2" description="April 1, 2026">
  ## What's Changed

  * Fix TextFilter to handle empty values in advanced filtering

    This PR fixes the TextFilter to properly handle empty or null values when applying advanced filters, preventing unnecessary database operations and potential errors when filtering with operators that don't require values (like `is_not_empty`).
  * Bump dependabot/fetch-metadata from 2.5.0 to 3.0.0

    Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2.5.0 to 3.0.0.
</Update>

## March 2026

<Update label="v4.3.1" description="March 22, 2026">
  ## What's Changed

  * Fix case-insensitive TextFilter for contains, starts\_with, and ends\_with operators
  * fix advanced search loading skeleton
</Update>

<Update label="v4.3.0" description="March 20, 2026">
  ## What's Changed

  * Laravel 13 support
</Update>

<Update label="v4.2.2" description="March 14, 2026">
  ## What's Changed

  * Fix default view heroicon error
</Update>

<Update label="v4.2.1" description="March 14, 2026">
  ## What's Changed

  * php stan fixes
</Update>

<Update label="v4.2.0" description="March 14, 2026">
  ## What's Changed

  * Fix user views based off of preset views

    This PR fixes the creation and loading of User Views that are based off of preset views. Prior to this, using a presetView that uses `modifyQueryUsing()` as the base of a UserView wouldn't apply the presetView's modfifications.
  * Implement custom trigger actions

    This PR provides full action customization following the same pattern as Filament's [`columnManagerTriggerAction()`](https://filamentphp.com/docs/4.x/tables/columns/overview#customizing-the-column-manager-trigger-action). You can customize any action's icon, label, tooltip, color, size, and more. Icons can also be fully customized using Filament's icon registration. See the docs for more information
  * Update docs for privato
  * Feature improved quick filters

    This PR improves Quick Filters, making them more reliable but also adding support for Advanced Filters as well.
  * Feature - Advanced Table Searching

    Introducing Advanced Table Searching! Advanced Search replaces Filament table's search field with powerful search constraints and column selection. In addition to the default "contains" search, your users can now search using eight different constraints like "starts with", "matches", "ends with", and more. Users can also select which columns to search, and even use keyboard syntax shortcuts to quickly change the search behavior directly from the search input. Advanced Search is fully integrated with [Preset Views](#preset-views), [User Views](#user-views), and [Quick Filters](#quick-filters-new).
  * Update README.md
  * Fix advanced search with multiple columns

    Fixes and issue with negated searches on columns with multiple search columns.
  * Change search exclude syntax from `!` to `-` for Google-style familiarity

    Users are accustomed to using `-` to exclude terms from search engines like Google, GitHub, and Slack. This changes the exclude prefix from `!` to `-` to match that widely understood convention.
  * Fix PostgreSQL type mismatch in managed default views query

    Cast `filament_filter_sets.id` (BIGINT) to VARCHAR when comparing against `managed_default_views.view` (VARCHAR) on PostgreSQL, which enforces strict type checking and rejects cross-type column comparisons.
  * Fix broken translation references to missing Filament packages
  * Improve advanced search feature

    This PR majorly refactors and improves Advanced Search. Anyone using the original version will need to read the docs and possiby update any Preset View defaultSearch() or saved User Views.
  * Add preserve search and expand default search

    This PR adds `->preserveSearch()` as an option on a preset view. It also expands `defaultSearch` to allow either a normal search or advanced search to be set on a preset view.
</Update>

<Update label="v4.2.0-beta.5" description="March 9, 2026">
  ## What's Changed

  * Fix broken translation references to missing Filament packages
  * Improve advanced search feature

    This PR majorly refactors and improves Advanced Search. Anyone using the original version will need to read the docs and possiby update any Preset View defaultSearch() or saved User Views.
</Update>

## February 2026

<Update label="v4.2.0-beta.4" description="February 27, 2026">
  ## What's Changed

  * Change search exclude syntax from `!` to `-` for Google-style familiarity

    Users are accustomed to using `-` to exclude terms from search engines like Google, GitHub, and Slack. This changes the exclude prefix from `!` to `-` to match that widely understood convention.
  * Fix PostgreSQL type mismatch in managed default views query

    Cast `filament_filter_sets.id` (BIGINT) to VARCHAR when comparing against `managed_default_views.view` (VARCHAR) on PostgreSQL, which enforces strict type checking and rejects cross-type column comparisons.
</Update>

<Update label="v4.2.0-beta.3" description="February 26, 2026">
  ## What's Changed

  * Update README.md
  * Fix advanced search with multiple columns

    Fixes and issue with negated searches on columns with multiple search columns.
</Update>

<Update label="v4.2.0-beta.2" description="February 25, 2026">
  ## What's Changed

  * Update docs for privato
  * Feature improved quick filters

    This PR improves Quick Filters, making them more reliable but also adding support for Advanced Filters as well.
  * Feature - Advanced Table Searching

    Introducing Advanced Table Searching! Advanced Search replaces Filament table's search field with powerful search constraints and column selection. In addition to the default "contains" search, your users can now search using eight different constraints like "starts with", "matches", "ends with", and more. Users can also select which columns to search, and even use keyboard syntax shortcuts to quickly change the search behavior directly from the search input. Advanced Search is fully integrated with [Preset Views](#preset-views), [User Views](#user-views), and [Quick Filters](#quick-filters-new).
</Update>

<Update label="v4.2.0-beta.1" description="February 7, 2026">
  ## What's Changed

  * Fix user views based off of preset views

    This PR fixes the creation and loading of User Views that are based off of preset views. Prior to this, using a presetView that uses `modifyQueryUsing()` as the base of a UserView wouldn't apply the presetView's modfifications.
  * Implement custom trigger actions

    This PR provides full action customization following the same pattern as Filament's [`columnManagerTriggerAction()`](https://filamentphp.com/docs/4.x/tables/columns/overview#customizing-the-column-manager-trigger-action). You can customize any action's icon, label, tooltip, color, size, and more. Icons can also be fully customized using Filament's icon registration. See the docs for more information
</Update>

<Update label="v4.1.4" description="February 1, 2026">
  ## What's Changed

  * Fix custom page classes

    When updating the convienence page classes to support Filament v4's new namespacing, I accidently broke the implementation for Table Builder. This PR restores functionality for Table Builder and then adds a new page class for Custom Navigation Page. Now there are three options depending on which type of page you have: ## Panel Builder - [Custom Resource Page](https://filamentphp.com/docs/5.x/resources/custom-pages) => `Archilex\AdvancedTables\Livewire\PanelPage` - [Custom Page](https://filamentphp.com/docs/5.x/navigation/custom-pages) => `Archilex\AdvancedTables\Livewire\CustomPage` ## Table Builder - `Archilex\AdvancedTables\Livewire\Page`
</Update>

## January 2026

<Update label="v4.1.3" description="January 30, 2026">
  ## What's Changed

  * Remove pest/livewire dependency
</Update>

<Update label="v4.1.2" description="January 30, 2026">
  ## What's Changed

  * Support filament enums in user view resource navigation

    This PR adds support to Filament v4's expanded navigation methods that now support enums such as `getNavigationGroup()` and `getNavigationIcon()`.
</Update>

<Update label="v4.1.1" description="January 26, 2026">
  ## What's Changed

  * Fix removeTableFilter error

    Fixes an issue when trying to remove a Query Builder table when also using Advanced Tables.
</Update>

<Update label="v4.1.0" description="January 23, 2026">
  ## What's Changed

  * Add basic testing fixtures

    Add some basic testing
  * Add compatibility for 4.6
  * Add user view resource support for custom pages

    This PR adds support for custom pages in UserViews. It also fixes an issue where extending the plugins PanelPage or Page was using the imports from filament v3.
</Update>

<Update label="v4.0.22" description="January 14, 2026">
  ## What's Changed

  * Fix missing tenantColumn configuration

    This PR fixes the tenantColumn configuration that were missing from the Managed Default Views feature.
  * Fix table not updating when view manager used in slideover

    When the view manager is displayed as a slideover, clicking a view does not update the table until the slideover is closed. This is due to Filament's partial rendering. This PR addresses this so that clicking a view now updates the table as expected.
</Update>

<Update label="v4.0.21" description="January 12, 2026">
  ## What's Changed

  * Fix breaking change for disabling quick filters
</Update>

<Update label="v4.0.20" description="January 10, 2026">
  ## What's Changed

  * Fix query string when opening view from user view resource

    This PR fixes the query string when opening a view from the User View Resource as it only needs the user view. Also sneaking in a fix for the edit view form layout from the User View Resource
  * Allow quick filters to be disabled per resource

    This PR allows Quick Filters to be disabled per resource: `php public static function quickFiltersAreEnabled(): bool &#123; return false; &#125; `
</Update>

<Update label="v4.0.19" description="January 9, 2026">
  ## What's Changed

  * Fix view manager action clipping

    When the view manager only has few views, the view's action dropdown can be clipped by the parent dropdown. This PR fixes this.
</Update>

<Update label="v4.0.18" description="January 7, 2026">
  ## What's Changed

  * Allow multi sort to be configured per page

    This PR improves multi sort by only displaying when there is at least one sortable column. It also allows multi-sorting to be disabled per page: `php class ListOrders extends ListRecords &#123; use AdvancedTables; public static function multiSortIsEnabled(): bool &#123; return false; &#125; ... `
  * Bump dependabot/fetch-metadata from 2.4.0 to 2.5.0

    Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2.4.0 to 2.5.0.
</Update>

## December 2025

<Update label="v4.0.17" description="December 12, 2025">
  ## What's Changed

  * Support new tableRecordsCount in widgets

    Filament 4.3.0 introduced a new tableRecordsCount() that can be used in widgets: [https://github.com/filamentphp/filament/pull/18632](https://github.com/filamentphp/filament/pull/18632). This PR adds support for this.
</Update>

<Update label="v4.0.16" description="December 10, 2025">
  ## What's Changed

  * Add 'default' translation to advanced-tables.php
  * Bump actions/checkout from 5 to 6

    Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6.
</Update>

## November 2025

<Update label="v4.0.15" description="November 20, 2025">
  ## What's Changed

  * Once again change plugin registration check

    The previous attempt didn't work because `filament()->isServing()` is `false` in tests. Implementing a try catch instead. Also updating the default config file of quick filters to match the default for the plugin object.
</Update>

<Update label="v4.0.14" description="November 19, 2025">
  ## What's Changed

  * Fix needing double click for Advanced Filter Builder

    This PR fixes an issue where sometimes it was necessary to double click an Advanced Filter so that it would appear. It also improves adding/removing orGroups.
</Update>

<Update label="v4.0.13" description="November 18, 2025">
  ## What's Changed

  * Better panel registration check
</Update>

<Update label="v4.0.12" description="November 12, 2025">
  ## What's Changed

  * Panel registration check

    Fix error when using in Table Builder
</Update>

<Update label="v4.0.11" description="November 11, 2025">
  ## What's Changed

  * Fix deprecation of passing null to explode()

    Fix deprecation: explode(): Passing null to parameter #2 (\$string) of type string is deprecated in vendor/archilex/filament-filter-sets/src/Concerns/HasMultiSort.php on line 147 error
  * Add compatibility for 4.2.1
</Update>

## October 2025

<Update label="v4.0.10" description="October 27, 2025">
  ## What's Changed

  * Fix user views with query builder

    Fixes User Views when used with v4.1.2 Query Builder and deferred filteres
</Update>

<Update label="v4.0.9" description="October 27, 2025">
  ## What's Changed

  * Fix query builder handling

    Filament 4.1.2 introduced some changes to QueryBuilder which caused some issues with Quick Filters. Quick Filters still does not support Query Builder, but this PR handles the new QueryBuilder so that it filters can be correctly removed when Quick Filters is enabled.
  * Bump stefanzweifel/git-auto-commit-action from 6 to 7

    Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 6 to 7.
</Update>

<Update label="v4.0.8" description="October 13, 2025">
  ## What's Changed

  * Fix for table builder

    Fix for those only using the table builder as `filament()` doesn't exist.
</Update>

<Update label="v4.0.7" description="October 5, 2025">
  ## What's Changed

  * Fix advanced filters with polling and deferred filters

    When polling and deferred filters are enabled on a table when adding an advanced filter from the filter picker the filter will disappear on the next poll. The reason for this seems to be the statePath is changed from `tableDeferredFilters` to `tableFilters` and, since the statePath changes, the next render removes it from the DOM. The only work around I could find was to intercept the statePath and override it switching it back to the correct path. Not thrilled with this solution as I feel like the statePath shouldn't be changing in the first place, but since I couldn't figure out why it was changing, this is the next best solution.
  * Add multi sort reset label translation

    Adds a multi-sort reset label key/value to the translations.
</Update>

<Update label="v4.0.6" description="October 3, 2025">
  ## What's Changed

  * Fix multi sort column dropdown picker clipping

    Fixes clipping in the multi sort column dropdown picker. When max-height is used on a filament dropdown, `fi-scrollable` (overflow-y-auto) is applied which then causes the dropdown picker to clip as it's larger than the dropdown container. A max height isn't really necessary on the multi-sort dropdown so I'm removing it.
  * Fix multi sort and advanced filter builder picker with polling

    Fixes when polling was enabled on a table, the multi-sort and advanced filter builder picker dropdown would disappear on each request.
  * Fix icon picker css

    Adds the required css for the icon picker. Be sure to run `npm run build` and `php artisan filament:upgrade` afterwards.
</Update>

## September 2025

<Update label="v4.0.5" description="September 26, 2025">
  ## What's Changed

  * Fix advanced filter dropdown placement

    Fixes the placement of the block picker dropdown when in a slideover
</Update>

<Update label="v4.0.4" description="September 23, 2025">
  ## What's Changed

  * Fix dependencies

    Two small fixes: 1) Require filament/tables instead of filament/filament for those that just use table builder 2) Allow string for preset view icon position
</Update>

<Update label="v4.0.3" description="September 16, 2025">
  ## What's Changed

  * Fix user view resource paths for new v4 directory

    This PR fixes the paths in the User View Resource to support v4's upgrade directory structure: [https://filamentphp.com/docs/4.x/resources/overview#creating-a-resource](https://filamentphp.com/docs/4.x/resources/overview#creating-a-resource)
</Update>

<Update label="v4.0.2" description="September 4, 2025">
  ## What's Changed

  * V4 fix quick filters and default loading

    This PR fixes quick filters when searching the table as well as fixes loading the table when there are now user/preset/default views. The quick filter with searching is a temporary fix. Later on, I will make the search indicator consistent with other quick filters.
</Update>

## August 2025

<Update label="v4.0.1" description="August 24, 2025">
  ## What's Changed

  * Fix dont show new columns in views

    This PR fixes an issue where adding a new column to the table schema would then cause the column to appear in User Views and Preset Views. Now, new toggleable columns will be toggled off if they are not in the User/Preset View. Users can always use the "Replace view" functionality if they want to show/reorder new columns.
  * Bump actions/checkout from 4 to 5

    Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 5.
  * Bump aglipanci/laravel-pint-action from 2.5 to 2.6

    Bumps [aglipanci/laravel-pint-action](https://github.com/aglipanci/laravel-pint-action) from 2.5 to 2.6.
</Update>

<Update label="v4.0.0" description="August 22, 2025">
  ## What's Changed

  * Feature advanced indicators
  * initial fixes
  * Advanced indicators beta readme
  * Update README.md
  * Improvements

    Better error messaging, refactor class names, fix bug when resetting form from filter form
  * Update indicators.blade.php

    This PR fixes an issue when you have Advanced Indicators enabled globally, but are not using the AdvancedTables trait on a specific resource or page.
  * Feature Multi-Sort

    This PR introduces Multi-Sort to Advanced Tables. Docs here: [https://filamentphp.com/plugins/kenneth-sese-advanced-tables#multi-sort-beta](https://filamentphp.com/plugins/kenneth-sese-advanced-tables#multi-sort-beta)
  * Update translations
  * Fix multi sort column labels

    Fixes the column labels for the multi-sort dropdown and picker
  * Fix advanced indicators using filter form section

    Adds support for filter forms that use Sections
  * Update updated filament method

    Filament v3.2.133 updated the getFilters() method. This PR updates this method to keep it compatible and makes 3.2.133 the minimum version going forward.
  * Update composer.json
  * Feature user defined default views
  * Default View tweaks
  * Allow customizable default icon
  * Improve compatibility between default view and beta 10
  * Persist current view when persistActiveView is enabled
  * Improve resetting view from view manager
  * Update default view translations
  * Replace hardcoded tenant ids
  * Fix hiding view manager and quick save when in favorites bar

    This PR fixes hiding the view manager and quick save per resource/page when they are in the favorites bar. Previously showing/hiding per resource/page only worked when it was they were in the table.
  * Improve support for multiple plugin instances

    If you are using multiple instances of the plugin on the same page (ie, multiple table widgets, or stacked relation managers), there can be conflicts with the userView/presetView/defaultViews when reloading the page. The problem is that the userView/presetView are stored in properties, which are then set in the query string through Livewire’s #\[Url] attribute. Normally this is fine since there is usually only one instance of the plugin on a page at one time. However, when there are multiple instances, as you switch between different userViews/presetViews, the last view is what is stored in the url. Then when you reload the page, since those values are present in the url, livewire sets the properties and then plugin tries to load those views in each instance which overrides whatever was stored in the session. This PR introduces a `hasMultipleInstances()` method that you can set to `false` when the plugin is being used multiple times on the same page. This will basically set the userView and presetView properties to `null` before loading the page which will force it to fall back to using the view stored in the session, which is unique per instance. To use it, just add: `php public function hasMultipleInstances(): bool &#123; return false; &#125; ` to all the List/Manage/Widget classes that are being loaded on the same page.
  * Improve support for multiple trait instances

    Add support for #376 for beta 3.10
  * Implement current user view

    This PR brings over the `currentUserView` implementation which is part of beta10. the currentUserView allows the user/preset view to keep an indicator after changing the sorting/filtering/etc, helping to better indicate that the view is still active.
  * Update HasViewActions.php

    Fixes a missing \$column variable
  * Fix incorrect method naming

    Fixes an incorrect method naming that occurred when bringing currentUserView from beta 10 to beta 9
  * Fix preset views that modifed the query

    This PR fixes a bug where a preset view that modifies the table query wasn't being applied after a table filter/sort/etc. was updated.
  * Fix preset views that modifed the query

    This PR fixes a bug where a preset view that modifies the table query wasn't being applied after a table filter/sort/etc. was updated.
  * Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0

    Bumps [dependabot/fetch-metadata](https://github.com/dependabot/fetch-metadata) from 2.3.0 to 2.4.0.
  * Add empty filter to date operator

    This PR adds an "empty" and "is not empty" date filter to the date filter
  * Fix is empty date filter

    Bug fixes
  * Fix date filter

    This PR fixes the absolute date filter (`is date`, `before date`, `after date`) that broke with the recent addition to `is_empty` and `is not empty`
  * Fix more than 6 or groups

    If a user was using more than 6 or groups in AdvancedFilters it would throw an error as there were only 6 colors to select from. This PR will now cycle through the indicator colors allow infinite or groups
  * Improve support for filament minimal theme

    Adds support for Filament's Minimal Theme. If you are using Filament's Minimal Theme and have been adding css to your theme, you should be able to remove that now and just use `->minimalTheme()` and the Advanced Tables' plugin object
  * Initial upgrade to v4

    Initial upgrade to Filament v4!
  * V4 bug fixes

    Replaces ToggleIconColumn with ToggleColumn as ToggleIconColumn is not yet released for v4 Css bug fix with tables cell padding
  * v4 fix view manager badge

    Only show the view manager badge when enabled and when there is an active view
  * v4 Fix view manager badge round 2

    Fixes view manager badge when shown as button
  * Try fix deprecation error to Str::beforeLast()

    I originally reported it on [https://github.com/filamentphp/filament/issues/16852](https://github.com/filamentphp/filament/issues/16852) If you look at Laravel's Str class, only the beforeLast() method uses mb\_strrpos() I didn't manage to trace filament removeTableFilter() method deep enough to find a Str::beforeLast() But I manage to find it in this package removeTableFilter() method so i like to make this PR to this package 1st to see if it fix the issue for me as Sentry gives me a lot of alerts. I see that you allow $field to be null too so there is a chance $field is null and cause those deprecation errors
  * Bump stefanzweifel/git-auto-commit-action from 5 to 6

    Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5 to 6.
  * Fix toggleOnAllColumns with relationships

    Fixes an issue when toggling on all columns (Enable All), when there are columns that use dotted relationships
  * Fix table columns method to get columns

    You changed method name (getDefaultTableColumnManagerState) -> (getDefaultTableColumnState) in [link](https://github.com/filamentphp/filament/pull/16845)
  * Replace default view for default preset view

    This PR replaces the html default view with an internal PresetView for better UX and compatibility with managed default views. [Read more](README.md#default-view) Also includes some bug fixes
  * Fix Model::shouldBeStrict error

    Fixes an issue where adding `Model::shouldBeStrict()` and disabling managedDefaultViews would cause a The attribute \[is\_current\_default] either does not exist or was not retrieved for model \[Archilex\AdvancedTables\Models\UserView] as `is_current_default` is a subquery column only created when managedDefaultViews is enabled. This fix looks for for the attribute directly in the attributes array. In my testing this was faster than the alternative of looking at the config setting and then if managedDefaultViews is enabled to then look at the attribute.
  * Update to filaments new table column structure

    Filament v4 beta.18 updated the tableColumn structure and added `isHidden` and `isToggledHiddenByDefault`. This PR adds these keys to PresetViews as well as migrates current UserViews with the old structure. This will ensure that columns are properly toggled hidden. This PR also fixes an issue where clicking on a preset/user view with a different column order would remove the active view indicator.
  * Remove testing css class

    Removes a css class that was being used for testing a new v4 feature but as that is not released yet this needs to be removed
  * Fix premature resetting active views

    `activePresetView` and `activeUserView` were prematurely being reset since I'm overridding Filament's `applyColumnManager` method which then would reset the active views as `resetActiveViews` was set to `true`. This PR sets the property to `false` so that when Filament boots it doesn't reset the activeViews and then when the plugin boots, `resetActiveViews` is set to true.
  * Fix-preserveFilters-when-going-from-userView-to-PresetView

    Currently when using `preserveFilters()` on a PresetView, if a UserView with filters is selected and then the PresetView is selected, the PresetView is not highlighted. This works when you go from PresetView -> PresetView, but does not when going from UserView -> PresetView. This PR fixes this issue.
  * Fix modal content implementation

    This PR fixes the modalContent implemenation that caused issue [https://github.com/filamentphp/filament/issues/17024](https://github.com/filamentphp/filament/issues/17024) This incorrect implemenation (which by luck worked in Filament v3) would cause the modal form to appear in the parent modal when `->viewManagerSlideOver()` was used. However, there is still an outstanding issue in Filament that the dropdown is not anchored to the button when inside a modal. This will need to be fixed before `->viewManagerSlideOver()` is a viable option again.
  * Fix save user view action in view manager

    Fixes an action that wasn't updated when implementing #404
  * Add compatibility for consolidated table sort

    This PR adds compatibility for Filament's new consolidated tableSort introduced [https://github.com/filamentphp/filament/pull/17172](https://github.com/filamentphp/filament/pull/17172) This PR includes a migration that should be published and run to update existing UserViews to the new format. As always, backup your DB before migrating.
  * Feature Multi Sort and Quick Filters

    This PR brings Multi-Sort and Quick Filters (formerly Advanced Indicators) to v4. Multi sort is enabled by default. Quick Filters is disabled by default. Be sure to read the docs on each of these powerful features. Note: If you are using the Advanced Indicators feature from v3, you will need to update your plugin config from `advancedIndicatorsEnabled()` to `quickFiltersEnabled()`.
  * Update to consolidated table grouping

    This PR updates to Filament's new consolidated table grouping property introduced in this PR: [https://github.com/filamentphp/filament/pull/17209](https://github.com/filamentphp/filament/pull/17209) This PR includes a migration that should be published and run to update existing UserViews to the new format. As always, backup your DB before migrating.
  * Remove unused directory from service provider
  * Fix default grouping

    Fixes a issue where `:asc` was incorrectly being appended to the default group

  ## New Contributors

  * @ziming made their first contribution
  * @iboldurev made their first contribution
</Update>

<Update label="v4.0.0-beta.13" description="August 12, 2025">
  ## What's Changed

  * Remove unused directory from service provider
</Update>

<Update label="v4.0.0-beta.12" description="August 12, 2025">
  ## What's Changed

  * Feature advanced indicators
  * initial fixes
  * Advanced indicators beta readme
  * Update README.md
  * Improvements

    Better error messaging, refactor class names, fix bug when resetting form from filter form
  * Update indicators.blade.php

    This PR fixes an issue when you have Advanced Indicators enabled globally, but are not using the AdvancedTables trait on a specific resource or page.
  * Feature Multi-Sort

    This PR introduces Multi-Sort to Advanced Tables. Docs here: [https://filamentphp.com/plugins/kenneth-sese-advanced-tables#multi-sort-beta](https://filamentphp.com/plugins/kenneth-sese-advanced-tables#multi-sort-beta)
  * Update translations
  * Fix multi sort column labels

    Fixes the column labels for the multi-sort dropdown and picker
  * Fix advanced indicators using filter form section

    Adds support for filter forms that use Sections
  * Update updated filament method

    Filament v3.2.133 updated the getFilters() method. This PR updates this method to keep it compatible and makes 3.2.133 the minimum version going forward.
  * Update composer.json
  * Improve compatibility between default view and beta 10
  * Persist current view when persistActiveView is enabled
  * Improve resetting view from view manager
  * Improve support for multiple trait instances

    Add support for #376 for beta 3.10
  * Update HasViewActions.php

    Fixes a missing \$column variable
  * Fix preset views that modifed the query

    This PR fixes a bug where a preset view that modifies the table query wasn't being applied after a table filter/sort/etc. was updated.
  * Fix save user view action in view manager

    Fixes an action that wasn't updated when implementing #404
  * Add compatibility for consolidated table sort

    This PR adds compatibility for Filament's new consolidated tableSort introduced [https://github.com/filamentphp/filament/pull/17172](https://github.com/filamentphp/filament/pull/17172) This PR includes a migration that should be published and run to update existing UserViews to the new format. As always, backup your DB before migrating.
  * Feature Multi Sort and Quick Filters

    This PR brings Multi-Sort and Quick Filters (formerly Advanced Indicators) to v4. Multi sort is enabled by default. Quick Filters is disabled by default. Be sure to read the docs on each of these powerful features. Note: If you are using the Advanced Indicators feature from v3, you will need to update your plugin config from `advancedIndicatorsEnabled()` to `quickFiltersEnabled()`.
  * Update to consolidated table grouping

    This PR updates to Filament's new consolidated table grouping property introduced in this PR: [https://github.com/filamentphp/filament/pull/17209](https://github.com/filamentphp/filament/pull/17209) This PR includes a migration that should be published and run to update existing UserViews to the new format. As always, backup your DB before migrating.
</Update>

## July 2025

<Update label="v4.0.0-beta.11" description="July 31, 2025">
  ## What's Changed

  * Fix modal content implementation

    This PR fixes the modalContent implemenation that caused issue [https://github.com/filamentphp/filament/issues/17024](https://github.com/filamentphp/filament/issues/17024) This incorrect implemenation (which by luck worked in Filament v3) would cause the modal form to appear in the parent modal when `->viewManagerSlideOver()` was used. However, there is still an outstanding issue in Filament that the dropdown is not anchored to the button when inside a modal. This will need to be fixed before `->viewManagerSlideOver()` is a viable option again.
</Update>

<Update label="v4.0.0-beta.10" description="July 30, 2025">
  ## What's Changed

  * Fix-preserveFilters-when-going-from-userView-to-PresetView

    Currently when using `preserveFilters()` on a PresetView, if a UserView with filters is selected and then the PresetView is selected, the PresetView is not highlighted. This works when you go from PresetView -> PresetView, but does not when going from UserView -> PresetView. This PR fixes this issue.
</Update>

<Update label="v4.0.0-beta.9" description="July 29, 2025">
  ## What's Changed

  * Fix premature resetting active views

    `activePresetView` and `activeUserView` were prematurely being reset since I'm overridding Filament's `applyColumnManager` method which then would reset the active views as `resetActiveViews` was set to `true`. This PR sets the property to `false` so that when Filament boots it doesn't reset the activeViews and then when the plugin boots, `resetActiveViews` is set to true.
</Update>

<Update label="v4.0.0-beta.8" description="July 24, 2025">
  ## What's Changed

  * Fix toggleOnAllColumns with relationships

    Fixes an issue when toggling on all columns (Enable All), when there are columns that use dotted relationships
  * Fix Model::shouldBeStrict error

    Fixes an issue where adding `Model::shouldBeStrict()` and disabling managedDefaultViews would cause a The attribute \[is\_current\_default] either does not exist or was not retrieved for model \[Archilex\AdvancedTables\Models\UserView] as `is_current_default` is a subquery column only created when managedDefaultViews is enabled. This fix looks for for the attribute directly in the attributes array. In my testing this was faster than the alternative of looking at the config setting and then if managedDefaultViews is enabled to then look at the attribute.
  * Update to filaments new table column structure

    Filament v4 beta.18 updated the tableColumn structure and added `isHidden` and `isToggledHiddenByDefault`. This PR adds these keys to PresetViews as well as migrates current UserViews with the old structure. This will ensure that columns are properly toggled hidden. This PR also fixes an issue where clicking on a preset/user view with a different column order would remove the active view indicator.
  * Remove testing css class

    Removes a css class that was being used for testing a new v4 feature but as that is not released yet this needs to be removed
</Update>

<Update label="v4.0.0-beta.7" description="July 11, 2025">
  ## What's Changed

  * Replace default view for default preset view

    This PR replaces the html default view with an internal PresetView for better UX and compatibility with managed default views. [Read more](README.md#default-view) Also includes some bug fixes
</Update>

<Update label="v4.0.0-beta.6" description="July 8, 2025">
  ## What's Changed

  * Fix table columns method to get columns

    You changed method name (getDefaultTableColumnManagerState) -> (getDefaultTableColumnState) in [link](https://github.com/filamentphp/filament/pull/16845)

  ## New Contributors

  * @iboldurev made their first contribution
</Update>

<Update label="v4.0.0-beta.5" description="July 8, 2025">
  ## What's Changed

  * Try fix deprecation error to Str::beforeLast()

    I originally reported it on [https://github.com/filamentphp/filament/issues/16852](https://github.com/filamentphp/filament/issues/16852) If you look at Laravel's Str class, only the beforeLast() method uses mb\_strrpos() I didn't manage to trace filament removeTableFilter() method deep enough to find a Str::beforeLast() But I manage to find it in this package removeTableFilter() method so i like to make this PR to this package 1st to see if it fix the issue for me as Sentry gives me a lot of alerts. I see that you allow $field to be null too so there is a chance $field is null and cause those deprecation errors
  * Bump stefanzweifel/git-auto-commit-action from 5 to 6

    Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 5 to 6.

  ## New Contributors

  * @ziming made their first contribution
</Update>

## June 2025

<Update label="v4.0.0-beta.4" description="June 25, 2025">
  ## What's Changed

  * v4 Fix view manager badge round 2

    Fixes view manager badge when shown as button
</Update>

<Update label="v4.0.0-beta.3" description="June 25, 2025">
  ## What's Changed

  * v4 fix view manager badge

    Only show the view manager badge when enabled and when there is an active view
</Update>

<Update label="v4.0.0-beta.2" description="June 25, 2025">
  ## What's Changed

  * V4 bug fixes

    Replaces ToggleIconColumn with ToggleColumn as ToggleIconColumn is not yet released for v4 Css bug fix with tables cell padding
</Update>

<Update label="v4.0.0-beta.1" description="June 19, 2025">
  ## What's Changed

  * Initial upgrade to v4

    Initial upgrade to Filament v4!
</Update>
