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,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useNavigationGroupContext = exports.NavigationGroupContext = void 0;
var _element = require("@wordpress/element");
/**
* WordPress dependencies
*/
const NavigationGroupContext = (0, _element.createContext)({
group: undefined
});
exports.NavigationGroupContext = NavigationGroupContext;
const useNavigationGroupContext = () => (0, _element.useContext)(NavigationGroupContext);
exports.useNavigationGroupContext = useNavigationGroupContext;
//# sourceMappingURL=context.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_element","require","NavigationGroupContext","createContext","group","undefined","exports","useNavigationGroupContext","useContext"],"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":";;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAHA;AACA;AACA;;AAQO,MAAMC,sBAAsB,GAClC,IAAAC,sBAAa,EAAgC;EAAEC,KAAK,EAAEC;AAAU,CAAE,CAAC;AAACC,OAAA,CAAAJ,sBAAA,GAAAA,sBAAA;AAE9D,MAAMK,yBAAyB,GAAGA,CAAA,KACxC,IAAAC,mBAAU,EAAEN,sBAAuB,CAAC;AAACI,OAAA,CAAAC,yBAAA,GAAAA,yBAAA"}

View File

@@ -0,0 +1,66 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NavigationGroup = NavigationGroup;
exports.default = void 0;
var _react = require("react");
var _classnames = _interopRequireDefault(require("classnames"));
var _element = require("@wordpress/element");
var _context = require("./context");
var _navigationStyles = require("../styles/navigation-styles");
var _context2 = require("../context");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
let uniqueId = 0;
function NavigationGroup({
children,
className,
title
}) {
const [groupId] = (0, _element.useState)(`group-${++uniqueId}`);
const {
navigationTree: {
items
}
} = (0, _context2.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 (0, _react.createElement)(_context.NavigationGroupContext.Provider, {
value: context
}, children);
}
const groupTitleId = `components-navigation__group-title-${groupId}`;
const classes = (0, _classnames.default)('components-navigation__group', className);
return (0, _react.createElement)(_context.NavigationGroupContext.Provider, {
value: context
}, (0, _react.createElement)("li", {
className: classes
}, title && (0, _react.createElement)(_navigationStyles.GroupTitleUI, {
className: "components-navigation__group-title",
id: groupTitleId,
level: 3
}, title), (0, _react.createElement)("ul", {
"aria-labelledby": groupTitleId,
role: "group"
}, children)));
}
var _default = NavigationGroup;
exports.default = _default;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_classnames","_interopRequireDefault","require","_element","_context","_navigationStyles","_context2","uniqueId","NavigationGroup","children","className","title","groupId","useState","navigationTree","items","useNavigationContext","context","group","Object","values","some","item","_isVisible","_react","createElement","NavigationGroupContext","Provider","value","groupTitleId","classes","classnames","GroupTitleUI","id","level","role","_default","exports","default"],"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":";;;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AAKA,IAAAE,QAAA,GAAAF,OAAA;AACA,IAAAG,iBAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAfA;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAOA,IAAIK,QAAQ,GAAG,CAAC;AAET,SAASC,eAAeA,CAAE;EAChCC,QAAQ;EACRC,SAAS;EACTC;AACqB,CAAC,EAAG;EACzB,MAAM,CAAEC,OAAO,CAAE,GAAG,IAAAC,iBAAQ,EAAG,SAAS,EAAEN,QAAU,EAAE,CAAC;EACvD,MAAM;IACLO,cAAc,EAAE;MAAEC;IAAM;EACzB,CAAC,GAAG,IAAAC,8BAAoB,EAAC,CAAC;EAE1B,MAAMC,OAAO,GAAG;IAAEC,KAAK,EAAEN;EAAQ,CAAC;;EAElC;EACA,IACC,CAAEO,MAAM,CAACC,MAAM,CAAEL,KAAM,CAAC,CAACM,IAAI,CAC1BC,IAAI,IAAMA,IAAI,CAACJ,KAAK,KAAKN,OAAO,IAAIU,IAAI,CAACC,UAC5C,CAAC,EACA;IACD,OACC,IAAAC,MAAA,CAAAC,aAAA,EAACrB,QAAA,CAAAsB,sBAAsB,CAACC,QAAQ;MAACC,KAAK,EAAGX;IAAS,GAC/CR,QAC8B,CAAC;EAEpC;EAEA,MAAMoB,YAAY,GAAI,sCAAsCjB,OAAS,EAAC;EACtE,MAAMkB,OAAO,GAAG,IAAAC,mBAAU,EAAE,8BAA8B,EAAErB,SAAU,CAAC;EAEvE,OACC,IAAAc,MAAA,CAAAC,aAAA,EAACrB,QAAA,CAAAsB,sBAAsB,CAACC,QAAQ;IAACC,KAAK,EAAGX;EAAS,GACjD,IAAAO,MAAA,CAAAC,aAAA;IAAIf,SAAS,EAAGoB;EAAS,GACtBnB,KAAK,IACN,IAAAa,MAAA,CAAAC,aAAA,EAACpB,iBAAA,CAAA2B,YAAY;IACZtB,SAAS,EAAC,oCAAoC;IAC9CuB,EAAE,EAAGJ,YAAc;IACnBK,KAAK,EAAG;EAAG,GAETvB,KACW,CACd,EACD,IAAAa,MAAA,CAAAC,aAAA;IAAI,mBAAkBI,YAAc;IAACM,IAAI,EAAC;EAAO,GAC9C1B,QACC,CACD,CAC4B,CAAC;AAEpC;AAAC,IAAA2B,QAAA,GAEc5B,eAAe;AAAA6B,OAAA,CAAAC,OAAA,GAAAF,QAAA"}