UNPKG

@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
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)); }