UNPKG

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