From 20d9a23260e682b6b9e78164f50b6c28e8f17102 Mon Sep 17 00:00:00 2001
From: elforjani13 <39470382+elforjani13@users.noreply.github.com>
Date: Tue, 20 Sep 2022 18:56:03 +0200
Subject: [PATCH] feat: project billable entries dialog.
---
.../components/ProjectSuggestField.tsx | 28 +++++++------------
src/containers/Projects/components/index.ts | 3 +-
.../ProjectBillableEntriesFormFields.tsx | 10 +++----
.../ProjectBillableEntriesFormProvider.tsx | 20 +------------
.../containers/common/modalChargeOptions.ts | 14 +++++++++-
.../Projects/hooks/projectBillableEntries.tsx | 6 ++--
src/lang/en/index.json | 5 +++-
7 files changed, 37 insertions(+), 49 deletions(-)
diff --git a/src/containers/Projects/components/ProjectSuggestField.tsx b/src/containers/Projects/components/ProjectSuggestField.tsx
index 56cd61df0..216606a5f 100644
--- a/src/containers/Projects/components/ProjectSuggestField.tsx
+++ b/src/containers/Projects/components/ProjectSuggestField.tsx
@@ -48,15 +48,13 @@ export function ProjectSuggestField({
*/
const projectsItemRenderer = (project, { handleClick, modifiers, query }) => {
return (
-
- }
- disabled={modifiers.disabled}
- key={project.id}
- text={project.name}
- onClick={handleClick}
- />
-
+ }
+ disabled={modifiers.disabled}
+ key={project.id}
+ text={project.name}
+ onClick={handleClick}
+ />
);
};
@@ -133,20 +131,14 @@ const AvatarSelect = ({ text }) => {
return {firstLettersArgs(text?.name)};
};
-const MenuContent = styled(Menu)`
- .bp3-menu {
- margin: 5px;
- }
-`;
-
const AvaterContent = styled.div`
display: inline-block;
background: #adbcc9;
text-align: center;
font-weight: 400;
color: #fff;
- height: 25px;
- width: 25px;
- line-height: 25px;
+ height: 22px;
+ width: 22px;
+ line-height: 22px;
font-size: 12px;
`;
diff --git a/src/containers/Projects/components/index.ts b/src/containers/Projects/components/index.ts
index b27dbd340..b0dd663ed 100644
--- a/src/containers/Projects/components/index.ts
+++ b/src/containers/Projects/components/index.ts
@@ -5,4 +5,5 @@ export * from './TaskSelect';
export * from './ProjectsSelect';
export * from './ProjectMultiSelect'
export * from './FInputGroupComponent';
-export * from './ProjectSuggestField'
\ No newline at end of file
+export * from './ProjectSuggestField'
+export * from './ProjectBillableTypeSuggestField'
\ No newline at end of file
diff --git a/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormFields.tsx b/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormFields.tsx
index 636ea8966..b0f771eba 100644
--- a/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormFields.tsx
+++ b/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormFields.tsx
@@ -9,6 +9,8 @@ import {
FieldRequiredHint,
FormattedMessage as T,
} from '@/components';
+import { ProjectBillableSuggestField } from '../../components';
+import { billableTypeOption } from '../common';
import { ProjectRowDivider, ProjectEntiresBox } from './components';
import { useProjectBillableEntriesFormContext } from './ProjectBillableEntriesFormProvider';
@@ -20,8 +22,6 @@ export default function ProjectBillableEntriesFormFields() {
// Formik context.
const { values } = useFormikContext();
- const { billableEntries } = useProjectBillableEntriesFormContext();
-
return (
{/*------------ Filter by Date -----------*/}
@@ -37,14 +37,14 @@ export default function ProjectBillableEntriesFormFields() {
{/*------------ Filter by Type -----------*/}
}
labelInfo={
}
>
-
+
-
+
);
}
diff --git a/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormProvider.tsx b/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormProvider.tsx
index 589bd3f89..4f9aa522f 100644
--- a/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormProvider.tsx
+++ b/src/containers/Projects/containers/ProjectBillableEntriesFormDialog/ProjectBillableEntriesFormProvider.tsx
@@ -1,7 +1,6 @@
// @ts-nocheck
import React from 'react';
-import { useProjectBillableEntries } from '../../hooks';
import { DialogContent } from '@/components';
const ProjectBillableEntriesFormContext = React.createContext();
@@ -16,31 +15,14 @@ function ProjectBillableEntriesFormProvider({
projectId,
...props
}) {
- // Handle fetch project billable entries.
- const {
- data: { billableEntries },
- isLoading: isProjectBillableEntriesLoading,
- } = useProjectBillableEntries(
- projectId,
- {
- billable_type: 'expense',
- to_date: '',
- },
- {
- enabled: !!projectId,
- keepPreviousData: true,
- },
- );
-
//state provider.
const provider = {
dialogName,
projectId,
- billableEntries,
};
return (
-
+
);
diff --git a/src/containers/Projects/containers/common/modalChargeOptions.ts b/src/containers/Projects/containers/common/modalChargeOptions.ts
index e1dd36b5a..f4462b3c0 100644
--- a/src/containers/Projects/containers/common/modalChargeOptions.ts
+++ b/src/containers/Projects/containers/common/modalChargeOptions.ts
@@ -4,7 +4,10 @@ import intl from 'react-intl-universal';
export const taskChargeOptions = [
{ name: intl.get('project_task.dialog.hourly_rate'), value: 'TIME' },
{ name: intl.get('project_task.dialog.fixed_price'), value: 'FIXED' },
- { name: intl.get('project_task.dialog.non_chargeable'), value: 'NON_CHARGABLE' },
+ {
+ name: intl.get('project_task.dialog.non_chargeable'),
+ value: 'NON_CHARGABLE',
+ },
];
export const expenseChargeOption = [
@@ -16,3 +19,12 @@ export const expenseChargeOption = [
{ name: intl.get('expenses.dialog.custom_pirce'), value: 'custom_pirce' },
{ name: intl.get('expenses.dialog.non_chargeable'), value: 'non_chargeable' },
];
+
+export const billableTypeOption = [
+ { name: intl.get('project_billable_entries.dialog.task'), value: 'Task' },
+ { name: intl.get('project_billable_entries.dialog.bill'), value: 'Bill' },
+ {
+ name: intl.get('project_billable_entries.dialog.expense'),
+ value: 'Expense',
+ },
+];
diff --git a/src/containers/Projects/hooks/projectBillableEntries.tsx b/src/containers/Projects/hooks/projectBillableEntries.tsx
index 72f63a90f..a2da2b86f 100644
--- a/src/containers/Projects/hooks/projectBillableEntries.tsx
+++ b/src/containers/Projects/hooks/projectBillableEntries.tsx
@@ -12,7 +12,7 @@ import t from './type';
*/
export function useProjectBillableEntries(projectId, query, props) {
return useRequestQuery(
- [t.PROJECT_BILLABLE_ENTRIES, projectId],
+ [t.PROJECT_BILLABLE_ENTRIES, projectId, query],
{
method: 'get',
url: `projects/${projectId}/billable/entries`,
@@ -20,9 +20,7 @@ export function useProjectBillableEntries(projectId, query, props) {
},
{
select: (res) => res.data.billable_entries,
- defaultData: {
- billableEntries: [],
- },
+ defaultData: {},
...props,
},
);
diff --git a/src/lang/en/index.json b/src/lang/en/index.json
index 64b3b0c71..65180dba4 100644
--- a/src/lang/en/index.json
+++ b/src/lang/en/index.json
@@ -2212,5 +2212,8 @@
"project_invoicing.dialog.bill_to": "Bill To",
"project_billable_entries.dialog.label": "Add Project Entries",
"project_billable_entries.dialog.filter_by_date": "Filter by Date",
- "project_billable_entries.dialog.filter_by_type":"Filter by Type"
+ "project_billable_entries.dialog.filter_by_type": "Filter by Type",
+ "project_billable_entries.dialog.expense": "Expense",
+ "project_billable_entries.dialog.task": "Task",
+ "project_billable_entries.dialog.bill": "Bill"
}
\ No newline at end of file