UNPKG

@adaptabletools/adaptable-cjs

Version:

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

48 lines (47 loc) 2.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AdaptableStatusBar = void 0; const tslib_1 = require("tslib"); const React = tslib_1.__importStar(require("react")); const react_1 = require("react"); const react_redux_1 = require("react-redux"); const rebass_1 = require("rebass"); const StatusBarRedux_1 = require("../../Redux/ActionsReducers/StatusBarRedux"); const AdaptableContext_1 = require("../AdaptableContext"); const StatusBarPanel_1 = require("./StatusBarPanel"); const useRerender_1 = require("../../components/utils/useRerender"); const AdaptableStatusBar = (props) => { const adaptable = (0, AdaptableContext_1.useAdaptable)(); const rerender = (0, useRerender_1.useRerender)(); (0, react_1.useEffect)(() => { return adaptable.api.eventApi.on('AdaptableStateChanged', rerender); }, [adaptable]); const statusPanels = (0, react_redux_1.useSelector)(StatusBarRedux_1.getStatusPanelsSelector); const dispatch = (0, react_redux_1.useDispatch)(); const statusSubPanels = statusPanels.find((statusPanel) => statusPanel.Key === props.context.Key); const allMenuItems = (0, react_redux_1.useSelector)((state) => state?.Internal?.SettingsPanelModuleEntries); return (React.createElement(rebass_1.Flex, { className: "ab-StatusBar-Panel", "data-id": props.context.Key }, statusSubPanels?.StatusBarPanels?.map((subPanel) => { const module = adaptable.ModuleService.getModuleById(subPanel); if (!module) { return React.createElement(React.Fragment, { key: subPanel }); } if (!module.isModuleAvailable()) { return React.createElement(React.Fragment, { key: subPanel }); } /** * Both view properties and status panel are optional. */ const statusBarPanelProps = module.getViewProperties?.()?.getStatusBarPanelProps?.() ?? {}; const moduleInfo = module.moduleInfo; const onAction = statusBarPanelProps.onAction ?? (() => { // #by-default-open-settings-panel-for-module const menuItem = allMenuItems.find((menuItem) => menuItem.category === subPanel); if (menuItem?.reduxAction) { dispatch(menuItem.reduxAction); } }); return (React.createElement(StatusBarPanel_1.StatusBarPanel, { "data-name": subPanel, ...statusBarPanelProps, tooltip: moduleInfo.FriendlyName, onAction: onAction, icon: statusBarPanelProps.icon ?? moduleInfo.Glyph, key: subPanel })); }))); }; exports.AdaptableStatusBar = AdaptableStatusBar;