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>
73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
import { createElement } from "react";
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
import classnames from 'classnames';
|
|
/**
|
|
* WordPress dependencies
|
|
*/
|
|
import { __ } from '@wordpress/i18n';
|
|
import { forwardRef } from '@wordpress/element';
|
|
import { external } from '@wordpress/icons';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
import { VisuallyHidden } from '../visually-hidden';
|
|
import { StyledIcon } from './styles/external-link-styles';
|
|
function UnforwardedExternalLink(props, ref) {
|
|
const {
|
|
href,
|
|
children,
|
|
className,
|
|
rel = '',
|
|
...additionalProps
|
|
} = props;
|
|
const optimizedRel = [...new Set([...rel.split(' '), 'external', 'noreferrer', 'noopener'].filter(Boolean))].join(' ');
|
|
const classes = classnames('components-external-link', className);
|
|
/* Anchor links are perceived as external links.
|
|
This constant helps check for on page anchor links,
|
|
to prevent them from being opened in the editor. */
|
|
const isInternalAnchor = !!href?.startsWith('#');
|
|
const onClickHandler = event => {
|
|
if (isInternalAnchor) {
|
|
event.preventDefault();
|
|
}
|
|
if (props.onClick) {
|
|
props.onClick(event);
|
|
}
|
|
};
|
|
return (/* eslint-disable react/jsx-no-target-blank */
|
|
createElement("a", {
|
|
...additionalProps,
|
|
className: classes,
|
|
href: href,
|
|
onClick: onClickHandler,
|
|
target: "_blank",
|
|
rel: optimizedRel,
|
|
ref: ref
|
|
}, children, createElement(VisuallyHidden, {
|
|
as: "span"
|
|
}, /* translators: accessibility text */
|
|
__('(opens in a new tab)')), createElement(StyledIcon, {
|
|
icon: external,
|
|
className: "components-external-link__icon"
|
|
}))
|
|
/* eslint-enable react/jsx-no-target-blank */
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Link to an external resource.
|
|
*
|
|
* ```jsx
|
|
* import { ExternalLink } from '@wordpress/components';
|
|
*
|
|
* const MyExternalLink = () => (
|
|
* <ExternalLink href="https://wordpress.org">WordPress.org</ExternalLink>
|
|
* );
|
|
* ```
|
|
*/
|
|
export const ExternalLink = forwardRef(UnforwardedExternalLink);
|
|
export default ExternalLink;
|
|
//# sourceMappingURL=index.js.map
|