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,30 @@
import { CSSInterpolation } from '@emotion/serialize';
import { EmotionCache, Options } from '@emotion/cache';
import { StyleSheet } from '@emotion/sheet';
export type { CSSInterpolation, ArrayCSSInterpolation, ComponentSelector, CSSObject } from '@emotion/serialize';
export type { EmotionCache, Options };
export interface ArrayClassNamesArg extends Array<ClassNamesArg> {
}
export type ClassNamesArg = undefined | null | string | boolean | {
[className: string]: boolean | null | undefined;
} | ArrayClassNamesArg;
export interface CSSStyleSheet extends StyleSheet {
speedy(value: boolean): void;
}
export interface Emotion {
css(template: TemplateStringsArray, ...args: Array<CSSInterpolation>): string;
css(...args: Array<CSSInterpolation>): string;
cx(...classNames: Array<ClassNamesArg>): string;
flush(): void;
hydrate(ids: Array<string>): void;
injectGlobal(template: TemplateStringsArray, ...args: Array<CSSInterpolation>): void;
injectGlobal(...args: Array<CSSInterpolation>): void;
keyframes(template: TemplateStringsArray, ...args: Array<CSSInterpolation>): string;
keyframes(...args: Array<CSSInterpolation>): string;
sheet: CSSStyleSheet;
cache: EmotionCache;
merge(className: string): string;
getRegisteredStyles(registeredStyles: Array<string>, className: string): string;
}
declare let createEmotion: (options: Options) => Emotion;
export default createEmotion;

View File

@@ -0,0 +1,10 @@
export declare const flush: () => void, hydrate: (ids: string[]) => void, cx: (...classNames: import("./create-instance.js").ClassNamesArg[]) => string, merge: (className: string) => string, getRegisteredStyles: (registeredStyles: string[], className: string) => string, injectGlobal: {
(template: TemplateStringsArray, ...args: import("./create-instance.js").CSSInterpolation[]): void;
(...args: import("./create-instance.js").CSSInterpolation[]): void;
}, keyframes: {
(template: TemplateStringsArray, ...args: import("./create-instance.js").CSSInterpolation[]): string;
(...args: import("./create-instance.js").CSSInterpolation[]): string;
}, css: {
(template: TemplateStringsArray, ...args: import("./create-instance.js").CSSInterpolation[]): string;
(...args: import("./create-instance.js").CSSInterpolation[]): string;
}, sheet: import("./create-instance.js").CSSStyleSheet, cache: import("./create-instance.js").EmotionCache;