@solidxai/core-ui 0.1.4-beta.1 → 0.1.4-beta.2
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.
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.d.ts.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js +8 -0
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.js.map +1 -1
- package/dist/components/core/common/SolidAccountSettings/SolidAccountSettings.tsx +8 -0
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.d.ts +2 -0
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.d.ts.map +1 -0
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js +34 -0
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.js.map +1 -0
- package/dist/components/core/common/SolidAccountSettings/SolidVersionInfo.tsx +83 -0
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +0 -3
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +0 -4
- package/dist/components/core/dashboard/SolidDashboard.d.ts +1 -1
- package/dist/components/core/dashboard/SolidDashboard.d.ts.map +1 -1
- package/dist/components/core/dashboard/SolidDashboard.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboard.tsx +1 -1
- package/dist/components/core/dashboard/SolidDashboardVariable.js +1 -1
- package/dist/components/core/dashboard/SolidDashboardVariable.js.map +1 -1
- package/dist/components/core/dashboard/SolidDashboardVariable.tsx +1 -1
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +67 -67
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +8 -9
- package/dist/components/core/list/columns/SolidBooleanColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.js +1 -24
- package/dist/components/core/list/columns/SolidBooleanColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidBooleanColumn.tsx +1 -35
- package/dist/components/core/list/columns/SolidDateColumn.d.ts +0 -5
- package/dist/components/core/list/columns/SolidDateColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidDateColumn.js +1 -31
- package/dist/components/core/list/columns/SolidDateColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidDateColumn.tsx +2 -49
- package/dist/components/core/list/columns/SolidDatetimeColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidDatetimeColumn.js +1 -20
- package/dist/components/core/list/columns/SolidDatetimeColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidDatetimeColumn.tsx +2 -37
- package/dist/components/core/list/columns/SolidExternalIdColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidExternalIdColumn.js +1 -21
- package/dist/components/core/list/columns/SolidExternalIdColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidExternalIdColumn.tsx +1 -38
- package/dist/components/core/list/columns/SolidIdColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidIdColumn.js +1 -21
- package/dist/components/core/list/columns/SolidIdColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidIdColumn.tsx +1 -36
- package/dist/components/core/list/columns/SolidIntColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidIntColumn.js +1 -30
- package/dist/components/core/list/columns/SolidIntColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidIntColumn.tsx +2 -46
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +1 -5
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +0 -7
- package/dist/components/core/list/columns/SolidMediaSingleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaSingleColumn.tsx +0 -1
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js +1 -21
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionDynamicColumn.tsx +1 -37
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.js +1 -21
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidSelectionStaticColumn.tsx +1 -38
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +1 -29
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.tsx +3 -45
- package/dist/components/core/list/columns/SolidTimeColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidTimeColumn.js +1 -20
- package/dist/components/core/list/columns/SolidTimeColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidTimeColumn.tsx +2 -37
- package/dist/components/core/list/columns/SolidUuidColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidUuidColumn.js +1 -21
- package/dist/components/core/list/columns/SolidUuidColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidUuidColumn.tsx +1 -37
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js +1 -17
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToManyColumn.tsx +2 -35
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +1 -15
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +1 -33
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js +1 -15
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationOneToManyColumn.tsx +1 -31
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.ts +5 -2
- package/dist/redux/api/fetchBaseQuery.js +4 -5
- package/dist/redux/api/fetchBaseQuery.js.map +1 -1
- package/dist/redux/api/fetchBaseQuery.tsx +4 -4
- package/dist/redux/api/solidSettingsApi.d.ts +2 -1
- package/dist/redux/api/solidSettingsApi.d.ts.map +1 -1
- package/dist/redux/api/solidSettingsApi.js +4 -1
- package/dist/redux/api/solidSettingsApi.js.map +1 -1
- package/dist/redux/api/solidSettingsApi.tsx +6 -1
- package/dist/redux/store/defaultStoreConfig.d.ts +1 -0
- package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.d.ts +2 -0
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -0
- package/dist/routes/pages/admin/core/DashboardPage.js +14 -0
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -0
- package/dist/routes/pages/admin/core/DashboardPage.tsx +17 -0
- package/dist/routes/solidRoutes.d.ts.map +1 -1
- package/dist/routes/solidRoutes.js +2 -0
- package/dist/routes/solidRoutes.js.map +1 -1
- package/dist/routes/solidRoutes.tsx +2 -0
- package/dist/routes/types.d.ts +1 -1
- package/dist/routes/types.d.ts.map +1 -1
- package/dist/routes/types.js.map +1 -1
- package/dist/routes/types.ts +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { Dialog } from \"primereact/dialog\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { Button } from \"primereact/button\";\nimport { Divider } from \"primereact/divider\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { InputText } from \"primereact/inputtext\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\n\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array\n let values = typeof rule.value[0] === \"object\" ? rule.value.map((i: any) => i?.value ? i?.value : i) : rule?.value;\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isManyToMany = fieldMeta?.type === 'relation' && fieldMeta?.relationType === 'many-to-many';\n\n\n let transformedRule;\n if (isManyToMany) {\n // For many-to-many relations, always use array format for $in/$notIn\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible }: any) => {\n return (\n <div className=\"flex align-items-center justify-content-between gap-2\">\n <div>\n <Button text\n size=\"small\"\n className=\"text-base py-1 w-full\"\n severity={Number(activeSavedFilter) == savedfilter.id ? \"secondary\" : \"contrast\"}\n onClick={() => applySavedFilter(savedfilter)}\n tooltip={savedfilter?.description}>{savedfilter.name}\n </Button>\n {/* {savedfilter?.description && <p className=\"text-xs pl-3\">{savedfilter?.description}</p>} */}\n </div>\n <div className=\"flex align-items-center gap-2\">\n {savedfilter.isSeeded !== true &&\n <>\n <Button\n icon=\"pi pi-pencil\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => openSavedCustomFilter(savedfilter)}\n />\n <Button\n icon=\"pi pi-trash\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => {\n setSavedFilterTobeDeleted(savedfilter.id),\n setIsDeleteSQDialogVisible(true);\n }}\n />\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates }: any, ref) => {\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const pathname = usePathname();\n\n\n const searchParams = useSearchParams() // Converts the query params to a string\n const activeSavedFilter = searchParams?.get(\"savedQuery\");\n\n const router = useRouter();\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any>();\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n\n const entityApi = createSolidEntityApi(\"savedFilters\");\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = entityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n activeSavedFilter,\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n setFilterRules(initialState);\n }\n }));\n\n useEffect(() => {\n const fn = async () => {\n let searchChips: any;\n let customChips: any;\n if (savedFiltersLoaded) {\n\n if (activeSavedFilter && savedFilters.length === 0) return;\n\n const queryObject = getFilterObjectFromLocalStorage();\n // const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (activeSavedFilter) {\n const currentSavedFilterId = Number(activeSavedFilter);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === currentSavedFilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n }\n }\n } else {\n setCurrentSavedFilterData(null)\n setCurrentSavedFilterQuery(null)\n }\n if (queryObject) {\n if (queryObject) {\n searchChips = queryObject?.search_predicate || null;\n customChips = queryObject?.custom_filter_predicate || null;\n }\n }\n if (searchChips) {\n setSearchFilter(searchChips);\n // const formattedChips = searchChips?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n\n const formattedChips = extractChips(searchChips);\n setSearchChips(formattedChips);\n\n }\n if (customChips && Object.keys(customChips).length !== 0) {\n setCustomFilter(customChips);\n const rules: FilterRule = transformFiltersToRules(customChips);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n const hasGroupingRules = (queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null));\n\n if (hasGroupingRules) {\n setGroupingRules(queryObject?.grouping_rules);\n } else {\n // If no grouping rules in localStorage check layout\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n const initialGroupingRules: GroupingRule[] = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null\n };\n });\n setGroupingRules(initialGroupingRules);\n }\n }\n\n if (queryObject?.aggregation_rules && queryObject?.aggregation_rules !== aggregationRules) {\n setAggregationRules(queryObject?.aggregation_rules);\n }\n\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [viewData?.data?.solidView?.id, activeSavedFilter, savedFiltersLoaded])\n\n useEffect(() => {\n const fn = async () => {\n console.log(\"Effect fired\");\n console.log(\"filterPredicates:\", filterPredicates);\n if (filterPredicates) {\n console.log(\"inside filterPredicates\");\n\n if (filterPredicates?.custom_filter_predicate && filterPredicates?.custom_filter_predicate !== customFilter) {\n setCustomFilter(filterPredicates?.custom_filter_predicate);\n const rules: FilterRule = transformFiltersToRules(filterPredicates.custom_filter_predicate);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n if (filterPredicates?.search_predicate && filterPredicates?.search_predicate !== searchFilter) {\n setSearchFilter(filterPredicates?.search_predicate);\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n const formattedChips = extractChips(filterPredicates.search_predicate);\n setSearchChips(formattedChips);\n\n }\n }\n }\n fn()\n }, [filterPredicates])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n // Reset search state when switching views\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setInputValue(\"\");\n\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n const fieldsList = Object.entries(fieldsData ?? {}).map(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n return {\n name: value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n };\n });\n\n setFields(fieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n\n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n // handleApplyCustomFilter(finalFilter)\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n // handleApplyCustomFilter(finalFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n // handleApplyCustomFilter(finalFilter);\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n let finalSavedFilter: any = currentSavedFilterQuery\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // router.push(`?savedQuery=${savedfilter.id}`);\n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n // router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const deleteSavedFilter = async () => {\n // delte the saved filter with id \n await deleteEntity(savedFilterTobeDeleted);\n // triggerGetSolidEntities(savedFilterQueryString);\n let parsedSearchParams = searchParams;\n const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (savedFilterTobeDeleted == savedQuery) {\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.delete(\"savedQuery\");\n router.push(`?${urlParams.toString()}`);\n }\n setIsDeleteSQDialogVisible(false);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setPredefinedSearchBaseFilter(null);\n setTimeout(() => {\n router.push(`?savedQuery=${formValues.id}`);\n }, 500)\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setTimeout(() => {\n router.push(`?savedQuery=${result.data.id}`);\n }, 500)\n\n }\n } catch (error) {\n\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n const CustomChip = () => {\n console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={clearCustomFilter}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any) => {\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const removeSavedFilter = () => {\n const params = new URLSearchParams(searchParams.toString());\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null)\n if (params.has(\"savedQuery\")) {\n params.delete(\"savedQuery\");\n const newUrl = params.toString()\n ? `${pathname}?${params.toString()}`\n : pathname;\n router.push(newUrl);\n }\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={removeSavedFilter}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex align-items-center gap-2\">\n <div className=\"flex align-items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={removeGrouping}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue?.trim()) {\n handleAddChip();\n e.preventDefault();\n setShowOverlay(false);\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null)\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (activeSavedFilter) {\n removeSavedFilter()\n } else if (activeSavedFilter) {\n clearCustomFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n };\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <i className=\"pi pi-times ml-1\"\n style={{ cursor: \"pointer\" }}\n onClick={() => handleRemoveChipGroup(column)}\n >\n </i>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Apply the filter\n // handleApplyCustomFilter(finalFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setCustomFilter(null);\n // handleApplyCustomFilter(finalFilter);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex align-items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <i className=\"pi pi-times ml-1\"\n style={{ cursor: \"pointer\" }}\n onClick={removePredefinedSearchChip}\n >\n </i>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"flex justify-content-center solid-custom-filter-wrapper relative\">\n <div className=\"solid-global-search-element\">\n <ul className=\"\">\n {currentSavedFilterData && <SavedFiltersChip />}\n {predefinedSearchChip && <PredefinedSearchChip />}\n {customFilter && <CustomChip />}\n {groupingRules.length > 0 && groupingRules.some(r => r.fieldName !== null) && <GroupingChip />}\n <SearchChip />\n <li ref={chipsRef}>\n <div className=\"relative solid-global-search-element-wrapper\">\n <InputText\n value={inputValue || \"\"}\n placeholder=\"Search.\"\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowOverlay(true);\n }}\n onFocus={() => {\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <Button\n icon=\"pi pi-search\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => setShowOverlay(true)}\n className=\"custom-filter-button\"\n />\n </div>\n </li>\n </ul>\n </div>\n\n {showOverlay && (\n <div ref={overlayRef} className=\"absolute w-full z-5 shadow-2 solid-search-overlay-pannel\" style={{ top: 35, background: \"var(--surface-0)\", border: '1px solid var(--surface-300) !important', borderRadius: '6px' }}>\n {/* <div ref={overlayRef} className=\"absolute w-full z-5 surface-0 border-round border-1 border-300 shadow-2 solid-search-overlay-pannel\" style={{ top: 35 }}> */}\n {inputValue ? (\n <>\n <div className=\"custom-filter-search-options px-3 py-2 flex flex-column\">\n <h6 className=\"my-1 font-bold\">Search By Fields</h6>\n {\n searchableFields.map((value: any, index: any) => {\n // console.log(\"value\", value);\n\n return (\n <Button\n key={index}\n className=\"p-2 flex gap-1 text-color\"\n // onClick={() => handleAddChip(value)}\n onMouseDown={(e) => {\n // Prevent focus loss from input\n e.preventDefault();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n text\n severity=\"secondary\"\n size=\"small\"\n >\n Search <strong>{value.displayName}</strong> for: <span className=\"font-bold text-color\">{inputValue}</span>\n </Button>\n )\n })\n }\n </div>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <Divider className=\"m-0\" />\n <div className=\"custom-filter-search-options px-3 py-2 flex flex-column\">\n <h6 className=\"my-1 font-bold\">Predefined Searches</h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => (\n <Button\n key={index}\n className=\"p-2 flex flex-column align-items-start gap-1 text-color\"\n onMouseDown={(e) => {\n e.preventDefault();\n handlePredefinedSearch(predefinedSearch);\n }}\n text\n severity=\"secondary\"\n size=\"small\"\n >\n <div className=\"flex gap-1 align-items-center\">\n <strong>{predefinedSearch.name}:</strong>\n <span className=\"font-bold text-color\">{inputValue}</span>\n </div>\n <div className=\"text-xs\">{predefinedSearch.description}</div>\n </Button>\n ))}\n </div>\n </>\n )}\n </>\n ) :\n <>\n <div className=\"p-3 text-base\">Search Here...</div>\n <Divider className=\"m-0\" />\n </>\n }\n {savedFilters.length > 0 &&\n <>\n <div className=\"p-3\">\n <p className=\"font-medium\">Saved Filters</p>\n <div className=\"flex flex-column gap-2\">\n {savedFilters.map((savedfilter: any) =>\n <SavedFilterList savedfilter={savedfilter} activeSavedFilter={activeSavedFilter} applySavedFilter={applySavedFilter} openSavedCustomFilter={openSavedCustomFilter} setSavedFilterTobeDeleted={setSavedFilterTobeDeleted} setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}></SavedFilterList>\n )}\n </div>\n </div>\n <Divider className=\"m-0\" />\n </>\n }\n <div className=\"px-2 py-1 flex justify-content-between\">\n <Button text size=\"small\" label=\"Custom Filter\" iconPos=\"left\" icon='pi pi-plus' onClick={() => setShowGlobalSearchElement(true)} className=\"font-bold\" />\n {viewType === \"tree\" &&\n <Button text size=\"small\" label=\"Grouping\" iconPos=\"left\" icon='pi pi-plus' onClick={() => setShowGroupFilterElement(true)} className=\"font-bold\" />\n }\n </div>\n </div>\n )\n }\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showGlobalSearchElement} style={{ width: '65vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showGlobalSearchElement) return; setShowGlobalSearchElement(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Add Custom Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowGlobalSearchElement(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </div>\n </Dialog>\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showGroupFilterElement} style={{ width: '20vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showGroupFilterElement) return; setShowGroupFilterElement(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\"></h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowGroupFilterElement(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </div>\n </Dialog >\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showSavedFilterComponent} style={{ width: '65vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showSavedFilterComponent) return; setShowSavedFilterComponent(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Saved Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowSavedFilterComponent(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </div>\n </Dialog>\n <Dialog header=\"Save Custom Filter\" className=\"solid-custom-filter-dialog\" visible={showSaveFilterPopup} style={{ width: 500 }} onHide={() => { if (!showSaveFilterPopup) return; setShowSaveFilterPopup(false); }}>\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={setShowSaveFilterPopup}></SolidSaveCustomFilterForm>\n </Dialog>\n\n <Dialog\n visible={isDeleteSQDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n footer={() => (\n <div className=\"flex justify-content-center\">\n <Button label=\"Yes\" icon=\"pi pi-check\" className='small-button' severity=\"danger\" autoFocus onClick={deleteSavedFilter} />\n <Button label=\"No\" icon=\"pi pi-times\" className='small-button' onClick={() => setIsDeleteSQDialogVisible(false)} />\n </div>\n )}\n onHide={() => setIsDeleteSQDialogVisible(false)}\n >\n <p>Are you sure you want to delete the {currentSavedFilterData?.name} saved query?</p>\n </Dialog>\n </div >\n {/* <div>\n <Button\n icon=\"pi pi-save\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => {\n setShowSaveFilterPopup(true)\n }}\n />\n </div> */}\n </>\n )\n});\n"]}
|
|
1
|
+
{"version":3,"file":"SolidGlobalSearchElement.js","sourceRoot":"","sources":["../../../../src/components/core/common/SolidGlobalSearchElement.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { forwardRef, useEffect, useImperativeHandle, useRef, useState } from \"react\";\nimport { Dialog } from \"primereact/dialog\";\nimport FilterComponent, { FilterOperator, FilterRule, FilterRuleType } from \"../../../components/core/common/FilterComponent\";\nimport { Button } from \"primereact/button\";\nimport { Divider } from \"primereact/divider\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { getFilterObjectFromLocalStorage } from \"../list/SolidListView\";\nimport { InputText } from \"primereact/inputtext\";\nimport { createSolidEntityApi } from \"../../../redux/api/solidEntityApi\";\nimport qs from \"qs\";\nimport { SolidSaveCustomFilterForm } from \"./SolidSaveCustomFilterForm\";\nimport { ERROR_MESSAGES } from \"../../../constants/error-messages\";\nimport { hydrateRelationRules } from \"../../../helpers/hydrateRelationRules\";\nimport { useSession } from '../../../hooks/useSession'\nimport GroupingComponent, { AggregationRule, GroupingRule, DateGroupingFormat } from \"./GroupingComponent\";\n\n\nconst getRandomInt = (min: number, max: number) => {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\ninterface PredefinedSearch {\n name: string;\n description?: string;\n filters: Record<string, any>;\n}\n\nexport type SearchableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n}\n\nexport type GroupableField = {\n fieldName: string;\n displayName: string;\n searchField: string;\n matchMode: string;\n type: string;\n ormType: string;\n relationType: string;\n computedFieldValueType: string;\n}\n\nconst extractFields = (nodes: any[] = []): any[] => {\n const result: any[] = [];\n\n for (const node of nodes) {\n if (node?.type === \"field\") {\n result.push(node);\n }\n\n if (Array.isArray(node?.children)) {\n result.push(...extractFields(node.children));\n }\n }\n\n return result;\n};\n\n\nconst transformFiltersToRules = (filter: any, parentRule: number | null = null): FilterRule => {\n if (!filter || typeof filter !== \"object\" || Object.keys(filter).length === 0) {\n throw new Error(\"Invalid filter: expected a non-null object with properties\");\n }\n if (!filter || typeof filter !== \"object\") {\n throw new Error(\"Invalid filter: expected a non-null object\");\n }\n const currentId = idCounter++;\n if (filter[\"$or\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule,\n children: filter[\"$or\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n if (filter[\"$and\"]) {\n return {\n id: currentId,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.AND,\n parentRule,\n children: filter[\"$and\"]\n .filter((sub: any) => {\n // Filter out null, undefined, empty strings, and empty objects\n if (sub == null) return false;\n if (typeof sub === \"string\" && sub.trim() === \"\") return false;\n if (typeof sub === \"object\" && Object.keys(sub).length === 0) return false;\n return true;\n })\n .map((subFilter: any) => transformFiltersToRules(subFilter, currentId))\n };\n }\n\n // Handle single rule condition\n for (const fieldName in filter) {\n const condition = filter[fieldName];\n if (!condition || typeof condition !== \"object\") {\n throw new Error(`Invalid condition for field '${fieldName}'`);\n }\n\n // CASE 1: relation filter → unwrap first\n if (condition?.id && typeof condition?.id === \"object\") {\n for (const matchMode in condition.id) {\n const rawValue = condition.id[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n }\n\n // CASE 2: normal field → loop stays\n for (const matchMode in condition) {\n const rawValue = condition[matchMode];\n const mathcModeValue: any = matchMode\n return {\n id: currentId,\n type: FilterRuleType.RULE,\n fieldName,\n matchMode: mathcModeValue,\n value: Array.isArray(rawValue) ? rawValue : [rawValue],\n parentRule,\n children: []\n };\n }\n\n\n }\n throw new Error(ERROR_MESSAGES.INVALID_FILTER_STRUCTURE);\n}\n\n\n\n\nlet idCounter = 1;\nconst generateId = () => Date.now() + Math.floor(Math.random() * 1000);\n\n\nconst transformRulesToFilters = (input: any, viewData: any) => {\n\n // Helper function to process individual rules\n const processRule = (rule: any) => {\n if (rule.value !== undefined && rule.value !== null) {\n\n // Ensure rule.value is always an array\n let values = typeof rule.value[0] === \"object\" ? rule.value.map((i: any) => i?.value ? i?.value : i) : rule?.value;\n if (rule.matchMode !== '$in' && rule.matchMode !== '$notIn' && rule.matchMode !== '$between' && rule.matchMode !== '$null' && rule.matchMode !== '$notNull') {\n values = values[0];\n }\n\n\n const fieldMeta = viewData?.data?.solidFieldsMetadata?.[rule.fieldName];\n const isManyToMany = fieldMeta?.type === 'relation' && fieldMeta?.relationType === 'many-to-many';\n\n\n let transformedRule;\n if (isManyToMany) {\n // For many-to-many relations, always use array format for $in/$notIn\n transformedRule = {\n [rule.fieldName]: {\n id: {\n [rule.matchMode]: values // Keep as array\n }\n }\n };\n } else {\n // Rule transformation\n transformedRule = {\n [rule.fieldName]: {\n [rule.matchMode]: values // Assuming `value` is always an array with `value` and `label`\n }\n };\n }\n\n let processedFields;\n if (rule.children && rule.children.length > 0) {\n processedFields = rule.children.map((child: any) => processRuleGroup(child)).filter((child: any) => child != null);;\n }\n if (processedFields) {\n return { ...transformedRule, processedFields }\n }\n return { ...transformedRule }\n\n }\n\n };\n\n // Helper function to process rule groups\n const processRuleGroup = (ruleGroup: any) => {\n const operator = ruleGroup.matchOperator === 'or' ? '$or' : '$and';\n const children = ruleGroup.children.map((child: any) => {\n if (child.type === 'rule') {\n // Process the rule\n return processRule(child);\n } else if (child.type === 'rule_group') {\n // Process the rule group recursively\n return processRuleGroup(child);\n }\n }).filter((child: any) => child != null);\n // If no valid children, return null\n // if (children.length === 0) {\n // return null;\n // }\n\n // If only one child, return it directly without wrapping in operator\n // if (children.length === 1) {\n // return children[0];\n // }\n\n return {\n [operator]: children\n };\n };\n\n\n // Start processing the root rule group\n const filterObject = processRuleGroup(input);\n\n if (!filterObject) {\n return {};\n }\n\n function liftProcessedFields(filters: any) {\n if (!filters || typeof filters !== 'object') return filters;\n\n const processArray = (arr: any) => {\n let newArr = [];\n for (let obj of arr) {\n if (obj && obj.processedFields) {\n let processed: any = processArray(obj.processedFields); // Recursively process nested processedFields\n delete obj.processedFields;\n newArr.push(obj, ...processed);\n } else {\n newArr.push(obj);\n }\n\n for (let key in obj) {\n if (Array.isArray(obj[key])) {\n obj[key] = processArray(obj[key]);\n }\n }\n }\n return newArr;\n }\n\n for (let key in filters) {\n if (Array.isArray(filters[key])) {\n filters[key] = processArray(filters[key]);\n }\n }\n\n return filters;\n }\n\n\n return liftProcessedFields(filterObject)\n\n}\n\n\ntype GroupedType = {\n values: string[];\n searchField: any;\n matchMode: string;\n}\n\n// Build nested condition for relation fields\nfunction buildNestedCondition(path: string, operatorKey: string, value: any) {\n const keys = path.split(\".\").filter(Boolean);\n const leaf = { [operatorKey]: value };\n return keys.reduceRight((acc, key) => ({ [key]: acc }), leaf);\n}\n\nconst tranformSearchToFilters = (input: any) => {\n if (!input || !input.$and) return input;\n\n const grouped: Record<string, GroupedType> = {};\n\n input.$and.forEach(({ fieldName, value, searchField, matchMode }: any) => {\n const val = Array.isArray(value) && value.length === 1 ? value[0] : value;\n\n if (!grouped[fieldName]) {\n grouped[fieldName] = { values: [], searchField: searchField || \"\", matchMode: matchMode || \"$containsi\" };\n }\n\n if (Array.isArray(val)) {\n grouped[fieldName]?.values.push(...val);\n } else {\n grouped[fieldName]?.values.push(val);\n }\n });\n\n // return {\n // $and: Object.entries(grouped).map(([fieldName, values]) => ({\n // [fieldName]: {\n // $containsi: values.length === 1 ? values[0] : values\n // }\n // }))\n // };\n\n const andFilters: any[] = [];\n\n Object.entries(grouped).forEach(([fieldName, value]) => {\n\n const isNested = value.searchField ? value.searchField.includes(\".\") : false;\n\n if (isNested) {\n\n // NESTED: use $eq and expand dot-notation into nested objects\n if (value.values.length === 1) {\n andFilters.push(buildNestedCondition(value.searchField, value.matchMode, value.values[0]));\n } else {\n andFilters.push({\n $or: value.values.map(v => buildNestedCondition(value.searchField, value.matchMode, v)),\n });\n }\n } else {\n\n if (value.values.length === 1) {\n andFilters.push({\n [fieldName]: {\n $containsi: value.values[0]\n }\n });\n } else {\n andFilters.push({\n $or: value.values.map((v) => ({\n [fieldName]: { $containsi: v }\n }))\n });\n }\n }\n });\n\n return {\n $and: andFilters\n };\n}\n\nexport const mergeSearchAndCustomFilters = (transformedFilter: any, newFilter: any, transformedFilterName: string, newFilterName: string) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (transformedFilter && Object.keys(transformedFilter).length > 0) {\n filters[transformedFilterName] = transformedFilter;\n }\n if (newFilter && Object.keys(newFilter).length > 0) {\n filters[newFilterName] = newFilter;\n }\n\n // Return the combined filters object\n return filters;\n}\n\n\nexport const mergeAllDiffFilters = (customFilter: any, searchFilter: any, savedFilter: any, preDefinedFilter?: any, groupingRules?: GroupingRule[], aggregationRules?: AggregationRule[]) => {\n const filters: any = {};\n\n // Add only non-null filters\n if (customFilter && Object.keys(customFilter).length > 0) {\n filters[\"custom_filter_predicate\"] = customFilter;\n }\n if (searchFilter && Object.keys(searchFilter).length > 0) {\n filters[\"search_predicate\"] = searchFilter;\n }\n if (savedFilter && Object.keys(savedFilter).length > 0) {\n filters[\"saved_filter_predicate\"] = savedFilter;\n }\n if (preDefinedFilter && Object.keys(preDefinedFilter).length > 0) {\n filters[\"predefined_search_predicate\"] = preDefinedFilter;\n }\n if (groupingRules && Object.keys(groupingRules).length > 0) {\n filters[\"grouping_rules\"] = groupingRules;\n }\n if (aggregationRules && Object.keys(aggregationRules).length > 0) {\n filters[\"aggregation_rules\"] = aggregationRules;\n }\n // Return the combined filters object\n return filters;\n}\n\nconst SavedFilterList = ({ savedfilter, activeSavedFilter, applySavedFilter, openSavedCustomFilter, setSavedFilterTobeDeleted, setIsDeleteSQDialogVisible }: any) => {\n return (\n <div className=\"flex align-items-center justify-content-between gap-2\">\n <div>\n <Button text\n size=\"small\"\n className=\"text-base py-1 w-full\"\n severity={Number(activeSavedFilter) == savedfilter.id ? \"secondary\" : \"contrast\"}\n onClick={() => applySavedFilter(savedfilter)}\n tooltip={savedfilter?.description}>{savedfilter.name}\n </Button>\n {/* {savedfilter?.description && <p className=\"text-xs pl-3\">{savedfilter?.description}</p>} */}\n </div>\n <div className=\"flex align-items-center gap-2\">\n {savedfilter.isSeeded !== true &&\n <>\n <Button\n icon=\"pi pi-pencil\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => openSavedCustomFilter(savedfilter)}\n />\n <Button\n icon=\"pi pi-trash\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => {\n setSavedFilterTobeDeleted(savedfilter.id),\n setIsDeleteSQDialogVisible(true);\n }}\n />\n </>\n }\n\n </div>\n </div>\n )\n}\n\nconst replacePlaceholders = (obj: any, searchValue: string): any => {\n if (typeof obj === 'string') {\n return obj.replace(/\\{\\{search\\}\\}/g, searchValue);\n }\n if (Array.isArray(obj)) {\n return obj.map(item => replacePlaceholders(item, searchValue));\n }\n if (obj && typeof obj === 'object') {\n const newObj: any = {};\n for (const key in obj) {\n newObj[key] = replacePlaceholders(obj[key], searchValue);\n }\n return newObj;\n }\n return obj;\n};\n\n\nconst extractChips = (node: any): any[] => {\n if (!node) return [];\n\n // If node has $and\n if (node.$and && Array.isArray(node.$and)) {\n return node.$and.flatMap(extractChips);\n }\n\n // If node has $or\n if (node.$or && Array.isArray(node.$or)) {\n return node.$or.flatMap(extractChips);\n }\n\n // Leaf condition\n const field = Object.keys(node)[0];\n const operatorObj = node[field];\n\n // ✅ Normal case\n if (operatorObj?.$containsi) {\n return [{\n columnName: field,\n value: operatorObj.$containsi,\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: field,\n matchMode: \"$containsi\"\n }];\n }\n // ✅ Nested case (like city.name)\n else if (typeof operatorObj === \"object\") {\n const nestedField = Object.keys(operatorObj)[0];\n const nestedOperatorObj = operatorObj[nestedField];\n\n const operatorKey = nestedOperatorObj\n ? Object.keys(nestedOperatorObj).find(k => k.startsWith(\"$\"))\n : null;\n\n if (operatorKey) {\n return [{\n columnName: field,\n value: nestedOperatorObj[operatorKey],\n columnDisplayName: field.charAt(0).toUpperCase() + field.slice(1),\n searchField: `${field}.${nestedField}`,\n matchMode: operatorKey\n }];\n }\n }\n\n return [];\n};\n\n\n\ntype RelationCache = Map<string, { label: string; value: number }>;\n\n\n\nexport const SolidGlobalSearchElement = forwardRef(({ viewData, viewType, handleApplyCustomFilter, showSaveFilterPopup, setShowSaveFilterPopup, filterPredicates }: any, ref) => {\n const defaultState: FilterRule[] = [\n {\n id: 1,\n type: FilterRuleType.RULE_GROUP,\n matchOperator: FilterOperator.OR,\n parentRule: null,\n children: [\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n },\n {\n id: Date.now() + getRandomInt(1, 500),\n type: FilterRuleType.RULE,\n fieldName: null,\n matchMode: null,\n value: null,\n parentRule: 1,\n children: []\n }\n ]\n }\n ];\n\n const defaultAggregationRules: AggregationRule[] = [\n {\n id: 1,\n operator: \"count\",\n fieldName: \"id\",\n locked: true\n }\n ];\n\n const defaultGroupingRules: GroupingRule[] = [\n { id: 1, fieldName: null, dateGrouping: null }\n ];\n\n const [initialState, setInitialState] = useState(defaultState);\n const pathname = usePathname();\n\n\n const searchParams = useSearchParams() // Converts the query params to a string\n const activeSavedFilter = searchParams?.get(\"savedQuery\");\n\n const router = useRouter();\n\n const chipsRef = useRef<HTMLDivElement | null | any>(null);\n\n // filterRules is used to maintian the ui of custom filter \n // customFilter is used to maintian the transformed filter object of custom filter\n const [filterRules, setFilterRules] = useState<FilterRule[]>(initialState);\n const [customFilter, setCustomFilter] = useState<any | null>(null);\n\n const [fields, setFields] = useState<any[]>([]);\n const [searchableFields, setSearchableFields] = useState<any[]>([]);\n const [groupableFields, setGroupableFields] = useState<GroupableField[]>([]);\n\n const [groupingRules, setGroupingRules] = useState<GroupingRule[]>(defaultGroupingRules);\n const [aggregationRules, setAggregationRules] = useState<AggregationRule[]>(defaultAggregationRules);\n\n // used to show the list of predefined searches \n const [predefinedSearches, setPredefinedSearches] = useState<PredefinedSearch[]>([]);\n\n // used to open / close the custom fitler popup \n const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);\n\n // used to open / close the group fitler popup \n const [showGroupFilterElement, setShowGroupFilterElement] = useState<boolean>(false);\n\n\n // searchChips maintain the ui to display searched query \n // searchFilter maintain the transformed filter of the searched query \n const [searchChips, setSearchChips] = useState<{ columnName?: string; value: string }[]>([]);\n const [searchFilter, setSearchFilter] = useState<any | null>(null);\n\n // predefinedSearchChip maintain the ui to display predefined searches query \n const [predefinedSearchChip, setPredefinedSearchChip] = useState<{ name: string; value: string } | null>(null);\n\n // state to maintain the text typed in the search input box\n const [inputValue, setInputValue] = useState<string | null>(\"\");\n\n // flag to prevent un necessary re renders\n const [hasSearched, setHasSearched] = useState<boolean>(false);\n\n // currentSavedFilterData is used to save the whole object of saved filter \n const [currentSavedFilterData, setCurrentSavedFilterData] = useState<any>();\n const [currentSavedFilterQuery, setCurrentSavedFilterQuery] = useState<any>();\n const [currentSavedFilterRules, setCurrentSavedFilterRules] = useState<any>();\n const [showSavedFilterComponent, setShowSavedFilterComponent] = useState<boolean>(false);\n\n\n const [savedFilterTobeDeleted, setSavedFilterTobeDeleted] = useState<any>();\n const [isDeleteSQDialogVisible, setIsDeleteSQDialogVisible] = useState<boolean>(false);\n const [savedFilterQueryString, setSavedFilterQueryString] = useState<string>();\n const [showOverlay, setShowOverlay] = useState(false);\n const overlayRef = useRef<HTMLDivElement | null>(null);\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const [refreshKey, setRefreshKey] = useState(0);\n\n const [predefinedSearchBaseFilter, setPredefinedSearchBaseFilter] = useState<any>(null);\n\n const [savedFilters, setSavedFilters] = useState([]);\n const [savedFiltersLoaded, setSavedFiltersLoaded] = useState(false);\n\n const entityApi = createSolidEntityApi(\"savedFilters\");\n const {\n useCreateSolidEntityMutation,\n useDeleteSolidEntityMutation,\n useGetSolidEntityByIdQuery,\n useUpdateSolidEntityMutation,\n useLazyGetSolidEntitiesQuery\n } = entityApi;\n\n const [\n createEntity,\n { isSuccess: isEntityCreateSuccess, isError: isEntityCreateError, error: entityCreateError },\n ] = useCreateSolidEntityMutation();\n\n const [\n updateEntity,\n { isSuccess: isEntityUpdateSuceess, isError: isEntityUpdateError, error: entityUpdateError },\n ] = useUpdateSolidEntityMutation();\n\n const [\n deleteEntity,\n { isSuccess: isEntityDeleteSuceess, isError: isEntityDeleteError, error: entityDeleteError },\n ] = useDeleteSolidEntityMutation();\n\n const [triggerGetSolidEntities, { data: solidEntityListViewData, isLoading: isSavedFilterLoading, error }] = useLazyGetSolidEntitiesQuery();\n\n const [savedFilterFetchDataRefreshKey, setSavedFilterFetchDataRefreshKey] = useState(0);\n\n\n\n useEffect(() => {\n const fn = async () => {\n if (!viewData?.data?.solidView?.model?.id || !viewData?.data?.solidView?.id || !user?.id) {\n return;\n }\n setSavedFiltersLoaded(false)\n const filters = {\n $or: [\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { user: { $in: [user?.id] } },\n { isPrivate: { $eq: true } }\n ]\n },\n {\n $and: [\n { model: { $in: [viewData?.data?.solidView?.model?.id] } },\n { view: { $in: [viewData?.solidView?.id] } },\n { isPrivate: { $eq: false } }\n ]\n }\n\n ]\n }\n const queryData: any = {\n offset: 0,\n limit: 10,\n filters: filters,\n populate: [\"model\", \"view\", \"user\"],\n sort: [\"id:desc\"],\n };\n const queryString = qs.stringify(queryData, { encodeValuesOnly: true });\n setSavedFilterQueryString(queryString)\n const savedFilter = await triggerGetSolidEntities(queryString).unwrap();\n\n if (savedFilter) {\n console.log(\"savedFilter\", savedFilter);\n setSavedFilters(savedFilter?.records)\n }\n setSavedFiltersLoaded(true);\n }\n fn()\n }, [\n activeSavedFilter,\n savedFilterFetchDataRefreshKey,\n viewData?.data?.solidView?.id,\n viewData?.data?.solidView?.model?.id,\n user?.id\n ])\n\n useImperativeHandle(ref, () => ({\n clearFilter: () => {\n setFilterRules(initialState);\n }\n }));\n\n useEffect(() => {\n const fn = async () => {\n let searchChips: any;\n let customChips: any;\n if (savedFiltersLoaded) {\n\n if (activeSavedFilter && savedFilters.length === 0) return;\n\n const queryObject = getFilterObjectFromLocalStorage();\n // const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (activeSavedFilter) {\n const currentSavedFilterId = Number(activeSavedFilter);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === currentSavedFilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n }\n }\n } else {\n setCurrentSavedFilterData(null)\n setCurrentSavedFilterQuery(null)\n }\n if (queryObject) {\n if (queryObject) {\n searchChips = queryObject?.search_predicate || null;\n customChips = queryObject?.custom_filter_predicate || null;\n }\n }\n if (searchChips) {\n setSearchFilter(searchChips);\n // const formattedChips = searchChips?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n\n const formattedChips = extractChips(searchChips);\n setSearchChips(formattedChips);\n\n }\n if (customChips && Object.keys(customChips).length !== 0) {\n setCustomFilter(customChips);\n const rules: FilterRule = transformFiltersToRules(customChips);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n const hasGroupingRules = (queryObject?.grouping_rules?.some((rule: any) => rule.fieldName !== null));\n\n if (hasGroupingRules) {\n setGroupingRules(queryObject?.grouping_rules);\n } else {\n // If no grouping rules in localStorage check layout\n const layoutGroupBy = viewData?.data?.solidView?.layout?.attrs?.groupBy;\n\n if (Array.isArray(layoutGroupBy) && layoutGroupBy.length > 0) {\n const initialGroupingRules: GroupingRule[] = layoutGroupBy.map((groupStr: string, index: number) => {\n const [fieldName, dateGrouping] = groupStr.split(\":\");\n return {\n id: Date.now() + index,\n fieldName: fieldName || null,\n dateGrouping: (dateGrouping as DateGroupingFormat) || null\n };\n });\n setGroupingRules(initialGroupingRules);\n }\n }\n\n if (queryObject?.aggregation_rules && queryObject?.aggregation_rules !== aggregationRules) {\n setAggregationRules(queryObject?.aggregation_rules);\n }\n\n\n setRefreshKey((prev) => prev + 1)\n setHasSearched(true);\n }\n }\n fn()\n }, [viewData?.data?.solidView?.id, activeSavedFilter, savedFiltersLoaded])\n\n useEffect(() => {\n const fn = async () => {\n if (filterPredicates) {\n if (filterPredicates?.custom_filter_predicate && filterPredicates?.custom_filter_predicate !== customFilter) {\n setCustomFilter(filterPredicates?.custom_filter_predicate);\n const rules: FilterRule = transformFiltersToRules(filterPredicates.custom_filter_predicate);\n const hydratedRules = await hydrateRelationRules([rules], viewData);\n setFilterRules(hydratedRules);\n }\n if (filterPredicates?.search_predicate && filterPredicates?.search_predicate !== searchFilter) {\n setSearchFilter(filterPredicates?.search_predicate);\n // const formattedChips = filterPredicates.search_predicate?.$and.map((chip: any, key: any) => {\n // const chipKey = Object.keys(chip)[0]; // Get the key, e.g., \"displayName\"\n // const chipValue = chip[chipKey]?.$containsi; // Get the value of \"$containsi\"\n // const chipdata = {\n // columnName: chipKey,\n // value: chipValue\n // };\n // return chipdata\n // }\n // );\n // setSearchChips(formattedChips);\n const formattedChips = extractChips(filterPredicates.search_predicate);\n setSearchChips(formattedChips);\n\n }\n }\n }\n fn()\n }, [filterPredicates])\n\n useEffect(() => {\n if (viewData?.data?.solidFieldsMetadata) {\n // Reset search state when switching views\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null);\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n setInputValue(\"\");\n\n let fieldsData = viewData?.data?.solidFieldsMetadata;\n // console.log(`fiels data while rendering solid global search element: `);\n // console.log(fieldsData);\n\n const layoutChildren = viewData?.data?.solidView?.layout?.children ?? [];\n const fieldElements = extractFields(layoutChildren);\n\n\n const fieldsList = Object.entries(fieldsData ?? {}).map(([key, value]: any) => {\n const viewFieldElement = fieldElements.find(\n (f: any) => f?.attrs?.name === key\n );\n return {\n name: value.displayName,\n value: key,\n type: value.type,\n ormType: value.ormType,\n matchMode: viewFieldElement?.attrs?.searchMatchMode,\n searchField: viewFieldElement?.attrs?.searchField ?? null,\n isSearchable: viewFieldElement?.attrs?.isSearchable ?? false,\n relationType: value?.relationType ?? null,\n };\n });\n\n setFields(fieldsList);\n\n const searchableFieldsList = fieldsList.filter((field: any) => {\n if (!field.isSearchable) return false;\n\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n return !!field.searchField;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n const groupableFieldsList = fieldsList.filter((field: any) => {\n switch (field.type) {\n case \"relation\":\n // Only include relation if searchField is present\n if (field.relationType === \"many-to-one\")\n return true;\n return false;\n case \"longText\":\n case \"shortText\":\n case \"selectionStatic\":\n case \"selectionDynamic\":\n case \"int\":\n case \"float\":\n case \"boolean\":\n case \"date\":\n case \"datetime\":\n return true;\n // case \"selectionStatic\":\n case \"computed\":\n return field.ormType === \"varchar\";\n default:\n return false;\n }\n });\n\n // Optionally map to a minimal structure if needed for UI\n let finalSearchableFieldsList: any = searchableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode\n }));\n\n setSearchableFields(finalSearchableFieldsList);\n\n let finalGroupableFieldsList: any = groupableFieldsList.map((field: any) => ({\n fieldName: field.value,\n displayName: field.name,\n searchField: field.searchField ?? \"\",\n matchMode: field.matchMode,\n type: field.type,\n ormType: field.ormType,\n relationType: field.relationType,\n computedFieldValueType: field.computedFieldValueType\n }));\n\n setGroupableFields(finalGroupableFieldsList)\n\n const predefinedSearchesList = viewData?.data?.solidView?.layout?.attrs?.predefinedSearches || [];\n setPredefinedSearches(predefinedSearchesList);\n }\n // used to open the \n }, [viewData])\n\n useEffect(() => {\n if (chipsRef.current) {\n const inputElement = chipsRef.current.querySelector(\"input\");\n if (inputElement) {\n inputElement.addEventListener(\"input\", (e: any) => {\n setInputValue((e.target as HTMLInputElement).value);\n });\n }\n }\n }, []);\n\n\n const handleAddChip = (columnName?: string) => {\n if (inputValue?.trim()) {\n const fallbackField = searchableFields[0]; // guaranteed object\n if (!fallbackField) return;\n // Support comma-separated values: split, trim and add as separate chips\n const values = inputValue.split(\",\").map(v => v.trim()).filter(v => v !== \"\");\n const fieldName = columnName || fallbackField.fieldName;\n const chipsToAdd = values.map(v => ({\n columnName: fieldName,\n value: v,\n columnDisplayName: fallbackField.displayName,\n searchField: fallbackField.searchField,\n matchMode: fallbackField.matchMode\n }));\n\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n };\n\n const clearCustomFilter = () => {\n // handleApplyCustomFilter(finalFilter)\n setFilterRules(initialState);\n setCustomFilter(null)\n // setPredefinedSearchChip(null)\n // setPredefinedSearchBaseFilter(null)\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n }\n\n\n const transformCustomFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCustomFilter(finalCustomFilter);\n // handleApplyCustomFilter(finalFilter);\n setShowGlobalSearchElement(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n }\n\n const transformSavedFilterRules = (filterRules: any) => {\n const transformedFilter = transformRulesToFilters(filterRules[0], viewData);\n\n // If there's a predefined search, merge it with the new custom filter\n let finalCustomFilter = transformedFilter;\n // if (predefinedSearchChip && predefinedSearchBaseFilter) {\n // // Combine predefined filter with new custom filter\n // finalCustomFilter = {\n // $and: [predefinedSearchBaseFilter, transformedFilter]\n // };\n // }\n setCurrentSavedFilterQuery(finalCustomFilter);\n // handleApplyCustomFilter(finalFilter);\n setShowSavedFilterComponent(false);\n setHasSearched(true)\n setRefreshKey((prev) => prev + 1)\n\n\n }\n\n const applyGrouping = (groupingRules: GroupingRule[], aggregationRules: AggregationRule[]) => {\n setHasSearched(true)\n setShowGroupFilterElement(false);\n setGroupingRules(groupingRules);\n setAggregationRules(aggregationRules);\n setRefreshKey((prev) => prev + 1)\n }\n\n useEffect(() => {\n if (refreshKey > 0 && hasSearched) {\n\n const formattedChips = {\n $and: searchChips.map((chip: any) => ({\n fieldName: chip.columnName,\n matchMode: chip.matchMode,\n value: [chip.value],\n searchField: chip.searchField ?? \"\",\n }))\n };\n\n\n const finalSearchFilter = tranformSearchToFilters(formattedChips);\n setSearchFilter(finalSearchFilter);\n\n let finalSavedFilter: any = currentSavedFilterQuery\n const finalPredefinedFilter = predefinedSearchBaseFilter\n\n const finalCustomFilter = customFilter\n const finalFilter = mergeAllDiffFilters(finalCustomFilter, finalSearchFilter, finalSavedFilter, finalPredefinedFilter, groupingRules, aggregationRules)\n handleApplyCustomFilter(finalFilter, true);\n setHasSearched(false)\n // }\n }\n }, [refreshKey]);\n\n\n // Handle predefined search selection\n\n const hasCustomFilterChanged = () => {\n if (!predefinedSearchChip || !customFilter || !predefinedSearchBaseFilter) {\n return false;\n }\n // Deep comparison to check if filter has changed\n return JSON.stringify(customFilter) !== JSON.stringify(predefinedSearchBaseFilter);\n };\n\n const openSavedCustomFilter = async (savedfilter: any) => {\n //Open custom filter popup \n // router.push(`?savedQuery=${savedfilter.id}`);\n // setShowGlobalSearchElement(true);\n // // dont refetch the data yet\n // const customFilter = JSON.parse(savedfilter.filterQueryJson);\n // setCustomFilter(customFilter ? customFilter : null);\n // if (customFilter) {\n // const formatedCustomChips: FilterRule = transformFiltersToRules(customFilter ? customFilter : null);\n // setFilterRules(formatedCustomChips ? [formatedCustomChips] : initialState);\n // }\n\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n const savedfilterId = savedfilter.id;\n // router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n const currentSavedFilterData: any = savedFilters.find((savedFilter: any) => savedFilter.id === savedfilterId);\n setCurrentSavedFilterData(currentSavedFilterData);\n if (currentSavedFilterData) {\n const filterJson = JSON.parse(currentSavedFilterData?.filterQueryJson);\n if (filterJson) {\n let finalSavedFilter = filterJson\n setCurrentSavedFilterQuery(finalSavedFilter)\n const rules: FilterRule = transformFiltersToRules(finalSavedFilter ? finalSavedFilter : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const deleteSavedFilter = async () => {\n // delte the saved filter with id \n await deleteEntity(savedFilterTobeDeleted);\n // triggerGetSolidEntities(savedFilterQueryString);\n let parsedSearchParams = searchParams;\n const savedQuery = parsedSearchParams?.get(\"savedQuery\");\n if (savedFilterTobeDeleted == savedQuery) {\n const urlParams = new URLSearchParams(window.location.search);\n urlParams.delete(\"savedQuery\");\n router.push(`?${urlParams.toString()}`);\n }\n setIsDeleteSQDialogVisible(false);\n setTimeout(() => {\n setSavedFilterFetchDataRefreshKey(prev => prev + 1)\n }, 500)\n }\n const handleSaveFilter = async (formValues: any) => {\n setShowSaveFilterPopup(false)\n\n try {\n if (formValues.id) {\n const filterJson = currentSavedFilterQuery;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n\n await updateEntity({ id: +formValues.id, data: formData }).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setPredefinedSearchBaseFilter(null);\n setTimeout(() => {\n router.push(`?savedQuery=${formValues.id}`);\n }, 500)\n } else {\n\n const filterJson = customFilter;\n const formData = new FormData();\n formData.append(\"name\", formValues.name);\n formData.append(\"filterQueryJson\", JSON.stringify(filterJson, null, 2));\n formData.append(\"modelId\", viewData?.data?.solidView?.model?.id);\n formData.append(\"viewId\", viewData?.data?.solidView?.id);\n formData.append(\"isPrivate\", formValues.isPrivate);\n formData.append(\"userId\", user?.id);\n const result = await createEntity(formData).unwrap();\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n\n setTimeout(() => {\n router.push(`?savedQuery=${result.data.id}`);\n }, 500)\n\n }\n } catch (error) {\n\n }\n }\n\n\n\n useEffect(() => {\n // Explicitly type the event as a MouseEvent\n function handleClickOutside(event: MouseEvent) {\n if (overlayRef.current && !overlayRef.current.contains(event.target as Node)) {\n setShowOverlay(false);\n }\n }\n if (showOverlay) {\n document.addEventListener(\"mousedown\", handleClickOutside);\n }\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, [showOverlay]);\n\n const CustomChip = () => {\n console.log(\"customFilter\", customFilter);\n const ruleCount =\n customFilter?.$or?.length ??\n customFilter?.$and?.length ??\n Object.keys(customFilter || {}).length;\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n setShowGlobalSearchElement(true)\n }\n }>\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{ruleCount}</strong> rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={clearCustomFilter}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n\n //saved filter related code start\n\n const applySavedFilter = (savedfilter: any) => {\n\n setSearchChips([]);\n setSearchFilter(null);\n setFilterRules(initialState);\n setCustomFilter(null)\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n const currentPageUrl = window.location.pathname; // Get the current page URL\n localStorage.removeItem(currentPageUrl); // Store in local storage with the URL as the key\n // push the savedQuery=1 in url \n if (savedfilter?.id) {\n router.push(`?savedQuery=${savedfilter.id}`);\n setShowOverlay(false);\n } else {\n console.error(ERROR_MESSAGES.SAVE_FILTER_UNDEFINED_NULL);\n }\n }\n\n const removeSavedFilter = () => {\n const params = new URLSearchParams(searchParams.toString());\n setCurrentSavedFilterData(null);\n setCurrentSavedFilterQuery(null)\n if (params.has(\"savedQuery\")) {\n params.delete(\"savedQuery\");\n const newUrl = params.toString()\n ? `${pathname}?${params.toString()}`\n : pathname;\n router.push(newUrl);\n }\n }\n\n const SavedFiltersChip = () => {\n\n return (\n <li>\n <div className=\"custom-filter-chip-type\">\n <div className=\"flex align-items-center gap-2 text-base\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\"\n onClick={() => {\n const fn = async () => {\n if (currentSavedFilterQuery) {\n const rules: FilterRule = transformFiltersToRules(currentSavedFilterQuery ? currentSavedFilterQuery : null);\n const hydratedRules = await hydrateRelationRules(\n [rules],\n viewData\n );\n setCurrentSavedFilterRules(hydratedRules ? hydratedRules : initialState);\n setShowSavedFilterComponent(true)\n }\n }\n fn()\n }\n }\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{currentSavedFilterData?.name}</strong></span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={removeSavedFilter}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n const removeGrouping = () => {\n setGroupingRules(defaultGroupingRules);\n setAggregationRules(defaultAggregationRules);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n\n const GroupingChip = () => {\n return (\n <li className=\"solid-global-search-chip\">\n <div className=\"flex align-items-center gap-2\">\n <div className=\"flex align-items-center gap-2\">\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 20 20\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"\n\n onClick={() => setShowGroupFilterElement(true)}\n >\n <rect width=\"20\" height=\"20\" rx=\"4\" fill=\"#722ED1\" />\n <path d=\"M8.66667 15V13.3333H11.3333V15H8.66667ZM6 10.8333V9.16667H14V10.8333H6ZM4 6.66667V5H16V6.66667H4Z\"\n fill=\"white\" />\n </svg>\n <span><strong>{groupingRules.length}</strong> Grouping rules applied</span>\n </div>\n\n {/* button to clear filter */}\n <a onClick={removeGrouping}\n style={{ cursor: \"pointer\" }}\n >\n <i className=\"pi pi-times ml-1\">\n </i></a>\n </div>\n </li>\n )\n };\n\n\n\n\n //saved filter related code end\n\n\n // search related code start\n\n const handleRemoveChipGroup = (columnName: string) => {\n const updatedChips = searchChips.filter(chip => chip.columnName !== columnName);\n setSearchChips(updatedChips);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n\n };\n\n const groupedSearchChips = searchChips.reduce((acc: Record<string, string[]>, chip) => {\n const key = chip.columnName;\n if (!key) return acc; // skip if undefined\n\n if (!acc[key]) {\n acc[key] = [];\n }\n acc[key].push(chip.value);\n return acc;\n }, {});\n\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && inputValue?.trim()) {\n handleAddChip();\n e.preventDefault();\n setShowOverlay(false);\n } else if (e.key === \"Backspace\" && inputValue === \"\") {\n\n if (searchChips.length > 0) {\n setSearchChips((prev) => prev.slice(0, -1));\n } else if (customFilter) {\n setCustomFilter(null)\n setFilterRules(initialState);\n } else if (predefinedSearchChip) {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null);\n } else if (activeSavedFilter) {\n removeSavedFilter()\n } else if (activeSavedFilter) {\n clearCustomFilter();\n }\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n }\n };\n\n const SearchChip = () => (\n <>\n {Object.entries(groupedSearchChips).map(([column, values]) => {\n const fieldMeta = searchableFields.find(f => f.fieldName === column);\n const columnDisplayName = fieldMeta?.displayName || column;\n\n return (\n <li key={column}>\n <div className=\"search-filter-chip-type\">\n <div>{columnDisplayName}</div>\n {values.map((value, index) => (\n <React.Fragment>\n {/* displayname */}\n <span key={index} className=\"custom-chip-value\">{value}\n </span>\n {index < values.length - 1 &&\n <span className=\"custom-chip-or\">or</span>\n }\n </React.Fragment>\n ))}\n {/* button to clear filter */}\n <i className=\"pi pi-times ml-1\"\n style={{ cursor: \"pointer\" }}\n onClick={() => handleRemoveChipGroup(column)}\n >\n </i>\n </div>\n </li>\n )\n })}\n </>\n );\n\n // search related code end\n\n\n // predefinedfilter related code start\n\n const handlePredefinedSearch = (predefinedSearch: any) => {\n if (!inputValue?.trim()) return;\n\n if (!predefinedSearch?.filters) {\n console.error('Invalid predefined search: missing filters', predefinedSearch);\n return;\n }\n\n try {\n // Replace {{ search }} placeholders with actual search value\n const processedFilter = replacePlaceholders(predefinedSearch.filters, inputValue.trim());\n\n // Clear all existing filters and searches\n // setSearchChips([]);\n // setSearchFilter(null);\n // setFilterRules(initialState);\n // setCustomFilter(null)\n // removeSavedFilter();\n // Set the predefined search chip\n setPredefinedSearchChip({\n name: predefinedSearch.name,\n value: inputValue.trim()\n });\n\n setPredefinedSearchBaseFilter(processedFilter);\n\n // Apply the predefined search filter as custom filter\n // setCustomFilter(processedFilter);\n\n // Apply the filter\n // handleApplyCustomFilter(finalFilter);\n\n // Clear input and close overlay\n setInputValue(\"\");\n setShowOverlay(false);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n } catch (error) {\n console.error('Error applying predefined search:', error);\n // Optionally show user-friendly error message\n }\n };\n\n\n const removePredefinedSearchChip = () => {\n setPredefinedSearchChip(null);\n setPredefinedSearchBaseFilter(null)\n setCustomFilter(null);\n // handleApplyCustomFilter(finalFilter);\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n };\n\n const PredefinedSearchChip = () => (\n <li>\n <div className=\"search-filter-chip-type\">\n <div className=\"flex align-items-center gap-2\">\n <strong>{predefinedSearchChip?.name}:</strong>\n <span className=\"custom-chip-value\">{predefinedSearchChip?.value}</span>\n </div>\n {/* button to clear filter */}\n <i className=\"pi pi-times ml-1\"\n style={{ cursor: \"pointer\" }}\n onClick={removePredefinedSearchChip}\n >\n </i>\n </div>\n </li>\n );\n\n // predefinedfilter related code end\n\n return (\n <>\n <div className=\"flex justify-content-center solid-custom-filter-wrapper relative\">\n <div className=\"solid-global-search-element\">\n <ul className=\"\">\n {currentSavedFilterData && <SavedFiltersChip />}\n {predefinedSearchChip && <PredefinedSearchChip />}\n {customFilter && <CustomChip />}\n {groupingRules.length > 0 && groupingRules.some(r => r.fieldName !== null) && <GroupingChip />}\n <SearchChip />\n <li ref={chipsRef}>\n <div className=\"relative solid-global-search-element-wrapper\">\n <InputText\n value={inputValue || \"\"}\n placeholder=\"Search.\"\n onChange={(e) => {\n setInputValue(e.target.value);\n setShowOverlay(true);\n }}\n onFocus={() => {\n if (inputValue?.trim()) setShowOverlay(true);\n }}\n onBlur={() => {\n // Delay so you can click buttons inside overlay\n setTimeout(() => setShowOverlay(false), 150);\n }}\n\n onKeyDown={handleKeyDown}\n />\n <Button\n icon=\"pi pi-search\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => setShowOverlay(true)}\n className=\"custom-filter-button\"\n />\n </div>\n </li>\n </ul>\n </div>\n\n {showOverlay && (\n <div ref={overlayRef} className=\"absolute w-full z-5 shadow-2 solid-search-overlay-pannel\" style={{ top: 35, background: \"var(--surface-0)\", border: '1px solid var(--surface-300) !important', borderRadius: '6px' }}>\n {/* <div ref={overlayRef} className=\"absolute w-full z-5 surface-0 border-round border-1 border-300 shadow-2 solid-search-overlay-pannel\" style={{ top: 35 }}> */}\n {inputValue ? (\n <>\n <div className=\"custom-filter-search-options px-3 py-2 flex flex-column\">\n <h6 className=\"my-1 font-bold\">Search By Fields</h6>\n {\n searchableFields.map((value: any, index: any) => {\n // console.log(\"value\", value);\n\n return (\n <Button\n key={index}\n className=\"p-2 flex gap-1 text-color\"\n // onClick={() => handleAddChip(value)}\n onMouseDown={(e) => {\n // Prevent focus loss from input\n e.preventDefault();\n const currentValue = inputValue?.trim();\n if (currentValue) {\n const values = currentValue.split(\",\").map((v) => v.trim()).filter((v) => v !== \"\");\n const chipsToAdd = values.map(v => ({\n columnName: value.fieldName,\n value: v,\n columnDisplayName: value.displayName,\n searchField: value.searchField,\n matchMode: value.matchMode\n }));\n setSearchChips((prev) => [...prev, ...chipsToAdd]);\n setInputValue(\"\");\n setHasSearched(true);\n setRefreshKey((prev) => prev + 1)\n setShowOverlay(false);\n }\n }}\n text\n severity=\"secondary\"\n size=\"small\"\n >\n Search <strong>{value.displayName}</strong> for: <span className=\"font-bold text-color\">{inputValue}</span>\n </Button>\n )\n })\n }\n </div>\n {predefinedSearches && predefinedSearches.length > 0 && (\n <>\n <Divider className=\"m-0\" />\n <div className=\"custom-filter-search-options px-3 py-2 flex flex-column\">\n <h6 className=\"my-1 font-bold\">Predefined Searches</h6>\n {predefinedSearches.map((predefinedSearch: any, index: number) => (\n <Button\n key={index}\n className=\"p-2 flex flex-column align-items-start gap-1 text-color\"\n onMouseDown={(e) => {\n e.preventDefault();\n handlePredefinedSearch(predefinedSearch);\n }}\n text\n severity=\"secondary\"\n size=\"small\"\n >\n <div className=\"flex gap-1 align-items-center\">\n <strong>{predefinedSearch.name}:</strong>\n <span className=\"font-bold text-color\">{inputValue}</span>\n </div>\n <div className=\"text-xs\">{predefinedSearch.description}</div>\n </Button>\n ))}\n </div>\n </>\n )}\n </>\n ) :\n <>\n <div className=\"p-3 text-base\">Search Here...</div>\n <Divider className=\"m-0\" />\n </>\n }\n {savedFilters.length > 0 &&\n <>\n <div className=\"p-3\">\n <p className=\"font-medium\">Saved Filters</p>\n <div className=\"flex flex-column gap-2\">\n {savedFilters.map((savedfilter: any) =>\n <SavedFilterList savedfilter={savedfilter} activeSavedFilter={activeSavedFilter} applySavedFilter={applySavedFilter} openSavedCustomFilter={openSavedCustomFilter} setSavedFilterTobeDeleted={setSavedFilterTobeDeleted} setIsDeleteSQDialogVisible={setIsDeleteSQDialogVisible}></SavedFilterList>\n )}\n </div>\n </div>\n <Divider className=\"m-0\" />\n </>\n }\n <div className=\"px-2 py-1 flex justify-content-between\">\n <Button text size=\"small\" label=\"Custom Filter\" iconPos=\"left\" icon='pi pi-plus' onClick={() => setShowGlobalSearchElement(true)} className=\"font-bold\" />\n {viewType === \"tree\" &&\n <Button text size=\"small\" label=\"Grouping\" iconPos=\"left\" icon='pi pi-plus' onClick={() => setShowGroupFilterElement(true)} className=\"font-bold\" />\n }\n </div>\n </div>\n )\n }\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showGlobalSearchElement} style={{ width: '65vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showGlobalSearchElement) return; setShowGlobalSearchElement(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Add Custom Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowGlobalSearchElement(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={filterRules} setFilterRules={setFilterRules} transformFilterRules={transformCustomFilterRules} closeDialog={() => setShowGlobalSearchElement(false)}></FilterComponent>\n }\n </div>\n </Dialog>\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showGroupFilterElement} style={{ width: '20vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showGroupFilterElement) return; setShowGroupFilterElement(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\"></h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowGroupFilterElement(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {groupableFields.length > 0 &&\n <GroupingComponent\n viewData={viewData}\n fields={groupableFields}\n groupingRules={groupingRules}\n setGroupingRules={setGroupingRules}\n aggregationRules={aggregationRules}\n setAggregationRules={setAggregationRules}\n applyGrouping={applyGrouping}\n closeDialog={() => setShowGroupFilterElement(false)}\n ></GroupingComponent>\n }\n </div>\n </Dialog >\n <Dialog header={false} className=\"solid-global-search-filter\" showHeader={false} visible={showSavedFilterComponent} style={{ width: '65vw' }} breakpoints={{ '1024px': '75vw', '991px': '90vw', '767px': '94w', '250px': '96vw' }} onHide={() => { if (!showSavedFilterComponent) return; setShowSavedFilterComponent(false); }}>\n <div className=\"flex align-items-center justify-content-between px-3\">\n <h5 className=\"solid-custom-title m-0\">Saved Filter</h5>\n <Button icon=\"pi pi-times\" rounded text aria-label=\"Cancel\" type=\"reset\" size=\"small\" onClick={() => setShowSavedFilterComponent(false)} />\n </div>\n <Divider className=\"m-0\" />\n <div className=\"p-2 lg:p-2\">\n {fields.length > 0 &&\n <FilterComponent viewData={viewData} fields={fields} filterRules={currentSavedFilterRules} setFilterRules={setCurrentSavedFilterRules} transformFilterRules={transformSavedFilterRules} closeDialog={() => setShowSavedFilterComponent(false)}></FilterComponent>\n }\n </div>\n </Dialog>\n <Dialog header=\"Save Custom Filter\" className=\"solid-custom-filter-dialog\" visible={showSaveFilterPopup} style={{ width: 500 }} onHide={() => { if (!showSaveFilterPopup) return; setShowSaveFilterPopup(false); }}>\n <SolidSaveCustomFilterForm currentSavedFilterData={currentSavedFilterData} handleSaveFilter={handleSaveFilter} closeDialog={setShowSaveFilterPopup}></SolidSaveCustomFilterForm>\n </Dialog>\n\n <Dialog\n visible={isDeleteSQDialogVisible}\n header=\"Confirm Delete\"\n modal\n className=\"solid-confirm-dialog\"\n footer={() => (\n <div className=\"flex justify-content-center\">\n <Button label=\"Yes\" icon=\"pi pi-check\" className='small-button' severity=\"danger\" autoFocus onClick={deleteSavedFilter} />\n <Button label=\"No\" icon=\"pi pi-times\" className='small-button' onClick={() => setIsDeleteSQDialogVisible(false)} />\n </div>\n )}\n onHide={() => setIsDeleteSQDialogVisible(false)}\n >\n <p>Are you sure you want to delete the {currentSavedFilterData?.name} saved query?</p>\n </Dialog>\n </div >\n {/* <div>\n <Button\n icon=\"pi pi-save\"\n style={{ fontSize: 10 }}\n severity=\"secondary\"\n outlined size=\"small\"\n onClick={() => {\n setShowSaveFilterPopup(true)\n }}\n />\n </div> */}\n </>\n )\n});\n"]}
|