@inertiaui/modal-react 2.0.2 → 2.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@inertiaui/modal-react",
3
3
  "author": "Pascal Baljet <pascal@protone.media>",
4
- "version": "2.0.2",
4
+ "version": "2.0.3",
5
5
  "private": false,
6
6
  "license": "MIT",
7
7
  "repository": {
@@ -66,4 +66,4 @@
66
66
  "react": "^19.0.0",
67
67
  "react-dom": "^19.0.0"
68
68
  }
69
- }
69
+ }
@@ -138,7 +138,7 @@ const HeadlessModal = forwardRef<HeadlessModalRef, HeadlessModalProps>(
138
138
  const previousIsOpenRef = useRef<boolean | undefined>(undefined)
139
139
 
140
140
  useEffect(() => {
141
- if (modalContext !== null) {
141
+ if (modalContext != null) {
142
142
  if (modalContext.isOpen) {
143
143
  onSuccess?.()
144
144
  } else if (previousIsOpenRef.current === true) {
@@ -153,7 +153,7 @@ const HeadlessModal = forwardRef<HeadlessModalRef, HeadlessModalProps>(
153
153
  const [rendered, setRendered] = useState(false)
154
154
 
155
155
  useEffect(() => {
156
- if (rendered && modalContext !== null && modalContext.isOpen) {
156
+ if (rendered && modalContext != null && modalContext.isOpen) {
157
157
  if (modalContext.onTopOfStack) {
158
158
  onFocus?.()
159
159
  } else {
package/src/ModalRoot.tsx CHANGED
@@ -295,7 +295,11 @@ export const ModalStackProvider = ({ children }: ModalStackProviderProps) => {
295
295
  // Only suppresses navigate events to this specific URL
296
296
  closingToBaseUrlTarget = savedBaseUrl
297
297
 
298
- if (savedBaseUrl && typeof window !== 'undefined') {
298
+ // Only call router.push() when the URL actually changed (navigate mode).
299
+ // In non-navigate mode (default), the URL never changes and _inertiaui_modal
300
+ // is never in page props, so router.push() would be a no-op that triggers
301
+ // an unnecessary full component re-render in Inertia v3.
302
+ if (savedBaseUrl && typeof window !== 'undefined' && !sameUrlPath(savedBaseUrl, window.location.href)) {
299
303
  router.push({
300
304
  url: savedBaseUrl,
301
305
  preserveScroll: true,