@geneui/components
Version:
The Gene UI components library designed for BI tools
35 lines (31 loc) • 2.75 kB
JavaScript
import { _ as __rest } from '../tslib.es6-f211516f.js';
import React__default, { useCallback, useMemo } from 'react';
import { c as classnames } from '../index-031ff73c.js';
import { n as noop } from '../index-a0e4e333.js';
import Icon from '../Icon/index.js';
import { s as styleInject } from '../style-inject.es-746bb8ed.js';
import 'prop-types';
import '../dateValidation-67caec66.js';
import '../_commonjsHelpers-24198af3.js';
import 'react-dom';
import '../_rollupPluginBabelHelpers-e8fb2e5c.js';
var css_248z = "[data-gene-ui-version=\"2.16.5\"] .linkButton{align-items:center;color:var(--hero);cursor:pointer;display:flex;max-width:-webkit-fit-content;max-width:-moz-fit-content;max-width:fit-content;padding:0 .8rem}[data-gene-ui-version=\"2.16.5\"] .linkButton:focus-visible{border-radius:.4rem;outline:.2rem var(--hero) solid}[data-gene-ui-version=\"2.16.5\"] .linkButton__icon{display:inline-block}[data-gene-ui-version=\"2.16.5\"] .linkButton-disable{opacity:.3;pointer-events:none}";
styleInject(css_248z);
const LinkButton = (_a) => {
var { href, onClick, children, iconAfter, className, iconBefore, isDisabled, onMouseDown, ariaLabel } = _a, restProps = __rest(_a, ["href", "onClick", "children", "iconAfter", "className", "iconBefore", "isDisabled", "onMouseDown", "ariaLabel"]);
const onClickHandler = useCallback((e) => onClick === null || onClick === void 0 ? void 0 : onClick(e), [onClick]);
const onMouseDownHandler = useCallback((e) => onMouseDown === null || onMouseDown === void 0 ? void 0 : onMouseDown(e), [onMouseDown]);
const attributes = useMemo(() => (Object.assign(Object.assign({ className: classnames('linkButton', { 'linkButton-disable': isDisabled }, className), onMouseDown: onMouseDownHandler, onClick: onClickHandler }, (ariaLabel ? { 'aria-label': ariaLabel } : {})), restProps)), [isDisabled, className, onMouseDownHandler, onClickHandler, restProps]);
const content = useMemo(() => (React__default.createElement(React__default.Fragment, null,
iconBefore && React__default.createElement(Icon, { type: iconBefore, className: "linkButton__icon" }),
children,
iconAfter && React__default.createElement(Icon, { type: iconAfter, className: "linkButton__icon" }))), [iconBefore, children, iconAfter]);
return (React__default.createElement(React__default.Fragment, null, href ? (React__default.createElement("a", Object.assign({}, attributes, { href: href }), content)) : (React__default.createElement("button", Object.assign({}, attributes, { type: "button" }), content))));
};
LinkButton.defaultProps = {
children: 'LinkButton example',
isDisabled: false,
onMouseDown: noop
};
LinkButton.displayName = 'LinkButton';
export { LinkButton as default };