UNPKG

@adaptabletools/adaptable

Version:

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

72 lines (71 loc) 2.63 kB
import { QUICK_SEARCH_DEFAULT_CURRENT_TEXT_MATCH_STYLE, QUICK_SEARCH_DEFAULT_TEXT_MATCH_STYLE, } from '../../Redux/ActionsReducers/QuickSearchRedux'; import { convertAdaptableStyleToCSS } from './StyleHelper'; import { kebabCase } from '../Extensions/StringExtensions'; const QUICK_SEARCH_FIND_CSS_KEYS = [ 'backgroundColor', 'color', 'fontWeight', 'fontStyle', 'fontSize', 'textDecoration', 'borderColor', 'borderRadius', ]; export function isQuickSearchStyleUnset(style) { if (style == null) { return true; } return !Object.entries(style).some(([key, value]) => { if (value == null || value === '') { return false; } if (key === 'Alignment' && value === 'Default') { return false; } if (key === 'TextDecoration' && value === 'None') { return false; } if (key === 'FontWeight' && value === 'Normal') { return false; } if (key === 'FontStyle' && value === 'Normal') { return false; } if (key === 'BorderRadius' && value === 0) { return false; } return true; }); } export function resolveQuickSearchTextMatchStyle(quickSearchState) { if (isQuickSearchStyleUnset(quickSearchState.TextMatchStyle)) { return QUICK_SEARCH_DEFAULT_TEXT_MATCH_STYLE; } return quickSearchState.TextMatchStyle; } export function resolveQuickSearchCellMatchStyle(quickSearchState) { if (isQuickSearchStyleUnset(quickSearchState.CellMatchStyle)) { return undefined; } return quickSearchState.CellMatchStyle; } export function resolveQuickSearchCurrentTextMatchStyle(quickSearchState) { if (isQuickSearchStyleUnset(quickSearchState.CurrentTextMatchStyle)) { return QUICK_SEARCH_DEFAULT_CURRENT_TEXT_MATCH_STYLE; } return quickSearchState.CurrentTextMatchStyle; } export function applyQuickSearchFindCssVars(container, quickSearchState) { if (!container) { return; } const textStyle = resolveQuickSearchTextMatchStyle(quickSearchState); const currentStyle = resolveQuickSearchCurrentTextMatchStyle(quickSearchState); applyQuickSearchFindCssVarsForPrefix(container, 'text', convertAdaptableStyleToCSS(textStyle)); applyQuickSearchFindCssVarsForPrefix(container, 'current', convertAdaptableStyleToCSS(currentStyle)); } function applyQuickSearchFindCssVarsForPrefix(container, prefix, css) { QUICK_SEARCH_FIND_CSS_KEYS.forEach((key) => { container.style.setProperty(`--ab-qs-${prefix}-${kebabCase(key)}`, css[key] ?? ''); }); }