diff --git a/src/services/pmsGrid/AdvanceFilter.jsx b/src/services/pmsGrid/AdvanceFilter.jsx
new file mode 100644
index 00000000..adb05fa0
--- /dev/null
+++ b/src/services/pmsGrid/AdvanceFilter.jsx
@@ -0,0 +1,119 @@
+import { useState, useEffect } from "react";
+
+const OPERATORS = {
+ number: [
+ { key: "eq", label: "Equals" },
+ { key: "neq", label: "Not Equal" },
+ { key: "gt", label: "Greater Than" },
+ { key: "gte", label: "Greater or Equal" },
+ { key: "lt", label: "Less Than" },
+ { key: "lte", label: "Less or Equal" },
+ { key: "between", label: "Between" },
+ ],
+ text: [
+ { key: "contains", label: "Contains" },
+ { key: "starts", label: "Starts With" },
+ { key: "ends", label: "Ends With" },
+ { key: "eq", label: "Equals" },
+ ],
+ date: [
+ { key: "before", label: "Before" },
+ { key: "after", label: "After" },
+ { key: "between", label: "Between" },
+ ],
+};
+
+export function AdvanceFilter({
+ type = "number",
+ value,
+ onApply,
+ onClear,
+}) {
+ const [operation, setOperation] = useState("");
+ const [v1, setV1] = useState("");
+ const [v2, setV2] = useState("");
+
+ useEffect(() => {
+ if (!value) {
+ setOperation("");
+ setV1("");
+ setV2("");
+ return;
+ }
+
+ setOperation(value.operation);
+ setV1(value.value ?? value.from ?? "");
+ setV2(value.to ?? "");
+ }, [value]);
+
+ const apply = () => {
+ if (!operation) return;
+
+ onApply(
+ operation === "between"
+ ? { operation, from: v1, to: v2 }
+ : { operation, value: v1 }
+ );
+ };
+
+ return (
+
e.stopPropagation()}>
+
+
+
+
+
+ {operation && (
+
+ )}
+
+
+
+
+
+
+ );
+}
diff --git a/src/services/pmsGrid/PmsGrid.jsx b/src/services/pmsGrid/PmsGrid.jsx
index 435abee2..5b2a7332 100644
--- a/src/services/pmsGrid/PmsGrid.jsx
+++ b/src/services/pmsGrid/PmsGrid.jsx
@@ -23,7 +23,7 @@ export default function PmsGrid({
features = {},
renderExpanded,
}) {
- const [isFullScreen,setFullScreen] = useState(false)
+ const [isFullScreen, setFullScreen] = useState(false);
const grid = useGridCore({
data,
serverMode,
@@ -59,8 +59,11 @@ export default function PmsGrid({
expanded,
toggleExpand,
setColState,
- onAdvanceFilters,
- setAdanceFilter,
+ // onAdvanceFilters,
+ // setAdanceFilter,
+
+ advanceFilters,
+ setColumnAdvanceFilter,
} = grid;
// --- Pin / Unpin helpers ---
@@ -149,7 +152,11 @@ export default function PmsGrid({
const currentRows = rows;
return (
-
+
@@ -218,14 +225,22 @@ export default function PmsGrid({
}
/>
)}
- setFullScreen(!isFullScreen)}>
+ setFullScreen(!isFullScreen)}
+ >
-
- setGroupBy(null)} advance={onAdvanceFilters} />
+ setGroupBy(null)}
+ advance={advanceFilters}
+ />
{/* Table-Start*/}
pinColumn(col.key, "left")}
onPinRight={() => pinColumn(col.key, "right")}
onUnpin={() => unpinColumn(col.key)}
- onAdvancedFilter={setAdanceFilter}
+ advanceFilters={advanceFilters}
+ setColumnAdvanceFilter={setColumnAdvanceFilter}
/>
)}
{features.resizing && (
@@ -411,7 +427,8 @@ export default function PmsGrid({
))}
- )} {totalRows} rows
+ )}{" "}
+ {totalRows} rows