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