Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 19 additions & 19 deletions frontend/eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,40 +1,40 @@
/**
* External dependencies.
*/
import js from '@eslint/js'
import globals from 'globals'
import reactHooks from 'eslint-plugin-react-hooks'
import reactRefresh from 'eslint-plugin-react-refresh'
import tseslint from 'typescript-eslint'
import importPlugin from 'eslint-plugin-import'
import parser from '@typescript-eslint/parser'
import js from "@eslint/js";
import globals from "globals";
import reactHooks from "eslint-plugin-react-hooks";
import reactRefresh from "eslint-plugin-react-refresh";
import tseslint from "typescript-eslint";
import importPlugin from "eslint-plugin-import";
import parser from "@typescript-eslint/parser";

export default tseslint.config(
{ ignores: ['dist'] },
{ ignores: ["dist"] },
{
extends: [js.configs.recommended, ...tseslint.configs.recommended],
files: ['**/*.{ts,tsx}'],
files: ["**/*.{ts,tsx}"],
languageOptions: {
parser: parser,
ecmaVersion: 2020,
globals: globals.browser,
},
plugins: {
'react-hooks': reactHooks,
'react-refresh': reactRefresh,
"import": importPlugin
"react-hooks": reactHooks,
"react-refresh": reactRefresh,
import: importPlugin,
},
rules: {
...reactHooks.configs.recommended.rules,
'react-refresh/only-export-components': [
'warn',
"react-refresh/only-export-components": [
"warn",
{ allowConstantExport: true },
],
"import/order": [
"error",
{
"groups": ["builtin", "external", "internal"],
"pathGroups": [
groups: ["builtin", "external", "internal"],
pathGroups: [
{
pattern: "react",
group: "external",
Expand All @@ -51,13 +51,13 @@ export default tseslint.config(
position: "after",
},
],
"pathGroupsExcludedImportTypes": ["builtin"],
"alphabetize": {
pathGroupsExcludedImportTypes: ["builtin"],
alphabetize: {
order: "asc",
caseInsensitive: true,
},
},
],
},
},
)
);
11 changes: 9 additions & 2 deletions frontend/packages/app/src/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,15 @@
*/
import { Suspense } from "react";
import { Provider } from "react-redux";
import { RouterProvider, createBrowserRouter, createRoutesFromElements } from "react-router-dom";
import { ErrorFallback, TooltipProvider } from "@next-pms/design-system/components";
import {
RouterProvider,
createBrowserRouter,
createRoutesFromElements,
} from "react-router-dom";
import {
ErrorFallback,
TooltipProvider,
} from "@next-pms/design-system/components";

/**
* Internal dependencies.
Expand Down
84 changes: 64 additions & 20 deletions frontend/packages/app/src/app/components/add-leave/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,13 @@ import { LeaveSchema } from "@/schema/timesheet";
import { LeaveInfo } from "./leaveInfo";
import type { LeaveTimeProps } from "./types";

const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSuccess }: LeaveTimeProps) => {
const AddLeave = ({
employee,
employeeName,
open = false,
onOpenChange,
onSuccess,
}: LeaveTimeProps) => {
const { toast } = useToast();
const { createDoc, loading, isCompleted } = useFrappeCreateDoc();

Expand All @@ -60,7 +66,7 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
{
employee: selectedEmployee,
date: postingDate,
}
},
);

useEffect(() => {
Expand Down Expand Up @@ -162,7 +168,10 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
return (
<>
<Dialog open={open} onOpenChange={handleOpen}>
<DialogContent className="max-w-xl " onPointerDownOutside={event?.preventDefault}>
<DialogContent
className="max-w-xl "
onPointerDownOutside={event?.preventDefault}
>
<DialogHeader>
<DialogTitle className="flex gap-x-2">Add Leave</DialogTitle>
<Separator />
Expand All @@ -178,7 +187,9 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
name="employee"
render={() => (
<FormItem className="w-full space-y-1">
<FormLabel className="flex gap-2 items-center text-sm">Employee</FormLabel>
<FormLabel className="flex gap-2 items-center text-sm">
Employee
</FormLabel>
<FormControl>
<EmployeeCombo
onSelect={onEmployeeChange}
Expand All @@ -196,9 +207,14 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
name="from_date"
render={({ field }) => (
<FormItem className="w-full space-y-1">
<FormLabel className="flex gap-2 items-center text-sm">From</FormLabel>
<FormLabel className="flex gap-2 items-center text-sm">
From
</FormLabel>
<FormControl>
<DatePicker date={field.value} onDateChange={handleFromDateChange} />
<DatePicker
date={field.value}
onDateChange={handleFromDateChange}
/>
</FormControl>
<FormMessage />
</FormItem>
Expand All @@ -209,9 +225,14 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
name="to_date"
render={({ field }) => (
<FormItem className="w-full space-y-1">
<FormLabel className="flex gap-2 items-center text-sm">To</FormLabel>
<FormLabel className="flex gap-2 items-center text-sm">
To
</FormLabel>
<FormControl>
<DatePicker date={field.value} onDateChange={handleToDateChange} />
<DatePicker
date={field.value}
onDateChange={handleToDateChange}
/>
</FormControl>
<FormMessage />
</FormItem>
Expand All @@ -226,9 +247,14 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
showSelected
shouldFilter
value={selectedLeaveType}
data={leaveType.map((item) => ({ label: item, value: item }))}
data={leaveType.map((item) => ({
label: item,
value: item,
}))}
onSelect={handleLeaveChange}
rightIcon={<Search className="h-4 w-4 stroke-slate-400" />}
rightIcon={
<Search className="h-4 w-4 stroke-slate-400" />
}
/>
</FormItem>
<FormField
Expand Down Expand Up @@ -283,20 +309,28 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
<FormControl>
<Select
onValueChange={(value) => {
form.setValue("custom_first_halfsecond_half", value, {
shouldValidate: true,
shouldDirty: true,
shouldTouch: true,
});
form.setValue(
"custom_first_halfsecond_half",
value,
{
shouldValidate: true,
shouldDirty: true,
shouldTouch: true,
},
);
}}
defaultValue="First Half"
>
<SelectTrigger className="w-full">
<SelectValue placeholder="Select Half" />
</SelectTrigger>
<SelectContent>
<SelectItem value="First Half">First Half</SelectItem>
<SelectItem value="Second Half">Second Half</SelectItem>
<SelectItem value="First Half">
First Half
</SelectItem>
<SelectItem value="Second Half">
Second Half
</SelectItem>
</SelectContent>
</Select>
</FormControl>
Expand All @@ -309,11 +343,21 @@ const AddLeave = ({ employee, employeeName, open = false, onOpenChange, onSucces
</div>
<DialogFooter className="sm:justify-start w-full pt-3">
<div className="flex gap-x-4 w-full">
<Button disabled={!isDirty || !isValid || (loading && !isCompleted)}>
{loading && !isCompleted ? <LoaderCircle className="animate-spin " /> : <Save />}
<Button
disabled={!isDirty || !isValid || (loading && !isCompleted)}
>
{loading && !isCompleted ? (
<LoaderCircle className="animate-spin " />
) : (
<Save />
)}
Add Leave
</Button>
<Button variant="secondary" type="button" onClick={handleOpen}>
<Button
variant="secondary"
type="button"
onClick={handleOpen}
>
<X className="w-4 h-4" />
Cancel
</Button>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ export const LeaveInfo = ({ leaveInfo }: LeaveInfoProps) => {
return (
<Accordion type="single" collapsible key="leave-info">
<AccordionItem value="leave-info" className="">
<AccordionTrigger className="py-2 hover:no-underline">Allocated Leaves</AccordionTrigger>
<AccordionTrigger className="py-2 hover:no-underline">
Allocated Leaves
</AccordionTrigger>
<AccordionContent className="pb-0">
{!leaveInfo || Object.keys(leaveInfo).length === 0 ? (
<Typography>No leaves have been allocated.</Typography>
Expand Down
Loading
Loading