@adaptabletools/adaptable
Version:
Powerful AG Grid extension which provides advanced, cutting-edge functionality to meet all DataGrid requirements
23 lines (22 loc) • 2.17 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import React from 'react';
import { useDispatch, useSelector } from 'react-redux';
import * as QuickSearchRedux from '../../Redux/ActionsReducers/QuickSearchRedux';
import { AdaptableFormControlTextClear } from '../Components/Forms/AdaptableFormControlTextClear';
import { useQuickSearchDebounced } from './useQuickSearchDebounced';
import { useAdaptable } from '../AdaptableContext';
import SimpleButton from '../../components/SimpleButton';
import { Flex } from '../../components/Flex';
import { twMerge } from '../../twMerge';
export const QuickSearchInput = (props) => {
const adaptable = useAdaptable();
const QuickSearchText = useSelector((state) => state.QuickSearch.QuickSearchText);
const dispatch = useDispatch();
const onRunQuickSearch = React.useCallback((newQuickSearchText) => dispatch(QuickSearchRedux.QuickSearchRun(newQuickSearchText)), []);
const isServerSideRowModel = adaptable.api.gridApi.getAgGridRowModelType() === 'serverSide';
const [searchText, search] = useQuickSearchDebounced({
QuickSearchText,
onRunQuickSearch,
});
return (_jsx(AdaptableFormControlTextClear, { onClick: props.onClick, "aria-label": 'Quick Search', type: "text", autoFocus: props.autoFocus, placeholder: adaptable.api.optionsApi.getQuickSearchOptions().quickSearchPlaceholder, className: twMerge('ab-QuickSearch__control twa:h-full twa:min-h-input', props.className), value: searchText, OnTextChange: search, inputClassName: twMerge('twa:w-[10rem]', props.inputClassName), actionTools: isServerSideRowModel ? null : (_jsxs(Flex, { flexDirection: "row", alignItems: "center", className: "twa:flex-none", children: [_jsx(SimpleButton, { "aria-label": 'Previous Match', icon: "arrow-up", className: "twa:px-0 twa:py-0 twa:mr-1", disabled: !searchText, variant: "text", onClick: () => adaptable.api.quickSearchApi.gotoPreviousMatch() }), _jsx(SimpleButton, { "aria-label": 'Next Match', icon: "arrow-down", className: "twa:px-0 twa:py-0 twa:mr-1", disabled: !searchText, variant: "text", onClick: () => adaptable.api.quickSearchApi.gotoNextMatch() })] })) }));
};