diff --git a/src/qqq/components/query/QuickFilter.tsx b/src/qqq/components/query/QuickFilter.tsx
index 4170aa6..3807bf3 100644
--- a/src/qqq/components/query/QuickFilter.tsx
+++ b/src/qqq/components/query/QuickFilter.tsx
@@ -32,7 +32,8 @@ import Icon from "@mui/material/Icon";
import IconButton from "@mui/material/IconButton";
import Menu from "@mui/material/Menu";
import TextField from "@mui/material/TextField";
-import React, {SyntheticEvent, useState} from "react";
+import React, {SyntheticEvent, useContext, useState} from "react";
+import QContext from "QContext";
import {QFilterCriteriaWithId} from "qqq/components/query/CustomFilterPanel";
import {getDefaultCriteriaValue, getOperatorOptions, OperatorOption, validateCriteria} from "qqq/components/query/FilterCriteriaRow";
import FilterCriteriaRowValues from "qqq/components/query/FilterCriteriaRowValues";
@@ -60,6 +61,11 @@ QuickFilter.defaultProps =
let seedId = new Date().getTime() % 173237;
+export const quickFilterButtonStyles = {
+ fontSize: "0.75rem", color: "#757575", textTransform: "none", borderRadius: "2rem", border: "1px solid #757575",
+ minWidth: "3.5rem", minHeight: "auto", padding: "0.375rem 0.625rem", whiteSpace: "nowrap"
+}
+
/*******************************************************************************
** Test if a CriteriaParamType represents an actual query criteria - or, if it's
** null or the "tooComplex" placeholder.
@@ -144,6 +150,9 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
const {criteriaIsValid, criteriaStatusTooltip} = validateCriteria(criteria, operatorSelectedValue);
+ const {accentColor} = useContext(QContext);
+
+
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
// handle a change to the criteria from outside this component (e.g., the prop isn't the same as the state) //
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -314,12 +323,15 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
/*******************************************************************************
** event handler for clicking the (x) icon that turns off this quick filter field.
- ** hands off control to the function that was passed in (e.g., from RecordQuery).
+ ** hands off control to the function that was passed in (e.g., from RecordQueryOrig).
*******************************************************************************/
const handleTurningOffQuickFilterField = () =>
{
closeMenu()
- handleRemoveQuickFilterField(criteria?.fieldName);
+ if(handleRemoveQuickFilterField)
+ {
+ handleRemoveQuickFilterField(criteria?.fieldName);
+ }
}
////////////////////////////////////////////////////////////////////////////////////
@@ -361,9 +373,14 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
startIcon = {startIcon}
}
+ let buttonAdditionalStyles: any = {};
let buttonContent = {tableForField?.name != tableMetaData.name ? `${tableForField.label}: ` : ""}{fieldMetaData.label}
if (criteriaIsValid)
{
+ buttonAdditionalStyles.backgroundColor = accentColor + " !important";
+ buttonAdditionalStyles.borderColor = accentColor + " !important";
+ buttonAdditionalStyles.color = "white !important";
+
buttonContent = (
{buttonContent}
@@ -373,8 +390,7 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
let button = fieldMetaData && ;
@@ -395,6 +411,39 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
);
}
+ /*******************************************************************************
+ ** event handler for 'x' button - either resets the criteria or turns off the field.
+ *******************************************************************************/
+ const xClicked = (e: React.MouseEvent) =>
+ {
+ e.stopPropagation();
+ if(criteriaIsValid)
+ {
+ resetCriteria(e);
+ }
+ else
+ {
+ handleTurningOffQuickFilterField();
+ }
+ }
+
+ /////////////////////////////////////////////////////////////////////////////////////
+ // only show the 'x' if it's to clear out a valid criteria on the field, //
+ // or if we were given a callback to remove the quick-filter field from the screen //
+ /////////////////////////////////////////////////////////////////////////////////////
+ let xIcon = ;
+ if(criteriaIsValid || handleRemoveQuickFilterField)
+ {
+ xIcon = close
+ }
+
//////////////////////////////
// return the button & menu //
//////////////////////////////
@@ -402,14 +451,9 @@ export default function QuickFilter({tableMetaData, fullFieldName, fieldMetaData
return (
<>
{button}
+ {xIcon}
{
isOpen &&