@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
38 lines (37 loc) • 2.15 kB
JavaScript
import { createElement as _createElement } from "react";
import { jsx as _jsx } from "react/jsx-runtime";
import * as React from 'react';
import { useEffect } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { getStatusPanelsSelector } from '../../Redux/ActionsReducers/StatusBarRedux';
import { useAdaptable } from '../AdaptableContext';
import { StatusBarPanel } from './StatusBarPanel';
import { useRerender } from '../../components/utils/useRerender';
import { Flex } from '../../components/Flex';
export const AdaptableStatusBar = (props) => {
const adaptable = useAdaptable();
const rerender = useRerender();
useEffect(() => {
return adaptable.api.eventApi.on('AdaptableStateChanged', rerender);
}, [adaptable]);
const statusPanels = useSelector(getStatusPanelsSelector);
const dispatch = useDispatch();
const statusSubPanels = statusPanels.find((statusPanel) => statusPanel.Key === props.context.Key);
const allMenuItems = useSelector((state) => state?.Internal?.SettingsPanelModuleEntries);
return (_jsx(Flex, { className: "ab-StatusBar-Panel", "data-id": props.context.Key, children: statusSubPanels?.StatusBarPanels?.map((subPanel) => {
const module = adaptable.ModuleService.getModuleById(subPanel);
if (!module?.isModuleVisible()) {
return _jsx(React.Fragment, {}, subPanel);
}
const statusBarPanelProps = module.getViewProperties?.()?.getStatusBarPanelProps?.() ?? {};
const moduleInfo = module.moduleInfo;
const onAction = statusBarPanelProps.onAction ??
(() => {
const menuItem = allMenuItems.find((menuItem) => menuItem.category === subPanel);
if (menuItem?.reduxAction) {
dispatch(menuItem.reduxAction);
}
});
return (_createElement(StatusBarPanel, { "data-name": subPanel, ...statusBarPanelProps, tooltip: moduleInfo.FriendlyName, onAction: onAction, icon: statusBarPanelProps.icon ?? moduleInfo.Glyph, key: subPanel }));
}) }));
};