@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
46 lines (45 loc) • 2.62 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useState } from 'react';
import { ACCESS_LEVEL_FULL, ACCESS_LEVEL_READ_ONLY, } from '../../../Utilities/Constants/GeneralConstants';
import { AdaptableButtonComponent } from './AdaptableButtonComponent';
export const ADAPTABLE_BUTTON_SURFACE_DEFAULTS = {
dashboard: { variant: 'text', tone: 'none' },
customToolbar: { variant: 'outlined', tone: 'neutral' },
toolPanel: { variant: 'text', tone: 'none' },
customToolPanel: { variant: 'text', tone: 'none' },
actionColumn: { variant: 'text', tone: 'none' },
};
export function AdaptableButtonView(props) {
const { button, context, api, accessLevel = ACCESS_LEVEL_FULL, defaults, rerenderOnClick = true, onAfterClick, iconSize, className, style, buttonKey, 'data-name': dataName, 'data-text': dataText, ariaLabel, autoFocus, disabled: disabledOverride, onClick: onClickOverride, } = props;
const [, setRevision] = useState(0);
if (button.hidden?.(button, context)) {
return null;
}
const buttonIcon = api.internalApi.getIconForButton(button, context, iconSize);
const buttonStyle = api.internalApi.getStyleForButton(button, context);
const buttonLabel = api.internalApi.getLabelForButton(button, context);
const buttonTooltip = api.internalApi.getTooltipForButton(button, context);
const iconPosition = api.internalApi.getIconPositionForButton(button);
const fromDefinition = button.disabled?.(button, context) ?? false;
const disabled = disabledOverride ?? (fromDefinition || accessLevel === ACCESS_LEVEL_READ_ONLY);
const variant = buttonStyle?.variant ?? defaults?.variant ?? 'outlined';
const tone = buttonStyle?.tone ?? defaults?.tone ?? 'neutral';
const handleClick = () => {
if (onClickOverride) {
onClickOverride();
}
else {
button.onClick?.(button, context);
}
if (rerenderOnClick) {
setTimeout(() => {
setRevision((revision) => revision + 1);
onAfterClick?.();
}, 16);
}
else {
onAfterClick?.();
}
};
return (_jsx(AdaptableButtonComponent, { "data-name": dataName, "data-text": dataText, "aria-label": ariaLabel ?? buttonLabel, autoFocus: autoFocus, variant: variant, tone: tone, disabled: disabled, tooltip: buttonTooltip, icon: buttonIcon, iconPosition: iconPosition, className: className ?? buttonStyle?.className, style: style, onClick: handleClick, accessLevel: ACCESS_LEVEL_FULL, children: buttonLabel }, buttonKey ?? button.Uuid ?? buttonLabel));
}