From 37aab5db2a2d1c01fdecab42e89b24d0a3ab084b Mon Sep 17 00:00:00 2001 From: Silviya Boteva Date: Thu, 6 Mar 2025 10:25:29 +0200 Subject: [PATCH] chore: address comments --- examples/kendo-react-freemium/src/App.tsx | 2 + .../kendo-react-freemium/src/pages/Home.tsx | 30 +-- .../src/pages/NewTask.tsx | 230 ++++++++++++++++++ .../src/pages/Settings.tsx | 6 +- .../kendo-react-freemium/src/pages/Task.tsx | 11 +- .../kendo-react-freemium/src/pages/Tasks.tsx | 6 +- .../kendo-react-freemium/src/pages/data.ts | 18 ++ 7 files changed, 273 insertions(+), 30 deletions(-) create mode 100644 examples/kendo-react-freemium/src/pages/NewTask.tsx diff --git a/examples/kendo-react-freemium/src/App.tsx b/examples/kendo-react-freemium/src/App.tsx index edd41298..93e8198b 100644 --- a/examples/kendo-react-freemium/src/App.tsx +++ b/examples/kendo-react-freemium/src/App.tsx @@ -8,6 +8,7 @@ import Tasks from "./pages/Tasks"; import Settings from "./pages/Settings"; import Team from "./pages/Team"; import Task from "./pages/Task"; +import NewTask from "./pages/NewTask"; export default function App() { return ( @@ -20,6 +21,7 @@ export default function App() { } /> } /> } /> + } /> } /> } /> } /> diff --git a/examples/kendo-react-freemium/src/pages/Home.tsx b/examples/kendo-react-freemium/src/pages/Home.tsx index 8f4d98f9..55a3965e 100644 --- a/examples/kendo-react-freemium/src/pages/Home.tsx +++ b/examples/kendo-react-freemium/src/pages/Home.tsx @@ -7,7 +7,6 @@ import { Calendar } from "@progress/kendo-react-dateinputs"; import { ListView, ListViewItemWrapper } from "@progress/kendo-react-listview"; import { pencilIcon, plusIcon, trashIcon } from "@progress/kendo-svg-icons"; import { tasksData, listData, projectsData, teamsData } from "./data"; -import React from "react"; import { useNavigate } from "react-router-dom"; const ListItemRender = (props: any) => { @@ -24,27 +23,18 @@ const ListItemRender = (props: any) => { export default function Home() { const navigate = useNavigate(); - const [showAllProjects, setShowAllProjects] = React.useState(false); - const [showAllTeams, setShowAllTeams] = React.useState(false); - const [showAllTasks, setShowAllTasks] = React.useState(false); - const handleSeeAllProjectsClick = () => { - setShowAllProjects(!showAllProjects); + navigate('/projects'); }; const handleSeeAllTeamsClick = () => { - setShowAllTeams(!showAllTeams); + navigate('/team-management'); }; const handleSeeAllTasksClick = () => { - setShowAllTasks(!showAllTasks); + navigate('/tasks'); } - const projectsToShow = showAllProjects ? projectsData : projectsData.slice(0, 5); - const teamsToShow = showAllTeams ? teamsData : teamsData.slice(0, 4); - - const tasksToShow = showAllTasks ? tasksData : tasksData.slice(0, 5); - return ( <>
@@ -57,8 +47,8 @@ export default function Home() {
- {projectsToShow.map((project, index) => { - return + {projectsData.slice(0, 5).map((project, index) => { + return
navigate('/projects')} className="cursor-pointer"> {project.ProjectName} @@ -80,7 +70,7 @@ export default function Home() {
- +
@@ -93,7 +83,7 @@ export default function Home() { Teams - {teamsToShow.map((team, index) => { + {teamsData.slice(0, 4).map((team, index) => { return
navigate('/team-management')} className="cursor-pointer"> @@ -108,7 +98,7 @@ export default function Home() { })} - +
@@ -129,13 +119,13 @@ export default function Home() { Tasks - + - +
diff --git a/examples/kendo-react-freemium/src/pages/NewTask.tsx b/examples/kendo-react-freemium/src/pages/NewTask.tsx new file mode 100644 index 00000000..5395baa0 --- /dev/null +++ b/examples/kendo-react-freemium/src/pages/NewTask.tsx @@ -0,0 +1,230 @@ +import { useParams } from "react-router"; +import { useNavigate } from "react-router-dom"; +import { priorities, projectManagers, projectsData, tasksData, taskTags } from "./data"; +import { Button } from "@progress/kendo-react-buttons"; +import { Avatar, Breadcrumb, BreadcrumbLinkMouseEvent, ExpansionPanel, ExpansionPanelContent } from "@progress/kendo-react-layout"; +import { homeIcon, folderIcon, trashIcon, checkIcon } from "@progress/kendo-svg-icons"; +import { SvgIcon } from "@progress/kendo-react-common"; +import { Reveal } from '@progress/kendo-react-animation'; +import React, { ReactElement } from "react"; +import { TextArea } from "@progress/kendo-react-inputs"; +import { DropDownList, ListItemProps, MultiSelect, TagData } from "@progress/kendo-react-dropdowns"; +import { DateInput } from "@progress/kendo-react-dateinputs"; +import { FloatingLabel } from "@progress/kendo-react-labels"; +import { Badge } from "@progress/kendo-react-indicators"; + +interface DataModel { + id: string; + text?: string; + icon?: React.ReactNode; +} + +export default function Task() { + let params = useParams(); + const navigate = useNavigate(); + const [projExpanded, setProjExpanded] = React.useState(true); + const [dateExpanded, setDateExpanded] = React.useState(true); + const [assigneeExpanded, setAssigneeExpanded] = React.useState(true); + const [priorityExpanded, setPriorityExpanded] = React.useState(true); + const [statusExpanded, setStatusExpanded] = React.useState(true); + const [tagsExpanded, setTagsExpanded] = React.useState(true); + const [project, setProject] = React.useState(); + const [assignee, setAssignee] = React.useState(); + const [dueDate, setDueDate] = React.useState(); + const [priority, setPriority] = React.useState(); + const [status, setStatus] = React.useState(); + const [tag, setTag] = React.useState(); + const projects = projectsData.map(proj => { return proj.ProjectName }).slice(0, 10); + const assignees = tasksData.map(task => { return task.assignedTo }); + const statuses = tasksData.map(task => { return task.status }); + + const breadcrumbItems: DataModel[] = [ + { + id: "home", + icon: , + }, + { + id: "tasks", + text: "Tasks", + }, + { + id: `${params.taskId}`, + text: `New Task`, + } + ]; + + const handleItemSelect = (e: BreadcrumbLinkMouseEvent) => { + if (e.id === 'home') { + navigate('/'); + } else if (e.id === 'tasks') { + navigate('/tasks'); + } + } + + const tagRender = (tagData: TagData, li: ReactElement) => React.cloneElement(li, li.props, [ + + + manager.name === tagData.data[0] ? manager.avatarSrc : "").filter(src => src !== "")[0]} alt="user-image" /> + + {tagData.data[0]} + , li.props.children]); + + const itemRender = (li: React.ReactElement, itemProps: ListItemProps) => { + const index = itemProps.index; + console.log(itemProps); + const itemChildren = ( + + + manager.name === itemProps.dataItem ? manager.avatarSrc : "").filter(src => src !== "")[0]} alt="user-image" /> + + {li.props.children as any} {index} + + ); + + return React.cloneElement(li, li.props, itemChildren); +}; + + const priorityValueRender = (element: React.ReactElement, value: any) => { + if (!value) { + return element; + } + + const children = [ + + {element.props.children as any} + + ]; + + return React.cloneElement(element, { ...element.props }, children); + }; + + const priorityItemRender = (li: React.ReactElement, itemProps: ListItemProps) => { + const itemChildren = ( + + {li.props.children as any} + + ); + + return React.cloneElement(li, li.props, itemChildren); +}; + + return ( + <> +
+ + +

New Task

+ +
+
+