@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
JavaScript
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] ?? '');
});
}