nest-filter 1.0.14 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -51,7 +51,7 @@ const FilterGroupUI = ({ group, depth, columns, onAddRule, onAddGroup, onUpdateR
51
51
  ? "bg-slate-900 text-slate-50"
52
52
  : "text-slate-500 hover:text-slate-900"}`, children: "OR" })] })] }), jsxs("div", { className: "flex items-center gap-2", children: [jsxs(Button, { variant: "outline", size: "sm", onClick: () => onAddRule(group.id), className: "h-7 text-[10px] font-bold uppercase", children: [jsx(Plus, { className: "mr-1 h-3 w-3" }), " Rule"] }), jsxs(Button, { variant: "outline", size: "sm", onClick: () => onAddGroup(group.id), className: "h-7 text-[10px] font-bold uppercase", children: [jsx(Layers, { className: "mr-1 h-3 w-3" }), " Group"] }), depth > 0 && (jsx(Button, { variant: "ghost", size: "sm", onClick: () => onRemoveItem(group.id), className: "text-slate-400", children: jsx(Trash2, { className: "h-5 w-5 text-red-500" }) }))] })] }), jsxs("div", { className: "space-y-3", children: [group.items.map((item) => {
53
53
  const column = columns.find((c) => c.id === (item.type === "rule" ? item.columnId : null));
54
- return item.type === "rule" ? (jsxs("div", { className: "flex flex-col md:flex-row md:items-center gap-3 p-3 bg-white border border-slate-200 rounded-md shadow-sm", children: [jsx("div", { className: "flex-1 min-w-[140px]", children: jsx(Select, { value: item.columnId, options: columns.map((c) => ({
54
+ return item.type === "rule" ? (jsxs("div", { className: "flex flex-col md:flex-row md:items-center gap-3 p-3 bg-white border border-slate-200 rounded-md shadow-sm", children: [jsx("div", { className: "w-1/5", children: jsx(Select, { value: item.columnId, options: columns.map((c) => ({
55
55
  value: c.id,
56
56
  label: c.label,
57
57
  })), onValueChange: (val) => {
@@ -68,10 +68,10 @@ const FilterGroupUI = ({ group, depth, columns, onAddRule, onAddGroup, onUpdateR
68
68
  : "contains",
69
69
  value: "",
70
70
  });
71
- } }) }), jsx("div", { className: "w-full md:w-44", children: jsx(Select, { value: item.operator, options: getOperatorsForType(column?.type || "string"), onValueChange: (val) => onUpdateRule(item.id, { operator: val }) }) }), jsx("div", { className: "flex-[1.5] min-w-[180px]", children: column?.type === "date" ? (jsx(Input, { type: "date", value: item.value || "", onChange: (e) => onUpdateRule(item.id, { value: e.target.value }) })) : column?.type === "boolean" ? (jsxs("div", { className: "h-10 flex items-center px-3 border border-slate-200 rounded-md bg-slate-50 text-[10px] font-black uppercase tracking-tighter text-slate-400 italic", children: [jsx(Binary, { className: "h-3 w-3 mr-2" }), "Binary state"] })) : column?.type === "select" ? (jsx(Select, { value: item.value || "", placeholder: "Choose option...", options: (column.options || []).map((opt) => ({
71
+ }, className: "w-full" }) }), jsx("div", { className: "w-1/5", children: jsx(Select, { value: item.operator, options: getOperatorsForType(column?.type || "string"), onValueChange: (val) => onUpdateRule(item.id, { operator: val }), className: "w-full" }) }), jsx("div", { className: "w-2/5", children: column?.type === "date" ? (jsx(Input, { type: "date", value: item.value || "", onChange: (e) => onUpdateRule(item.id, { value: e.target.value }), className: "w-full" })) : column?.type === "boolean" ? (jsxs("div", { className: "h-10 flex items-center px-3 border border-slate-200 rounded-md bg-slate-50 text-[10px] font-black uppercase tracking-tighter text-slate-400 italic", children: [jsx(Binary, { className: "h-3 w-3 mr-2" }), "Binary state"] })) : column?.type === "select" ? (jsx(Select, { value: item.value || "", placeholder: "Choose option...", options: (column.options || []).map((opt) => ({
72
72
  value: opt,
73
73
  label: opt,
74
- })), onValueChange: (val) => onUpdateRule(item.id, { value: val }) })) : (jsx(Input, { placeholder: "Search query...", value: item.value || "", onChange: (e) => onUpdateRule(item.id, { value: e.target.value }) })) }), jsx(Button, { variant: "ghost", size: "icon", onClick: () => onRemoveItem(item.id), className: "h-9 w-9 text-slate-300 hover:text-red-500 hover:bg-red-50", children: jsx(Trash2, { className: "h-5 w-5 text-red-500" }) })] }, item.id)) : (jsx(FilterGroupUI, { group: item, depth: depth + 1, columns: columns, onAddRule: onAddRule, onAddGroup: onAddGroup, onUpdateRule: onUpdateRule, onUpdateGroupLogic: onUpdateGroupLogic, onRemoveItem: onRemoveItem }));
74
+ })), onValueChange: (val) => onUpdateRule(item.id, { value: val }), className: "w-full" })) : (jsx(Input, { placeholder: "Search query...", value: item.value || "", onChange: (e) => onUpdateRule(item.id, { value: e.target.value }), className: "w-full" })) }), jsx(Button, { variant: "ghost", size: "icon", onClick: () => onRemoveItem(item.id), className: "h-9 w-9 text-slate-300 hover:text-red-500 hover:bg-red-50", children: jsx(Trash2, { className: "h-5 w-5 text-red-500" }) })] }, item.id)) : (jsx(FilterGroupUI, { group: item, depth: depth + 1, columns: columns, onAddRule: onAddRule, onAddGroup: onAddGroup, onUpdateRule: onUpdateRule, onUpdateGroupLogic: onUpdateGroupLogic, onRemoveItem: onRemoveItem }));
75
75
  }), group.items.length === 0 && (jsxs("div", { className: "flex flex-col items-center justify-center py-6 rounded-md border border-dashed border-slate-200 bg-white/50", children: [jsx(ListFilter, { className: "h-5 w-5 text-slate-300 mb-1" }), jsx("p", { className: "text-[10px] text-slate-400 font-bold uppercase tracking-widest", children: "Add a rule to filter" })] }))] })] }));
76
76
  };
77
77
  const AdvancedFilter = ({ isOpen, onClose, data, columns, setFilteredData, initialFilters, }) => {
@@ -156,7 +156,7 @@ const AdvancedFilter = ({ isOpen, onClose, data, columns, setFilteredData, initi
156
156
  setFilteredData(data);
157
157
  onClose();
158
158
  };
159
- return (jsxs(Dialog, { open: isOpen, onOpenChange: onClose, title: "Advanced Filters", description: "Refine your dataset using structured logic and multi-type comparisons.", children: [jsx("div", { className: "max-h-[60vh] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32", children: jsx(FilterGroupUI, { group: rootGroup, depth: 0, columns: columns, onAddRule: handleAddRule, onAddGroup: handleAddGroup, onUpdateRule: handleUpdateRule, onUpdateGroupLogic: handleUpdateGroupLogic, onRemoveItem: handleRemoveItem }) }), jsxs("div", { className: "flex w-full justify-between items-center gap-4", children: [jsxs(Button, { variant: "ghost", onClick: handleClear, className: "text-slate-400 hover:text-red-500 font-black text-[10px] uppercase tracking-widest gap-2", children: [jsx(FilterX, { className: "h-4 w-4" }), " Reset Filters"] }), jsxs("div", { className: "flex gap-2", children: [jsx(Button, { variant: "outline", onClick: onClose, className: "font-bold h-11 px-6", children: "Cancel" }), jsx(Button, { onClick: handleApply, className: "bg-slate-900 font-bold h-11 px-10 rounded-lg shadow-lg hover:shadow-xl transition-shadow", children: "Apply View" })] })] })] }));
159
+ return (jsxs(Dialog, { open: isOpen, onOpenChange: onClose, title: "Advanced Filters", description: "Refine your dataset using structured logic and multi-type comparisons.", children: [jsx("div", { className: "max-h-[60vh] max-w-[70vw] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32", children: jsx(FilterGroupUI, { group: rootGroup, depth: 0, columns: columns, onAddRule: handleAddRule, onAddGroup: handleAddGroup, onUpdateRule: handleUpdateRule, onUpdateGroupLogic: handleUpdateGroupLogic, onRemoveItem: handleRemoveItem }) }), jsxs("div", { className: "flex w-full justify-between items-center gap-4", children: [jsxs(Button, { variant: "ghost", onClick: handleClear, className: "text-slate-400 hover:text-red-500 font-black text-[10px] uppercase tracking-widest gap-2", children: [jsx(FilterX, { className: "h-4 w-4" }), " Reset Filters"] }), jsxs("div", { className: "flex gap-2", children: [jsx(Button, { variant: "outline", onClick: onClose, className: "font-bold h-11 px-6", children: "Cancel" }), jsx(Button, { onClick: handleApply, className: "bg-slate-900 font-bold h-11 px-10 rounded-lg shadow-lg hover:shadow-xl transition-shadow", children: "Apply View" })] })] })] }));
160
160
  };
161
161
 
162
162
  export { AdvancedFilter };
@@ -1 +1 @@
1
- {"version":3,"file":"AdvancedFilter.js","sources":["../../src/components/AdvancedFilter.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { useState, useEffect, useCallback } from \"react\";\r\nimport {\r\n FilterRule,\r\n FilterGroup,\r\n ColumnDefinition,\r\n LogicalOperator,\r\n FilterOperator,\r\n FilterItem,\r\n} from \"../types\";\r\nimport { Button } from \"./ui/Button\";\r\nimport { Input } from \"./ui/Input\";\r\nimport { Select } from \"./ui/Select\";\r\nimport { Dialog } from \"./ui/Dialog\";\r\nimport {\r\n Plus,\r\n Trash2,\r\n Layers,\r\n Binary,\r\n FilterX,\r\n ListFilter,\r\n} from \"lucide-react\";\r\nimport { applyFilters } from \"../utils/filterLogic\";\r\n\r\ninterface AdvancedFilterProps<T> {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n data: T[];\r\n columns: ColumnDefinition<T>[];\r\n setFilteredData: (data: T[]) => void;\r\n initialFilters?: FilterGroup<T>;\r\n}\r\n\r\nconst getOperatorsForType = (\r\n type: string\r\n): { value: FilterOperator; label: string }[] => {\r\n switch (type) {\r\n case \"string\":\r\n return [\r\n { value: \"contains\", label: \"Contains\" },\r\n { value: \"not_contains\", label: \"Does not contain\" },\r\n { value: \"equals\", label: \"Exact match\" },\r\n ];\r\n case \"select\":\r\n return [\r\n { value: \"equals\", label: \"Is\" },\r\n { value: \"not_equals\", label: \"Is not\" },\r\n ];\r\n case \"number\":\r\n return [\r\n { value: \"equals\", label: \"=\" },\r\n { value: \"not_equals\", label: \"!=\" },\r\n { value: \"gt\", label: \">\" },\r\n { value: \"lt\", label: \"<\" },\r\n { value: \"gte\", label: \">=\" },\r\n { value: \"lte\", label: \"<=\" },\r\n ];\r\n case \"date\":\r\n return [\r\n { value: \"is\", label: \"On date\" },\r\n { value: \"before\", label: \"Before\" },\r\n { value: \"after\", label: \"After\" },\r\n ];\r\n case \"boolean\":\r\n return [\r\n { value: \"true\", label: \"True\" },\r\n { value: \"false\", label: \"False\" },\r\n ];\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nconst FilterGroupUI = <T,>({\r\n group,\r\n depth,\r\n columns,\r\n onAddRule,\r\n onAddGroup,\r\n onUpdateRule,\r\n onUpdateGroupLogic,\r\n onRemoveItem,\r\n}: {\r\n group: FilterGroup<T>;\r\n depth: number;\r\n columns: ColumnDefinition<T>[];\r\n onAddRule: (parentId: string) => void;\r\n onAddGroup: (parentId: string) => void;\r\n onUpdateRule: (ruleId: string, updates: Partial<FilterRule<T>>) => void;\r\n onUpdateGroupLogic: (groupId: string, logic: LogicalOperator) => void;\r\n onRemoveItem: (itemId: string) => void;\r\n}) => {\r\n return (\r\n <div\r\n className={`rounded-lg border border-slate-200 bg-slate-50/50 p-4 mb-4 ${\r\n depth > 0 ? \"ml-6 md:ml-10 relative border-l-2 border-l-slate-300\" : \"\"\r\n }`}\r\n >\r\n <div className=\"flex flex-wrap items-center justify-between gap-4 mb-4\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-[10px] font-bold uppercase tracking-widest text-slate-500\">\r\n Group Logic\r\n </span>\r\n <div className=\"flex rounded-md border border-slate-200 bg-white p-1 shadow-sm\">\r\n <button\r\n onClick={() => onUpdateGroupLogic(group.id, \"AND\")}\r\n className={`px-3 py-1 text-[10px] font-black rounded-sm transition-all ${\r\n group.logic === \"AND\"\r\n ? \"bg-slate-900 text-slate-50\"\r\n : \"text-slate-500 hover:text-slate-900\"\r\n }`}\r\n >\r\n AND\r\n </button>\r\n <button\r\n onClick={() => onUpdateGroupLogic(group.id, \"OR\")}\r\n className={`px-3 py-1 text-[10px] font-black rounded-sm transition-all ${\r\n group.logic === \"OR\"\r\n ? \"bg-slate-900 text-slate-50\"\r\n : \"text-slate-500 hover:text-slate-900\"\r\n }`}\r\n >\r\n OR\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => onAddRule(group.id)}\r\n className=\"h-7 text-[10px] font-bold uppercase\"\r\n >\r\n <Plus className=\"mr-1 h-3 w-3\" /> Rule\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => onAddGroup(group.id)}\r\n className=\"h-7 text-[10px] font-bold uppercase\"\r\n >\r\n <Layers className=\"mr-1 h-3 w-3\" /> Group\r\n </Button>\r\n {depth > 0 && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onRemoveItem(group.id)}\r\n className=\"text-slate-400\"\r\n >\r\n <Trash2 className=\"h-5 w-5 text-red-500\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"space-y-3\">\r\n {group.items.map((item) => {\r\n const column = columns.find(\r\n (c) => c.id === (item.type === \"rule\" ? item.columnId : null)\r\n );\r\n return item.type === \"rule\" ? (\r\n <div\r\n key={item.id}\r\n className=\"flex flex-col md:flex-row md:items-center gap-3 p-3 bg-white border border-slate-200 rounded-md shadow-sm\"\r\n >\r\n <div className=\"flex-1 min-w-[140px]\">\r\n <Select\r\n value={item.columnId as string}\r\n options={columns.map((c) => ({\r\n value: c.id as string,\r\n label: c.label,\r\n }))}\r\n onValueChange={(val) => {\r\n const colId = val as keyof T;\r\n const col = columns.find((c) => c.id === colId);\r\n onUpdateRule(item.id, {\r\n columnId: colId,\r\n operator:\r\n col?.type === \"date\"\r\n ? \"is\"\r\n : col?.type === \"number\"\r\n ? \"equals\"\r\n : col?.type === \"select\"\r\n ? \"equals\"\r\n : \"contains\",\r\n value: \"\",\r\n });\r\n }}\r\n />\r\n </div>\r\n <div className=\"w-full md:w-44\">\r\n <Select\r\n value={item.operator}\r\n options={getOperatorsForType(column?.type || \"string\")}\r\n onValueChange={(val) =>\r\n onUpdateRule(item.id, { operator: val as FilterOperator })\r\n }\r\n />\r\n </div>\r\n <div className=\"flex-[1.5] min-w-[180px]\">\r\n {column?.type === \"date\" ? (\r\n <Input\r\n type=\"date\"\r\n value={item.value || \"\"}\r\n onChange={(e) =>\r\n onUpdateRule(item.id, { value: e.target.value })\r\n }\r\n />\r\n ) : column?.type === \"boolean\" ? (\r\n <div className=\"h-10 flex items-center px-3 border border-slate-200 rounded-md bg-slate-50 text-[10px] font-black uppercase tracking-tighter text-slate-400 italic\">\r\n <Binary className=\"h-3 w-3 mr-2\" />\r\n Binary state\r\n </div>\r\n ) : column?.type === \"select\" ? (\r\n <Select\r\n value={item.value || \"\"}\r\n placeholder=\"Choose option...\"\r\n options={(column.options || []).map((opt) => ({\r\n value: opt,\r\n label: opt,\r\n }))}\r\n onValueChange={(val) =>\r\n onUpdateRule(item.id, { value: val })\r\n }\r\n />\r\n ) : (\r\n <Input\r\n placeholder=\"Search query...\"\r\n value={item.value || \"\"}\r\n onChange={(e) =>\r\n onUpdateRule(item.id, { value: e.target.value })\r\n }\r\n />\r\n )}\r\n </div>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => onRemoveItem(item.id)}\r\n className=\"h-9 w-9 text-slate-300 hover:text-red-500 hover:bg-red-50\"\r\n >\r\n <Trash2 className=\"h-5 w-5 text-red-500\" />\r\n </Button>\r\n </div>\r\n ) : (\r\n <FilterGroupUI\r\n group={item}\r\n depth={depth + 1}\r\n columns={columns}\r\n onAddRule={onAddRule}\r\n onAddGroup={onAddGroup}\r\n onUpdateRule={onUpdateRule}\r\n onUpdateGroupLogic={onUpdateGroupLogic}\r\n onRemoveItem={onRemoveItem}\r\n />\r\n );\r\n })}\r\n {group.items.length === 0 && (\r\n <div className=\"flex flex-col items-center justify-center py-6 rounded-md border border-dashed border-slate-200 bg-white/50\">\r\n <ListFilter className=\"h-5 w-5 text-slate-300 mb-1\" />\r\n <p className=\"text-[10px] text-slate-400 font-bold uppercase tracking-widest\">\r\n Add a rule to filter\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const AdvancedFilter = <T,>({\r\n isOpen,\r\n onClose,\r\n data,\r\n columns,\r\n setFilteredData,\r\n initialFilters,\r\n}: AdvancedFilterProps<T>) => {\r\n const [rootGroup, setRootGroup] = useState<FilterGroup<T>>({\r\n type: \"group\",\r\n id: \"root\",\r\n logic: \"AND\",\r\n items: [],\r\n });\r\n\r\n useEffect(() => {\r\n if (initialFilters) setRootGroup(initialFilters);\r\n }, [initialFilters, isOpen]);\r\n\r\n const updateItemRecursively = useCallback(\r\n (\r\n group: FilterGroup<T>,\r\n targetId: string,\r\n updater: (item: FilterItem<T>) => FilterItem<T> | null\r\n ): FilterGroup<T> => {\r\n if (group.id === targetId) return updater(group) as FilterGroup<T>;\r\n return {\r\n ...group,\r\n items: group.items\r\n .map((item) => {\r\n if (item.id === targetId) return updater(item);\r\n if (item.type === \"group\")\r\n return updateItemRecursively(item, targetId, updater);\r\n return item;\r\n })\r\n .filter(Boolean) as FilterItem<T>[],\r\n };\r\n },\r\n []\r\n );\r\n\r\n const handleAddRule = useCallback(\r\n (parentId: string) => {\r\n const firstCol = columns[0];\r\n const newRule: FilterRule<T> = {\r\n type: \"rule\",\r\n id: Math.random().toString(36).substr(2, 9),\r\n columnId: firstCol.id,\r\n operator:\r\n firstCol.type === \"string\"\r\n ? \"contains\"\r\n : firstCol.type === \"select\"\r\n ? \"equals\"\r\n : \"equals\",\r\n value: \"\",\r\n };\r\n setRootGroup((prev) =>\r\n updateItemRecursively(prev, parentId, (group) => ({\r\n ...(group as FilterGroup<T>),\r\n items: [...(group as FilterGroup<T>).items, newRule],\r\n }))\r\n );\r\n },\r\n [columns, updateItemRecursively]\r\n );\r\n\r\n const handleAddGroup = useCallback(\r\n (parentId: string) => {\r\n const newGroup: FilterGroup<T> = {\r\n type: \"group\",\r\n id: Math.random().toString(36).substr(2, 9),\r\n logic: \"AND\",\r\n items: [],\r\n };\r\n setRootGroup((prev) =>\r\n updateItemRecursively(prev, parentId, (group) => ({\r\n ...(group as FilterGroup<T>),\r\n items: [...(group as FilterGroup<T>).items, newGroup],\r\n }))\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleUpdateRule = useCallback(\r\n (ruleId: string, updates: Partial<FilterRule<T>>) => {\r\n setRootGroup((prev) =>\r\n updateItemRecursively(\r\n prev,\r\n ruleId,\r\n (rule) => ({ ...rule, ...updates } as FilterRule<T>)\r\n )\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleUpdateGroupLogic = useCallback(\r\n (groupId: string, logic: LogicalOperator) => {\r\n setRootGroup((prev) =>\r\n updateItemRecursively(\r\n prev,\r\n groupId,\r\n (group) => ({ ...group, logic } as FilterGroup<T>)\r\n )\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleRemoveItem = useCallback(\r\n (itemId: string) => {\r\n setRootGroup((prev) => updateItemRecursively(prev, itemId, () => null));\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleApply = () => {\r\n const filtered = applyFilters(data, rootGroup, columns);\r\n setFilteredData(filtered);\r\n onClose();\r\n };\r\n\r\n const handleClear = () => {\r\n const emptyGroup: FilterGroup<T> = {\r\n type: \"group\",\r\n id: \"root\",\r\n logic: \"AND\",\r\n items: [],\r\n };\r\n setRootGroup(emptyGroup);\r\n setFilteredData(data);\r\n onClose();\r\n };\r\n\r\n return (\r\n <Dialog\r\n open={isOpen}\r\n onOpenChange={onClose}\r\n title=\"Advanced Filters\"\r\n description=\"Refine your dataset using structured logic and multi-type comparisons.\"\r\n >\r\n <div className=\"max-h-[60vh] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32\">\r\n <FilterGroupUI\r\n group={rootGroup}\r\n depth={0}\r\n columns={columns}\r\n onAddRule={handleAddRule}\r\n onAddGroup={handleAddGroup}\r\n onUpdateRule={handleUpdateRule}\r\n onUpdateGroupLogic={handleUpdateGroupLogic}\r\n onRemoveItem={handleRemoveItem}\r\n />\r\n </div>\r\n <div className=\"flex w-full justify-between items-center gap-4\">\r\n <Button\r\n variant=\"ghost\"\r\n onClick={handleClear}\r\n className=\"text-slate-400 hover:text-red-500 font-black text-[10px] uppercase tracking-widest gap-2\"\r\n >\r\n <FilterX className=\"h-4 w-4\" /> Reset Filters\r\n </Button>\r\n <div className=\"flex gap-2\">\r\n <Button\r\n variant=\"outline\"\r\n onClick={onClose}\r\n className=\"font-bold h-11 px-6\"\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={handleApply}\r\n className=\"bg-slate-900 font-bold h-11 px-10 rounded-lg shadow-lg hover:shadow-xl transition-shadow\"\r\n >\r\n Apply View\r\n </Button>\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"AdvancedFilter.js","sources":["../../src/components/AdvancedFilter.tsx"],"sourcesContent":["import * as React from \"react\";\r\nimport { useState, useEffect, useCallback } from \"react\";\r\nimport {\r\n FilterRule,\r\n FilterGroup,\r\n ColumnDefinition,\r\n LogicalOperator,\r\n FilterOperator,\r\n FilterItem,\r\n} from \"../types\";\r\nimport { Button } from \"./ui/Button\";\r\nimport { Input } from \"./ui/Input\";\r\nimport { Select } from \"./ui/Select\";\r\nimport { Dialog } from \"./ui/Dialog\";\r\nimport {\r\n Plus,\r\n Trash2,\r\n Layers,\r\n Binary,\r\n FilterX,\r\n ListFilter,\r\n} from \"lucide-react\";\r\nimport { applyFilters } from \"../utils/filterLogic\";\r\n\r\ninterface AdvancedFilterProps<T> {\r\n isOpen: boolean;\r\n onClose: () => void;\r\n data: T[];\r\n columns: ColumnDefinition<T>[];\r\n setFilteredData: (data: T[]) => void;\r\n initialFilters?: FilterGroup<T>;\r\n}\r\n\r\nconst getOperatorsForType = (\r\n type: string\r\n): { value: FilterOperator; label: string }[] => {\r\n switch (type) {\r\n case \"string\":\r\n return [\r\n { value: \"contains\", label: \"Contains\" },\r\n { value: \"not_contains\", label: \"Does not contain\" },\r\n { value: \"equals\", label: \"Exact match\" },\r\n ];\r\n case \"select\":\r\n return [\r\n { value: \"equals\", label: \"Is\" },\r\n { value: \"not_equals\", label: \"Is not\" },\r\n ];\r\n case \"number\":\r\n return [\r\n { value: \"equals\", label: \"=\" },\r\n { value: \"not_equals\", label: \"!=\" },\r\n { value: \"gt\", label: \">\" },\r\n { value: \"lt\", label: \"<\" },\r\n { value: \"gte\", label: \">=\" },\r\n { value: \"lte\", label: \"<=\" },\r\n ];\r\n case \"date\":\r\n return [\r\n { value: \"is\", label: \"On date\" },\r\n { value: \"before\", label: \"Before\" },\r\n { value: \"after\", label: \"After\" },\r\n ];\r\n case \"boolean\":\r\n return [\r\n { value: \"true\", label: \"True\" },\r\n { value: \"false\", label: \"False\" },\r\n ];\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nconst FilterGroupUI = <T,>({\r\n group,\r\n depth,\r\n columns,\r\n onAddRule,\r\n onAddGroup,\r\n onUpdateRule,\r\n onUpdateGroupLogic,\r\n onRemoveItem,\r\n}: {\r\n group: FilterGroup<T>;\r\n depth: number;\r\n columns: ColumnDefinition<T>[];\r\n onAddRule: (parentId: string) => void;\r\n onAddGroup: (parentId: string) => void;\r\n onUpdateRule: (ruleId: string, updates: Partial<FilterRule<T>>) => void;\r\n onUpdateGroupLogic: (groupId: string, logic: LogicalOperator) => void;\r\n onRemoveItem: (itemId: string) => void;\r\n}) => {\r\n return (\r\n <div\r\n className={`rounded-lg border border-slate-200 bg-slate-50/50 p-4 mb-4 ${\r\n depth > 0 ? \"ml-6 md:ml-10 relative border-l-2 border-l-slate-300\" : \"\"\r\n }`}\r\n >\r\n <div className=\"flex flex-wrap items-center justify-between gap-4 mb-4\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-[10px] font-bold uppercase tracking-widest text-slate-500\">\r\n Group Logic\r\n </span>\r\n <div className=\"flex rounded-md border border-slate-200 bg-white p-1 shadow-sm\">\r\n <button\r\n onClick={() => onUpdateGroupLogic(group.id, \"AND\")}\r\n className={`px-3 py-1 text-[10px] font-black rounded-sm transition-all ${\r\n group.logic === \"AND\"\r\n ? \"bg-slate-900 text-slate-50\"\r\n : \"text-slate-500 hover:text-slate-900\"\r\n }`}\r\n >\r\n AND\r\n </button>\r\n <button\r\n onClick={() => onUpdateGroupLogic(group.id, \"OR\")}\r\n className={`px-3 py-1 text-[10px] font-black rounded-sm transition-all ${\r\n group.logic === \"OR\"\r\n ? \"bg-slate-900 text-slate-50\"\r\n : \"text-slate-500 hover:text-slate-900\"\r\n }`}\r\n >\r\n OR\r\n </button>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => onAddRule(group.id)}\r\n className=\"h-7 text-[10px] font-bold uppercase\"\r\n >\r\n <Plus className=\"mr-1 h-3 w-3\" /> Rule\r\n </Button>\r\n <Button\r\n variant=\"outline\"\r\n size=\"sm\"\r\n onClick={() => onAddGroup(group.id)}\r\n className=\"h-7 text-[10px] font-bold uppercase\"\r\n >\r\n <Layers className=\"mr-1 h-3 w-3\" /> Group\r\n </Button>\r\n {depth > 0 && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onRemoveItem(group.id)}\r\n className=\"text-slate-400\"\r\n >\r\n <Trash2 className=\"h-5 w-5 text-red-500\" />\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n <div className=\"space-y-3\">\r\n {group.items.map((item) => {\r\n const column = columns.find(\r\n (c) => c.id === (item.type === \"rule\" ? item.columnId : null)\r\n );\r\n return item.type === \"rule\" ? (\r\n <div\r\n key={item.id}\r\n className=\"flex flex-col md:flex-row md:items-center gap-3 p-3 bg-white border border-slate-200 rounded-md shadow-sm\"\r\n >\r\n <div className=\"w-1/5\">\r\n <Select\r\n value={item.columnId as string}\r\n options={columns.map((c) => ({\r\n value: c.id as string,\r\n label: c.label,\r\n }))}\r\n onValueChange={(val) => {\r\n const colId = val as keyof T;\r\n const col = columns.find((c) => c.id === colId);\r\n onUpdateRule(item.id, {\r\n columnId: colId,\r\n operator:\r\n col?.type === \"date\"\r\n ? \"is\"\r\n : col?.type === \"number\"\r\n ? \"equals\"\r\n : col?.type === \"select\"\r\n ? \"equals\"\r\n : \"contains\",\r\n value: \"\",\r\n });\r\n }}\r\n className=\"w-full\"\r\n />\r\n </div>\r\n <div className=\"w-1/5\">\r\n <Select\r\n value={item.operator}\r\n options={getOperatorsForType(column?.type || \"string\")}\r\n onValueChange={(val) =>\r\n onUpdateRule(item.id, { operator: val as FilterOperator })\r\n }\r\n className=\"w-full\"\r\n />\r\n </div>\r\n <div className=\"w-2/5\">\r\n {column?.type === \"date\" ? (\r\n <Input\r\n type=\"date\"\r\n value={item.value || \"\"}\r\n onChange={(e) =>\r\n onUpdateRule(item.id, { value: e.target.value })\r\n }\r\n className=\"w-full\"\r\n />\r\n ) : column?.type === \"boolean\" ? (\r\n <div className=\"h-10 flex items-center px-3 border border-slate-200 rounded-md bg-slate-50 text-[10px] font-black uppercase tracking-tighter text-slate-400 italic\">\r\n <Binary className=\"h-3 w-3 mr-2\" />\r\n Binary state\r\n </div>\r\n ) : column?.type === \"select\" ? (\r\n <Select\r\n value={item.value || \"\"}\r\n placeholder=\"Choose option...\"\r\n options={(column.options || []).map((opt) => ({\r\n value: opt,\r\n label: opt,\r\n }))}\r\n onValueChange={(val) =>\r\n onUpdateRule(item.id, { value: val })\r\n }\r\n className=\"w-full\"\r\n />\r\n ) : (\r\n <Input\r\n placeholder=\"Search query...\"\r\n value={item.value || \"\"}\r\n onChange={(e) =>\r\n onUpdateRule(item.id, { value: e.target.value })\r\n }\r\n className=\"w-full\"\r\n />\r\n )}\r\n </div>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"icon\"\r\n onClick={() => onRemoveItem(item.id)}\r\n className=\"h-9 w-9 text-slate-300 hover:text-red-500 hover:bg-red-50\"\r\n >\r\n <Trash2 className=\"h-5 w-5 text-red-500\" />\r\n </Button>\r\n </div>\r\n ) : (\r\n <FilterGroupUI\r\n group={item}\r\n depth={depth + 1}\r\n columns={columns}\r\n onAddRule={onAddRule}\r\n onAddGroup={onAddGroup}\r\n onUpdateRule={onUpdateRule}\r\n onUpdateGroupLogic={onUpdateGroupLogic}\r\n onRemoveItem={onRemoveItem}\r\n />\r\n );\r\n })}\r\n {group.items.length === 0 && (\r\n <div className=\"flex flex-col items-center justify-center py-6 rounded-md border border-dashed border-slate-200 bg-white/50\">\r\n <ListFilter className=\"h-5 w-5 text-slate-300 mb-1\" />\r\n <p className=\"text-[10px] text-slate-400 font-bold uppercase tracking-widest\">\r\n Add a rule to filter\r\n </p>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport const AdvancedFilter = <T,>({\r\n isOpen,\r\n onClose,\r\n data,\r\n columns,\r\n setFilteredData,\r\n initialFilters,\r\n}: AdvancedFilterProps<T>) => {\r\n const [rootGroup, setRootGroup] = useState<FilterGroup<T>>({\r\n type: \"group\",\r\n id: \"root\",\r\n logic: \"AND\",\r\n items: [],\r\n });\r\n\r\n useEffect(() => {\r\n if (initialFilters) setRootGroup(initialFilters);\r\n }, [initialFilters, isOpen]);\r\n\r\n const updateItemRecursively = useCallback(\r\n (\r\n group: FilterGroup<T>,\r\n targetId: string,\r\n updater: (item: FilterItem<T>) => FilterItem<T> | null\r\n ): FilterGroup<T> => {\r\n if (group.id === targetId) return updater(group) as FilterGroup<T>;\r\n return {\r\n ...group,\r\n items: group.items\r\n .map((item) => {\r\n if (item.id === targetId) return updater(item);\r\n if (item.type === \"group\")\r\n return updateItemRecursively(item, targetId, updater);\r\n return item;\r\n })\r\n .filter(Boolean) as FilterItem<T>[],\r\n };\r\n },\r\n []\r\n );\r\n\r\n const handleAddRule = useCallback(\r\n (parentId: string) => {\r\n const firstCol = columns[0];\r\n const newRule: FilterRule<T> = {\r\n type: \"rule\",\r\n id: Math.random().toString(36).substr(2, 9),\r\n columnId: firstCol.id,\r\n operator:\r\n firstCol.type === \"string\"\r\n ? \"contains\"\r\n : firstCol.type === \"select\"\r\n ? \"equals\"\r\n : \"equals\",\r\n value: \"\",\r\n };\r\n setRootGroup((prev) =>\r\n updateItemRecursively(prev, parentId, (group) => ({\r\n ...(group as FilterGroup<T>),\r\n items: [...(group as FilterGroup<T>).items, newRule],\r\n }))\r\n );\r\n },\r\n [columns, updateItemRecursively]\r\n );\r\n\r\n const handleAddGroup = useCallback(\r\n (parentId: string) => {\r\n const newGroup: FilterGroup<T> = {\r\n type: \"group\",\r\n id: Math.random().toString(36).substr(2, 9),\r\n logic: \"AND\",\r\n items: [],\r\n };\r\n setRootGroup((prev) =>\r\n updateItemRecursively(prev, parentId, (group) => ({\r\n ...(group as FilterGroup<T>),\r\n items: [...(group as FilterGroup<T>).items, newGroup],\r\n }))\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleUpdateRule = useCallback(\r\n (ruleId: string, updates: Partial<FilterRule<T>>) => {\r\n setRootGroup((prev) =>\r\n updateItemRecursively(\r\n prev,\r\n ruleId,\r\n (rule) => ({ ...rule, ...updates } as FilterRule<T>)\r\n )\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleUpdateGroupLogic = useCallback(\r\n (groupId: string, logic: LogicalOperator) => {\r\n setRootGroup((prev) =>\r\n updateItemRecursively(\r\n prev,\r\n groupId,\r\n (group) => ({ ...group, logic } as FilterGroup<T>)\r\n )\r\n );\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleRemoveItem = useCallback(\r\n (itemId: string) => {\r\n setRootGroup((prev) => updateItemRecursively(prev, itemId, () => null));\r\n },\r\n [updateItemRecursively]\r\n );\r\n\r\n const handleApply = () => {\r\n const filtered = applyFilters(data, rootGroup, columns);\r\n setFilteredData(filtered);\r\n onClose();\r\n };\r\n\r\n const handleClear = () => {\r\n const emptyGroup: FilterGroup<T> = {\r\n type: \"group\",\r\n id: \"root\",\r\n logic: \"AND\",\r\n items: [],\r\n };\r\n setRootGroup(emptyGroup);\r\n setFilteredData(data);\r\n onClose();\r\n };\r\n\r\n return (\r\n <Dialog\r\n open={isOpen}\r\n onOpenChange={onClose}\r\n title=\"Advanced Filters\"\r\n description=\"Refine your dataset using structured logic and multi-type comparisons.\"\r\n >\r\n <div className=\"max-h-[60vh] max-w-[70vw] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32\">\r\n <FilterGroupUI\r\n group={rootGroup}\r\n depth={0}\r\n columns={columns}\r\n onAddRule={handleAddRule}\r\n onAddGroup={handleAddGroup}\r\n onUpdateRule={handleUpdateRule}\r\n onUpdateGroupLogic={handleUpdateGroupLogic}\r\n onRemoveItem={handleRemoveItem}\r\n />\r\n </div>\r\n <div className=\"flex w-full justify-between items-center gap-4\">\r\n <Button\r\n variant=\"ghost\"\r\n onClick={handleClear}\r\n className=\"text-slate-400 hover:text-red-500 font-black text-[10px] uppercase tracking-widest gap-2\"\r\n >\r\n <FilterX className=\"h-4 w-4\" /> Reset Filters\r\n </Button>\r\n <div className=\"flex gap-2\">\r\n <Button\r\n variant=\"outline\"\r\n onClick={onClose}\r\n className=\"font-bold h-11 px-6\"\r\n >\r\n Cancel\r\n </Button>\r\n <Button\r\n onClick={handleApply}\r\n className=\"bg-slate-900 font-bold h-11 px-10 rounded-lg shadow-lg hover:shadow-xl transition-shadow\"\r\n >\r\n Apply View\r\n </Button>\r\n </div>\r\n </div>\r\n </Dialog>\r\n );\r\n};\r\n"],"names":["_jsxs","_jsx"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { X } from 'lucide-react';
4
4
  const Dialog = ({ open, onOpenChange, title, description, children, footer }) => {
5
5
  if (!open)
6
6
  return null;
7
- return (jsx("div", { className: "fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-sm animate-in fade-in duration-200", children: jsxs("div", { className: "relative w-full max-w-4xl rounded-lg border border-slate-200 bg-white p-6 shadow-lg animate-in zoom-in-95 duration-200", children: [jsxs("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left mb-6", children: [jsx("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }), description && jsx("p", { className: "text-sm text-slate-500", children: description }), jsxs("button", { onClick: () => onOpenChange(false), className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none", children: [jsx(X, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "Close" })] })] }), jsx("div", { className: "py-2", children: children }), footer && (jsx("div", { className: "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6", children: footer }))] }) }));
7
+ return (jsx("div", { className: "fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-3xl animate-in fade-in duration-200", children: jsxs("div", { className: "relative w-full max-w-4xl rounded-lg border border-slate-200 bg-white p-6 shadow-lg animate-in zoom-in-95 duration-200", children: [jsxs("div", { className: "flex flex-col space-y-1.5 text-center sm:text-left mb-6", children: [jsx("h2", { className: "text-lg font-semibold leading-none tracking-tight", children: title }), description && jsx("p", { className: "text-sm text-slate-500", children: description }), jsxs("button", { onClick: () => onOpenChange(false), className: "absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none", children: [jsx(X, { className: "h-4 w-4" }), jsx("span", { className: "sr-only", children: "Close" })] })] }), jsx("div", { className: "py-2", children: children }), footer && (jsx("div", { className: "flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6", children: footer }))] }) }));
8
8
  };
9
9
 
10
10
  export { Dialog };
@@ -1 +1 @@
1
- {"version":3,"file":"Dialog.js","sources":["../../../src/components/ui/Dialog.tsx"],"sourcesContent":["\r\nimport React from 'react';\r\nimport { X } from 'lucide-react';\r\n\r\ninterface DialogProps {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n title: string;\r\n description?: string;\r\n children: React.ReactNode;\r\n footer?: React.ReactNode;\r\n}\r\n\r\nexport const Dialog: React.FC<DialogProps> = ({ open, onOpenChange, title, description, children, footer }) => {\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-sm animate-in fade-in duration-200\">\r\n <div className=\"relative w-full max-w-4xl rounded-lg border border-slate-200 bg-white p-6 shadow-lg animate-in zoom-in-95 duration-200\">\r\n <div className=\"flex flex-col space-y-1.5 text-center sm:text-left mb-6\">\r\n <h2 className=\"text-lg font-semibold leading-none tracking-tight\">{title}</h2>\r\n {description && <p className=\"text-sm text-slate-500\">{description}</p>}\r\n <button\r\n onClick={() => onOpenChange(false)}\r\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n <div className=\"py-2\">\r\n {children}\r\n </div>\r\n {footer && (\r\n <div className=\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6\">\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["_jsx","_jsxs"],"mappings":";;;AAaO,MAAM,MAAM,GAA0B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAI;AAC5G,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;AAEtB,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,kJAAkJ,EAAA,QAAA,EAC/JC,cAAK,SAAS,EAAC,wHAAwH,EAAA,QAAA,EAAA,CACrIA,cAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EAAA,CACtED,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAE,KAAK,GAAM,EAC7E,WAAW,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wBAAwB,EAAA,QAAA,EAAE,WAAW,EAAA,CAAK,EACvEC,iBACE,OAAO,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EAClC,SAAS,EAAC,2MAA2M,aAErND,GAAA,CAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACzBA,cAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,IACL,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EAClB,QAAQ,GACL,EACL,MAAM,KACLA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,YAChF,MAAM,EAAA,CACH,CACP,CAAA,EAAA,CACG,EAAA,CACF;AAEV;;;;"}
1
+ {"version":3,"file":"Dialog.js","sources":["../../../src/components/ui/Dialog.tsx"],"sourcesContent":["\r\nimport React from 'react';\r\nimport { X } from 'lucide-react';\r\n\r\ninterface DialogProps {\r\n open: boolean;\r\n onOpenChange: (open: boolean) => void;\r\n title: string;\r\n description?: string;\r\n children: React.ReactNode;\r\n footer?: React.ReactNode;\r\n}\r\n\r\nexport const Dialog: React.FC<DialogProps> = ({ open, onOpenChange, title, description, children, footer }) => {\r\n if (!open) return null;\r\n\r\n return (\r\n <div className=\"fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-3xl animate-in fade-in duration-200\">\r\n <div className=\"relative w-full max-w-4xl rounded-lg border border-slate-200 bg-white p-6 shadow-lg animate-in zoom-in-95 duration-200\">\r\n <div className=\"flex flex-col space-y-1.5 text-center sm:text-left mb-6\">\r\n <h2 className=\"text-lg font-semibold leading-none tracking-tight\">{title}</h2>\r\n {description && <p className=\"text-sm text-slate-500\">{description}</p>}\r\n <button\r\n onClick={() => onOpenChange(false)}\r\n className=\"absolute right-4 top-4 rounded-sm opacity-70 ring-offset-white transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-slate-950 focus:ring-offset-2 disabled:pointer-events-none\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n <span className=\"sr-only\">Close</span>\r\n </button>\r\n </div>\r\n <div className=\"py-2\">\r\n {children}\r\n </div>\r\n {footer && (\r\n <div className=\"flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2 mt-6\">\r\n {footer}\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n};\r\n"],"names":["_jsx","_jsxs"],"mappings":";;;AAaO,MAAM,MAAM,GAA0B,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAI;AAC5G,IAAA,IAAI,CAAC,IAAI;AAAE,QAAA,OAAO,IAAI;AAEtB,IAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mJAAmJ,EAAA,QAAA,EAChKC,cAAK,SAAS,EAAC,wHAAwH,EAAA,QAAA,EAAA,CACrIA,cAAK,SAAS,EAAC,yDAAyD,EAAA,QAAA,EAAA,CACtED,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mDAAmD,EAAA,QAAA,EAAE,KAAK,GAAM,EAC7E,WAAW,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,wBAAwB,EAAA,QAAA,EAAE,WAAW,EAAA,CAAK,EACvEC,iBACE,OAAO,EAAE,MAAM,YAAY,CAAC,KAAK,CAAC,EAClC,SAAS,EAAC,2MAA2M,aAErND,GAAA,CAAC,CAAC,IAAC,SAAS,EAAC,SAAS,EAAA,CAAG,EACzBA,cAAM,SAAS,EAAC,SAAS,EAAA,QAAA,EAAA,OAAA,EAAA,CAAa,CAAA,EAAA,CAC/B,IACL,EACNA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,MAAM,EAAA,QAAA,EAClB,QAAQ,GACL,EACL,MAAM,KACLA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,oEAAoE,YAChF,MAAM,EAAA,CACH,CACP,CAAA,EAAA,CACG,EAAA,CACF;AAEV;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nest-filter",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "description": "Reusable Nest Filter UI components for React",
5
5
  "author": "Arijit Barik",
6
6
  "license": "ISC",
@@ -165,7 +165,7 @@ const FilterGroupUI = <T,>({
165
165
  key={item.id}
166
166
  className="flex flex-col md:flex-row md:items-center gap-3 p-3 bg-white border border-slate-200 rounded-md shadow-sm"
167
167
  >
168
- <div className="flex-1 min-w-[140px]">
168
+ <div className="w-1/5">
169
169
  <Select
170
170
  value={item.columnId as string}
171
171
  options={columns.map((c) => ({
@@ -188,18 +188,20 @@ const FilterGroupUI = <T,>({
188
188
  value: "",
189
189
  });
190
190
  }}
191
+ className="w-full"
191
192
  />
192
193
  </div>
193
- <div className="w-full md:w-44">
194
+ <div className="w-1/5">
194
195
  <Select
195
196
  value={item.operator}
196
197
  options={getOperatorsForType(column?.type || "string")}
197
198
  onValueChange={(val) =>
198
199
  onUpdateRule(item.id, { operator: val as FilterOperator })
199
200
  }
201
+ className="w-full"
200
202
  />
201
203
  </div>
202
- <div className="flex-[1.5] min-w-[180px]">
204
+ <div className="w-2/5">
203
205
  {column?.type === "date" ? (
204
206
  <Input
205
207
  type="date"
@@ -207,6 +209,7 @@ const FilterGroupUI = <T,>({
207
209
  onChange={(e) =>
208
210
  onUpdateRule(item.id, { value: e.target.value })
209
211
  }
212
+ className="w-full"
210
213
  />
211
214
  ) : column?.type === "boolean" ? (
212
215
  <div className="h-10 flex items-center px-3 border border-slate-200 rounded-md bg-slate-50 text-[10px] font-black uppercase tracking-tighter text-slate-400 italic">
@@ -224,6 +227,7 @@ const FilterGroupUI = <T,>({
224
227
  onValueChange={(val) =>
225
228
  onUpdateRule(item.id, { value: val })
226
229
  }
230
+ className="w-full"
227
231
  />
228
232
  ) : (
229
233
  <Input
@@ -232,6 +236,7 @@ const FilterGroupUI = <T,>({
232
236
  onChange={(e) =>
233
237
  onUpdateRule(item.id, { value: e.target.value })
234
238
  }
239
+ className="w-full"
235
240
  />
236
241
  )}
237
242
  </div>
@@ -412,7 +417,7 @@ export const AdvancedFilter = <T,>({
412
417
  title="Advanced Filters"
413
418
  description="Refine your dataset using structured logic and multi-type comparisons."
414
419
  >
415
- <div className="max-h-[60vh] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32">
420
+ <div className="max-h-[60vh] max-w-[70vw] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32">
416
421
  <FilterGroupUI
417
422
  group={rootGroup}
418
423
  depth={0}
@@ -15,7 +15,7 @@ export const Dialog: React.FC<DialogProps> = ({ open, onOpenChange, title, descr
15
15
  if (!open) return null;
16
16
 
17
17
  return (
18
- <div className="fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-sm animate-in fade-in duration-200">
18
+ <div className="fixed inset-0 z-50 flex items-start justify-center overflow-y-auto bg-slate-950/80 p-4 pt-[5vh] backdrop-blur-3xl animate-in fade-in duration-200">
19
19
  <div className="relative w-full max-w-4xl rounded-lg border border-slate-200 bg-white p-6 shadow-lg animate-in zoom-in-95 duration-200">
20
20
  <div className="flex flex-col space-y-1.5 text-center sm:text-left mb-6">
21
21
  <h2 className="text-lg font-semibold leading-none tracking-tight">{title}</h2>