Auto commit: 2025-05-24T11:20:03.705Z

This commit is contained in:
Flatlogic Bot 2025-05-24 11:20:03 +00:00
parent 531ef72651
commit dbef066aa6
5 changed files with 107 additions and 43 deletions

File diff suppressed because one or more lines are too long

View File

@ -14,7 +14,7 @@ import {
import { useAppDispatch, useAppSelector } from '../../stores/hooks'; import { useAppDispatch, useAppSelector } from '../../stores/hooks';
import { useRouter } from 'next/router'; import { useRouter } from 'next/router';
import { Field, Form, Formik } from 'formik'; import { Field, Form, Formik } from 'formik';
import { DataGrid, GridColDef } from '@mui/x-data-grid'; import { DataGrid, GridColDef, GridToolbar } from '@mui/x-data-grid';
import { loadColumns } from './configureContactsCols'; import { loadColumns } from './configureContactsCols';
import _ from 'lodash'; import _ from 'lodash';
import dataFormatter from '../../helpers/dataFormatter'; import dataFormatter from '../../helpers/dataFormatter';

View File

@ -39,44 +39,15 @@ export const loadColumns = async (
return [ return [
{ {
field: 'first_name', field: 'name',
headerName: 'FirstName', headerName: 'Name',
flex: 1, flex: 1,
minWidth: 120, minWidth: 120,
filterable: false, filterable: false,
headerClassName: 'datagrid--header', headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell', cellClassName: 'datagrid--cell',
editable: hasUpdatePermission, valueGetter: (params: GridValueGetterParams) =>
}, `${params.row.first_name || ''} ${params.row.last_name || ''}`,
{
field: 'last_name',
headerName: 'LastName',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
},
{
field: 'company',
headerName: 'Company',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
},
{
field: 'industry',
headerName: 'Industry',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
}, },
{ {
field: 'email', field: 'email',

View File

@ -0,0 +1,100 @@
import React from 'react';
import BaseIcon from '../BaseIcon';
import { mdiEye, mdiTrashCan, mdiPencilOutline } from '@mdi/js';
import axios from 'axios';
import {
GridActionsCellItem,
GridRowParams,
GridValueGetterParams,
} from '@mui/x-data-grid';
import ImageField from '../ImageField';
import { saveFile } from '../../helpers/fileSaver';
import dataFormatter from '../../helpers/dataFormatter';
import DataGridMultiSelect from '../DataGridMultiSelect';
import ListActionsPopover from '../ListActionsPopover';
import { hasPermission } from '../../helpers/userPermissions';
type Params = (id: string) => void;
export const loadColumns = async (
onDelete: Params,
entityName: string,
user,
) => {
async function callOptionsApi(entityName: string) {
if (!hasPermission(user, 'READ_' + entityName.toUpperCase())) return [];
try {
const data = await axios(`/${entityName}/autocomplete?limit=100`);
return data.data;
} catch (error) {
console.log(error);
return [];
}
}
const hasUpdatePermission = hasPermission(user, 'UPDATE_CONTACTS');
return [
},
{
field: 'phone_number',
headerName: 'PhoneNumber',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
},
{
field: 'job_seeker',
headerName: 'JobSeeker',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
sortable: false,
type: 'singleSelect',
getOptionValue: (value: any) => value?.id,
getOptionLabel: (value: any) => value?.label,
valueOptions: await callOptionsApi('users'),
valueGetter: (params: GridValueGetterParams) =>
params?.value?.id ?? params?.value,
},
{
field: 'notes',
headerName: 'Notes',
flex: 1,
minWidth: 120,
filterable: false,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
editable: hasUpdatePermission,
},
{
field: 'actions',
type: 'actions',
minWidth: 30,
headerClassName: 'datagrid--header',
cellClassName: 'datagrid--cell',
getActions: (params: GridRowParams) => {
return [
<div key={params?.row?.id}>
<ListActionsPopover
onDelete={onDelete}
itemId={params?.row?.id}
pathEdit={`/contacts/contacts-edit/?id=${params?.row?.id}`}
pathView={`/contacts/contacts-view/?id=${params?.row?.id}`}
hasUpdatePermission={hasUpdatePermission}
/>
</div>,
];
},
},
];
};

View File

@ -19,14 +19,6 @@ const menuAside: MenuAsideItem[] = [
: icon.mdiTable ?? icon.mdiTable, : icon.mdiTable ?? icon.mdiTable,
permissions: 'READ_CALLS', permissions: 'READ_CALLS',
}, },
{
href: '/users/users-list',
label: 'Users',
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
icon: icon.mdiAccountGroup ?? icon.mdiTable,
permissions: 'READ_USERS',
},
{ {
href: '/contacts/contacts-list', href: '/contacts/contacts-list',
label: 'Contacts', label: 'Contacts',