* fix(forms): preserve the order of rich editor mention options
Mention options were sent to JavaScript as an object keyed by ID, and
`toItemsArray()` reads them back with `Object.entries()`. JavaScript orders
integer-like keys ascending numerically, so for models with numeric primary
keys the developer's ordering was silently replaced with an ascending-ID
sort, for both `items()` and `getSearchResultsUsing()`.
Items are now sent as an ordered list of `id` and `label` pairs. The JS
already supports that shape, so no JS change is required.
This also fixes a related edge case: PHP re-casts numeric-string array keys
back to integers, so a provider whose IDs were 0-based and sequential
serialised to a JSON array of bare labels, and the inserted mention took its
label as its `id`.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011LniPBty6yFENqFFcMcNad
* fix(forms): preserve zero-valued mention IDs
---------
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Dan Harrin <git@danharrin.com>
* feat: add missing Khmer translations for the view record page and chart widget.
* chore: update the missing Khmer language translations for multi-factor authentication and form components
* chore: update Khmer language translations for validation and email verification controller
* fix: fallback to default GITHUB_TOKEN if GH_ACCESS_TOKEN is not defined in workflow checkout
* feat: add and update Khmer language translations for various components and packages
* Update Khmer (km) translations
* fix: disable session persistence for tables inside a TableSelect
Every TableSelect and ModalTableSelect renders through the same
TableSelectLivewireComponent, and table session keys are derived from
the Livewire component class. Two pickers with different table
configurations therefore shared one set of persisted filters, search,
sort, grouping and column state, and a persisted query builder rule
from one picker threw a LogicException in the other.
Turn off every session persistence option on the table used by a
TableSelect, and stop the column manager reading persisted state from
the session when column persistence is disabled.
Fixes#20468
* Add `persistInSession()` to toggle all table session persistence at once
The TableSelect component was switching off six separate persistence
options, which would silently miss any session feature added later.
Move that into a single `persistInSession()` method on the Table so
there is one place to keep in step, and call it from the component.
* Fix all TableSelect session persistence
Co-authored-by: Amp <amp@ampcode.com>
* Preserve non-persisted table state behavior
Co-authored-by: Amp <amp@ampcode.com>
---------
Co-authored-by: Dan Harrin <git@danharrin.com>
Co-authored-by: Amp <amp@ampcode.com>
The rich editor and markdown editor max-height styles `@apply` a
`scrollbar-gutter-stable` utility that is not declared anywhere in
Filament's CSS. Any panel theme that imports Filament's theme.css
fails to build with:
[@tailwindcss/vite:generate:build] Cannot apply unknown utility
class `scrollbar-gutter-stable`
Replace the missing utility with the raw `scrollbar-gutter: stable`
declaration, matching how the sidebar (packages/panels/.../sidebar.css)
already uses it.
* fix: don't refetch file urls on reorder for private disks
* fix: only reuse file metadata when reordering
* test: avoid Alpine internals in file upload test
---------
Co-authored-by: Dan Harrin <git@danharrin.com>
* feat: add missing Khmer translations for the view record page and chart widget.
* chore: update the missing Khmer language translations for multi-factor authentication and form components
* chore: update Khmer language translations for validation and email verification controller
* fix: fallback to default GITHUB_TOKEN if GH_ACCESS_TOKEN is not defined in workflow checkout
* feat: add and update Khmer language translations for various components and packages
Completes all missing sw translations across 13 packages (694 keys in 50 files), removes stale keys, and fixes existing strings: untranslated rich editor link tool, duplicated h1/h2 headings, key_value row labels using the wrong noun, pagination overview pluralization, and terminology alignment (Hariri for edit actions).