From 093c7d5f462b0735b2a32ea0a7a34e90ac851e0f Mon Sep 17 00:00:00 2001 From: PeopleSea <70972819+People-Sea@users.noreply.github.com> Date: Mon, 8 Sep 2025 15:43:02 +0800 Subject: [PATCH] fix: unable to open another `modal` within a `modal` Fixes an issue where events could not be triggered when using id in modals. Edge cases are handled where both id and trigger are used together. Fixes: #17630 --- .../views/components/modal/index.blade.php | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/support/resources/views/components/modal/index.blade.php b/packages/support/resources/views/components/modal/index.blade.php index acb98ed24a..bc53b40e18 100644 --- a/packages/support/resources/views/components/modal/index.blade.php +++ b/packages/support/resources/views/components/modal/index.blade.php @@ -65,7 +65,11 @@
attributes->get('disabled')) - x-on:click="$el.nextElementSibling.dispatchEvent(new CustomEvent(@js($openEventName)))" + @if ($id) + x-on:click="$dispatch(@js($openEventName), { id: @js($id) })" + @else + x-on:click="$el.nextElementSibling.dispatchEvent(new CustomEvent(@js($openEventName)))" + @endif @endif {{ $trigger->attributes->except(['disabled'])->class(['fi-modal-trigger']) }} > @@ -90,10 +94,11 @@ x-on:{{ $closeEventName }}.window="if (($event.detail.id === @js($id)) && isOpen) close()" x-on:{{ $closeQuietlyEventName }}.window="if (($event.detail.id === @js($id)) && isOpen) closeQuietly()" x-on:{{ $openEventName }}.window="if (($event.detail.id === @js($id)) && (! isOpen)) open()" + @else + x-on:{{ $closeEventName }}.stop="if (isOpen) close()" + x-on:{{ $closeQuietlyEventName }}.stop="if (isOpen) closeQuietly()" + x-on:{{ $openEventName }}.stop="if (! isOpen) open()" @endif - x-on:{{ $closeEventName }}.stop="if (isOpen) close()" - x-on:{{ $closeQuietlyEventName }}.stop="if (isOpen) closeQuietly()" - x-on:{{ $openEventName }}.stop="if (! isOpen) open()" x-bind:class="{ 'fi-modal-open': isOpen, }"