nest-filter 1.0.15 → 1.0.16

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: "w-1/5", 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: "flex-1 min-w-[140px]", 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
- }, 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) => ({
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) => ({
72
72
  value: opt,
73
73
  label: opt,
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 }));
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 }));
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] 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" })] })] })] }));
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" })] })] })] }));
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=\"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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"}
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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"}
@@ -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-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 }))] }) }));
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 }))] }) }));
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-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;;;;"}
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;;;;"}
package/package.json CHANGED
@@ -1,12 +1,7 @@
1
1
  {
2
2
  "name": "nest-filter",
3
- "version": "1.0.15",
4
- "description": "Reusable Nest Filter UI components for React",
5
- "author": "Arijit Barik",
6
- "license": "ISC",
7
-
8
- "type": "module",
9
-
3
+ "version": "1.0.16",
4
+ "description": "",
10
5
  "main": "dist/index.js",
11
6
  "types": "dist/index.d.ts",
12
7
  "exports": {
@@ -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="w-1/5">
168
+ <div className="flex-1 min-w-[140px]">
169
169
  <Select
170
170
  value={item.columnId as string}
171
171
  options={columns.map((c) => ({
@@ -188,20 +188,18 @@ const FilterGroupUI = <T,>({
188
188
  value: "",
189
189
  });
190
190
  }}
191
- className="w-full"
192
191
  />
193
192
  </div>
194
- <div className="w-1/5">
193
+ <div className="w-full md:w-44">
195
194
  <Select
196
195
  value={item.operator}
197
196
  options={getOperatorsForType(column?.type || "string")}
198
197
  onValueChange={(val) =>
199
198
  onUpdateRule(item.id, { operator: val as FilterOperator })
200
199
  }
201
- className="w-full"
202
200
  />
203
201
  </div>
204
- <div className="w-2/5">
202
+ <div className="flex-[1.5] min-w-[180px]">
205
203
  {column?.type === "date" ? (
206
204
  <Input
207
205
  type="date"
@@ -209,7 +207,6 @@ const FilterGroupUI = <T,>({
209
207
  onChange={(e) =>
210
208
  onUpdateRule(item.id, { value: e.target.value })
211
209
  }
212
- className="w-full"
213
210
  />
214
211
  ) : column?.type === "boolean" ? (
215
212
  <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">
@@ -227,7 +224,6 @@ const FilterGroupUI = <T,>({
227
224
  onValueChange={(val) =>
228
225
  onUpdateRule(item.id, { value: val })
229
226
  }
230
- className="w-full"
231
227
  />
232
228
  ) : (
233
229
  <Input
@@ -236,7 +232,6 @@ const FilterGroupUI = <T,>({
236
232
  onChange={(e) =>
237
233
  onUpdateRule(item.id, { value: e.target.value })
238
234
  }
239
- className="w-full"
240
235
  />
241
236
  )}
242
237
  </div>
@@ -417,7 +412,7 @@ export const AdvancedFilter = <T,>({
417
412
  title="Advanced Filters"
418
413
  description="Refine your dataset using structured logic and multi-type comparisons."
419
414
  >
420
- <div className="max-h-[60vh] max-w-[70vw] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32">
415
+ <div className="max-h-[60vh] overflow-y-auto px-1 custom-scrollbar pr-3 pb-32">
421
416
  <FilterGroupUI
422
417
  group={rootGroup}
423
418
  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-3xl 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-sm 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>