@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
42 lines (41 loc) • 3.3 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
import { Icon } from '../../components/icons';
import Panel from '../../components/Panel';
import SimpleButton from '../../components/SimpleButton';
import { Tag } from '../../components/Tag';
import { SortOrder } from '../../AdaptableState/Common/Enums';
import ArrayExtensions from '../../Utilities/Extensions/ArrayExtensions';
import { AdaptablePopover } from '../AdaptablePopover';
import { ButtonOpen } from '../Components/Buttons/ButtonOpen';
import { Box, Flex } from '../../components/Flex';
export const AvailableSearchLabel = (props) => {
return (_jsxs(Flex, { flexDirection: "column", justifyContent: "space-around", className: "twa:text-start twa:w-full", children: [_jsx(Box, { className: "twa:mb-2 twa:flex-1", children: props.label }), _jsx(Tag, { children: props.expression })] }));
};
export const NamedQuerySelector = (props) => {
const sortedNamedQueries = ArrayExtensions.sortArrayWithProperty(SortOrder.Asc, props.namedQueries, 'Name') ?? [];
const availableSearches = sortedNamedQueries.map((expression) => {
return {
label: (_jsx(AvailableSearchLabel, { label: expression.Name, expression: expression.BooleanExpression })),
icon: expression.BooleanExpression === props.currentQuery ? _jsx(Icon, { name: 'check' }) : null,
onClick: () => props.onSelect(expression.BooleanExpression),
};
});
const cachedQueries = ArrayExtensions.IsNotNullOrEmpty(props.cachedQueries)
? props.cachedQueries
.slice(-3)
.reverse()
.map((item) => ({
label: (_jsx(AvailableSearchLabel, { label: `Grid Filter at ${item.time.toLocaleTimeString('en-US')}`, expression: item.expression })),
icon: _jsx(Icon, { name: 'history' }),
onClick: () => props.setGridFilterExpression(item.expression),
}))
: null;
return ArrayExtensions.IsNotNullOrEmpty(cachedQueries) ||
ArrayExtensions.IsNotNullOrEmpty(availableSearches) ? (_jsx(AdaptablePopover, { tooltipText: "Load Named Query", showIcon: false, popoverMinWidth: 300, bodyText: [
_jsxs(Flex, { flexDirection: "column", className: "twa:justify-stretch", children: [_jsx(Panel, { header: "Named Queries", children: _jsx(Flex, { flexDirection: "column", children: availableSearches.map((item, index) => {
return (_jsx(SimpleButton, { className: "twa:mb-2", variant: "text", onClick: item.onClick, children: item.label }, index));
}) }) }), cachedQueries ? (_jsx(_Fragment, { children: _jsx(Panel, { className: "twa:mt-2", header: "Recent Grid Filters", children: _jsx(Flex, { flexDirection: "column", children: cachedQueries.map((cachedQuery, index) => {
return (_jsx(SimpleButton, { disabled: props.disabled, className: "twa:mb-2", variant: "text", onClick: cachedQuery.onClick, children: cachedQuery.label }, index));
}) }) }) })) : null] }),
], children: _jsx(SimpleButton, { disabled: props.disabled, variant: "text", icon: "folder-open", children: props.children }) })) : (_jsx(ButtonOpen, { tooltip: "Load Named Query", disabled: true }));
};