mirror of
https://github.com/coollabsio/coolify.git
synced 2026-11-06 13:10:37 -04:00
Replace datalist and searchable-listbox components with the shared listbox and migrate form fields. Deduplicate superseded Livewire updates to prevent repeated array update hooks, with regression coverage.
27 lines
805 B
JavaScript
27 lines
805 B
JavaScript
/**
|
|
* Livewire 3 sends a nested diff (`ids.0`) next to a queued whole-property
|
|
* update (`ids`) when an array changes through `.live` entangle or `$set`,
|
|
* so `updatedIds()` runs once per key. Livewire 4 drops the superseded nested
|
|
* keys in `mergeQueuedUpdates`; this backports that fix.
|
|
*
|
|
* @param {Record<string, unknown>} updates
|
|
* @returns {Record<string, unknown>}
|
|
*/
|
|
export function removeSupersededUpdates(updates) {
|
|
const keys = Object.keys(updates);
|
|
|
|
keys.forEach((key) => {
|
|
if (keys.some((parent) => key.startsWith(`${parent}.`))) {
|
|
delete updates[key];
|
|
}
|
|
});
|
|
|
|
return updates;
|
|
}
|
|
|
|
export function registerLivewireUpdateDedupe(Livewire) {
|
|
Livewire.hook('commit', ({ commit }) => {
|
|
removeSupersededUpdates(commit.updates);
|
|
});
|
|
}
|