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,
}"