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,14 @@
/**
* WordPress dependencies
*/
import { createContext, useContext } from '@wordpress/element';
/**
* Internal dependencies
*/
export const NavigationGroupContext = createContext({
group: undefined
});
export const useNavigationGroupContext = () => useContext(NavigationGroupContext);
//# sourceMappingURL=context.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["createContext","useContext","NavigationGroupContext","group","undefined","useNavigationGroupContext"],"sources":["@wordpress/components/src/navigation/group/context.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { createContext, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { NavigationGroupContext as NavigationGroupContextType } from '../types';\n\nexport const NavigationGroupContext =\n\tcreateContext< NavigationGroupContextType >( { group: undefined } );\n\nexport const useNavigationGroupContext = () =>\n\tuseContext( NavigationGroupContext );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,UAAU,QAAQ,oBAAoB;;AAE9D;AACA;AACA;;AAGA,OAAO,MAAMC,sBAAsB,GAClCF,aAAa,CAAgC;EAAEG,KAAK,EAAEC;AAAU,CAAE,CAAC;AAEpE,OAAO,MAAMC,yBAAyB,GAAGA,CAAA,KACxCJ,UAAU,CAAEC,sBAAuB,CAAC"}

View File

@@ -0,0 +1,56 @@
import { createElement } from "react";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* WordPress dependencies
*/
import { useState } from '@wordpress/element';
/**
* Internal dependencies
*/
import { NavigationGroupContext } from './context';
import { GroupTitleUI } from '../styles/navigation-styles';
import { useNavigationContext } from '../context';
let uniqueId = 0;
export function NavigationGroup({
children,
className,
title
}) {
const [groupId] = useState(`group-${++uniqueId}`);
const {
navigationTree: {
items
}
} = useNavigationContext();
const context = {
group: groupId
};
// Keep the children rendered to make sure invisible items are included in the navigation tree.
if (!Object.values(items).some(item => item.group === groupId && item._isVisible)) {
return createElement(NavigationGroupContext.Provider, {
value: context
}, children);
}
const groupTitleId = `components-navigation__group-title-${groupId}`;
const classes = classnames('components-navigation__group', className);
return createElement(NavigationGroupContext.Provider, {
value: context
}, createElement("li", {
className: classes
}, title && createElement(GroupTitleUI, {
className: "components-navigation__group-title",
id: groupTitleId,
level: 3
}, title), createElement("ul", {
"aria-labelledby": groupTitleId,
role: "group"
}, children)));
}
export default NavigationGroup;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["classnames","useState","NavigationGroupContext","GroupTitleUI","useNavigationContext","uniqueId","NavigationGroup","children","className","title","groupId","navigationTree","items","context","group","Object","values","some","item","_isVisible","createElement","Provider","value","groupTitleId","classes","id","level","role"],"sources":["@wordpress/components/src/navigation/group/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { useState } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { NavigationGroupContext } from './context';\nimport { GroupTitleUI } from '../styles/navigation-styles';\nimport { useNavigationContext } from '../context';\n\nimport type { NavigationGroupProps } from '../types';\n\nlet uniqueId = 0;\n\nexport function NavigationGroup( {\n\tchildren,\n\tclassName,\n\ttitle,\n}: NavigationGroupProps ) {\n\tconst [ groupId ] = useState( `group-${ ++uniqueId }` );\n\tconst {\n\t\tnavigationTree: { items },\n\t} = useNavigationContext();\n\n\tconst context = { group: groupId };\n\n\t// Keep the children rendered to make sure invisible items are included in the navigation tree.\n\tif (\n\t\t! Object.values( items ).some(\n\t\t\t( item ) => item.group === groupId && item._isVisible\n\t\t)\n\t) {\n\t\treturn (\n\t\t\t<NavigationGroupContext.Provider value={ context }>\n\t\t\t\t{ children }\n\t\t\t</NavigationGroupContext.Provider>\n\t\t);\n\t}\n\n\tconst groupTitleId = `components-navigation__group-title-${ groupId }`;\n\tconst classes = classnames( 'components-navigation__group', className );\n\n\treturn (\n\t\t<NavigationGroupContext.Provider value={ context }>\n\t\t\t<li className={ classes }>\n\t\t\t\t{ title && (\n\t\t\t\t\t<GroupTitleUI\n\t\t\t\t\t\tclassName=\"components-navigation__group-title\"\n\t\t\t\t\t\tid={ groupTitleId }\n\t\t\t\t\t\tlevel={ 3 }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ title }\n\t\t\t\t\t</GroupTitleUI>\n\t\t\t\t) }\n\t\t\t\t<ul aria-labelledby={ groupTitleId } role=\"group\">\n\t\t\t\t\t{ children }\n\t\t\t\t</ul>\n\t\t\t</li>\n\t\t</NavigationGroupContext.Provider>\n\t);\n}\n\nexport default NavigationGroup;\n"],"mappings":";AAAA;AACA;AACA;AACA,OAAOA,UAAU,MAAM,YAAY;;AAEnC;AACA;AACA;AACA,SAASC,QAAQ,QAAQ,oBAAoB;;AAE7C;AACA;AACA;AACA,SAASC,sBAAsB,QAAQ,WAAW;AAClD,SAASC,YAAY,QAAQ,6BAA6B;AAC1D,SAASC,oBAAoB,QAAQ,YAAY;AAIjD,IAAIC,QAAQ,GAAG,CAAC;AAEhB,OAAO,SAASC,eAAeA,CAAE;EAChCC,QAAQ;EACRC,SAAS;EACTC;AACqB,CAAC,EAAG;EACzB,MAAM,CAAEC,OAAO,CAAE,GAAGT,QAAQ,CAAG,SAAS,EAAEI,QAAU,EAAE,CAAC;EACvD,MAAM;IACLM,cAAc,EAAE;MAAEC;IAAM;EACzB,CAAC,GAAGR,oBAAoB,CAAC,CAAC;EAE1B,MAAMS,OAAO,GAAG;IAAEC,KAAK,EAAEJ;EAAQ,CAAC;;EAElC;EACA,IACC,CAAEK,MAAM,CAACC,MAAM,CAAEJ,KAAM,CAAC,CAACK,IAAI,CAC1BC,IAAI,IAAMA,IAAI,CAACJ,KAAK,KAAKJ,OAAO,IAAIQ,IAAI,CAACC,UAC5C,CAAC,EACA;IACD,OACCC,aAAA,CAAClB,sBAAsB,CAACmB,QAAQ;MAACC,KAAK,EAAGT;IAAS,GAC/CN,QAC8B,CAAC;EAEpC;EAEA,MAAMgB,YAAY,GAAI,sCAAsCb,OAAS,EAAC;EACtE,MAAMc,OAAO,GAAGxB,UAAU,CAAE,8BAA8B,EAAEQ,SAAU,CAAC;EAEvE,OACCY,aAAA,CAAClB,sBAAsB,CAACmB,QAAQ;IAACC,KAAK,EAAGT;EAAS,GACjDO,aAAA;IAAIZ,SAAS,EAAGgB;EAAS,GACtBf,KAAK,IACNW,aAAA,CAACjB,YAAY;IACZK,SAAS,EAAC,oCAAoC;IAC9CiB,EAAE,EAAGF,YAAc;IACnBG,KAAK,EAAG;EAAG,GAETjB,KACW,CACd,EACDW,aAAA;IAAI,mBAAkBG,YAAc;IAACI,IAAI,EAAC;EAAO,GAC9CpB,QACC,CACD,CAC4B,CAAC;AAEpC;AAEA,eAAeD,eAAe"}