fix: prevent asset conflicts between React and Grid.js versions

Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
dwindown
2026-04-18 17:02:14 +07:00
parent bd9cdac02e
commit e8fbfb14c1
74973 changed files with 6658406 additions and 71 deletions

View File

@@ -0,0 +1,2 @@
import * as React from "react";
export declare const DialogBackdropContext: React.Context<string | undefined>;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useDisableHoverOutside(portalRef: React.RefObject<HTMLElement>, nestedDialogs: Array<React.RefObject<HTMLElement>>, options: DialogOptions): void;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useDisclosureRef(dialogRef: React.RefObject<HTMLElement>, options: DialogOptions): React.MutableRefObject<HTMLElement | null>;

View File

@@ -0,0 +1,2 @@
import * as React from "react";
export declare function useEventListenerOutside(containerRef: React.RefObject<HTMLElement>, disclosureRef: React.RefObject<HTMLElement>, nestedDialogs: Array<React.RefObject<HTMLElement>>, eventType: string, listener?: (e: Event) => void, shouldListen?: boolean, capture?: boolean): void;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useFocusOnBlur(dialogRef: React.RefObject<HTMLElement>, options: DialogOptions): (event: React.FocusEvent<HTMLElement>) => void;

View File

@@ -0,0 +1,7 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
/**
* When the focused child gets removed from the DOM, we make sure to move focus
* to the dialog.
*/
export declare function useFocusOnChildUnmount(dialogRef: React.RefObject<HTMLElement>, options: DialogOptions): void;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useFocusOnHide(dialogRef: React.RefObject<HTMLElement>, disclosureRef: React.RefObject<HTMLElement>, options: DialogOptions): void;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useFocusOnShow(dialogRef: React.RefObject<HTMLElement>, nestedDialogs: Array<React.RefObject<HTMLElement>>, options: DialogOptions): void;

View File

@@ -0,0 +1,4 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function isFocusTrap(element: Element): boolean;
export declare function useFocusTrap(dialogRef: React.RefObject<HTMLElement>, visibleModals: Array<React.RefObject<HTMLElement>>, options: DialogOptions): void;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function useHideOnClickOutside(dialogRef: React.RefObject<HTMLElement>, disclosureRef: React.RefObject<HTMLElement>, nestedDialogs: Array<React.RefObject<HTMLElement>>, options: DialogOptions): void;

View File

@@ -0,0 +1,9 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
declare type DialogRef = React.RefObject<HTMLElement>;
export declare function useNestedDialogs(dialogRef: DialogRef, options: DialogOptions): {
dialogs: DialogRef[];
visibleModals: DialogRef[];
wrap: (element: React.ReactNode) => JSX.Element;
};
export {};

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function usePortalRef(dialogRef: React.RefObject<HTMLElement>, options: DialogOptions): React.MutableRefObject<HTMLElement | null>;

View File

@@ -0,0 +1,3 @@
import * as React from "react";
import { DialogOptions } from "../Dialog";
export declare function usePreventBodyScroll(targetRef: React.RefObject<HTMLElement>, options: DialogOptions): void;