@wordpress/components
Version:
UI components for WordPress.
38 lines (37 loc) • 1.08 kB
JavaScript
// packages/components/src/navigator/navigator-button/hook.ts
import { useCallback } from "@wordpress/element";
import { escapeAttribute } from "@wordpress/escape-html";
import { useContextSystem } from "../../context";
import Button from "../../button";
import { useNavigator } from "../use-navigator";
var cssSelectorForAttribute = (attrName, attrValue) => `[${attrName}="${attrValue}"]`;
function useNavigatorButton(props) {
const {
path,
onClick,
as = Button,
attributeName = "id",
...otherProps
} = useContextSystem(props, "Navigator.Button");
const escapedPath = escapeAttribute(path);
const {
goTo
} = useNavigator();
const handleClick = useCallback((e) => {
e.preventDefault();
goTo(escapedPath, {
focusTargetSelector: cssSelectorForAttribute(attributeName, escapedPath)
});
onClick?.(e);
}, [goTo, onClick, attributeName, escapedPath]);
return {
as,
onClick: handleClick,
...otherProps,
[attributeName]: escapedPath
};
}
export {
useNavigatorButton
};
//# sourceMappingURL=hook.js.map