@erpsquad/common 1.8.93 → 1.8.95

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.
Files changed (75) hide show
  1. package/dist/api-client/api.hrms/api/index.esm.js +1 -12
  2. package/dist/api-client/api.hrms/api/index.esm.js.map +1 -1
  3. package/dist/api-client/api.hrms/api/index.js +1 -1
  4. package/dist/api-client/api.hrms/api/index.js.map +1 -1
  5. package/dist/api-client/api.inventory/api/index.esm.js +95 -30
  6. package/dist/api-client/api.inventory/api/index.esm.js.map +1 -1
  7. package/dist/api-client/api.inventory/api/index.js +1 -1
  8. package/dist/api-client/api.inventory/api/index.js.map +1 -1
  9. package/dist/api-client/api.inventory/api-types.d.ts +930 -425
  10. package/dist/api-client/api.inventory/api.d.ts +14 -10
  11. package/dist/api-client/api.rbac/api/index.esm2.js +218 -0
  12. package/dist/api-client/api.rbac/api/index.esm2.js.map +1 -1
  13. package/dist/api-client/api.rbac/api/index2.js +1 -1
  14. package/dist/api-client/api.rbac/api/index2.js.map +1 -1
  15. package/dist/components/action-bar/action-bar/index.esm.js +1 -1
  16. package/dist/components/action-bar/action-bar/index.esm.js.map +1 -1
  17. package/dist/components/action-bar/action-bar/index.js +5 -5
  18. package/dist/components/action-bar/action-bar/index.js.map +1 -1
  19. package/dist/components/filter/filter/index.esm.js +1 -1
  20. package/dist/components/filter/filter/index.esm.js.map +1 -1
  21. package/dist/components/filter/filter/index.js +7 -7
  22. package/dist/components/filter/filter/index.js.map +1 -1
  23. package/dist/components/header/redux/actionCreator/index.esm.js +1 -1
  24. package/dist/components/header/redux/actionCreator/index.esm.js.map +1 -1
  25. package/dist/components/header/redux/actionCreator/index.js +1 -1
  26. package/dist/components/header/redux/actionCreator/index.js.map +1 -1
  27. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  28. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  29. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js +1 -1
  30. package/dist/components/inventory-reports-title-bar/redux/actionCreator/index.js.map +1 -1
  31. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js +1 -1
  32. package/dist/components/reports-title-bar/redux/actionCreator/index.esm.js.map +1 -1
  33. package/dist/components/reports-title-bar/redux/actionCreator/index.js +1 -1
  34. package/dist/components/reports-title-bar/redux/actionCreator/index.js.map +1 -1
  35. package/dist/components/share-modal/redux/actionCreator/index.esm.js +1 -1
  36. package/dist/components/share-modal/redux/actionCreator/index.esm.js.map +1 -1
  37. package/dist/components/share-modal/redux/actionCreator/index.js +1 -1
  38. package/dist/components/share-modal/redux/actionCreator/index.js.map +1 -1
  39. package/dist/components/upload/upload/index.esm.js +2 -2
  40. package/dist/components/upload/upload/index.esm.js.map +1 -1
  41. package/dist/components/upload/upload/index.js +11 -11
  42. package/dist/components/upload/upload/index.js.map +1 -1
  43. package/dist/contexts/AuthContext/index.esm.js +1 -1
  44. package/dist/contexts/AuthContext/index.esm.js.map +1 -1
  45. package/dist/contexts/AuthContext/index.js +1 -1
  46. package/dist/contexts/AuthContext/index.js.map +1 -1
  47. package/dist/contexts/languageContext/index.esm.js +1 -1
  48. package/dist/contexts/languageContext/index.esm.js.map +1 -1
  49. package/dist/contexts/languageContext/index.js +1 -1
  50. package/dist/contexts/languageContext/index.js.map +1 -1
  51. package/dist/src/api-client/api.inventory/api.d.ts +14 -10
  52. package/dist/src/utils/api.d.ts +18 -8
  53. package/dist/style.css +65 -65
  54. package/dist/utils/api/index.esm.js +39 -18
  55. package/dist/utils/api/index.esm.js.map +1 -1
  56. package/dist/utils/api/index.js +1 -1
  57. package/dist/utils/api/index.js.map +1 -1
  58. package/dist/utils/api.d.ts +18 -8
  59. package/dist/utils/common/index.esm.js +6 -6
  60. package/dist/utils/common/index.esm.js.map +1 -1
  61. package/dist/utils/common/index.js +1 -1
  62. package/dist/utils/common/index.js.map +1 -1
  63. package/dist/views/form-builder/redux/actionCreator/index.esm.js +1 -1
  64. package/dist/views/form-builder/redux/actionCreator/index.esm.js.map +1 -1
  65. package/dist/views/form-builder/redux/actionCreator/index.js +1 -1
  66. package/dist/views/form-builder/redux/actionCreator/index.js.map +1 -1
  67. package/dist/views/template-editor/components/EditorSidebar/index.esm.js +1 -1
  68. package/dist/views/template-editor/components/EditorSidebar/index.esm.js.map +1 -1
  69. package/dist/views/template-editor/components/EditorSidebar/index.js +1 -1
  70. package/dist/views/template-editor/components/EditorSidebar/index.js.map +1 -1
  71. package/dist/views/template-editor/templates/index.esm.js +1 -1
  72. package/dist/views/template-editor/templates/index.esm.js.map +1 -1
  73. package/dist/views/template-editor/templates/index.js +1 -1
  74. package/dist/views/template-editor/templates/index.js.map +1 -1
  75. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/action-bar/action-bar.tsx"],"sourcesContent":["import Button from '../button/button';\nimport Typography from '../typography/typography';\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport './action-bar.scss';\nimport {\n\t/* IconButton, */ Box,\n\tDivider,\n\tIconButton,\n\tMenu,\n\tMenuItem,\n\tuseMediaQuery,\n\tuseTheme\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport ViewModal from '../view-modal/view-modal';\nimport HeaderCard from '../header-card/header-card';\nimport SearchBar from '../search-bar/search-bar';\nimport { useEffect, useMemo, useState } from 'react';\nimport images from '../../assets/images';\nimport Toggle from '../toggle/toggle';\nimport Filter from '../filter/filter';\nimport Select from '../select/select';\nimport { RuleGroupType } from 'react-querybuilder';\nimport SaveFilterModal from '../save-filter-modal/save-filter-modal';\nimport {\n\tsetBaseUrl,\n\tpostV1Filter,\n\tgetV1FilterResource\n} from '../../api-client/api.system-feature/api';\nimport type * as Types from '../../api-client/api.system-feature/api-types';\nimport { auth } from '../../constants/auth';\nimport DropdownButton from '../dropdown-button/dropdown-button';\nimport TitleDropdownButton from '../title-dropdown-button/title-dropdown-button';\nimport { useAppDispatch, useAppSelector } from '../../redux/hooks';\nimport { getToken } from '../../utils/common';\nimport React from 'react';\nimport UploadExcel from '../upload-excel/upload-excel';\nimport { generateQueryString, getErrorMessage, getExcelTemplateGenerateTemplate, getOperatorLabel, getExcelExportTemplate } from '../../utils/common';\nimport { initialFilter, ViewType } from '../../contexts/page-context';\nimport { usePages } from '../../hooks/use-pages';\nimport Chip from '../chip/chip';\nimport formatText, { formatLabel } from '../../utils/format-text';\nimport { Cancel } from '@mui/icons-material';\nimport { useLocation } from 'react-router-dom';\nimport { IResources, routeToResourceMap } from '../../constants/route-page-map';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { FilterRemove, Filter as FilterIcon, Search, FolderSave, Export, Import, DocumentDownload } from '../icons';\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface ActionData {\n\tlabel: string;\n\tposition: number;\n}\ninterface ActionBarPropsType {\n\ttitle: string;\n\tdata: ActionData[];\n\tsetData: React.Dispatch<React.SetStateAction<ActionData[]>>;\n\tactive: string;\n\tsetActive: (view: ViewType) => void;\n\thandleAddButton?: (e?: any) => void;\n\tbutton?: boolean;\n\thandleSearch?: (value: string) => void;\n\tfilters?: string;\n\tdisabledViews?: string[];\n\tisDropdownMenuButton?: boolean;\n\titemListingDropdownOptions?: any;\n\tisTitleMenu?: boolean;\n\ttitleMenus?: any;\n\tfolderData?: any;\n\ttype?: any;\n\tfields?: any;\n\tapplyFilter?: any;\n\tsavedFilters?: SavedFilter;\n\tsetSavedFilters?: (view: SavedFilter) => void;\n\tisToggleButton?: boolean;\n\thandleToggleButton?: (e?: any) => void;\n\tshowView?: boolean;\n\tshowSearch?: boolean;\n\tshowFilter?: boolean;\n\tcustomButtons?: React.ReactNode[] | JSX.Element[];\n\tactionBtn?: React.ReactNode[] | JSX.Element[];\n\tpageName?: string;\n\timportModuleName?: string;\n\tsearchText?: string;\n\tselectedIds?: any;\n\tisUseFields?: boolean;\n\n}\n\ninterface SavedFilter {\n\tid: string;\n\tname: string;\n\tquery: RuleGroupType;\n}\n\nconst ActionBar = React.memo((props: ActionBarPropsType) => {\n\tconst token = localStorage.getItem(auth.storageTokenKeyName) || undefined;\n\tconst location = useLocation();\n\n\tconst {\n\t\ttitle,\n\t\tdata,\n\t\tsetData,\n\t\tactive,\n\t\tsetActive,\n\t\thandleAddButton,\n\t\thandleSearch,\n\t\tbutton = true,\n\t\tdisabledViews,\n\t\tisDropdownMenuButton = false,\n\t\titemListingDropdownOptions = [],\n\t\tisTitleMenu = false,\n\t\ttitleMenus = [],\n\t\ttype,\n\t\tfields = [],\n\t\tapplyFilter,\n\t\t// setSavedFilters,\n\t\t// savedFilters,\n\t\tisToggleButton = false,\n\t\thandleToggleButton,\n\t\tshowSearch = true,\n\t\tshowFilter = true,\n\t\tshowView = true,\n\t\tcustomButtons,\n\t\tpageName,\n\t\tactionBtn,\n\t\timportModuleName,\n\t\tselectedIds,\n\t\tsearchText,\n\t\tisUseFields\n\t} = props;\n\tconst dispatch = useAppDispatch();\n\tconst [isToggled, setIsToggled] = useState<boolean>(false);\n\tconst [isToggledForItem, setIsToggledForItem] = useState<boolean>(false);\n\tconst [openFilterPopup, setOpenFilterPopup] = useState<boolean>(false);\n\tconst [status, setStatus] = useState<string>('');\n\tconst [openSaveFilter, setIsOpenSaveFilter] = useState<boolean>(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\n\tconst [savedFilters, setSavedFilters] = useState<any[]>([]);\n\t// const [selectedSavedFilter, setSelectedSavedFilter] = useState<any>(null);\n\tconst [searchedText, setSearchedText] = useState<string>(\"\");\n\tconst { t } = useTranslation();\n\tconst theme = useTheme();\n\tconst isLgUp = useMediaQuery(theme.breakpoints.up('xl'));\n\tconst { activePage, updatePageInfo, schemaFields, setActivePage } = usePages();\n\tconst { filters } = activePage;\n\n\tconst resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n\t// const { filterBar, filterQuery } = useAppSelector((store) => {\n\t// \treturn store?.drive;\n\t// });\n\n\n\n\tuseEffect(() => {\n\t\tfetchSavedFilters();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\t\tif (resources?.pageResource || resources?.fieldResource) {\n\t\t\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\t.then((response: any) => {\n\t\t\t\t\tconst savedFilters = response.data.result.map((e: any) => {\n\t\t\t\t\t\treturn { id: e._id, name: e.name, query: e.data };\n\t\t\t\t\t});\n\n\t\t\t\t\tsetSavedFilters?.(savedFilters);\n\t\t\t\t})\n\t\t\t\t.catch((err: any) => console.log('Error fetching saved filters:', err));\n\t\t} else {\n\t\t\tsetSavedFilters([])\n\t\t}\n\t};\n\n\n\tconst handleFilterHide = () => {\n\t\t// dispatch(setFilterBar(false));\n\t\treturn\n\t};\n\n\tconst handleStatusChange = (event: any) => {\n\t\tsetStatus(event.target.value);\n\t};\n\n\tconst handleSaveFilterClick = () => {\n\t\tif (filters?.rules) {\n\t\t\tsetIsOpenSaveFilter(true);\n\t\t}\n\t};\n\n\tconst handleImportClick = (event: any) => {\n\t\tsetRowAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleActionsClose = () => {\n\t\tsetRowAnchorEl(null);\n\t};\n\n\tconst handleSaveFilter = (query: RuleGroupType) => {\n\t\t// dispatch(setFilterQuery(query));\n\t\treturn\n\t};\n\n\tconst handleSave = async (name: string, filterQuery: RuleGroupType) => {\n\n\t\t// dispatch(setFilterBar(false));\n\n\t\tconst postFilterRequest: Types.PostV1FilterRequest = {\n\t\t\t'x-token': token,\n\t\t\tmodule: resources?.pageResource || resources?.fieldResource || 'erp-common',\n\t\t\tname: name,\n\t\t\tis_applied: true,\n\t\t\tdata: filterQuery\n\t\t};\n\t\ttry {\n\t\t\tawait postV1Filter(postFilterRequest)\n\t\t\tenqueueSnackbar('Filters saved successfully.')\n\t\t\tsetActivePage((prev: any) => ({\n\t\t\t\t...prev,\n\t\t\t\tfilters: {\n\t\t\t\t\t...prev.filters,\n\t\t\t\t\tname,\n\t\t\t\t\trules: filterQuery.rules\n\t\t\t\t},\n\t\t\t\tfilterQueryString: generateQueryString(filterQuery)\n\t\t\t}));\n\t\t\tsetIsOpenSaveFilter(false);\n\t\t} catch (error) {\n\t\t\tlet m: string = 'Something went wrong on saving filters'\n\t\t\tif (error instanceof Error) {\n\t\t\t\tm = getErrorMessage(error.message)\n\t\t\t}\n\t\t\tenqueueSnackbar(m, { variant: 'error' })\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t};\n\n\tconst handleToggle = () => {\n\t\tsetIsToggled((prev) => !prev);\n\t\talert('Toggled');\n\t};\n\n\tconst handleChangeToggleButton = () => {\n\t\tsetIsToggledForItem((prev) => !prev);\n\t\thandleToggleButton?.();\n\t};\n\n\tconst handleCloseFilter = () => {\n\t\tsetOpenFilterPopup(false);\n\t};\n\n\tconst handleActiveHeaderCard = (data: ActionData) => {\n\t\tsetActive(data?.label);\n\t};\n\n\tconst downloadTemplate = async (moduleName: string) => {\n\t\tconst templateURL: any = await getExcelTemplateGenerateTemplate({\n\t\t\t'x-token': token,\n\t\t\tresource: moduleName\n\t\t});\n\t\tif (templateURL) {\n\t\t\tconst blob = await templateURL.blob();\n\n\t\t\tconst link = document.createElement('a');\n\n\t\t\tconst url = window.URL.createObjectURL(blob);\n\n\t\t\tlink.href = url;\n\t\t\tlink.download = `${moduleName}.xlsx`;\n\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t}\n\t};\n\n\tconst exportExcel = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\n\t\tconst templateURL: any = await getExcelExportTemplate({\n\t\t\t'x-token': token,\n\t\t\tactivePage: activePage,\n\t\t\tfilterQueryString: filterQueryString,\n\t\t\tselectedIds: selectedIds,\n\t\t\ttitle: title\n\t\t});\n\t\tif (templateURL) {\n\t\t\tconst blob = await templateURL.blob();\n\n\t\t\tconst link = document.createElement('a');\n\n\t\t\tconst url = window.URL.createObjectURL(blob);\n\n\t\t\tlink.href = url;\n\t\t\tlink.download = `${moduleName}.xlsx`;\n\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t}\n\t};\n\n\tconst openImportTemplate = () => {\n\t\tsetIsUploadModalOpen(true);\n\t};\n\tconst rowActionMenu = [];\n\tif (pageName && (!importModuleName || selectedIds)) {\n\t\trowActionMenu.push({\n\t\t\tlabel: 'Export Excel',\n\t\t\thandleAction: (moduleName: string) => exportExcel(moduleName, activePage.filterQueryString, selectedIds, title),\n\t\t\ticon: <Export fontSize='small' />\n\t\t})\n\t}\n\tif (pageName && importModuleName) {\n\t\t{\n\t\t\trowActionMenu.push({\n\t\t\t\tlabel: 'Download Template ',\n\t\t\t\thandleAction: (moduleName: string) => downloadTemplate(moduleName),\n\t\t\t\ticon: <DocumentDownload fontSize='small' />\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Import Template',\n\t\t\t\t\thandleAction: (moduleName: string) => openImportTemplate(moduleName),\n\t\t\t\t\ticon: <Import fontSize='small' />\n\t\t\t\t})\n\t\t}\n\t}\n\n\tconst getFilterChipLabels = (rule: any) => {\n\t\trule = { ...rule, field: rule.field?.replace(\"__replaceKey\", '') }\n\t\tlet label = schemaFields.find((f: any) => f.key === rule.field)?.label || rule.field;\n\t\tlabel = formatLabel(label?.replace('_id', ' '));\n\t\tconst opLabel = getOperatorLabel(rule, schemaFields);\n\n\t\tlet value = rule.value;\n\t\tif (Array.isArray(rule.value)) {\n\t\t\trule.value = rule.value.map(rv => formatLabel(typeof rv === 'object' ? (rv.label) : rv))\n\t\t\tvalue = rule.value.join(', ');\n\t\t}\n\n\t\treturn <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n\t\t\t<Typography type='s5' color='theme.secondary.800' weight='medium'>{label}</Typography>\n\t\t\t<Divider orientation='vertical' flexItem />\n\t\t\t<Typography type='s5' color='theme.primary.800' weight='medium'>{formatText(opLabel)} {value}</Typography>\n\t\t</Box>\n\t\t// `${label}: ${value}`;\n\t};\n\n\tconst getFilterChip = (rr: any, index: any) => {\n\t\treturn (\n\t\t\t<Chip\n\t\t\t\tlabel={getFilterChipLabels(rr)}\n\t\t\t\tvariant='outlined'\n\t\t\t\tactive\n\t\t\t\tsx={({ palette }) => ({\n\t\t\t\t\tbackgroundColor: 'grey.200',\n\t\t\t\t\tborderColor: `${palette.grey[300]} !important`,\n\t\t\t\t\topacity: 0.8,\n\t\t\t\t\t'&:hover': { backgroundColor: `${palette.grey[200]} !important` },\n\t\t\t\t\tflexDirection: 'row-reverse',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 0.75,\n\t\t\t\t\tcursor: 'unset'\n\t\t\t\t})}\n\t\t\t\tdeleteIcon={\n\t\t\t\t\t<Cancel\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tfontSize: '1rem !important',\n\t\t\t\t\t\t\tcolor: '#919294 !important',\n\t\t\t\t\t\t\tmarginRight: 'auto !important',\n\t\t\t\t\t\t\tmarginLeft: `0 !important`,\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tcolor: 'inherit !important'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonDelete={() => removeSignleFilter(index)}\n\t\t\t\tclickable={false}\n\t\t\t/>\n\t\t)\n\t}\n\n\tconst removeSignleFilter = (ruleIndex: number) => {\n\t\tconst uRules: any[] = filters.rules.filter(\n\t\t\t(_, index) => index !== ruleIndex\n\t\t);\n\t\tconst uFilters = { ...filters, rules: uRules };\n\t\tconst filterQueryString = generateQueryString(uFilters);\n\n\t\tupdatePageInfo({\n\t\t\tfilters: uFilters,\n\t\t\tfilterQueryString\n\t\t});\n\t};\n\n\tconst isFilterApplied = (flt: any): boolean => Boolean(flt?.rules?.length);\n\tconst [searchAnchorEl, setSearchAnchorEl] = useState<HTMLElement | null>(null);\n\t// useEffect(() => {\n\t// \tif(activePage?.active_view ){\n\t// \t\tconst updateViews=activePage?.views?.length?activePage.views:[{\n\t// \t\t\tlabel:activePage?.active_view,\n\t// \t\t\tposition:0\n\t// \t\t}]\n\t// \t\tsetData(updateViews)\n\t// \t}\t\t\n\t// \t//eslint-disable-next-line\n\t// },[isCreatePage,activePage?.active_view])\n\n\tuseEffect(() => {\n\t\tif (activePage?.search) {\n\t\t\tsetSearchedText(activePage?.search)\n\t\t}\n\t}, [activePage?.search])\n\n\tuseEffect(() => {\n\t\tif (searchedText) {\n\t\t\thandleSearch?.(searchedText);\n\t\t\tupdatePageInfo({ search: searchedText });\n\t\t}\n\t\t//eslint-disable-next-line\n\t}, [searchedText])\n\treturn (\n\t\t<div>\n\t\t\t<div className='action-bar'>\n\t\t\t\t<div className='action-bar--LeftContent'>\n\t\t\t\t\t{isTitleMenu ? (\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\n\t\t\t\t\t\t\t<TitleDropdownButton\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\n\t\t\t\t\t\t\t\toptions={titleMenus}\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}\n\t\t\t\t\t\t\t\tcurrentTitle={title}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</TitleDropdownButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Typography type='h3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='action-bar--HeaderCard'>\n\t\t\t\t\t\t{Boolean(data) &&\n\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t\t.map((ele) => ele)\n\t\t\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t\t\t\t\t.map((item: ActionData) => (\n\t\t\t\t\t\t\t\t\t<HeaderCard\n\t\t\t\t\t\t\t\t\t\tkey={item?.position}\n\t\t\t\t\t\t\t\t\t\ttitle={item?.label}\n\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleActiveHeaderCard(item)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{showView && (\n\t\t\t\t\t\t\t<ViewModal\n\t\t\t\t\t\t\t\tsetData={setData}\n\t\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\t\tsetActive={setActive}\n\t\t\t\t\t\t\t\tdisabledViews={disabledViews}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className='action-bar--RightContent' style={{ gap: isLgUp ? `1rem` : `0.5rem` }}>\n\t\t\t\t\t{isToggleButton && (\n\t\t\t\t\t\t<div className='item--VariantDisplay'>\n\t\t\t\t\t\t\t<div className='item--VariantHeading'>Variant:</div>\n\t\t\t\t\t\t\t<div className='item--VariantToggal'>\n\t\t\t\t\t\t\t\t<Toggle\n\t\t\t\t\t\t\t\t\tchecked={isToggledForItem}\n\t\t\t\t\t\t\t\t\tonChange={handleChangeToggleButton}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{showSearch && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{isLgUp ?\n\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\tplaceholder='Search'\n\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\n\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\n\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tdebounceTime={1000}\n\t\t\t\t\t\t\t\t\tisDrivePage={true}\n\t\t\t\t\t\t\t\t\tsearchText={searchedText}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<IconButton size='small' onClick={(e) => setSearchAnchorEl(e.currentTarget)}><Search fontSize='small' color='grey.1000' /> </IconButton>\n\t\t\t\t\t\t\t\t\t<Menu\n\t\t\t\t\t\t\t\t\t\tanchorEl={searchAnchorEl}\n\t\t\t\t\t\t\t\t\t\topen={Boolean(searchAnchorEl)}\n\t\t\t\t\t\t\t\t\t\tonClose={() => setSearchAnchorEl(null)}\n\t\t\t\t\t\t\t\t\t\tanchorOrigin={{\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\ttransformOrigin={{\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tsx={{ '& ul': { p: 0 }, '& .MuiMenu-paper': { boxShadow: `0px 4px 6px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.06);` } }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\t\t\tplaceholder='Search'\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\n\t\t\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tdebounceTime={1000}\n\t\t\t\t\t\t\t\t\t\t\tisDrivePage={true}\n\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText || searchedText}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t{showFilter && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{isLgUp ?\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t// sx={{display:\"none\"}}\n\t\t\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\t\t\tstartIcon={<FilterIcon fontSize='small' />}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\n\t\t\t\t\t\t\t\t\t\tfetchSavedFilters();\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{t('common.filter')}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t<IconButton onClick={() => {\n\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\n\t\t\t\t\t\t\t\t\tfetchSavedFilters();\n\t\t\t\t\t\t\t\t}} size='small'>\n\t\t\t\t\t\t\t\t\t<FilterIcon fontSize='small' color='grey.1000' />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{customButtons}\n\t\t\t\t\t{actionBtn}\n\t\t\t\t\t{button && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='contained'\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\tonClick={handleAddButton}>\n\t\t\t\t\t\t\t{t('common.add')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{isDropdownMenuButton && (\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\n\t\t\t\t\t\t\t<DropdownButton\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\n\t\t\t\t\t\t\t\toptions={itemListingDropdownOptions}\n\t\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}>\n\t\t\t\t\t\t\t\t{t('common.add')}\n\t\t\t\t\t\t\t</DropdownButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{pageName ? (\n\t\t\t\t\t\t<IconButton onClick={(e) => handleImportClick(e)}>\n\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Menu\n\t\t\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t\t\t{rowActionMenu?.map((option: any) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(pageName);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled()\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Menu>\n\n\t\t\t\t\t<Filter\n\t\t\t\t\t\topen={openFilterPopup}\n\t\t\t\t\t\tonClose={handleCloseFilter}\n\t\t\t\t\t\tactiveView={active}\n\t\t\t\t\t\tsavedFilters={savedFilters}\n\t\t\t\t\t\tfetchSavedFilters={fetchSavedFilters}\n\t\t\t\t\t\tonSaveFilter={handleSaveFilter}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tisUseFields={isUseFields}\n\t\t\t\t\t\tfields={fields}\n\t\t\t\t\t\tonSelectedFilter={f => setSelectedSavedFilter(f)}\n\t\t\t\t\t\tapplyFilter={applyFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Applied Filters view (Start) */}\n\t\t\t{isFilterApplied(filters) && (\n\t\t\t\t<Box\n\t\t\t\t\tmb={1}\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tjustifyContent: 'space-between'\n\t\t\t\t\t}}>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tmb={1}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t\t\tmaxWidth: 400\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{t('common.filters')}:{' '}\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t{filters?.rules?.map((r, rIndex) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{r?.rules?.length ? (\n\t\t\t\t\t\t\t\t\tr?.rules?.map((rr, rrIndex) => (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{getFilterChip(rr, rrIndex)}\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t) : <>\n\t\t\t\t\t\t\t\t\t{getFilterChip(r, rIndex)}\n\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Box>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tstartIcon={<FolderSave fontSize='small' />}\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t<span> {t('common.saveFilter')}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{/* {selectedSavedFilter && \n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tstartIcon={<img src={images.common.saveFilterIcon} alt='Add Icon' />}\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t\t<Typography type='s3' color=\"theme.secondary.1000\" weight='medium'>\n\t\t\t\t\t\t\t\t\tUpdate Filter <Typography type='s3' weight='medium'>{`(${selectedSavedFilter.name})`}</Typography>\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t} */}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tstartIcon={<FilterRemove fontSize='small' />}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tupdatePageInfo({\n\t\t\t\t\t\t\t\t\tfilters: initialFilter,\n\t\t\t\t\t\t\t\t\tfilterQueryString: ''\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t{t('common.clearFilter')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{/* Applied Filters view (End) */}\n\n\t\t\t{/* {filterBar && (\n\t\t\t\t<div className='filter-bar'>\n\t\t\t\t\t<div className='filter-bar--LeftContent'>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tplaceholder='Placeholder'\n\t\t\t\t\t\t\t\tsize={'small'}\n\t\t\t\t\t\t\t\tclassName='status-changes-drp'\n\t\t\t\t\t\t\t\tvalue={status}\n\t\t\t\t\t\t\t\tonChange={handleStatusChange}\n\t\t\t\t\t\t\t\tvariant='outlined'>\n\t\t\t\t\t\t\t\t<MenuItem value={'Status'}>{t('common.status')}</MenuItem>\n\t\t\t\t\t\t\t\t<MenuItem value={'Show'}>{t('common.show')}</MenuItem>\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Typography className='subtask-switch' variant='h6'>\n\t\t\t\t\t\t\t{t('common.subtask')}\n\t\t\t\t\t\t\t<Toggle checked={isToggled} onChange={handleToggle} />\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t|\n\t\t\t\t\t\t<Button className='hide-btn' onClick={handleFilterHide}>\n\t\t\t\t\t\t\t{t('common.hide')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='filter-bar--RightContent'>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t<img src={images.common.saveFilterIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t<span>{t('common.saveFilter')}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)} */}\n\t\t\t<SaveFilterModal\n\t\t\t\topen={openSaveFilter}\n\t\t\t\tonClose={() => setIsOpenSaveFilter(false)}\n\t\t\t\thandleSubmit={(name: any) =>\n\t\t\t\t\thandleSave(name, filterQuery as RuleGroupType)\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<UploadExcel\n\t\t\t\topen={isUploadModalOpen}\n\t\t\t\tshowCameraButton={false}\n\t\t\t\tonClose={() => setIsUploadModalOpen(false)}\n\t\t\t\tonConfirm={() => setIsUploadModalOpen(true)}\n\t\t\t\ttitle='Upload'\n\t\t\t\tmultiple={false}\n\t\t\t\timportModuleName={importModuleName}\n\t\t\t\tpageName={importModuleName}\n\t\t\t\taccept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nexport { ActionBar };\nexport default ActionBar;\n"],"names":["setBaseUrl","ActionBar","React","memo","props","token","localStorage","getItem","auth","storageTokenKeyName","location","useLocation","title","data","setData","active","setActive","handleAddButton","handleSearch","button","disabledViews","isDropdownMenuButton","itemListingDropdownOptions","isTitleMenu","titleMenus","type","fields","applyFilter","isToggleButton","handleToggleButton","showSearch","showFilter","showView","customButtons","pageName","actionBtn","importModuleName","selectedIds","searchText","isUseFields","useAppDispatch","useState","isToggledForItem","setIsToggledForItem","openFilterPopup","setOpenFilterPopup","openSaveFilter","setIsOpenSaveFilter","rowAnchorEl","setRowAnchorEl","isUploadModalOpen","setIsUploadModalOpen","savedFilters","setSavedFilters","searchedText","setSearchedText","t","useTranslation","theme","useTheme","isLgUp","useMediaQuery","breakpoints","up","activePage","updatePageInfo","schemaFields","setActivePage","usePages","filters","resources","useMemo","routeToResourceMap","pathname","useEffect","fetchSavedFilters","async","pageResource","fieldResource","getV1FilterResource","getToken","resource","then","response","result","map","e","id","_id","name","query","catch","err","rowActionMenu","push","label","handleAction","moduleName","filterQueryString","templateURL","getExcelExportTemplate","blob","link","document","createElement","url","window","URL","createObjectURL","href","download","body","appendChild","click","removeChild","revokeObjectURL","exportExcel","icon","jsx","Export","fontSize","getExcelTemplateGenerateTemplate","downloadTemplate","DocumentDownload","Import","getFilterChipLabels","rule","field","_a","replace","_b","find","f","key","formatLabel","opLabel","getOperatorLabel","value","Array","isArray","rv","join","jsxs","Box","sx","display","alignItems","gap","children","Typography","color","weight","Divider","orientation","flexItem","formatText","getFilterChip","rr","index","Chip","variant","palette","backgroundColor","borderColor","grey","opacity","flexDirection","cursor","deleteIcon","Cancel","marginRight","marginLeft","onDelete","removeSignleFilter","clickable","ruleIndex","uRules","rules","filter","_","uFilters","generateQueryString","searchAnchorEl","setSearchAnchorEl","search","className","style","zIndex","TitleDropdownButton","onClick","options","isMenuThirdItemDisabled","currentTitle","Boolean","ele","sort","a","b","position","item","HeaderCard","ViewModal","Toggle","checked","onChange","prev","SearchBar","placeholder","debounceTime","isDrivePage","Fragment","IconButton","size","currentTarget","Search","Menu","anchorEl","open","onClose","anchorOrigin","vertical","horizontal","transformOrigin","p","boxShadow","Button","startIcon","FilterIcon","AddIcon","DropdownButton","src","images","more","alt","option","MenuItem","disabled","Filter","activeView","onSaveFilter","onSelectedFilter","setSelectedSavedFilter","flt","length","isFilterApplied","mb","justifyContent","maxWidth","r","rIndex","rrIndex","FolderSave","FilterRemove","initialFilter","SaveFilterModal","handleSubmit","filterQuery","postFilterRequest","module","is_applied","postV1Filter","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleSave","UploadExcel","showCameraButton","onConfirm","multiple","accept"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/action-bar/action-bar.tsx"],"sourcesContent":["import Button from '../button/button';\nimport Typography from '../typography/typography';\n/* eslint-disable no-mixed-spaces-and-tabs */\nimport './action-bar.scss';\nimport {\n\t/* IconButton, */ Box,\n\tDivider,\n\tIconButton,\n\tMenu,\n\tMenuItem,\n\tuseMediaQuery,\n\tuseTheme\n} from '@mui/material';\nimport AddIcon from '@mui/icons-material/Add';\nimport ViewModal from '../view-modal/view-modal';\nimport HeaderCard from '../header-card/header-card';\nimport SearchBar from '../search-bar/search-bar';\nimport { useEffect, useMemo, useState } from 'react';\nimport images from '../../assets/images';\nimport Toggle from '../toggle/toggle';\nimport Filter from '../filter/filter';\nimport Select from '../select/select';\nimport { RuleGroupType } from 'react-querybuilder';\nimport SaveFilterModal from '../save-filter-modal/save-filter-modal';\nimport {\n\tsetBaseUrl,\n\tpostV1Filter,\n\tgetV1FilterResource\n} from '../../api-client/api.system-feature/api';\nimport type * as Types from '../../api-client/api.system-feature/api-types';\nimport { auth } from '../../constants/auth';\nimport DropdownButton from '../dropdown-button/dropdown-button';\nimport TitleDropdownButton from '../title-dropdown-button/title-dropdown-button';\nimport { useAppDispatch, useAppSelector } from '../../redux/hooks';\nimport { getToken } from '../../utils/common';\nimport React from 'react';\nimport UploadExcel from '../upload-excel/upload-excel';\nimport { generateQueryString, getErrorMessage, getExcelTemplateGenerateTemplate, getOperatorLabel, getExcelExportTemplate } from '../../utils/common';\nimport { initialFilter, ViewType } from '../../contexts/page-context';\nimport { usePages } from '../../hooks/use-pages';\nimport Chip from '../chip/chip';\nimport formatText, { formatLabel } from '../../utils/format-text';\nimport { Cancel } from '@mui/icons-material';\nimport { useLocation } from 'react-router-dom';\nimport { IResources, routeToResourceMap } from '../../constants/route-page-map';\nimport { enqueueSnackbar } from 'notistack';\nimport { useTranslation } from 'react-i18next';\nimport { FilterRemove, Filter as FilterIcon, Search, FolderSave, Export, Import, DocumentDownload } from '../icons';\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface ActionData {\n\tlabel: string;\n\tposition: number;\n}\ninterface ActionBarPropsType {\n\ttitle: string;\n\tdata: ActionData[];\n\tsetData: React.Dispatch<React.SetStateAction<ActionData[]>>;\n\tactive: string;\n\tsetActive: (view: ViewType) => void;\n\thandleAddButton?: (e?: any) => void;\n\tbutton?: boolean;\n\thandleSearch?: (value: string) => void;\n\tfilters?: string;\n\tdisabledViews?: string[];\n\tisDropdownMenuButton?: boolean;\n\titemListingDropdownOptions?: any;\n\tisTitleMenu?: boolean;\n\ttitleMenus?: any;\n\tfolderData?: any;\n\ttype?: any;\n\tfields?: any;\n\tapplyFilter?: any;\n\tsavedFilters?: SavedFilter;\n\tsetSavedFilters?: (view: SavedFilter) => void;\n\tisToggleButton?: boolean;\n\thandleToggleButton?: (e?: any) => void;\n\tshowView?: boolean;\n\tshowSearch?: boolean;\n\tshowFilter?: boolean;\n\tcustomButtons?: React.ReactNode[] | JSX.Element[];\n\tactionBtn?: React.ReactNode[] | JSX.Element[];\n\tpageName?: string;\n\timportModuleName?: string;\n\tsearchText?: string;\n\tselectedIds?: any;\n\tisUseFields?: boolean;\n\n}\n\ninterface SavedFilter {\n\tid: string;\n\tname: string;\n\tquery: RuleGroupType;\n}\n\nconst ActionBar = React.memo((props: ActionBarPropsType) => {\n\tconst token = localStorage.getItem(auth.storageTokenKeyName) || undefined;\n\tconst location = useLocation();\n\n\tconst {\n\t\ttitle,\n\t\tdata,\n\t\tsetData,\n\t\tactive,\n\t\tsetActive,\n\t\thandleAddButton,\n\t\thandleSearch,\n\t\tbutton = true,\n\t\tdisabledViews,\n\t\tisDropdownMenuButton = false,\n\t\titemListingDropdownOptions = [],\n\t\tisTitleMenu = false,\n\t\ttitleMenus = [],\n\t\ttype,\n\t\tfields = [],\n\t\tapplyFilter,\n\t\t// setSavedFilters,\n\t\t// savedFilters,\n\t\tisToggleButton = false,\n\t\thandleToggleButton,\n\t\tshowSearch = true,\n\t\tshowFilter = true,\n\t\tshowView = true,\n\t\tcustomButtons,\n\t\tpageName,\n\t\tactionBtn,\n\t\timportModuleName,\n\t\tselectedIds,\n\t\tsearchText,\n\t\tisUseFields\n\t} = props;\n\tconst dispatch = useAppDispatch();\n\tconst [isToggled, setIsToggled] = useState<boolean>(false);\n\tconst [isToggledForItem, setIsToggledForItem] = useState<boolean>(false);\n\tconst [openFilterPopup, setOpenFilterPopup] = useState<boolean>(false);\n\tconst [status, setStatus] = useState<string>('');\n\tconst [openSaveFilter, setIsOpenSaveFilter] = useState<boolean>(false);\n\tconst [rowAnchorEl, setRowAnchorEl] = useState<null | HTMLElement>(null);\n\tconst [isUploadModalOpen, setIsUploadModalOpen] = useState(false);\n\tconst [savedFilters, setSavedFilters] = useState<any[]>([]);\n\t// const [selectedSavedFilter, setSelectedSavedFilter] = useState<any>(null);\n\tconst [searchedText, setSearchedText] = useState<string>(\"\");\n\tconst { t } = useTranslation();\n\tconst theme = useTheme();\n\tconst isLgUp = useMediaQuery(theme.breakpoints.up('xl'));\n\tconst { activePage, updatePageInfo, schemaFields, setActivePage } = usePages();\n\tconst { filters } = activePage;\n\n\tconst resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n\t// const { filterBar, filterQuery } = useAppSelector((store) => {\n\t// \treturn store?.drive;\n\t// });\n\n\n\n\tuseEffect(() => {\n\t\tfetchSavedFilters();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, []);\n\n\tconst fetchSavedFilters = async (): Promise<void> => {\n\t\tif (resources?.pageResource || resources?.fieldResource) {\n\t\t\tgetV1FilterResource({ ...getToken(), resource: resources?.pageResource || resources?.fieldResource })\n\t\t\t\t.then((response: any) => {\n\t\t\t\t\tconst savedFilters = response.data.result.map((e: any) => {\n\t\t\t\t\t\treturn { id: e._id, name: e.name, query: e.data };\n\t\t\t\t\t});\n\n\t\t\t\t\tsetSavedFilters?.(savedFilters);\n\t\t\t\t})\n\t\t\t\t.catch((err: any) => console.log('Error fetching saved filters:', err));\n\t\t} else {\n\t\t\tsetSavedFilters([])\n\t\t}\n\t};\n\n\n\tconst handleFilterHide = () => {\n\t\t// dispatch(setFilterBar(false));\n\t\treturn\n\t};\n\n\tconst handleStatusChange = (event: any) => {\n\t\tsetStatus(event.target.value);\n\t};\n\n\tconst handleSaveFilterClick = () => {\n\t\tif (filters?.rules) {\n\t\t\tsetIsOpenSaveFilter(true);\n\t\t}\n\t};\n\n\tconst handleImportClick = (event: any) => {\n\t\tsetRowAnchorEl(event.currentTarget);\n\t};\n\n\tconst handleActionsClose = () => {\n\t\tsetRowAnchorEl(null);\n\t};\n\n\tconst handleSaveFilter = (query: RuleGroupType) => {\n\t\t// dispatch(setFilterQuery(query));\n\t\treturn\n\t};\n\n\tconst handleSave = async (name: string, filterQuery: RuleGroupType) => {\n\n\t\t// dispatch(setFilterBar(false));\n\n\t\tconst postFilterRequest: Types.PostV1FilterRequest = {\n\t\t\t'x-token': token,\n\t\t\tmodule: resources?.pageResource || resources?.fieldResource || 'erp-common',\n\t\t\tname: name,\n\t\t\tis_applied: true,\n\t\t\tdata: filterQuery\n\t\t};\n\t\ttry {\n\t\t\tawait postV1Filter(postFilterRequest)\n\t\t\tenqueueSnackbar('Filters saved successfully.')\n\t\t\tsetActivePage((prev: any) => ({\n\t\t\t\t...prev,\n\t\t\t\tfilters: {\n\t\t\t\t\t...prev.filters,\n\t\t\t\t\tname,\n\t\t\t\t\trules: filterQuery.rules\n\t\t\t\t},\n\t\t\t\tfilterQueryString: generateQueryString(filterQuery)\n\t\t\t}));\n\t\t\tsetIsOpenSaveFilter(false);\n\t\t} catch (error) {\n\t\t\tlet m: string = 'Something went wrong on saving filters'\n\t\t\tif (error instanceof Error) {\n\t\t\t\tm = getErrorMessage(error.message)\n\t\t\t}\n\t\t\tenqueueSnackbar(m, { variant: 'error' })\n\t\t\treturn false\n\t\t}\n\t\treturn true\n\t};\n\n\tconst handleToggle = () => {\n\t\tsetIsToggled((prev) => !prev);\n\t\talert('Toggled');\n\t};\n\n\tconst handleChangeToggleButton = () => {\n\t\tsetIsToggledForItem((prev) => !prev);\n\t\thandleToggleButton?.();\n\t};\n\n\tconst handleCloseFilter = () => {\n\t\tsetOpenFilterPopup(false);\n\t};\n\n\tconst handleActiveHeaderCard = (data: ActionData) => {\n\t\tsetActive(data?.label);\n\t};\n\n\tconst downloadTemplate = async (moduleName: string) => {\n\t\tconst templateURL: any = await getExcelTemplateGenerateTemplate({\n\t\t\t'x-token': token,\n\t\t\tresource: moduleName\n\t\t});\n\t\tif (templateURL) {\n\t\t\tconst blob = await templateURL.blob();\n\n\t\t\tconst link = document.createElement('a');\n\n\t\t\tconst url = window.URL.createObjectURL(blob);\n\n\t\t\tlink.href = url;\n\t\t\tlink.download = `${moduleName}.xlsx`;\n\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t}\n\t};\n\n\tconst exportExcel = async (moduleName: string, filterQueryString: string, selectedIds: any, title: string) => {\n\t\tconst templateURL: any = await getExcelExportTemplate({\n\t\t\t'x-token': token,\n\t\t\tactivePage: activePage,\n\t\t\tfilterQueryString: filterQueryString,\n\t\t\tselectedIds: selectedIds,\n\t\t\ttitle: title\n\t\t});\n\t\tif (templateURL) {\n\t\t\tconst blob = await templateURL.blob();\n\n\t\t\tconst link = document.createElement('a');\n\n\t\t\tconst url = window.URL.createObjectURL(blob);\n\n\t\t\tlink.href = url;\n\t\t\tlink.download = `${moduleName}.xlsx`;\n\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t\twindow.URL.revokeObjectURL(url);\n\t\t}\n\t};\n\n\tconst openImportTemplate = () => {\n\t\tsetIsUploadModalOpen(true);\n\t};\n\tconst rowActionMenu = [];\n\tif (pageName && (!importModuleName || selectedIds)) {\n\t\trowActionMenu.push({\n\t\t\tlabel: 'Export Excel',\n\t\t\thandleAction: (moduleName: string) => exportExcel(moduleName, activePage.filterQueryString, selectedIds, title),\n\t\t\ticon: <Export fontSize='small' />\n\t\t})\n\t}\n\tif (pageName && importModuleName) {\n\t\t{\n\t\t\trowActionMenu.push({\n\t\t\t\tlabel: 'Download Template ',\n\t\t\t\thandleAction: (moduleName: string) => downloadTemplate(moduleName),\n\t\t\t\ticon: <DocumentDownload fontSize='small' />\n\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: 'Import Template',\n\t\t\t\t\thandleAction: (moduleName: string) => openImportTemplate(moduleName),\n\t\t\t\t\ticon: <Import fontSize='small' />\n\t\t\t\t})\n\t\t}\n\t}\n\n\tconst getFilterChipLabels = (rule: any) => {\n\t\trule = { ...rule, field: rule.field?.replace(\"__replaceKey\", '') }\n\t\tlet label = schemaFields.find((f: any) => f.key === rule.field)?.label || rule.field;\n\t\tlabel = formatLabel(label?.replace('_id', ' '));\n\t\tconst opLabel = getOperatorLabel(rule, schemaFields);\n\n\t\tlet value = rule.value;\n\t\tif (Array.isArray(rule.value)) {\n\t\t\trule.value = rule.value.map(rv => formatLabel(typeof rv === 'object' ? (rv.label) : rv))\n\t\t\tvalue = rule.value.join(', ');\n\t\t}\n\n\t\treturn <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n\t\t\t<Typography type='s5' color='theme.secondary.800' weight='medium'>{label}</Typography>\n\t\t\t<Divider orientation='vertical' flexItem />\n\t\t\t<Typography type='s5' color='theme.primary.800' weight='medium'>{formatText(opLabel)} {value}</Typography>\n\t\t</Box>\n\t\t// `${label}: ${value}`;\n\t};\n\n\tconst getFilterChip = (rr: any, index: any) => {\n\t\treturn (\n\t\t\t<Chip\n\t\t\t\tlabel={getFilterChipLabels(rr)}\n\t\t\t\tvariant='outlined'\n\t\t\t\tactive\n\t\t\t\tsx={({ palette }) => ({\n\t\t\t\t\tbackgroundColor: 'grey.200',\n\t\t\t\t\tborderColor: `${palette.grey[300]} !important`,\n\t\t\t\t\topacity: 0.8,\n\t\t\t\t\t'&:hover': { backgroundColor: `${palette.grey[200]} !important` },\n\t\t\t\t\tflexDirection: 'row-reverse',\n\t\t\t\t\talignItems: 'center',\n\t\t\t\t\tgap: 0.75,\n\t\t\t\t\tcursor: 'unset'\n\t\t\t\t})}\n\t\t\t\tdeleteIcon={\n\t\t\t\t\t<Cancel\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tfontSize: '1rem !important',\n\t\t\t\t\t\t\tcolor: '#919294 !important',\n\t\t\t\t\t\t\tmarginRight: 'auto !important',\n\t\t\t\t\t\t\tmarginLeft: `0 !important`,\n\t\t\t\t\t\t\t'&:hover': {\n\t\t\t\t\t\t\t\tcolor: 'inherit !important'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}}\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\tonDelete={() => removeSignleFilter(index)}\n\t\t\t\tclickable={false}\n\t\t\t/>\n\t\t)\n\t}\n\n\tconst removeSignleFilter = (ruleIndex: number) => {\n\t\tconst uRules: any[] = filters.rules.filter(\n\t\t\t(_, index) => index !== ruleIndex\n\t\t);\n\t\tconst uFilters = { ...filters, rules: uRules };\n\t\tconst filterQueryString = generateQueryString(uFilters);\n\n\t\tupdatePageInfo({\n\t\t\tfilters: uFilters,\n\t\t\tfilterQueryString\n\t\t});\n\t};\n\n\tconst isFilterApplied = (flt: any): boolean => Boolean(flt?.rules?.length);\n\tconst [searchAnchorEl, setSearchAnchorEl] = useState<HTMLElement | null>(null);\n\t// useEffect(() => {\n\t// \tif(activePage?.active_view ){\n\t// \t\tconst updateViews=activePage?.views?.length?activePage.views:[{\n\t// \t\t\tlabel:activePage?.active_view,\n\t// \t\t\tposition:0\n\t// \t\t}]\n\t// \t\tsetData(updateViews)\n\t// \t}\t\t\n\t// \t//eslint-disable-next-line\n\t// },[isCreatePage,activePage?.active_view])\n\n\tuseEffect(() => {\n\t\tif (activePage?.search) {\n\t\t\tsetSearchedText(activePage?.search)\n\t\t}\n\t}, [activePage?.search])\n\n\tuseEffect(() => {\n\t\tif (searchedText) {\n\t\t\thandleSearch?.(searchedText);\n\t\t\tupdatePageInfo({ search: searchedText });\n\t\t}\n\t\t//eslint-disable-next-line\n\t}, [searchedText])\n\treturn (\n\t\t<div>\n\t\t\t<div className='action-bar'>\n\t\t\t\t<div className='action-bar--LeftContent'>\n\t\t\t\t\t{isTitleMenu ? (\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\n\t\t\t\t\t\t\t<TitleDropdownButton\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\n\t\t\t\t\t\t\t\toptions={titleMenus}\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}\n\t\t\t\t\t\t\t\tcurrentTitle={title}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t\t</TitleDropdownButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t<Typography type='h3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{title}\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t)}\n\t\t\t\t\t<div className='action-bar--HeaderCard'>\n\t\t\t\t\t\t{Boolean(data) &&\n\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t\t.map((ele) => ele)\n\t\t\t\t\t\t\t\t.sort((a, b) => a.position - b.position)\n\t\t\t\t\t\t\t\t.map((item: ActionData) => (\n\t\t\t\t\t\t\t\t\t<HeaderCard\n\t\t\t\t\t\t\t\t\t\tkey={item?.position}\n\t\t\t\t\t\t\t\t\t\ttitle={item?.label}\n\t\t\t\t\t\t\t\t\t\tactive={active}\n\t\t\t\t\t\t\t\t\t\tonClick={() => handleActiveHeaderCard(item)}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t{showView && (\n\t\t\t\t\t\t\t<ViewModal\n\t\t\t\t\t\t\t\tsetData={setData}\n\t\t\t\t\t\t\t\tdata={data}\n\t\t\t\t\t\t\t\tsetActive={setActive}\n\t\t\t\t\t\t\t\tdisabledViews={disabledViews}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\n\t\t\t\t<div className='action-bar--RightContent' style={{ gap: isLgUp ? `1rem` : `0.5rem` }}>\n\t\t\t\t\t{isToggleButton && (\n\t\t\t\t\t\t<div className='item--VariantDisplay'>\n\t\t\t\t\t\t\t<div className='item--VariantHeading'>Variant:</div>\n\t\t\t\t\t\t\t<div className='item--VariantToggal'>\n\t\t\t\t\t\t\t\t<Toggle\n\t\t\t\t\t\t\t\t\tchecked={isToggledForItem}\n\t\t\t\t\t\t\t\t\tonChange={handleChangeToggleButton}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\t\t\t\t\t{showSearch && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{isLgUp ?\n\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\tplaceholder='Search'\n\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\n\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\n\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tdebounceTime={1000}\n\t\t\t\t\t\t\t\t\tisDrivePage={true}\n\t\t\t\t\t\t\t\t\tsearchText={searchedText}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t<IconButton size='small' onClick={(e) => setSearchAnchorEl(e.currentTarget)}><Search fontSize='small' color='grey.1000' /> </IconButton>\n\t\t\t\t\t\t\t\t\t<Menu\n\t\t\t\t\t\t\t\t\t\tanchorEl={searchAnchorEl}\n\t\t\t\t\t\t\t\t\t\topen={Boolean(searchAnchorEl)}\n\t\t\t\t\t\t\t\t\t\tonClose={() => setSearchAnchorEl(null)}\n\t\t\t\t\t\t\t\t\t\tanchorOrigin={{\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\ttransformOrigin={{\n\t\t\t\t\t\t\t\t\t\t\tvertical: 'top',\n\t\t\t\t\t\t\t\t\t\t\thorizontal: 'right',\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\tsx={{ '& ul': { p: 0 }, '& .MuiMenu-paper': { boxShadow: `0px 4px 6px rgba(0, 0, 0, 0.1), 0px 1px 3px rgba(0, 0, 0, 0.06);` } }}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<SearchBar\n\t\t\t\t\t\t\t\t\t\t\tplaceholder='Search'\n\t\t\t\t\t\t\t\t\t\t\thandleSearch={(e) => {\n\t\t\t\t\t\t\t\t\t\t\t\tsetSearchedText(e);\n\t\t\t\t\t\t\t\t\t\t\t\thandleSearch?.(e);\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t\t\tdebounceTime={1000}\n\t\t\t\t\t\t\t\t\t\t\tisDrivePage={true}\n\t\t\t\t\t\t\t\t\t\t\tsearchText={searchText || searchedText}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</Menu>\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\t\t\t\t\t{showFilter && (\n\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t{isLgUp ?\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\t// sx={{display:\"none\"}}\n\t\t\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\t\t\tstartIcon={<FilterIcon fontSize='small' />}\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\n\t\t\t\t\t\t\t\t\t\tfetchSavedFilters();\n\t\t\t\t\t\t\t\t\t}}>\n\t\t\t\t\t\t\t\t\t{t('common.filter')}\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t\t:\n\t\t\t\t\t\t\t\t<IconButton onClick={() => {\n\t\t\t\t\t\t\t\t\tsetOpenFilterPopup(true);\n\t\t\t\t\t\t\t\t\tfetchSavedFilters();\n\t\t\t\t\t\t\t\t}} size='small'>\n\t\t\t\t\t\t\t\t\t<FilterIcon fontSize='small' color='grey.1000' />\n\t\t\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t</>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{customButtons}\n\t\t\t\t\t{actionBtn}\n\t\t\t\t\t{button && (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='contained'\n\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\tonClick={handleAddButton}>\n\t\t\t\t\t\t\t{t('common.add')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t)}\n\t\t\t\t\t{isDropdownMenuButton && (\n\t\t\t\t\t\t<div style={{ zIndex: 999 }}>\n\t\t\t\t\t\t\t<DropdownButton\n\t\t\t\t\t\t\t\tonClick={handleAddButton}\n\t\t\t\t\t\t\t\toptions={itemListingDropdownOptions}\n\t\t\t\t\t\t\t\tstartIcon={<AddIcon />}\n\t\t\t\t\t\t\t\tisMenuThirdItemDisabled={true}>\n\t\t\t\t\t\t\t\t{t('common.add')}\n\t\t\t\t\t\t\t</DropdownButton>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t)}\n\n\t\t\t\t\t{pageName ? (\n\t\t\t\t\t\t<IconButton onClick={(e) => handleImportClick(e)}>\n\t\t\t\t\t\t\t<img src={images.more} alt='More Icon' />\n\t\t\t\t\t\t</IconButton>\n\t\t\t\t\t) : (\n\t\t\t\t\t\t''\n\t\t\t\t\t)}\n\n\t\t\t\t\t<Menu\n\t\t\t\t\t\tanchorEl={rowAnchorEl}\n\t\t\t\t\t\topen={Boolean(rowAnchorEl)}\n\t\t\t\t\t\tonClose={handleActionsClose}>\n\t\t\t\t\t\t{rowActionMenu?.map((option: any) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<MenuItem\n\t\t\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\t\t\toption.handleAction(pageName);\n\t\t\t\t\t\t\t\t\t\tsetRowAnchorEl(null);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tsx={{ alignItems: 'center', gap: 0.5 }}\n\t\t\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\t\t\ttypeof option.disabled === 'function'\n\t\t\t\t\t\t\t\t\t\t\t? option.disabled()\n\t\t\t\t\t\t\t\t\t\t\t: Boolean(option.disabled)\n\t\t\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t\t\t{option?.icon}\n\t\t\t\t\t\t\t\t\t<Typography type='s4' color='inherit'>\n\t\t\t\t\t\t\t\t\t\t{option.label}\n\t\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t\t</MenuItem>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Menu>\n\n\t\t\t\t\t<Filter\n\t\t\t\t\t\topen={openFilterPopup}\n\t\t\t\t\t\tonClose={handleCloseFilter}\n\t\t\t\t\t\tactiveView={active}\n\t\t\t\t\t\tsavedFilters={savedFilters}\n\t\t\t\t\t\tfetchSavedFilters={fetchSavedFilters}\n\t\t\t\t\t\tonSaveFilter={handleSaveFilter}\n\t\t\t\t\t\ttype={type}\n\t\t\t\t\t\tisUseFields={isUseFields}\n\t\t\t\t\t\tfields={fields}\n\t\t\t\t\t\tonSelectedFilter={f => setSelectedSavedFilter(f)}\n\t\t\t\t\t\tapplyFilter={applyFilter}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t{/* Applied Filters view (Start) */}\n\t\t\t{isFilterApplied(filters) && (\n\t\t\t\t<Box\n\t\t\t\t\tmb={1}\n\t\t\t\t\tsx={{\n\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\tjustifyContent: 'space-between'\n\t\t\t\t\t}}>\n\t\t\t\t\t<Box\n\t\t\t\t\t\tmb={1}\n\t\t\t\t\t\tsx={{\n\t\t\t\t\t\t\tdisplay: 'flex',\n\t\t\t\t\t\t\talignItems: 'center',\n\t\t\t\t\t\t\tgap: 1,\n\t\t\t\t\t\t\tmaxWidth: 400\n\t\t\t\t\t\t}}>\n\t\t\t\t\t\t<Typography type='s3' weight='medium' color='theme.secondary.1000'>\n\t\t\t\t\t\t\t{t('common.filters')}:{' '}\n\t\t\t\t\t\t</Typography>\n\n\t\t\t\t\t\t{filters?.rules?.map((r, rIndex) => (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{r?.rules?.length ? (\n\t\t\t\t\t\t\t\t\tr?.rules?.map((rr, rrIndex) => (\n\t\t\t\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t\t\t\t{getFilterChip(rr, rrIndex)}\n\t\t\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t\t))\n\t\t\t\t\t\t\t\t) : <>\n\t\t\t\t\t\t\t\t\t{getFilterChip(r, rIndex)}\n\n\t\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</Box>\n\t\t\t\t\t<Box>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tstartIcon={<FolderSave fontSize='small' />}\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t<span> {t('common.saveFilter')}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t{/* {selectedSavedFilter && \n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tstartIcon={<img src={images.common.saveFilterIcon} alt='Add Icon' />}\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t\t<Typography type='s3' color=\"theme.secondary.1000\" weight='medium'>\n\t\t\t\t\t\t\t\t\tUpdate Filter <Typography type='s3' weight='medium'>{`(${selectedSavedFilter.name})`}</Typography>\n\t\t\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t} */}\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tstartIcon={<FilterRemove fontSize='small' />}\n\t\t\t\t\t\t\tonClick={() =>\n\t\t\t\t\t\t\t\tupdatePageInfo({\n\t\t\t\t\t\t\t\t\tfilters: initialFilter,\n\t\t\t\t\t\t\t\t\tfilterQueryString: ''\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\t}>\n\t\t\t\t\t\t\t{t('common.clearFilter')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</Box>\n\t\t\t\t</Box>\n\t\t\t)}\n\t\t\t{/* Applied Filters view (End) */}\n\n\t\t\t{/* {filterBar && (\n\t\t\t\t<div className='filter-bar'>\n\t\t\t\t\t<div className='filter-bar--LeftContent'>\n\t\t\t\t\t\t<div>\n\t\t\t\t\t\t\t<Select\n\t\t\t\t\t\t\t\tfullWidth\n\t\t\t\t\t\t\t\tplaceholder='Placeholder'\n\t\t\t\t\t\t\t\tsize={'small'}\n\t\t\t\t\t\t\t\tclassName='status-changes-drp'\n\t\t\t\t\t\t\t\tvalue={status}\n\t\t\t\t\t\t\t\tonChange={handleStatusChange}\n\t\t\t\t\t\t\t\tvariant='outlined'>\n\t\t\t\t\t\t\t\t<MenuItem value={'Status'}>{t('common.status')}</MenuItem>\n\t\t\t\t\t\t\t\t<MenuItem value={'Show'}>{t('common.show')}</MenuItem>\n\t\t\t\t\t\t\t</Select>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<Typography className='subtask-switch' variant='h6'>\n\t\t\t\t\t\t\t{t('common.subtask')}\n\t\t\t\t\t\t\t<Toggle checked={isToggled} onChange={handleToggle} />\n\t\t\t\t\t\t</Typography>\n\t\t\t\t\t\t|\n\t\t\t\t\t\t<Button className='hide-btn' onClick={handleFilterHide}>\n\t\t\t\t\t\t\t{t('common.hide')}\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className='filter-bar--RightContent'>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tvariant='text'\n\t\t\t\t\t\t\tclassName='enable-filter-btn'\n\t\t\t\t\t\t\tonClick={handleSaveFilterClick}>\n\t\t\t\t\t\t\t<img src={images.common.saveFilterIcon} alt='Add Icon' />\n\t\t\t\t\t\t\t<span>{t('common.saveFilter')}</span>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t)} */}\n\t\t\t<SaveFilterModal\n\t\t\t\topen={openSaveFilter}\n\t\t\t\tonClose={() => setIsOpenSaveFilter(false)}\n\t\t\t\thandleSubmit={(name: any) =>\n\t\t\t\t\thandleSave(name, filterQuery as RuleGroupType)\n\t\t\t\t}\n\t\t\t/>\n\t\t\t<UploadExcel\n\t\t\t\topen={isUploadModalOpen}\n\t\t\t\tshowCameraButton={false}\n\t\t\t\tonClose={() => setIsUploadModalOpen(false)}\n\t\t\t\tonConfirm={() => setIsUploadModalOpen(true)}\n\t\t\t\ttitle='Upload'\n\t\t\t\tmultiple={false}\n\t\t\t\timportModuleName={importModuleName}\n\t\t\t\tpageName={importModuleName}\n\t\t\t\taccept='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nexport { ActionBar };\nexport default ActionBar;\n"],"names":["setBaseUrl","ActionBar","React","memo","props","token","localStorage","getItem","auth","storageTokenKeyName","location","useLocation","title","data","setData","active","setActive","handleAddButton","handleSearch","button","disabledViews","isDropdownMenuButton","itemListingDropdownOptions","isTitleMenu","titleMenus","type","fields","applyFilter","isToggleButton","handleToggleButton","showSearch","showFilter","showView","customButtons","pageName","actionBtn","importModuleName","selectedIds","searchText","isUseFields","useAppDispatch","useState","isToggledForItem","setIsToggledForItem","openFilterPopup","setOpenFilterPopup","openSaveFilter","setIsOpenSaveFilter","rowAnchorEl","setRowAnchorEl","isUploadModalOpen","setIsUploadModalOpen","savedFilters","setSavedFilters","searchedText","setSearchedText","t","useTranslation","theme","useTheme","isLgUp","useMediaQuery","breakpoints","up","activePage","updatePageInfo","schemaFields","setActivePage","usePages","filters","resources","useMemo","routeToResourceMap","pathname","useEffect","fetchSavedFilters","async","pageResource","fieldResource","getV1FilterResource","getToken","resource","then","response","result","map","e","id","_id","name","query","catch","err","rowActionMenu","push","label","handleAction","moduleName","filterQueryString","templateURL","getExcelExportTemplate","blob","link","document","createElement","url","window","URL","createObjectURL","href","download","body","appendChild","click","removeChild","revokeObjectURL","exportExcel","icon","jsx","Export","fontSize","getExcelTemplateGenerateTemplate","downloadTemplate","DocumentDownload","Import","getFilterChipLabels","rule","field","_a","replace","_b","find","f","key","formatLabel","opLabel","getOperatorLabel","value","Array","isArray","rv","join","jsxs","Box","sx","display","alignItems","gap","children","Typography","color","weight","Divider","orientation","flexItem","formatText","getFilterChip","rr","index","Chip","variant","palette","backgroundColor","borderColor","grey","opacity","flexDirection","cursor","deleteIcon","Cancel","marginRight","marginLeft","onDelete","removeSignleFilter","clickable","ruleIndex","uRules","rules","filter","_","uFilters","generateQueryString","searchAnchorEl","setSearchAnchorEl","search","className","style","zIndex","TitleDropdownButton","onClick","options","isMenuThirdItemDisabled","currentTitle","Boolean","ele","sort","a","b","position","item","HeaderCard","ViewModal","Toggle","checked","onChange","prev","SearchBar","placeholder","debounceTime","isDrivePage","Fragment","IconButton","size","currentTarget","Search","Menu","anchorEl","open","onClose","anchorOrigin","vertical","horizontal","transformOrigin","p","boxShadow","Button","startIcon","FilterIcon","AddIcon","DropdownButton","src","images","more","alt","option","MenuItem","disabled","Filter","activeView","onSaveFilter","onSelectedFilter","setSelectedSavedFilter","flt","length","isFilterApplied","mb","justifyContent","maxWidth","r","rIndex","rrIndex","FolderSave","FilterRemove","initialFilter","SaveFilterModal","handleSubmit","filterQuery","postFilterRequest","module","is_applied","postV1Filter","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleSave","UploadExcel","showCameraButton","onConfirm","multiple","accept"],"mappings":"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"}
@@ -38,7 +38,7 @@ import Close from "../../../node_modules/@mui/icons-material/esm/Close/index.esm
38
38
  import DialogContent from "../../../node_modules/@mui/material/DialogContent/DialogContent/index.esm.js";
39
39
  import Alert from "../../../node_modules/@mui/material/Alert/Alert/index.esm.js";
40
40
  import DialogActions from "../../../node_modules/@mui/material/DialogActions/DialogActions/index.esm.js";
41
- setBaseUrl(`${"http://127.0.0.1:4011"}/system-feature`);
41
+ setBaseUrl(`${"https://apidev.erpforce.co"}/system-feature`);
42
42
  const initialQuery = { combinator: "and", rules: [] };
43
43
  const Filter = ({
44
44
  open,
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n setBaseUrl,\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["selectedFilter"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDA,WAAW,GAAG,uBAAqC,iBAAiB;AAsBpE,MAAM,eAA8B,EAAE,YAAY,OAAO,OAAO,CAAA,EAAC;AAEjE,MAAM,SAAS,CAAC;AAAA,EACd;AAAA,EACA;AAAA;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS,CAAA;AAAA,EACT,cAAc;AAChB,MAAe;AACb,QAAM,WAAW,YAAA;AAEjB,QAAM,QAAQ,aAAa,QAAQ,KAAK,mBAAmB;AAC3D,QAAM,EAAE,gBAAgB,YAAY,cAAc,cAAA,IAAkB,SAAA;AAEpE,WAAS,cAAc,eAAe,MAAM,IAAK,aAAa,SAAS,eAAe,YAAY,IAAI;AACtG,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAwB,YAAY;AAC9D,QAAM,CAAC,sBAAsB,uBAAuB,IAAI,SAEtD,gBAAgB,CAAA,CAAE;AACpB,QAAM,CAAC,gBAAgB,iBAAiB,IAAI,SAAc,IAAI;AAC9D,QAAM,CAAC,kBAAkB,qBAAqB,IAAI,SAAc,IAAI;AACpE,QAAM,CAAC,cAAc,eAAe,IAAI,SAAwB,IAAI;AACpE,QAAM,EAAE,MAAA,IAAU,YAAA;AAClB,QAAM,YAAwB,QAAQ,MAAM,mBAAmB,SAAS,QAAQ,KAAK,MAAM,CAAC,SAAS,QAAQ,CAAC;AAE9G,YAAU,MAAM;AACd,oBAAgB,wBAAwB,YAAY;AAAA,EACtD,GAAG,CAAC,YAAY,CAAC;AAGjB,QAAM,oBAAoB,YAAY,CAAC,QAAiB,UAAU;AAChE,QAAI,IAAI;AACR,UAAM,YAAY,oBAAoB,CAAC;AACvC,QAAI,WAAW;AACb,sBAAgB,gBAAgB;AAChC;AAAA,IACF;AACA,QAAI,OAAO;AACT,UAAI;AACJ,eAAS,CAAC;AAAA,IACZ,OAAO;AACL,YAAM,oBAAoB,IAAI,oBAAoB,CAAC,IAAI;AACvD,qBAAe,EAAE,SAAS,GAAG,mBAAmB,mBAAmB;AAEnE,cAAA;AAAA,IACF;AAAA,EACF,GAAG,CAAC,OAAO,aAAa,OAAO,CAAC;AAEhC,QAAM,oBAAoB,CAAC,MAAqB;AAC9C,UAAM,eAAe,EAAE,MAAM,IAAI,CAAC,MAAM,MAAA;;AAAO;AAAA,QAC7C,GAAG;AAAA,QACH,OAAO,KAAK,YAAU,iBAAM,UAAN,mBAAc,OAAd,mBAAkB,UAAS,CAAC,QAAQ,SAAS,EAAE,SAAS,KAAK,QAAQ,IAAI,KAAK,KAAK;AAAA,MAAA;AAAA,KACzG;AAwCF,aAAS,EAAE,GAAG,GAAG,OAAO,cAAc;AAK/B;AACL,sBAAgB,IAAI;AAAA,IACtB;AAGA,QAAI,cAAc;AAChB,mBAAa,CAAC;AAAA,IAChB;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,OAAa;AACvC,QAAI,IAAI;AACN,wBAAkB,EAAE;AACpB,eAAS,GAAG,KAAK;AACjB,UAAI,kBAAkB;AACpB,yBAAiB,EAAE;AAAA,MACrB;AAAA,IACF,OAAO;AACL,wBAAkB,IAAI;AACtB,eAAS,YAAY;AACrB,UAAI,kBAAkB;AACpB,yBAAiB,IAAI;AAAA,MACvB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,oBAAoB,CAAC,eAAuB;AAChD,UAAM,kBAAkB,6CAAc;AAAA,MAAO,CAAC,WAC5C,OAAO,KAAK,cAAc,SAAS,WAAW,YAAA,CAAa;AAAA;AAE7D,QAAI,iBAAiB;AACnB,8BAAwB,eAAe;AAAA,IACzC;AAAA,EACF;AAEA,QAAM,qBAAqB,OAAO,UAAkB,YAAoB;AACtE,UAAM,mBAA+C;AAAA,MACnD,WAAW;AAAA,MACX,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,SAAQ,uCAAW,mBAAiB,uCAAW;AAAA,IAAA;AAGjD,QAAI;AACF,YAAM,cAAc,gBAAgB;AAEpC,UAAI,mBAAmB;AACrB,0BAAA;AAAA,MACF;AACA,sBAAgB,+BAA+B;AAAA,IACjD,SAAS,OAAO;AACd,UAAI,IAAY;AAChB,UAAI,iBAAiB,OAAO;AAC1B,YAAI,gBAAgB,MAAM,OAAO;AAAA,MACnC;AACA,sBAAgB,GAAG,EAAE,SAAS,QAAA,CAAS;AACvC,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT;AACA,QAAM,kCAAkC,YAAY;AAClD,QAAI,gBAAgB;AAElB,YAAM,mBAA+C;AAAA,QACnD,WAAW;AAAA,QACX,IAAI,eAAe;AAAA,QACnB,MAAM;AAAA,MAAA;AAGR,oBAAc,gBAAgB,EAC3B,KAAK,CAAC,aAAkB;AACvB,YAAI,mBAAmB;AACrB,4BAAA;AAAA,QACF;AACA,sBAAc,CAAC,UAAe;AAAA,UAC5B,GAAG;AAAA,UACH,SAAS;AAAA,YACP,GAAG,KAAK;AAAA,YACR,OAAO,MAAM;AAAA,YACb,YAAY,MAAM;AAAA,YAClB,MAAM,eAAe;AAAA,UAAA;AAAA,QAEvB,EACA;AAAA,MACJ,CAAC,EACA,MAAM,CAAC,QAAa,gBAAgB,iCAAiC,EAAE,SAAS,QAAA,CAAS,CAAC;AAAA,IAC/F;AAAA,EACF;AAEA,QAAM,qBAAqB,CAAC,SAAiB;AAC3C,QAAI,kBAAkB;AACpB,aAAO,mBAAmB,iBAAiB,IAAI,IAAI;AAAA,IACrD;AAAA,EACF;AAEA,QAAM,qBAAqB,OAAO,aAAqB;AACrD,UAAM,sBAAqD;AAAA,MACzD,WAAW;AAAA,MACX,IAAI;AAAA,IAAA;AAGN,qBAAiB,mBAAmB,EACjC,KAAK,CAAC,aAAkB;AACvB,wBAAkB,IAAI;AACtB,eAAS,YAAY;AACrB,UAAI,mBAAmB;AACrB,0BAAA;AAAA,MACF;AAAA,IAEF,CAAC,EACA,MAAM,CAAC,QAAa,QAAQ,IAAI,iCAAiC,GAAG,CAAC;AAAA,EAC1E;AAEA,YAAU,MAAM;AACd,QAAI,IAAI;AACR,QAAI,CAAC,EAAE,QAAQ,WAAW,OAAO,GAAG;AAClC,UAAI,WAAW;AAAA,IACjB;AACA,aAAS,CAAC;AACV,UAAMA,kBAAiB,6CAAc,KAAK,CAAC;;AAAW,eAAE,WAAS,8CAAY,YAAZ,mBAAqB;AAAA;AACtF,sBAAkBA,mBAAkB,IAAI;AAAA,EAC1C,GAAG,CAAC,yCAAY,SAAS,YAAY,CAAC;AAEtC,QAAM,sBAAsB,CAAC,SAAS;;AACpC,QAAI,UAAoB,CAAA;AACxB,uCAAM,UAAN,mBAAa,QAAQ,CAAC,MAAW;AAC/B,UAAI,QAAQ,SAAS,EAAE,KAAK,KAAK,KAAK,cAAc,OAAO;AACzD,eAAO;AAAA,MACT;AACA,cAAQ,KAAK,EAAE,KAAK;AAAA,IACtB;AACA,WAAO,QAAQ,aAAW,kCAAM,UAAN,mBAAa;AAAA,EACzC;AAGA,QAAM,gBAAgB,CAAC,SAAuB;AAE5C,QAAI,MAAM,QAAQ,KAAK,KAAK,GAAG;AAC7B,aAAO,KAAK,MAAM,SAAS,KAAK,MAAM,KAAK,aAAa,IAAI,CAAC,KAAK,MAAM;AAAA,IAC1E;AAGA,WACE,CAAC,KAAK,SACL,EAAE,QAAQ,KAAK,KAAK,KAAK,CAAC,CAAC,QAAQ,SAAS,EAAE,SAAS,KAAK,QAAQ;AAAA,EAEzE;AAEA,QAAM,WAAW,QAAQ,MAAM,cAAc,KAAK,KAAK,cAAc,CAAC,OAAO,YAAY,CAAC;AAG1F,6BACG,OAAA,EACC,UAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA;AAAA,MACA,UAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,QACV,IAAI,EAAE,cAAc,EAAA;AAAA,MAAE;AAAA,MAGxB,UAAA;AAAA,QAAA,qBAAC,aAAA,EAAY,WAAU,iBACrB,UAAA;AAAA,UAAA,oBAAC,cAAW,MAAK,MAAK,QAAO,UAAS,OAAM,wBAAuB,UAAA,UAAA,CAEnE;AAAA,+BACC,KAAA,EAAI,KAAK,GAAG,SAAS,QACpB,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,WAAS;AAAA,gBACT,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,OAAO,iBAAiB,eAAe,OAAO;AAAA,gBAC9C,UAAU,CAAC,UAAe;AACxB,wBAAM,KAAK,6CAAc,KAAK,CAAA,MAAK,EAAE,QAAQ,MAAM,OAAO;AAC1D,qCAAmB,EAAE;AAAA,gBACvB;AAAA,gBACA,SAAQ;AAAA,gBACR,SAAS,MAAM;AACb,6BAAW,MAAM;AACf,sCAAkB,EAAE;AAAA,kBACtB,GAAG,GAAG;AAAA,gBACR;AAAA,gBACA,OACE,iBACE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,OAAM;AAAA,oBACN,cACE,oBAAC,gBAAA,EAAe,UAAS,OACvB,UAAA;AAAA,sBAAC;AAAA,sBAAA;AAAA,wBACC,cAAW;AAAA,wBACX,SAAS,MAAM;AACb,6CAAA;AAAA,wBACF;AAAA,wBACA,MAAK;AAAA,wBACL,IAAI,EAAE,IAAI,IAAA;AAAA,wBACV,MAAK;AAAA,wBACL,8BAAC,OAAA,EAAM,IAAI,EAAE,UAAU,SAAO,CAAG;AAAA,sBAAA;AAAA,oBAAA,GAErC;AAAA,kBAAA;AAAA,gBAAA,IAGF;AAAA,gBAGN,UAAA;AAAA,kBAAA,oBAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,aAAa;AAAA,sBACb,cAAc,CAAC,MAAM,kBAAkB,CAAC;AAAA,oBAAA;AAAA,kBAAA,GAE5C;AAAA,kBAQC,6DAAsB,IAAI,CAAC,gBAC1B;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBAEC,OAAO,2CAAa;AAAA,sBACpB,WAAU;AAAA,sBACV,WAAU,iDAAgB,UAAQ,2CAAa;AAAA,sBAE/C,UAAA;AAAA,wBAAA,oBAAC,cAAW,OAAM,wBAAuB,MAAK,MAC3C,qDAAa,MAChB;AAAA,wBAEA,qBAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,8CAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,CAAC,MAAM;AACvC,8BAAE,eAAA;AACF,8BAAE,gBAAA;AACF,kDAAsB,WAAW;AAAA,0BACnC,GACE,UAAA,oBAAC,MAAA,EAAK,UAAS,SAAQ,QAAO,iDAAgB,UAAQ,2CAAa,QAAO,sBAAsB,UAAA,CAAW,GAC7G;AAAA,8CACC,YAAA,EAAW,MAAK,SAAQ,SAAS,CAAC,MAAM;AACvC,8BAAE,eAAA;AACF,8BAAE,gBAAA;AACF,+CAAmB,YAAY,EAAE;AAAA,0BACnC,GAAG,OAAM,SACP,UAAA,oBAAC,SAAM,UAAS,SAAQ,OAAM,kBAAA,CAAkB,GAClD;AAAA,wBAAA,GACF;AAAA,sBAAA;AAAA,oBAAA;AAAA,oBAxBK,YAAY;AAAA,kBAAA;AAAA,gBA0BpB;AAAA,cAAA;AAAA,YAAA;AAAA,YAEH;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAM,qBAAqB;AAAA,gBAC3B,SAAS,MAAM,sBAAsB,IAAI;AAAA,gBACzC,cAAc,CAAC,SAAS,mBAAmB,IAAI;AAAA,gBAC/C,SAAS,qDAAkB;AAAA,cAAA;AAAA,YAAA;AAAA,YAE7B,oBAAC,KAAA,EACC,8BAAC,YAAA,EAAW,MAAK,SAAQ,SAAS,SAChC,UAAA,oBAAC,OAAA,EAAM,UAAS,SAAQ,EAAA,CAC1B,EAAA,CACF;AAAA,UAAA,GACF;AAAA,QAAA,GACF;AAAA,QACA,qBAAC,eAAA,EAAc,WAAU,WAEtB,UAAA;AAAA,UAAA,gBACC,oBAAC,OAAA,EAAM,UAAS,SAAQ,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,EAAA,GAChD,UAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,MAAK;AAAA,cAEJ,UAAA;AAAA,YAAA;AAAA,UAAA,GAEL;AAAA,+BAED,sBAAA,EACC,UAAA;AAAA,YAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,QAAQ,UAAU,CAAA;AAAA,gBAClB;AAAA,gBACA,eAAe;AAAA,gBACf,6BAA6B;AAAA,gBAC7B,mBAAmB;AAAA,kBACjB,QAAQ;AAAA,gBAAA;AAAA,gBAEV,iBAAiB;AAAA,kBACf,eAAe;AAAA,kBACf,gBAAgB;AAAA,kBAChB,oBAAoB;AAAA,kBACpB,eAAe;AAAA,kBACf,kBAAkB;AAAA,kBAClB,kBAAkB;AAAA,kBAClB,aAAa;AAAA,kBACb,mBAAmB;AAAA,gBAAA;AAAA,cACrB;AAAA,YAAA;AAAA,YAEF;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,SAAQ;AAAA,gBACR,WAAW,QAAQ,uBAAuB;AAAA,gBAC1C,SAAS,MAAM;AACb,oCAAkB,IAAI;AAAA,gBACxB;AAAA,gBACA;AAAA,gBACD,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,GACF;AAAA,QAAA,GACF;AAAA,4BACC,eAAA,EAAc,WAAU,iBACvB,UAAA,qBAAC,KAAA,EAAI,IAAI,EAAE,SAAS,QAAQ,YAAY,UAAU,gBAAgB,iBAAiB,kBAAkB,YAAY,OAAO,OAAA,GACrH,UAAA;AAAA,UAAA,sCACE,KAAA,EACC,UAAA,oBAAC,UAAO,SAAS,iCAAiC,mCAElD,GACF;AAAA,UAEF,qBAAC,OAAI,IAAI,EAAE,SAAS,QAAQ,KAAK,EAAA,GAC/B,UAAA;AAAA,YAAA,oBAAC,QAAA,EAAO,WAAU,qBAAoB,SAAS,SAAS,UAAA,UAExD;AAAA,YACA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC;AAAA,gBACA,SAAS,MAAM,kBAAA;AAAA,gBAChB,UAAA;AAAA,cAAA;AAAA,YAAA;AAAA,UAED,GACF;AAAA,QAAA,EAAA,CACF,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA,GAEJ;AAEJ;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n setBaseUrl,\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["selectedFilter"],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),l=require("react"),r=require("react-querybuilder"),t=;/* empty css */;/* empty css */var i=,/* empty css */n=,/* empty css */s=,/* empty css */a=,/* empty css */o=,/* empty css */u=,/* empty css */d=,/* empty css */c=,/* empty css */m=,/* empty css */x=,/* empty css */f=,/* empty css */p=,/* empty css */h=,/* empty css */j=,/* empty css */v=,/* empty css */g=,/* empty css */q=,/* empty css */y=require("lodash"),S=,/* empty css */b=,/* empty css */C=require("react-router-dom"),k=,/* empty css */F=,/* empty css */A=,/* empty css */_=,/* empty css */B=,/* empty css */I=,/* empty css */N=,/* empty css */E=,/* empty css */w=,/* empty css */D=,/* empty css */R=,/* empty css */z=,/* empty css */M=,/* empty css */P=;/* empty css */function T(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var L=/* @__PURE__ */T(y);j.setBaseUrl("http://127.0.0.1:4011/system-feature");const Q={combinator:"and",rules:[]},G=({open:y,onClose:T,savedFilters:G,fetchSavedFilters:O,onSaveFilter:V,onSelectedFilter:U,applyFilter:W,fields:K=[],isUseFields:H=!1})=>{const J=C.useLocation(),X=localStorage.getItem(v.auth.storageTokenKeyName),{updatePageInfo:Y,activePage:Z,schemaFields:$,setActivePage:ee}=q.usePages();K=H?g.generateFields(K):$.length?g.generateFields($):K;const[le,re]=l.useState(Q),[te,ie]=l.useState(G??[]),[ne,se]=l.useState(null),[ae,oe]=l.useState(null),[ue,de]=l.useState(null),{isRtl:ce}=k.useLanguage(),me=l.useMemo(()=>b.routeToResourceMap[J.pathname]||null,[J.pathname]);l.useEffect(()=>{G&&ie(G)},[G]);const xe=l.useCallback((e=!1)=>{let l=le;if(he(l))de("Invalid filter");else if(e)l=Q,re(l);else{const e=l?g.generateQueryString(l):l;Y({filters:l,filterQueryString:e}),T()}},[le,W,T]),fe=e=>{e?(se(e),re(e.query),U&&U(e)):(se(null),re(Q),U&&U(null))},pe=e=>{const l=null==G?void 0:G.filter(l=>l.name.toLowerCase().includes(e.toLowerCase()));l&&ie(l)};l.useEffect(()=>{let e=Q;L.default.isEmpty(Z.filters)||(e=Z.filters),re(e);const l=null==G?void 0:G.find(e=>{var l;return e.name===(null==(l=null==Z?void 0:Z.filters)?void 0:l.name)});se(l||null)},[null==Z?void 0:Z.filters,G]);const he=e=>{var l,r;let t=[];return null==(l=null==e?void 0:e.rules)||l.forEach(l=>{if(t.includes(l.field)&&"and"==e.combinator)return!0;t.push(l.field)}),t.length!==(null==(r=null==e?void 0:e.rules)?void 0:r.length)},je=e=>Array.isArray(e.rules)?e.rules.length?e.rules.some(je):!e.rules.length:!e.field||L.default.isEmpty(e.value)&&!["null","notNull"].includes(e.operator),ve=l.useMemo(()=>je(le)||ue,[le,ue]);/* @__PURE__ */
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),l=require("react"),r=require("react-querybuilder"),t=;/* empty css */;/* empty css */var i=,/* empty css */n=,/* empty css */s=,/* empty css */a=,/* empty css */o=,/* empty css */u=,/* empty css */d=,/* empty css */c=,/* empty css */m=,/* empty css */f=,/* empty css */x=,/* empty css */p=,/* empty css */h=,/* empty css */j=,/* empty css */v=,/* empty css */g=,/* empty css */q=,/* empty css */y=require("lodash"),S=,/* empty css */b=,/* empty css */C=require("react-router-dom"),k=,/* empty css */F=,/* empty css */A=,/* empty css */_=,/* empty css */B=,/* empty css */I=,/* empty css */N=,/* empty css */E=,/* empty css */w=,/* empty css */D=,/* empty css */R=,/* empty css */z=,/* empty css */M=,/* empty css */P=;/* empty css */function T(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var L=/* @__PURE__ */T(y);j.setBaseUrl("https://apidev.erpforce.co/system-feature");const Q={combinator:"and",rules:[]},G=({open:y,onClose:T,savedFilters:G,fetchSavedFilters:O,onSaveFilter:V,onSelectedFilter:U,applyFilter:W,fields:K=[],isUseFields:H=!1})=>{const J=C.useLocation(),X=localStorage.getItem(v.auth.storageTokenKeyName),{updatePageInfo:Y,activePage:Z,schemaFields:$,setActivePage:ee}=q.usePages();K=H?g.generateFields(K):$.length?g.generateFields($):K;const[le,re]=l.useState(Q),[te,ie]=l.useState(G??[]),[ne,se]=l.useState(null),[ae,oe]=l.useState(null),[ue,de]=l.useState(null),{isRtl:ce}=k.useLanguage(),me=l.useMemo(()=>b.routeToResourceMap[J.pathname]||null,[J.pathname]);l.useEffect(()=>{G&&ie(G)},[G]);const fe=l.useCallback((e=!1)=>{let l=le;if(he(l))de("Invalid filter");else if(e)l=Q,re(l);else{const e=l?g.generateQueryString(l):l;Y({filters:l,filterQueryString:e}),T()}},[le,W,T]),xe=e=>{e?(se(e),re(e.query),U&&U(e)):(se(null),re(Q),U&&U(null))},pe=e=>{const l=null==G?void 0:G.filter(l=>l.name.toLowerCase().includes(e.toLowerCase()));l&&ie(l)};l.useEffect(()=>{let e=Q;L.default.isEmpty(Z.filters)||(e=Z.filters),re(e);const l=null==G?void 0:G.find(e=>{var l;return e.name===(null==(l=null==Z?void 0:Z.filters)?void 0:l.name)});se(l||null)},[null==Z?void 0:Z.filters,G]);const he=e=>{var l,r;let t=[];return null==(l=null==e?void 0:e.rules)||l.forEach(l=>{if(t.includes(l.field)&&"and"==e.combinator)return!0;t.push(l.field)}),t.length!==(null==(r=null==e?void 0:e.rules)?void 0:r.length)},je=e=>Array.isArray(e.rules)?e.rules.length?e.rules.some(je):!e.rules.length:!e.field||L.default.isEmpty(e.value)&&!["null","notNull"].includes(e.operator),ve=l.useMemo(()=>je(le)||ue,[le,ue]);/* @__PURE__ */
2
2
  return e.jsx("div",{children:/* @__PURE__ */e.jsxs(F.default,{open:y,onClose:T,maxWidth:"md",fullWidth:!0,PaperProps:{sx:{borderRadius:2}},children:[
3
3
  /* @__PURE__ */e.jsxs(A.default,{className:"filter-header",children:[
4
4
  /* @__PURE__ */e.jsx(n.Typography,{type:"s3",weight:"medium",color:"theme.secondary.1000",children:"Filters"}),
5
5
  /* @__PURE__ */e.jsxs(_.default,{gap:1,display:"flex",children:[
6
- /* @__PURE__ */e.jsxs(i.Select,{fullWidth:!0,size:"small",className:"filter-dropdown",value:ne?ne.name:"Saved Filters",onChange:e=>{const l=null==G?void 0:G.find(l=>l.name==e.target.value);fe(l)},variant:"outlined",onClose:()=>{setTimeout(()=>{pe("")},500)},input:ne?/* @__PURE__ */e.jsx(w.default,{label:"",endAdornment:/* @__PURE__ */e.jsx(D.default,{position:"end",children:/* @__PURE__ */e.jsx(I.default,{"aria-label":"clear selection",onClick:()=>{fe()},edge:"end",sx:{mr:1.5},size:"small",children:/* @__PURE__ */e.jsx(R.default,{sx:{fontSize:"1rem"}})})})}):void 0,children:[
6
+ /* @__PURE__ */e.jsxs(i.Select,{fullWidth:!0,size:"small",className:"filter-dropdown",value:ne?ne.name:"Saved Filters",onChange:e=>{const l=null==G?void 0:G.find(l=>l.name==e.target.value);xe(l)},variant:"outlined",onClose:()=>{setTimeout(()=>{pe("")},500)},input:ne?/* @__PURE__ */e.jsx(w.default,{label:"",endAdornment:/* @__PURE__ */e.jsx(D.default,{position:"end",children:/* @__PURE__ */e.jsx(I.default,{"aria-label":"clear selection",onClick:()=>{xe()},edge:"end",sx:{mr:1.5},size:"small",children:/* @__PURE__ */e.jsx(R.default,{sx:{fontSize:"1rem"}})})})}):void 0,children:[
7
7
  /* @__PURE__ */e.jsx("div",{className:"searchbar-box-list",children:/* @__PURE__ */e.jsx(p.SearchBar,{placeholder:"Search Filters",handleSearch:e=>pe(e)})}),null==te?void 0:te.map(l=>/* @__PURE__ */e.jsxs(B.default,{value:null==l?void 0:l.name,className:"menu-list",selected:(null==ne?void 0:ne.name)==(null==l?void 0:l.name),children:[
8
8
  /* @__PURE__ */e.jsx(n.Typography,{color:"theme.secondary.1000",type:"s3",children:null==l?void 0:l.name}),
9
9
  /* @__PURE__ */e.jsxs("div",{className:"icon-list",children:[
@@ -13,10 +13,10 @@ return e.jsx("div",{children:/* @__PURE__ */e.jsxs(F.default,{open:y,onClose:T,m
13
13
  /* @__PURE__ */e.jsx(_.default,{children:/* @__PURE__ */e.jsx(I.default,{size:"small",onClick:T,children:/* @__PURE__ */e.jsx(R.default,{fontSize:"small"})})})]})]}),
14
14
  /* @__PURE__ */e.jsxs(z.default,{className:"content",children:[ue&&/* @__PURE__ */e.jsx(M.default,{severity:"error",sx:{px:1,pt:.5,mb:1},children:/* @__PURE__ */e.jsx(n.Typography,{color:"error",type:"s4",children:ue})}),
15
15
  /* @__PURE__ */e.jsxs(t.QueryBuilderMaterial,{children:[
16
- /* @__PURE__ */e.jsx(r.QueryBuilder,{fields:K||[],query:le,onQueryChange:e=>{const l=e.rules.map((e,l)=>{var r,t;return{...e,value:e.field!==(null==(t=null==(r=le.rules)?void 0:r[l])?void 0:t.field)||["null","notNull"].includes(e.operator)?"":e.value}});re({...e,rules:l}),de(null),V&&V(e)},showCombinatorsBetweenRules:!0,controlClassnames:{header:"actions"},controlElements:{addRuleAction:u.AddFilterButton,addGroupAction:d.AddGroupButton,combinatorSelector:s.CombinatorSelect,fieldSelector:o.FieldSelect,operatorSelector:m.OperatorSelect,removeRuleAction:a.RemoveAction,valueEditor:c.ValueEditor,removeGroupAction:f.RemoveGroupAction}}),
17
- /* @__PURE__ */e.jsx(x.Button,{variant:"text",className:ce?"remove-filters_rtl":"remove-filters",onClick:()=>{xe(!0)},disabled:ve,children:"Clear all filters"})]})]}),
18
- /* @__PURE__ */e.jsx(P.default,{className:"filter-footer",children:/* @__PURE__ */e.jsxs(_.default,{sx:{display:"flex",alignItems:"center",justifyContent:ne?"space-between":"flex-end",width:"100%"},children:[ne&&/* @__PURE__ */e.jsx(_.default,{children:/* @__PURE__ */e.jsx(x.Button,{onClick:async()=>{if(ne){const e={"x-token":X,id:ne.id,data:le};j.putV1FilterId(e).then(e=>{O&&O(),ee(e=>({...e,filters:{...e.filters,rules:le.rules,combinator:le.combinator,name:ne.name}}))}).catch(e=>S.enqueueSnackbar("Error renaming saved filters:",{variant:"error"}))}},children:"Update Seleted filter"})}),
16
+ /* @__PURE__ */e.jsx(r.QueryBuilder,{fields:K||[],query:le,onQueryChange:e=>{const l=e.rules.map((e,l)=>{var r,t;return{...e,value:e.field!==(null==(t=null==(r=le.rules)?void 0:r[l])?void 0:t.field)||["null","notNull"].includes(e.operator)?"":e.value}});re({...e,rules:l}),de(null),V&&V(e)},showCombinatorsBetweenRules:!0,controlClassnames:{header:"actions"},controlElements:{addRuleAction:u.AddFilterButton,addGroupAction:d.AddGroupButton,combinatorSelector:s.CombinatorSelect,fieldSelector:o.FieldSelect,operatorSelector:m.OperatorSelect,removeRuleAction:a.RemoveAction,valueEditor:c.ValueEditor,removeGroupAction:x.RemoveGroupAction}}),
17
+ /* @__PURE__ */e.jsx(f.Button,{variant:"text",className:ce?"remove-filters_rtl":"remove-filters",onClick:()=>{fe(!0)},disabled:ve,children:"Clear all filters"})]})]}),
18
+ /* @__PURE__ */e.jsx(P.default,{className:"filter-footer",children:/* @__PURE__ */e.jsxs(_.default,{sx:{display:"flex",alignItems:"center",justifyContent:ne?"space-between":"flex-end",width:"100%"},children:[ne&&/* @__PURE__ */e.jsx(_.default,{children:/* @__PURE__ */e.jsx(f.Button,{onClick:async()=>{if(ne){const e={"x-token":X,id:ne.id,data:le};j.putV1FilterId(e).then(e=>{O&&O(),ee(e=>({...e,filters:{...e.filters,rules:le.rules,combinator:le.combinator,name:ne.name}}))}).catch(e=>S.enqueueSnackbar("Error renaming saved filters:",{variant:"error"}))}},children:"Update Seleted filter"})}),
19
19
  /* @__PURE__ */e.jsxs(_.default,{sx:{display:"flex",gap:1},children:[
20
- /* @__PURE__ */e.jsx(x.Button,{className:"cancel-filter-btn",onClick:T,children:"Cancel"}),
21
- /* @__PURE__ */e.jsx(x.Button,{disabled:ve,onClick:()=>xe(),children:"Apply"})]})]})})]})})};exports.Filter=G,exports.default=G;
20
+ /* @__PURE__ */e.jsx(f.Button,{className:"cancel-filter-btn",onClick:T,children:"Cancel"}),
21
+ /* @__PURE__ */e.jsx(f.Button,{disabled:ve,onClick:()=>fe(),children:"Apply"})]})]})})]})})};exports.Filter=G,exports.default=G;
22
22
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n setBaseUrl,\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["setBaseUrl","initialQuery","combinator","rules","Filter","open","onClose","savedFilters","fetchSavedFilters","onSaveFilter","onSelectedFilter","applyFilter","fields","isUseFields","location","useLocation","token","localStorage","getItem","auth","storageTokenKeyName","updatePageInfo","activePage","schemaFields","setActivePage","usePages","generateFields","length","query","setQuery","useState","filteredSavedFilters","setFilteredSavedFilters","selectedFilter","setSelectedFilter","openRenameFilter","setIsOpenRenameFilter","errorMessage","setErrorMessage","isRtl","useLanguage","resources","useMemo","routeToResourceMap","pathname","useEffect","handleApplyFilter","useCallback","clear","q","isDuplicatedFilters","generatedSQLQuery","generateQueryString","filters","filterQueryString","handleFilterSwitch","sf","handleSearchEvent","searchText","filteredFilters","filter","name","toLowerCase","includes","_","isEmpty","find","f","_a","rule","uniques","forEach","r","field","push","_b","isRuleInvalid","Array","isArray","some","value","operator","disabled","children","jsxs","Dialog","maxWidth","fullWidth","PaperProps","sx","borderRadius","DialogTitle","className","jsx","Typography","type","weight","color","Box","gap","display","Select","size","onChange","event","target","variant","setTimeout","input","OutlinedInput","label","endAdornment","InputAdornment","position","IconButton","onClick","edge","mr","Close","fontSize","SearchBar","placeholder","handleSearch","e","map","savedFilter","MenuItem","selected","preventDefault","stopPropagation","Edit","async","filterId","deleteFilterRequest","id","deleteV1FilterId","then","response","catch","err","handleDeleteFilter","Trash","SaveFilterModal","handleSubmit","newName","putFilterRequest","module","fieldResource","pageResource","putV1FilterId","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleRenameFilter","handleSubmitRename","oldName","DialogContent","Alert","severity","px","pt","mb","QueryBuilderMaterial","QueryBuilder","onQueryChange","updatedRules","i","showCombinatorsBetweenRules","controlClassnames","header","controlElements","addRuleAction","AddFilterButton","addGroupAction","AddGroupButton","combinatorSelector","CombinatorSelect","fieldSelector","FieldSelect","operatorSelector","OperatorSelect","removeRuleAction","RemoveAction","valueEditor","ValueEditor","removeGroupAction","RemoveGroupAction","Button","DialogActions","alignItems","justifyContent","width","data","prev"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/filter/filter.tsx"],"sourcesContent":["/* eslint-disable */\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { RuleGroupType } from \"react-querybuilder\";\nimport \"react-querybuilder/dist/query-builder.scss\";\nimport { QueryBuilder /* , formatQuery */ } from \"react-querybuilder\";\nimport { QueryBuilderMaterial } from \"@react-querybuilder/material\";\nimport {\n Box,\n IconButton,\n MenuItem,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogActions,\n OutlinedInput,\n InputAdornment,\n Alert,\n} from \"@mui/material\";\nimport \"./filter.scss\";\nimport Select from \"../select/select\";\nimport Typography from \"../typography/typography\";\nimport { Close } from \"@mui/icons-material\";\nimport CombinatorSelect from \"./components/combinator-select\";\nimport RemoveAction from \"./components/remove-action\";\nimport FieldSelect from \"./components/field-select\";\nimport AddFilterButton from \"./components/add-filter\";\nimport AddGroupButton from \"./components/add-group\";\nimport ValueEditor from \"./components/value-editor\";\nimport OperatorSelect from \"./components/operator-select\";\nimport Button from \"../button/button\";\nimport RemoveGroupAction from \"./components/delete-group\";\nimport SearchBar from \"../search-bar/search-bar\";\nimport SaveFilterModal from \"../save-filter-modal/save-filter-modal\";\n\nimport {\n setBaseUrl,\n putV1FilterId,\n deleteV1FilterId,\n} from \"../../api-client/api.system-feature/api\";\nimport type * as Types from \"../../api-client/api.system-feature/api-types\";\nimport { auth } from \"../../constants/auth\";\nimport { generateFields, generateQueryString, getErrorMessage } from \"../../utils/common\";\nimport { usePages } from \"../../hooks/use-pages\";\nimport _ from \"lodash\";\nimport { Edit, Trash } from \"../icons\";\nimport { enqueueSnackbar } from \"notistack\";\nimport { IResources, routeToResourceMap } from \"../../constants/route-page-map\";\nimport { useLocation } from \"react-router-dom\";\nimport { useLanguage } from \"../../hooks/useLangauge\";\n\nsetBaseUrl(`${import.meta.env.VITE_BACKEND_BASE_URL}/system-feature`);\n\ninterface IFilter {\n open: boolean;\n onClose: () => void;\n activeView?: string;\n savedFilters?: SavedFilter[];\n fetchSavedFilters?: () => Promise<void>;\n setFilterBar?: any;\n onSaveFilter?: (query: RuleGroupType) => void;\n onSelectedFilter?: (filterName: string) => void;\n fields: any;\n applyFilter: any;\n isUseFields?: boolean;\n}\n\ninterface SavedFilter {\n id: string;\n name: string;\n query: RuleGroupType;\n}\n\nconst initialQuery: RuleGroupType = { combinator: \"and\", rules: [] };\n\nconst Filter = ({\n open,\n onClose,\n // activeView,\n savedFilters,\n fetchSavedFilters,\n onSaveFilter,\n onSelectedFilter,\n applyFilter,\n fields = [],\n isUseFields = false\n}: IFilter) => {\n const location = useLocation();\n\n const token = localStorage.getItem(auth.storageTokenKeyName);\n const { updatePageInfo, activePage, schemaFields, setActivePage } = usePages()\n\n fields = isUseFields ? generateFields(fields) : (schemaFields.length ? generateFields(schemaFields) : fields)\n const [query, setQuery] = useState<RuleGroupType>(initialQuery);\n const [filteredSavedFilters, setFilteredSavedFilters] = useState<\n SavedFilter[]\n >(savedFilters ?? []);\n const [selectedFilter, setSelectedFilter] = useState<any>(null);\n const [openRenameFilter, setIsOpenRenameFilter] = useState<any>(null);\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { isRtl } = useLanguage();\n const resources: IResources = useMemo(() => routeToResourceMap[location.pathname] || null, [location.pathname])\n\n useEffect(() => {\n savedFilters && setFilteredSavedFilters(savedFilters);\n }, [savedFilters]);\n\n\n const handleApplyFilter = useCallback((clear: boolean = false) => {\n let q = query\n const isInvalid = isDuplicatedFilters(q)\n if (isInvalid) {\n setErrorMessage(\"Invalid filter\")\n return\n }\n if (clear) {\n q = initialQuery\n setQuery(q)\n } else {\n const generatedSQLQuery = q ? generateQueryString(q) : q;\n updatePageInfo({ filters: q, filterQueryString: generatedSQLQuery })\n // applyFilter(generatedSQLQuery);\n onClose();\n }\n }, [query, applyFilter, onClose]);\n\n const handleQueryChange = (q: RuleGroupType) => {\n const updatedRules = q.rules.map((rule, i) => ({\n ...rule,\n value: rule.field !== query.rules?.[i]?.field || ['null', 'notNull'].includes(rule.operator) ? \"\" : rule.value\n }));\n let isValid = true;\n let errorMessage = '';\n\n // // Helper function to check for invalid aggregate usage, considering parent combinators\n // const checkForInvalidAggregateUsage = (rules: any[], combinator: string, parentCombinator: string | null): boolean => {\n // let hasAggregateField = false;\n // let hasNonAggregateField = false;\n\n // rules.forEach(rule => {\n // // Check nested groups\n // if (rule.rules) {\n // // If the current group or any parent has an 'OR', pass it down\n // const currentCombinator = combinator === 'or' || parentCombinator === 'or' ? 'or' : combinator;\n // checkForInvalidAggregateUsage(rule.rules, rule.combinator, currentCombinator);\n // } else {\n // // Find the field in the fields array and check if it's an aggregate\n // const field = fields.find((f: any) => f.name === rule.field);\n\n // if (field?.is_aggregate) {\n // hasAggregateField = true;\n // } else {\n // hasNonAggregateField = true;\n // }\n // }\n // });\n\n // // If any parent or current rule uses 'OR' with a mix of aggregate and non-aggregate fields, it's invalid\n // if ((combinator === 'or' || parentCombinator === 'or') && hasAggregateField && hasNonAggregateField) {\n // isValid = false;\n // errorMessage = 'Mixing aggregate and non-aggregate fields in OR conditions may lead to unexpected results.';\n // }\n\n // return isValid;\n // };\n\n // Start checking from the root level (no parent combinator initially)\n\n\n // Always set the query, regardless of validity\n setQuery({ ...q, rules: updatedRules });\n\n // Set error message if invalid, otherwise clear it\n if (!isValid) {\n setErrorMessage(errorMessage);\n } else {\n setErrorMessage(null);\n }\n\n // Always call onSaveFilter, if it exists\n if (onSaveFilter) {\n onSaveFilter(q);\n }\n };\n\n const handleFilterSwitch = (sf?: any) => {\n if (sf) {\n setSelectedFilter(sf);\n setQuery(sf.query);\n if (onSelectedFilter) {\n onSelectedFilter(sf);\n }\n } else {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (onSelectedFilter) {\n onSelectedFilter(null);\n }\n }\n };\n\n const handleSearchEvent = (searchText: string) => {\n const filteredFilters = savedFilters?.filter((filter: any) =>\n filter.name.toLowerCase().includes(searchText.toLowerCase())\n );\n if (filteredFilters) {\n setFilteredSavedFilters(filteredFilters);\n }\n };\n\n const handleRenameFilter = async (filterId: string, newName: string) => {\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n name: newName,\n module: resources?.fieldResource || resources?.pageResource\n };\n\n try {\n await putV1FilterId(putFilterRequest)\n // setSelectedFilter(newName);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n enqueueSnackbar('Filters renamed successfully.')\n } catch (error) {\n let m: string = 'Something went wrong on saving filters'\n if (error instanceof Error) {\n m = getErrorMessage(error.message)\n }\n enqueueSnackbar(m, { variant: 'error' })\n return false\n }\n return true\n };\n const handleUpdateSelectedFilterQuery = async () => {\n if (selectedFilter) {\n\n const putFilterRequest: Types.PutV1FilterIdRequest = {\n \"x-token\": token,\n id: selectedFilter.id,\n data: query,\n };\n\n putV1FilterId(putFilterRequest)\n .then((response: any) => {\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n setActivePage((prev: any) => ({\n ...prev,\n filters: {\n ...prev.filters,\n rules: query.rules,\n combinator: query.combinator,\n name: selectedFilter.name\n\n }\n }));\n })\n .catch((err: any) => enqueueSnackbar(\"Error renaming saved filters:\", { variant: 'error' }));\n }\n };\n\n const handleSubmitRename = (name: string) => {\n if (openRenameFilter) {\n return handleRenameFilter(openRenameFilter.id, name);\n }\n };\n\n const handleDeleteFilter = async (filterId: string) => {\n const deleteFilterRequest: Types.DeleteV1FilterIdRequest = {\n \"x-token\": token,\n id: filterId,\n };\n\n deleteV1FilterId(deleteFilterRequest)\n .then((response: any) => {\n setSelectedFilter(null);\n setQuery(initialQuery);\n if (fetchSavedFilters) {\n fetchSavedFilters();\n }\n\n })\n .catch((err: any) => console.log(\"Error deleting saved filters:\", err));\n };\n\n useEffect(() => {\n let q = initialQuery\n if (!_.isEmpty(activePage.filters)) {\n q = activePage.filters\n }\n setQuery(q)\n const selectedFilter = savedFilters?.find((f: any) => f.name === activePage?.filters?.name);\n setSelectedFilter(selectedFilter || null);\n }, [activePage?.filters, savedFilters]);\n\n const isDuplicatedFilters = (rule) => {\n let uniques: string[] = []\n rule?.rules?.forEach((r: any) => {\n if (uniques.includes(r.field) && rule.combinator == 'and') {\n return true\n }\n uniques.push(r.field)\n })\n return uniques.length !== rule?.rules?.length\n }\n\n\n const isRuleInvalid = (rule: any): boolean => {\n // If it's a group (has nested rules), recurse\n if (Array.isArray(rule.rules)) {\n return rule.rules.length ? rule.rules.some(isRuleInvalid) : !rule.rules.length;\n }\n\n // Otherwise, validate individual rule\n return (\n !rule.field ||\n (_.isEmpty(rule.value) && !['null', 'notNull'].includes(rule.operator))\n );\n };\n\n const disabled = useMemo(() => isRuleInvalid(query) || errorMessage, [query, errorMessage])\n // const disabled = isRuleInvalid(query) || errorMessage;\n\n return (\n <div>\n <Dialog\n open={open}\n onClose={onClose}\n maxWidth='md'\n fullWidth={true}\n PaperProps={{\n sx: { borderRadius: 2 }\n }}\n >\n <DialogTitle className=\"filter-header\">\n <Typography type=\"s3\" weight=\"medium\" color=\"theme.secondary.1000\">\n Filters\n </Typography>\n <Box gap={1} display={\"flex\"}>\n <Select\n fullWidth\n size=\"small\"\n className=\"filter-dropdown\"\n value={selectedFilter ? selectedFilter.name : \"Saved Filters\"}\n onChange={(event: any) => {\n const sf = savedFilters?.find(f => f.name == event.target.value)\n handleFilterSwitch(sf)\n }}\n variant=\"outlined\"\n onClose={() => {\n setTimeout(() => {\n handleSearchEvent(\"\")\n }, 500);\n }}\n input={\n selectedFilter ? (\n <OutlinedInput\n label=''\n endAdornment={\n <InputAdornment position='end'>\n <IconButton\n aria-label='clear selection'\n onClick={() => {\n handleFilterSwitch()\n }}\n edge='end'\n sx={{ mr: 1.5 }}\n size='small'>\n <Close sx={{ fontSize: '1rem' }} />\n </IconButton>\n </InputAdornment>\n }\n />\n ) : undefined\n }\n >\n <div className=\"searchbar-box-list\">\n <SearchBar\n placeholder={\"Search Filters\"}\n handleSearch={(e) => handleSearchEvent(e)}\n />\n </div>\n {/* <Typography\n color=\"theme.secondary.1000\"\n type=\"s4\"\n className=\"filter-title\"\n >\n Saved Filters\n </Typography> */}\n {filteredSavedFilters?.map((savedFilter: SavedFilter) => (\n <MenuItem\n key={savedFilter.id}\n value={savedFilter?.name}\n className=\"menu-list\"\n selected={selectedFilter?.name == savedFilter?.name}\n >\n <Typography color=\"theme.secondary.1000\" type=\"s3\">\n {savedFilter?.name}\n </Typography>\n\n <div className=\"icon-list\">\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n setIsOpenRenameFilter(savedFilter)\n }}>\n <Edit fontSize=\"small\" color={selectedFilter?.name == savedFilter?.name ? \"theme.primary.800\" : 'inherit'} />\n </IconButton>\n <IconButton size=\"small\" onClick={(e) => {\n e.preventDefault()\n e.stopPropagation()\n handleDeleteFilter(savedFilter.id)\n }} color=\"error\">\n <Trash fontSize=\"small\" color=\"theme.error.600\" />\n </IconButton>\n </div>\n </MenuItem>\n ))}\n </Select>\n <SaveFilterModal\n open={openRenameFilter !== null}\n onClose={() => setIsOpenRenameFilter(null)}\n handleSubmit={(name) => handleSubmitRename(name)}\n oldName={openRenameFilter?.name}\n />\n <Box>\n <IconButton size=\"small\" onClick={onClose}>\n <Close fontSize=\"small\" />\n </IconButton>\n </Box>\n </Box>\n </DialogTitle>\n <DialogContent className=\"content\">\n {/* Display error message */}\n {errorMessage && (\n <Alert severity=\"error\" sx={{ px: 1, pt: 0.5, mb: 1 }}>\n <Typography\n color=\"error\"\n type=\"s4\"\n >\n {errorMessage}\n </Typography>\n </Alert>\n )}\n <QueryBuilderMaterial>\n <QueryBuilder\n fields={fields || []}\n query={query}\n onQueryChange={handleQueryChange}\n showCombinatorsBetweenRules={true}\n controlClassnames={{\n header: \"actions\",\n }}\n controlElements={{\n addRuleAction: AddFilterButton,\n addGroupAction: AddGroupButton,\n combinatorSelector: CombinatorSelect,\n fieldSelector: FieldSelect,\n operatorSelector: OperatorSelect,\n removeRuleAction: RemoveAction,\n valueEditor: ValueEditor,\n removeGroupAction: RemoveGroupAction,\n }}\n />\n <Button\n variant=\"text\"\n className={isRtl ? 'remove-filters_rtl' : 'remove-filters'}\n onClick={() => {\n handleApplyFilter(true)\n }}\n disabled={disabled}\n >\n Clear all filters\n </Button>\n </QueryBuilderMaterial>\n </DialogContent>\n <DialogActions className=\"filter-footer\">\n <Box sx={{ display: 'flex', alignItems: 'center', justifyContent: selectedFilter ? 'space-between' : 'flex-end', width: '100%' }}>\n {selectedFilter &&\n <Box>\n <Button onClick={handleUpdateSelectedFilterQuery}>\n Update Seleted filter\n </Button>\n </Box>\n }\n <Box sx={{ display: 'flex', gap: 1 }}>\n <Button className=\"cancel-filter-btn\" onClick={onClose}>\n Cancel\n </Button>\n <Button\n disabled={disabled}\n onClick={() => handleApplyFilter()}\n >\n Apply\n </Button>\n </Box>\n </Box>\n </DialogActions>\n </Dialog>\n </div>\n );\n};\n\nexport { Filter };\nexport default Filter;\n"],"names":["setBaseUrl","initialQuery","combinator","rules","Filter","open","onClose","savedFilters","fetchSavedFilters","onSaveFilter","onSelectedFilter","applyFilter","fields","isUseFields","location","useLocation","token","localStorage","getItem","auth","storageTokenKeyName","updatePageInfo","activePage","schemaFields","setActivePage","usePages","generateFields","length","query","setQuery","useState","filteredSavedFilters","setFilteredSavedFilters","selectedFilter","setSelectedFilter","openRenameFilter","setIsOpenRenameFilter","errorMessage","setErrorMessage","isRtl","useLanguage","resources","useMemo","routeToResourceMap","pathname","useEffect","handleApplyFilter","useCallback","clear","q","isDuplicatedFilters","generatedSQLQuery","generateQueryString","filters","filterQueryString","handleFilterSwitch","sf","handleSearchEvent","searchText","filteredFilters","filter","name","toLowerCase","includes","_","isEmpty","find","f","_a","rule","uniques","forEach","r","field","push","_b","isRuleInvalid","Array","isArray","some","value","operator","disabled","children","jsxs","Dialog","maxWidth","fullWidth","PaperProps","sx","borderRadius","DialogTitle","className","jsx","Typography","type","weight","color","Box","gap","display","Select","size","onChange","event","target","variant","setTimeout","input","OutlinedInput","label","endAdornment","InputAdornment","position","IconButton","onClick","edge","mr","Close","fontSize","SearchBar","placeholder","handleSearch","e","map","savedFilter","MenuItem","selected","preventDefault","stopPropagation","Edit","async","filterId","deleteFilterRequest","id","deleteV1FilterId","then","response","catch","err","handleDeleteFilter","Trash","SaveFilterModal","handleSubmit","newName","putFilterRequest","module","fieldResource","pageResource","putV1FilterId","enqueueSnackbar","error","m","Error","getErrorMessage","message","handleRenameFilter","handleSubmitRename","oldName","DialogContent","Alert","severity","px","pt","mb","QueryBuilderMaterial","QueryBuilder","onQueryChange","updatedRules","i","showCombinatorsBetweenRules","controlClassnames","header","controlElements","addRuleAction","AddFilterButton","addGroupAction","AddGroupButton","combinatorSelector","CombinatorSelect","fieldSelector","FieldSelect","operatorSelector","OperatorSelect","removeRuleAction","RemoveAction","valueEditor","ValueEditor","removeGroupAction","RemoveGroupAction","Button","DialogActions","alignItems","justifyContent","width","data","prev"],"mappings":"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"}
@@ -2,7 +2,7 @@ import { createAsyncThunk } from "@reduxjs/toolkit";
2
2
  import { setBaseUrl } from "../../../../api-client/api.rbac/api/index.esm.js";
3
3
  import { getV1Languages } from "../../../../api-client/api.system-feature/api/index.esm.js";
4
4
  import { getToken } from "../../../../utils/common/index.esm.js";
5
- setBaseUrl(`${"http://127.0.0.1:4011"}/rbac`);
5
+ setBaseUrl(`${"https://apidev.erpforce.co"}/rbac`);
6
6
  const fetchLanguages = createAsyncThunk(
7
7
  "header/language/get",
8
8
  async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/header/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { setRoleURL } from \"../../../utils/server\";\nimport { getV1Languages } from \"../../../api-client/api.system-feature/api\";\nimport { getToken } from '../../../utils/common';\n\n\n\nsetRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nexport const fetchLanguages = createAsyncThunk(\n \"header/language/get\",\n async () => {\n const response = await getV1Languages({\n order: `id:1`,\n ...getToken(),\n });\n const data = response?.data?.languages || [];\n const languages = data?.filter(d => d?.is_active)?.map(d => {\n return {\n label: d?.name,\n code: d?.code,\n direction: d?.direction\n }\n },\n );\n return { languages }\n});\n"],"names":["setRoleURL"],"mappings":";;;;AAOAA,WAAW,GAAG,uBAAqC,OAAO;AAEnD,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,YAAY;;AACV,UAAM,WAAW,MAAM,eAAe;AAAA,MACpC,OAAO;AAAA,MACP,GAAG,SAAA;AAAA,IAAS,CACb;AACD,UAAM,SAAO,0CAAU,SAAV,mBAAgB,cAAa,CAAA;AAC1C,UAAM,aAAY,kCAAM,OAAO,CAAA,MAAK,uBAAG,eAArB,mBAAiC;AAAA,MAAI,CAAA,MAAK;AAC1D,eAAO;AAAA,UACL,OAAO,uBAAG;AAAA,UACV,MAAM,uBAAG;AAAA,UACT,WAAW,uBAAG;AAAA,QAAA;AAAA,MAElB;AAAA;AAEF,WAAO,EAAE,UAAA;AAAA,EACX;AAAC;"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../../../../src/components/header/redux/actionCreator.ts"],"sourcesContent":["import { createAsyncThunk } from \"@reduxjs/toolkit\";\nimport { setRoleURL } from \"../../../utils/server\";\nimport { getV1Languages } from \"../../../api-client/api.system-feature/api\";\nimport { getToken } from '../../../utils/common';\n\n\n\nsetRoleURL(`${import.meta.env.VITE_BACKEND_BASE_URL}/rbac`);\n\nexport const fetchLanguages = createAsyncThunk(\n \"header/language/get\",\n async () => {\n const response = await getV1Languages({\n order: `id:1`,\n ...getToken(),\n });\n const data = response?.data?.languages || [];\n const languages = data?.filter(d => d?.is_active)?.map(d => {\n return {\n label: d?.name,\n code: d?.code,\n direction: d?.direction\n }\n },\n );\n return { languages }\n});\n"],"names":["setRoleURL"],"mappings":";;;;AAOAA,WAAW,GAAG,4BAAqC,OAAO;AAEnD,MAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA,YAAY;;AACV,UAAM,WAAW,MAAM,eAAe;AAAA,MACpC,OAAO;AAAA,MACP,GAAG,SAAA;AAAA,IAAS,CACb;AACD,UAAM,SAAO,0CAAU,SAAV,mBAAgB,cAAa,CAAA;AAC1C,UAAM,aAAY,kCAAM,OAAO,CAAA,MAAK,uBAAG,eAArB,mBAAiC;AAAA,MAAI,CAAA,MAAK;AAC1D,eAAO;AAAA,UACL,OAAO,uBAAG;AAAA,UACV,MAAM,uBAAG;AAAA,UACT,WAAW,uBAAG;AAAA,QAAA;AAAA,MAElB;AAAA;AAEF,WAAO,EAAE,UAAA;AAAA,EACX;AAAC;"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@reduxjs/toolkit"),i=require("../../../../api-client/api.rbac/api/index.js"),a=require("../../../../api-client/api.system-feature/api/index.js"),n=require("../../../../utils/common/index.js");i.setBaseUrl("http://127.0.0.1:4011/rbac");const t=e.createAsyncThunk("header/language/get",async()=>{var e,i;const t=await a.getV1Languages({order:"id:1",...n.getToken()}),l=(null==(e=null==t?void 0:t.data)?void 0:e.languages)||[];return{languages:null==(i=null==l?void 0:l.filter(e=>null==e?void 0:e.is_active))?void 0:i.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}))}});exports.fetchLanguages=t;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@reduxjs/toolkit"),i=require("../../../../api-client/api.rbac/api/index.js"),a=require("../../../../api-client/api.system-feature/api/index.js"),r=require("../../../../utils/common/index.js");i.setBaseUrl("https://apidev.erpforce.co/rbac");const n=e.createAsyncThunk("header/language/get",async()=>{var e,i;const n=await a.getV1Languages({order:"id:1",...r.getToken()}),t=(null==(e=null==n?void 0:n.data)?void 0:e.languages)||[];return{languages:null==(i=null==t?void 0:t.filter(e=>null==e?void 0:e.is_active))?void 0:i.map(e=>({label:null==e?void 0:e.name,code:null==e?void 0:e.code,direction:null==e?void 0:e.direction}))}});exports.fetchLanguages=n;
2
2
  //# sourceMappingURL=index.js.map