Files
formipay/node_modules/@wordpress/components/build/navigation/index.js
dwindown e8fbfb14c1 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>
2026-04-18 17:02:14 +07:00

131 lines
3.9 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Navigation = Navigation;
exports.default = void 0;
var _react = require("react");
var _classnames = _interopRequireDefault(require("classnames"));
var _element = require("@wordpress/element");
var _i18n = require("@wordpress/i18n");
var _animate = require("../animate");
var _constants = require("./constants");
var _context = require("./context");
var _navigationStyles = require("./styles/navigation-styles");
var _useCreateNavigationTree = require("./use-create-navigation-tree");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const noop = () => {};
/**
* Render a navigation list with optional groupings and hierarchy.
*
* ```jsx
* import {
* __experimentalNavigation as Navigation,
* __experimentalNavigationGroup as NavigationGroup,
* __experimentalNavigationItem as NavigationItem,
* __experimentalNavigationMenu as NavigationMenu,
* } from '@wordpress/components';
*
* const MyNavigation = () => (
* <Navigation>
* <NavigationMenu title="Home">
* <NavigationGroup title="Group 1">
* <NavigationItem item="item-1" title="Item 1" />
* <NavigationItem item="item-2" title="Item 2" />
* </NavigationGroup>
* <NavigationGroup title="Group 2">
* <NavigationItem
* item="item-3"
* navigateToMenu="category"
* title="Category"
* />
* </NavigationGroup>
* </NavigationMenu>
*
* <NavigationMenu
* backButtonLabel="Home"
* menu="category"
* parentMenu="root"
* title="Category"
* >
* <NavigationItem badge="1" item="child-1" title="Child 1" />
* <NavigationItem item="child-2" title="Child 2" />
* </NavigationMenu>
* </Navigation>
* );
* ```
*/
function Navigation({
activeItem,
activeMenu = _constants.ROOT_MENU,
children,
className,
onActivateMenu = noop
}) {
const [menu, setMenu] = (0, _element.useState)(activeMenu);
const [slideOrigin, setSlideOrigin] = (0, _element.useState)();
const navigationTree = (0, _useCreateNavigationTree.useCreateNavigationTree)();
const defaultSlideOrigin = (0, _i18n.isRTL)() ? 'right' : 'left';
const setActiveMenu = (menuId, slideInOrigin = defaultSlideOrigin) => {
if (!navigationTree.getMenu(menuId)) {
return;
}
setSlideOrigin(slideInOrigin);
setMenu(menuId);
onActivateMenu(menuId);
};
// Used to prevent the sliding animation on mount
const isMounted = (0, _element.useRef)(false);
(0, _element.useEffect)(() => {
if (!isMounted.current) {
isMounted.current = true;
}
}, []);
(0, _element.useEffect)(() => {
if (activeMenu !== menu) {
setActiveMenu(activeMenu);
}
// Ignore exhaustive-deps here, as it would require either a larger refactor or some questionable workarounds.
// See https://github.com/WordPress/gutenberg/pull/41612 for context.
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [activeMenu]);
const context = {
activeItem,
activeMenu: menu,
setActiveMenu,
navigationTree
};
const classes = (0, _classnames.default)('components-navigation', className);
const animateClassName = (0, _animate.getAnimateClassName)({
type: 'slide-in',
origin: slideOrigin
});
return (0, _react.createElement)(_navigationStyles.NavigationUI, {
className: classes
}, (0, _react.createElement)("div", {
key: menu,
className: animateClassName ? (0, _classnames.default)({
[animateClassName]: isMounted.current && slideOrigin
}) : undefined
}, (0, _react.createElement)(_context.NavigationContext.Provider, {
value: context
}, children)));
}
var _default = Navigation;
exports.default = _default;
//# sourceMappingURL=index.js.map