UNPKG

@adaptabletools/adaptable

Version:

Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements

33 lines (32 loc) 2.3 kB
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime"; import * as React from 'react'; import SimpleButton from '../../components/SimpleButton'; import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions'; import { AdaptablePopover } from '../AdaptablePopover'; import { Flex, Box } from '../../components/Flex'; import { cn } from '../../lib/utils'; export const StatusBarPanel = (props) => { const { icon, content, popover, popoverMinWidth, view, onAction, extraActions, triggerActionOnWrapperClick = true, tooltip, ...flexProps } = props; const handleAction = () => onAction(); if (view) { const View = view; return _jsx(View, {}); } const baseClassName = 'ab-StatusBar__SubPanel'; const handleIconClick = React.useCallback(() => { handleAction(); }, []); const shouldTriggerActionOnWrapperClick = triggerActionOnWrapperClick && !popover; const handleWrapperClick = React.useCallback(() => { if (shouldTriggerActionOnWrapperClick) { handleAction(); } }, [popover, triggerActionOnWrapperClick]); const popoverContent = typeof popover === 'function' ? React.createElement(popover) : popover; const preparedContent = typeof content === 'function' ? React.createElement(content) : content; return (_jsxs(Flex, { ...flexProps, alignItems: "center", justifyContent: "center", className: cn(baseClassName, flexProps.className, shouldTriggerActionOnWrapperClick ? 'twa:cursor-pointer' : 'twa:cursor-default'), onClick: handleWrapperClick, children: [props.icon && (_jsx(SimpleButton, { tooltip: tooltip, color: props.color, icon: props.icon, iconSize: 15, variant: "text", onClick: handleIconClick, className: preparedContent ? 'twa:mr-1' : 'twa:mr-0' })), popover ? (_jsx(AdaptablePopover, { alignPosition: [['BottomCenter', 'TopCenter']], tooltipText: tooltip, showIcon: false, bodyText: [popoverContent], MessageType: 'Info', showEvent: 'focus', hideEvent: "blur", popoverMinWidth: popoverMinWidth, children: preparedContent })) : (preparedContent), ArrayExtensions.IsNotNullOrEmpty(extraActions) && (_jsx(Box, { className: "twa:ml-1", children: extraActions?.map?.((action, index) => React.createElement(action, { key: index })) }))] })); };