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,64 @@
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.MenuGroup = MenuGroup;
exports.default = void 0;
var _react = require("react");
var _classnames = _interopRequireDefault(require("classnames"));
var _element = require("@wordpress/element");
var _compose = require("@wordpress/compose");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* `MenuGroup` wraps a series of related `MenuItem` components into a common
* section.
*
* ```jsx
* import { MenuGroup, MenuItem } from '@wordpress/components';
*
* const MyMenuGroup = () => (
* <MenuGroup label="Settings">
* <MenuItem>Setting 1</MenuItem>
* <MenuItem>Setting 2</MenuItem>
* </MenuGroup>
* );
* ```
*/
function MenuGroup(props) {
const {
children,
className = '',
label,
hideSeparator
} = props;
const instanceId = (0, _compose.useInstanceId)(MenuGroup);
if (!_element.Children.count(children)) {
return null;
}
const labelId = `components-menu-group-label-${instanceId}`;
const classNames = (0, _classnames.default)(className, 'components-menu-group', {
'has-hidden-separator': hideSeparator
});
return (0, _react.createElement)("div", {
className: classNames
}, label && (0, _react.createElement)("div", {
className: "components-menu-group__label",
id: labelId,
"aria-hidden": "true"
}, label), (0, _react.createElement)("div", {
role: "group",
"aria-labelledby": label ? labelId : undefined
}, children));
}
var _default = MenuGroup;
exports.default = _default;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":["_classnames","_interopRequireDefault","require","_element","_compose","MenuGroup","props","children","className","label","hideSeparator","instanceId","useInstanceId","Children","count","labelId","classNames","classnames","_react","createElement","id","role","undefined","_default","exports","default"],"sources":["@wordpress/components/src/menu-group/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { Children } from '@wordpress/element';\nimport { useInstanceId } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport type { MenuGroupProps } from './types';\n\n/**\n * `MenuGroup` wraps a series of related `MenuItem` components into a common\n * section.\n *\n * ```jsx\n * import { MenuGroup, MenuItem } from '@wordpress/components';\n *\n * const MyMenuGroup = () => (\n * <MenuGroup label=\"Settings\">\n * <MenuItem>Setting 1</MenuItem>\n * <MenuItem>Setting 2</MenuItem>\n * </MenuGroup>\n * );\n * ```\n */\nexport function MenuGroup( props: MenuGroupProps ) {\n\tconst { children, className = '', label, hideSeparator } = props;\n\tconst instanceId = useInstanceId( MenuGroup );\n\n\tif ( ! Children.count( children ) ) {\n\t\treturn null;\n\t}\n\n\tconst labelId = `components-menu-group-label-${ instanceId }`;\n\tconst classNames = classnames( className, 'components-menu-group', {\n\t\t'has-hidden-separator': hideSeparator,\n\t} );\n\n\treturn (\n\t\t<div className={ classNames }>\n\t\t\t{ label && (\n\t\t\t\t<div\n\t\t\t\t\tclassName=\"components-menu-group__label\"\n\t\t\t\t\tid={ labelId }\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</div>\n\t\t\t) }\n\t\t\t<div role=\"group\" aria-labelledby={ label ? labelId : undefined }>\n\t\t\t\t{ children }\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n\nexport default MenuGroup;\n"],"mappings":";;;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAF,OAAA;AATA;AACA;AACA;;AAGA;AACA;AACA;;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,SAASA,CAAEC,KAAqB,EAAG;EAClD,MAAM;IAAEC,QAAQ;IAAEC,SAAS,GAAG,EAAE;IAAEC,KAAK;IAAEC;EAAc,CAAC,GAAGJ,KAAK;EAChE,MAAMK,UAAU,GAAG,IAAAC,sBAAa,EAAEP,SAAU,CAAC;EAE7C,IAAK,CAAEQ,iBAAQ,CAACC,KAAK,CAAEP,QAAS,CAAC,EAAG;IACnC,OAAO,IAAI;EACZ;EAEA,MAAMQ,OAAO,GAAI,+BAA+BJ,UAAY,EAAC;EAC7D,MAAMK,UAAU,GAAG,IAAAC,mBAAU,EAAET,SAAS,EAAE,uBAAuB,EAAE;IAClE,sBAAsB,EAAEE;EACzB,CAAE,CAAC;EAEH,OACC,IAAAQ,MAAA,CAAAC,aAAA;IAAKX,SAAS,EAAGQ;EAAY,GAC1BP,KAAK,IACN,IAAAS,MAAA,CAAAC,aAAA;IACCX,SAAS,EAAC,8BAA8B;IACxCY,EAAE,EAAGL,OAAS;IACd,eAAY;EAAM,GAEhBN,KACE,CACL,EACD,IAAAS,MAAA,CAAAC,aAAA;IAAKE,IAAI,EAAC,OAAO;IAAC,mBAAkBZ,KAAK,GAAGM,OAAO,GAAGO;EAAW,GAC9Df,QACE,CACD,CAAC;AAER;AAAC,IAAAgB,QAAA,GAEclB,SAAS;AAAAmB,OAAA,CAAAC,OAAA,GAAAF,QAAA"}

View File

@@ -0,0 +1,6 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
//# sourceMappingURL=types.js.map

View File

@@ -0,0 +1 @@
{"version":3,"names":[],"sources":["@wordpress/components/src/menu-group/types.ts"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\nexport type MenuGroupProps = {\n\t/**\n\t * A CSS `class` to give to the container element.\n\t */\n\tclassName?: string;\n\t/**\n\t * Hide the top border on the container.\n\t */\n\thideSeparator?: boolean;\n\t/**\n\t * Text to be displayed as the menu group header.\n\t */\n\tlabel?: string;\n\t/**\n\t * The children elements.\n\t */\n\tchildren?: ReactNode;\n};\n"],"mappings":""}