From 629fd601d482d5a44c76b31ce96713b51ca42681 Mon Sep 17 00:00:00 2001 From: Bagasbanuna02 Date: Thu, 7 Mar 2024 12:20:22 +0800 Subject: [PATCH] # Forum ## feat - Tampilan forum - Tampilan forumku - Tampilan komentar - Tampilam posting - Tampilan Detail posting - Tampilan Edit postinf - Tampilan edit komentat - Tampilan report posting - Tampilan report komentar ### No issuee --- package.json | 1 + public/aset/forum/logo.png | Bin 0 -> 28936 bytes src/app/dev/event/main/loading.tsx | 14 +- src/app/dev/event/splash/loading.tsx | 14 +- src/app/dev/forum/create/layout.tsx | 14 ++ src/app/dev/forum/create/page.tsx | 9 + src/app/dev/forum/detail/[id]/layout.tsx | 14 ++ src/app/dev/forum/detail/[id]/loading.tsx | 9 + src/app/dev/forum/detail/[id]/page.tsx | 11 ++ .../dev/forum/edit/komentar/[id]/layout.tsx | 14 ++ src/app/dev/forum/edit/komentar/[id]/page.tsx | 10 + .../dev/forum/edit/posting/[id]/layout.tsx | 15 ++ src/app/dev/forum/edit/posting/[id]/page.tsx | 9 + src/app/dev/forum/forumku/[id]/layout.tsx | 21 +++ src/app/dev/forum/forumku/[id]/loading.tsx | 9 + src/app/dev/forum/forumku/[id]/page.tsx | 29 +++ src/app/dev/forum/komentar/[id]/layout.tsx | 8 + src/app/dev/forum/komentar/[id]/page.tsx | 12 ++ src/app/dev/forum/main/layout.tsx | 19 ++ src/app/dev/forum/main/loading.tsx | 9 + src/app/dev/forum/main/page.tsx | 9 + .../dev/forum/report/komentar/[id]/layout.tsx | 14 ++ .../forum/report/komentar/[id]/loading.tsx | 9 + .../dev/forum/report/komentar/[id]/page.tsx | 8 + .../dev/forum/report/posting/[id]/layout.tsx | 15 ++ .../dev/forum/report/posting/[id]/loading.tsx | 9 + .../dev/forum/report/posting/[id]/page.tsx | 11 ++ src/app/dev/forum/splash/page.tsx | 9 + src/app/dev/home/layout.tsx | 4 +- src/app/dev/home/loading.tsx | 4 +- src/app/dev/home/page.tsx | 4 +- src/app/dev/katalog/[id]/loading.tsx | 5 +- src/app/dev/katalog/[id]/page.tsx | 4 +- src/app/lib/router_hipmi/router_forum.ts | 24 +++ .../author_name_on_header.tsx | 31 +++- .../component_global/loading_page.tsx | 36 ---- .../component_global/loading_page_v2.tsx | 25 +++ .../forum/component/author_header_name.tsx | 133 ++++++++++++++ .../forum/component/author_name_on_detail.tsx | 114 ++++++++++++ .../forum/component/button_more.tsx | 172 ++++++++++++++++++ .../component/header/header_rata_kiri.tsx | 30 +++ .../component/header/header_tamplate.tsx | 69 +++++++ .../forum/component/loading_drawer.tsx | 22 +++ src/app_modules/forum/create/index.tsx | 76 ++++++++ src/app_modules/forum/create/layout.tsx | 19 ++ src/app_modules/forum/detail/index.tsx | 133 ++++++++++++++ src/app_modules/forum/detail/layout.tsx | 38 ++++ src/app_modules/forum/edit/komentar/index.tsx | 84 +++++++++ .../forum/edit/komentar/layout.tsx | 21 +++ src/app_modules/forum/edit/posting/index.tsx | 84 +++++++++ src/app_modules/forum/edit/posting/layout.tsx | 21 +++ src/app_modules/forum/forumku/index.tsx | 136 ++++++++++++++ src/app_modules/forum/forumku/layout.tsx | 24 +++ src/app_modules/forum/global_state/index.tsx | 3 + src/app_modules/forum/index.ts | 41 +++++ src/app_modules/forum/komentar/index.tsx | 86 +++++++++ src/app_modules/forum/komentar/layout.tsx | 46 +++++ src/app_modules/forum/main/beranda.tsx | 117 ++++++++++++ src/app_modules/forum/main/layout.tsx | 133 ++++++++++++++ .../forum/report/komentar/index.tsx | 11 ++ .../forum/report/komentar/layout.tsx | 26 +++ .../forum/report/posting/index.tsx | 11 ++ .../forum/report/posting/layout.tsx | 26 +++ src/app_modules/forum/splash/index.tsx | 27 +++ .../home/fun/get/get_one_user_by_id.ts | 3 +- src/app_modules/home/view.tsx | 16 +- yarn.lock | 5 + 67 files changed, 2110 insertions(+), 79 deletions(-) create mode 100644 public/aset/forum/logo.png create mode 100644 src/app/dev/forum/create/layout.tsx create mode 100644 src/app/dev/forum/create/page.tsx create mode 100644 src/app/dev/forum/detail/[id]/layout.tsx create mode 100644 src/app/dev/forum/detail/[id]/loading.tsx create mode 100644 src/app/dev/forum/detail/[id]/page.tsx create mode 100644 src/app/dev/forum/edit/komentar/[id]/layout.tsx create mode 100644 src/app/dev/forum/edit/komentar/[id]/page.tsx create mode 100644 src/app/dev/forum/edit/posting/[id]/layout.tsx create mode 100644 src/app/dev/forum/edit/posting/[id]/page.tsx create mode 100644 src/app/dev/forum/forumku/[id]/layout.tsx create mode 100644 src/app/dev/forum/forumku/[id]/loading.tsx create mode 100644 src/app/dev/forum/forumku/[id]/page.tsx create mode 100644 src/app/dev/forum/komentar/[id]/layout.tsx create mode 100644 src/app/dev/forum/komentar/[id]/page.tsx create mode 100644 src/app/dev/forum/main/layout.tsx create mode 100644 src/app/dev/forum/main/loading.tsx create mode 100644 src/app/dev/forum/main/page.tsx create mode 100644 src/app/dev/forum/report/komentar/[id]/layout.tsx create mode 100644 src/app/dev/forum/report/komentar/[id]/loading.tsx create mode 100644 src/app/dev/forum/report/komentar/[id]/page.tsx create mode 100644 src/app/dev/forum/report/posting/[id]/layout.tsx create mode 100644 src/app/dev/forum/report/posting/[id]/loading.tsx create mode 100644 src/app/dev/forum/report/posting/[id]/page.tsx create mode 100644 src/app/dev/forum/splash/page.tsx create mode 100644 src/app/lib/router_hipmi/router_forum.ts delete mode 100644 src/app_modules/component_global/loading_page.tsx create mode 100644 src/app_modules/component_global/loading_page_v2.tsx create mode 100644 src/app_modules/forum/component/author_header_name.tsx create mode 100644 src/app_modules/forum/component/author_name_on_detail.tsx create mode 100644 src/app_modules/forum/component/button_more.tsx create mode 100644 src/app_modules/forum/component/header/header_rata_kiri.tsx create mode 100644 src/app_modules/forum/component/header/header_tamplate.tsx create mode 100644 src/app_modules/forum/component/loading_drawer.tsx create mode 100644 src/app_modules/forum/create/index.tsx create mode 100644 src/app_modules/forum/create/layout.tsx create mode 100644 src/app_modules/forum/detail/index.tsx create mode 100644 src/app_modules/forum/detail/layout.tsx create mode 100644 src/app_modules/forum/edit/komentar/index.tsx create mode 100644 src/app_modules/forum/edit/komentar/layout.tsx create mode 100644 src/app_modules/forum/edit/posting/index.tsx create mode 100644 src/app_modules/forum/edit/posting/layout.tsx create mode 100644 src/app_modules/forum/forumku/index.tsx create mode 100644 src/app_modules/forum/forumku/layout.tsx create mode 100644 src/app_modules/forum/global_state/index.tsx create mode 100644 src/app_modules/forum/index.ts create mode 100644 src/app_modules/forum/komentar/index.tsx create mode 100644 src/app_modules/forum/komentar/layout.tsx create mode 100644 src/app_modules/forum/main/beranda.tsx create mode 100644 src/app_modules/forum/main/layout.tsx create mode 100644 src/app_modules/forum/report/komentar/index.tsx create mode 100644 src/app_modules/forum/report/komentar/layout.tsx create mode 100644 src/app_modules/forum/report/posting/index.tsx create mode 100644 src/app_modules/forum/report/posting/layout.tsx create mode 100644 src/app_modules/forum/splash/index.tsx diff --git a/package.json b/package.json index 7ff6d7fc..90d5bef6 100644 --- a/package.json +++ b/package.json @@ -53,6 +53,7 @@ "react-countdown": "^2.3.5", "react-dom": "18.2.0", "react-fast-marquee": "^1.6.4", + "react-icons": "^5.0.1", "react-international-phone": "^4.2.6", "react-quill": "^2.0.0", "react-responsive-carousel": "^3.2.23", diff --git a/public/aset/forum/logo.png b/public/aset/forum/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ced44c9c4afb9f303963acaaebb19a5bc336eef5 GIT binary patch literal 28936 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

    0L5xr6sP~UuHxt2g{!H@#!y3 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 - - - ); -} \ No newline at end of file + return ( + <> + + + ); +} diff --git a/src/app/dev/event/splash/loading.tsx b/src/app/dev/event/splash/loading.tsx index ab5335df..b1f8b62f 100644 --- a/src/app/dev/event/splash/loading.tsx +++ b/src/app/dev/event/splash/loading.tsx @@ -1,9 +1,9 @@ -import ComponentGlobal_LoadingPage from "@/app_modules/component_global/loading_page"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; export default async function Page() { - return ( - <> - - - ); -} \ No newline at end of file + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/create/layout.tsx b/src/app/dev/forum/create/layout.tsx new file mode 100644 index 00000000..322d1e25 --- /dev/null +++ b/src/app/dev/forum/create/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutForum_Create } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/create/page.tsx b/src/app/dev/forum/create/page.tsx new file mode 100644 index 00000000..68e10889 --- /dev/null +++ b/src/app/dev/forum/create/page.tsx @@ -0,0 +1,9 @@ +import { Forum_Create } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/detail/[id]/layout.tsx b/src/app/dev/forum/detail/[id]/layout.tsx new file mode 100644 index 00000000..01a3eab5 --- /dev/null +++ b/src/app/dev/forum/detail/[id]/layout.tsx @@ -0,0 +1,14 @@ +import LayoutForum_Detail from "@/app_modules/forum/detail/layout"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/detail/[id]/loading.tsx b/src/app/dev/forum/detail/[id]/loading.tsx new file mode 100644 index 00000000..b1f8b62f --- /dev/null +++ b/src/app/dev/forum/detail/[id]/loading.tsx @@ -0,0 +1,9 @@ +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/detail/[id]/page.tsx b/src/app/dev/forum/detail/[id]/page.tsx new file mode 100644 index 00000000..e996b30f --- /dev/null +++ b/src/app/dev/forum/detail/[id]/page.tsx @@ -0,0 +1,11 @@ +import Forum_Detail from "@/app_modules/forum/detail"; + +export default async function Page({params}: {params: {id: string}}) { + let forumId = params.id + + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/edit/komentar/[id]/layout.tsx b/src/app/dev/forum/edit/komentar/[id]/layout.tsx new file mode 100644 index 00000000..e2e6984c --- /dev/null +++ b/src/app/dev/forum/edit/komentar/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LaoyoutForum_EditKomentar } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/edit/komentar/[id]/page.tsx b/src/app/dev/forum/edit/komentar/[id]/page.tsx new file mode 100644 index 00000000..d7178b96 --- /dev/null +++ b/src/app/dev/forum/edit/komentar/[id]/page.tsx @@ -0,0 +1,10 @@ +import { Forum_EditKomentar } from "@/app_modules/forum"; + +export default async function Page({ params }: { params: { id: string } }) { + let komentarId = params.id; + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/edit/posting/[id]/layout.tsx b/src/app/dev/forum/edit/posting/[id]/layout.tsx new file mode 100644 index 00000000..058935bd --- /dev/null +++ b/src/app/dev/forum/edit/posting/[id]/layout.tsx @@ -0,0 +1,15 @@ + +import { LayoutForum_EditPosting } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/edit/posting/[id]/page.tsx b/src/app/dev/forum/edit/posting/[id]/page.tsx new file mode 100644 index 00000000..507f4995 --- /dev/null +++ b/src/app/dev/forum/edit/posting/[id]/page.tsx @@ -0,0 +1,9 @@ +import { Forum_EditPosting } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/forumku/[id]/layout.tsx b/src/app/dev/forum/forumku/[id]/layout.tsx new file mode 100644 index 00000000..35e7309d --- /dev/null +++ b/src/app/dev/forum/forumku/[id]/layout.tsx @@ -0,0 +1,21 @@ +import { LayoutForum_Forumku } from "@/app_modules/forum"; +import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + const authorId = await User_getUserId(); + const dataAuthor = await user_getOneById(authorId); + + return ( + <> + + {children} + + + ); +} diff --git a/src/app/dev/forum/forumku/[id]/loading.tsx b/src/app/dev/forum/forumku/[id]/loading.tsx new file mode 100644 index 00000000..b1f8b62f --- /dev/null +++ b/src/app/dev/forum/forumku/[id]/loading.tsx @@ -0,0 +1,9 @@ +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/forumku/[id]/page.tsx b/src/app/dev/forum/forumku/[id]/page.tsx new file mode 100644 index 00000000..73a22f63 --- /dev/null +++ b/src/app/dev/forum/forumku/[id]/page.tsx @@ -0,0 +1,29 @@ +import { Forum_Forumku } from "@/app_modules/forum"; +import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import _ from "lodash"; + +export default async function Page({ params }: { params: { id: string } }) { + const authorId = params.id; + const dataAuthor = await user_getOneById(authorId); + const auhtorSelectedData = _.omit(dataAuthor, [ + "Profile.email", + "Profile.alamat", + "Profile.jenisKelamin", + "Profile.createdAt", + "Profile.updatedAt", + "Profile.imagesBackgroundId", + ]); + // console.log(dataAuthor) + // console.log(auhtorSelectedData) + + // await new Promise((a, b) => { + // setTimeout(a, 1000); + // }); + + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/komentar/[id]/layout.tsx b/src/app/dev/forum/komentar/[id]/layout.tsx new file mode 100644 index 00000000..3ce7ca84 --- /dev/null +++ b/src/app/dev/forum/komentar/[id]/layout.tsx @@ -0,0 +1,8 @@ +import { LayoutForum_Komentar } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({children}: {children: React.ReactNode}) { + return<> + {children} + +} \ No newline at end of file diff --git a/src/app/dev/forum/komentar/[id]/page.tsx b/src/app/dev/forum/komentar/[id]/page.tsx new file mode 100644 index 00000000..61bc1465 --- /dev/null +++ b/src/app/dev/forum/komentar/[id]/page.tsx @@ -0,0 +1,12 @@ +import { Forum_Komentar } from "@/app_modules/forum"; + +export default async function Page({params}: {params: {id: string}}) { + let forumId = params.id + + + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/main/layout.tsx b/src/app/dev/forum/main/layout.tsx new file mode 100644 index 00000000..4587098b --- /dev/null +++ b/src/app/dev/forum/main/layout.tsx @@ -0,0 +1,19 @@ +import { LayoutForum_Main } from "@/app_modules/forum"; +import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + const authorId = await User_getUserId(); + const dataAuthor = await user_getOneById(authorId); + + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/main/loading.tsx b/src/app/dev/forum/main/loading.tsx new file mode 100644 index 00000000..874bc4a9 --- /dev/null +++ b/src/app/dev/forum/main/loading.tsx @@ -0,0 +1,9 @@ +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/main/page.tsx b/src/app/dev/forum/main/page.tsx new file mode 100644 index 00000000..b204a95b --- /dev/null +++ b/src/app/dev/forum/main/page.tsx @@ -0,0 +1,9 @@ +import { Forum_Beranda } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/komentar/[id]/layout.tsx b/src/app/dev/forum/report/komentar/[id]/layout.tsx new file mode 100644 index 00000000..c20223e0 --- /dev/null +++ b/src/app/dev/forum/report/komentar/[id]/layout.tsx @@ -0,0 +1,14 @@ +import { LayoutForum_ReportKomentar } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/report/komentar/[id]/loading.tsx b/src/app/dev/forum/report/komentar/[id]/loading.tsx new file mode 100644 index 00000000..b1f8b62f --- /dev/null +++ b/src/app/dev/forum/report/komentar/[id]/loading.tsx @@ -0,0 +1,9 @@ +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/komentar/[id]/page.tsx b/src/app/dev/forum/report/komentar/[id]/page.tsx new file mode 100644 index 00000000..4d438530 --- /dev/null +++ b/src/app/dev/forum/report/komentar/[id]/page.tsx @@ -0,0 +1,8 @@ +import { Forum_ReportKomentar } from "@/app_modules/forum"; + +export default async function Page({params}: {params: {id: string}}) { + let komentarId = params.id + return<> + + +} \ No newline at end of file diff --git a/src/app/dev/forum/report/posting/[id]/layout.tsx b/src/app/dev/forum/report/posting/[id]/layout.tsx new file mode 100644 index 00000000..b4cdf878 --- /dev/null +++ b/src/app/dev/forum/report/posting/[id]/layout.tsx @@ -0,0 +1,15 @@ + +import { LayoutForum_ReportPosting } from "@/app_modules/forum"; +import React from "react"; + +export default async function Layout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + {children} + + ); +} diff --git a/src/app/dev/forum/report/posting/[id]/loading.tsx b/src/app/dev/forum/report/posting/[id]/loading.tsx new file mode 100644 index 00000000..b1f8b62f --- /dev/null +++ b/src/app/dev/forum/report/posting/[id]/loading.tsx @@ -0,0 +1,9 @@ +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/report/posting/[id]/page.tsx b/src/app/dev/forum/report/posting/[id]/page.tsx new file mode 100644 index 00000000..3e1672d5 --- /dev/null +++ b/src/app/dev/forum/report/posting/[id]/page.tsx @@ -0,0 +1,11 @@ +import { Forum_ReportPosting } from "@/app_modules/forum"; + +export default async function Page({ params }: { params: { id: string } }) { + let id = params.id; + + return ( + <> + + + ); +} diff --git a/src/app/dev/forum/splash/page.tsx b/src/app/dev/forum/splash/page.tsx new file mode 100644 index 00000000..db8e7cda --- /dev/null +++ b/src/app/dev/forum/splash/page.tsx @@ -0,0 +1,9 @@ +import { Forum_Splash } from "@/app_modules/forum"; + +export default async function Page() { + return ( + <> + + + ); +} diff --git a/src/app/dev/home/layout.tsx b/src/app/dev/home/layout.tsx index e2cf3dee..e43dc67f 100644 --- a/src/app/dev/home/layout.tsx +++ b/src/app/dev/home/layout.tsx @@ -1,11 +1,11 @@ import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; import { HomeLayout } from "@/app_modules/home"; -import { User_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; import { redirect } from "next/navigation"; export default async function Layout({ children }: { children: any }) { const userId = await User_getUserId(); - const dataUser = await User_getOneById(userId); + const dataUser = await user_getOneById(userId); return ( <> diff --git a/src/app/dev/home/loading.tsx b/src/app/dev/home/loading.tsx index 6d21ef97..b1f8b62f 100644 --- a/src/app/dev/home/loading.tsx +++ b/src/app/dev/home/loading.tsx @@ -1,9 +1,9 @@ -import ComponentGlobal_LoadingPage from "@/app_modules/component_global/loading_page"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; export default async function Page() { return ( <> - + ); } diff --git a/src/app/dev/home/page.tsx b/src/app/dev/home/page.tsx index 146fb60d..477453b1 100644 --- a/src/app/dev/home/page.tsx +++ b/src/app/dev/home/page.tsx @@ -3,11 +3,11 @@ import { cookies } from "next/headers"; import { unsealData } from "iron-session"; import _ from "lodash"; import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; -import { User_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; export default async function Page() { const userId = await User_getUserId(); - const dataUser = await User_getOneById(userId); + const dataUser = await user_getOneById(userId); // await new Promise((a, b) => { // setTimeout(a, 1000); // }); diff --git a/src/app/dev/katalog/[id]/loading.tsx b/src/app/dev/katalog/[id]/loading.tsx index 843e1ee7..b1f8b62f 100644 --- a/src/app/dev/katalog/[id]/loading.tsx +++ b/src/app/dev/katalog/[id]/loading.tsx @@ -1,10 +1,9 @@ -import ComponentGlobal_LoadingPage from "@/app_modules/component_global/loading_page"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; export default async function Page() { - return ( <> - + ); } diff --git a/src/app/dev/katalog/[id]/page.tsx b/src/app/dev/katalog/[id]/page.tsx index 97148afd..bba193be 100644 --- a/src/app/dev/katalog/[id]/page.tsx +++ b/src/app/dev/katalog/[id]/page.tsx @@ -12,13 +12,13 @@ import { funGetListPortofolio } from "@/app_modules/katalog/portofolio/fun/get/g import { User_getUserId } from "@/app_modules/fun_global/get_user_token"; import { Profile_getOneById } from "@/app_modules/katalog/profile/fun/get/get_one_profile"; import { Profile_getOneProfileAndUserById } from "@/app_modules/katalog/profile/fun/get/get_one_user_profile"; -import { User_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; +import { user_getOneById } from "@/app_modules/home/fun/get/get_one_user_by_id"; const config = yaml.parse(fs.readFileSync("config.yaml").toString()); export default async function Page({ params }: { params: { id: string } }) { let profileId = params.id; const authorId = await User_getUserId(); - const dataUser = await User_getOneById(authorId) + const dataUser = await user_getOneById(authorId) const listPorto = await funGetListPortofolio(profileId); const dataProfile = await Profile_getOneProfileAndUserById(profileId); // console.log(dataProfile) diff --git a/src/app/lib/router_hipmi/router_forum.ts b/src/app/lib/router_hipmi/router_forum.ts new file mode 100644 index 00000000..2870676a --- /dev/null +++ b/src/app/lib/router_hipmi/router_forum.ts @@ -0,0 +1,24 @@ +export const RouterForum = { + splash: "/dev/forum/splash", + + // main + beranda: "/dev/forum/main", + forumku: "/dev/forum/forumku/", + + // create + create: "/dev/forum/create", + + //edit + edit_posting: "/dev/forum/edit/posting/", + edit_komentar: "/dev/forum/edit/komentar/", + + //detail + main_detail: "/dev/forum/detail/", + + // komentra + komentar: "/dev/forum/komentar/", + + //report + report_posting: "/dev/forum/report/posting/", + report_komentar: "/dev/forum/report/komentar/", +}; diff --git a/src/app_modules/component_global/author_name_on_header.tsx b/src/app_modules/component_global/author_name_on_header.tsx index a6a42a24..995b429c 100644 --- a/src/app_modules/component_global/author_name_on_header.tsx +++ b/src/app_modules/component_global/author_name_on_header.tsx @@ -1,20 +1,26 @@ "use client"; import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; -import { Stack, Grid, Avatar, Divider, Text } from "@mantine/core"; +import { Stack, Grid, Avatar, Divider, Text, Group } from "@mantine/core"; import { useRouter } from "next/navigation"; import { ComponentGlobal_NotifikasiPeringatan } from "./notif_global/notifikasi_peringatan"; +import moment from "moment"; export default function ComponentGlobal_AuthorNameOnHeader({ profileId, imagesId, authorName, + tglPublish, + isPembatas, }: { profileId?: string; imagesId?: string; authorName?: string; + tglPublish?: Date; + isPembatas?: boolean; }) { const router = useRouter(); + const skrng = new Date(); return ( <> @@ -43,13 +49,28 @@ export default function ComponentGlobal_AuthorNameOnHeader({ - - {authorName ? authorName : "Nama author"} - + + + + {authorName ? authorName : "Nama author"} + + + + {tglPublish ? ( + + {skrng.toLocaleDateString(["id-ID"], { + dateStyle: "medium", + })} + + ) : ( + "" + )} + + - + {isPembatas ? : ""} ); diff --git a/src/app_modules/component_global/loading_page.tsx b/src/app_modules/component_global/loading_page.tsx deleted file mode 100644 index eade6600..00000000 --- a/src/app_modules/component_global/loading_page.tsx +++ /dev/null @@ -1,36 +0,0 @@ -"use client"; - -import { Center, Group, Loader, Skeleton, Stack } from "@mantine/core"; - -/** - * @param | is On Layout: 100%, is Not On Layout: 100vh - * @returns Skeleton loading - */ -export default function ComponentGlobal_LoadingPage({ height }: { height: string }) { - return ( - <> -

    - - {Array(3) - .fill(0) - .map((e, i) => ( - - ))} - - {/* - {Array(3) - .fill(0) - .map((v, index) => ( - - {Array(3) - .fill(0) - .map((e, i) => ( - - ))} - - ))} - */} -
    - - ); -} diff --git a/src/app_modules/component_global/loading_page_v2.tsx b/src/app_modules/component_global/loading_page_v2.tsx new file mode 100644 index 00000000..4ebb72fe --- /dev/null +++ b/src/app_modules/component_global/loading_page_v2.tsx @@ -0,0 +1,25 @@ +"use client"; + +import { Box, Center, Group, LoadingOverlay, Skeleton } from "@mantine/core"; + +export default function ComponentGlobal_V2_LoadingPage() { + const customLOader = ( +
    + + {Array(3) + .fill(0) + .map((e, i) => ( + + ))} + +
    + ); + + return ( + <> + + + + + ); +} diff --git a/src/app_modules/forum/component/author_header_name.tsx b/src/app_modules/forum/component/author_header_name.tsx new file mode 100644 index 00000000..d474a001 --- /dev/null +++ b/src/app_modules/forum/component/author_header_name.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; +import { + Stack, + Grid, + Avatar, + Divider, + Text, + Group, + ThemeIcon, + ActionIcon, + Drawer, + Paper, + Button, + Modal, + Title, +} from "@mantine/core"; +import { useRouter } from "next/navigation"; +import moment from "moment"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { + IconCircleFilled, + IconDots, + IconEdit, + IconFlag3, + IconMessageCircle, + IconTrash, +} from "@tabler/icons-react"; +import { IconCircle } from "@tabler/icons-react"; +import { IoIosMore } from "react-icons/io"; +import { useDisclosure } from "@mantine/hooks"; +import { useState } from "react"; +import ButtonMore from "./button_more"; + +export default function ComponentForum_AuthorNameOnHeader({ + forumId, + imagesId, + authorName, + username, + tglPublish, + isPembatas, + tipe, + isMoreButton, +}: { + forumId?: string; + imagesId?: string; + authorName?: string; + username?: string; + tglPublish?: Date; + isPembatas?: boolean; + tipe: string; + isMoreButton?: boolean; +}) { + const router = useRouter(); + const skrng = new Date(); + return ( + <> + + + { + if (forumId) { + router.push(RouterForum.forumku + forumId); + } else { + ComponentGlobal_NotifikasiPeringatan("Id tidak ditemukan"); + } + }} + > + + + + + + + + {authorName + ? authorName + : "Nama author coba di berikan panjang "} + + + {/* + + {username ? username : "@username "} + + */} + + + + + + + + + {skrng.toLocaleDateString(["id-ID"], { + // dateStyle: "medium", + day: "numeric", + month: "short", + })} + + + + {isMoreButton ? ( + + + + ) : ( + "" + )} + + + + {isPembatas ? : ""} + + + ); +} diff --git a/src/app_modules/forum/component/author_name_on_detail.tsx b/src/app_modules/forum/component/author_name_on_detail.tsx new file mode 100644 index 00000000..13d9297a --- /dev/null +++ b/src/app_modules/forum/component/author_name_on_detail.tsx @@ -0,0 +1,114 @@ +"use client"; + +import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; +import { + Stack, + Grid, + Avatar, + Divider, + Text, + Group, + ThemeIcon, + ActionIcon, +} from "@mantine/core"; +import { useRouter } from "next/navigation"; +import moment from "moment"; +import { ComponentGlobal_NotifikasiPeringatan } from "@/app_modules/component_global/notif_global/notifikasi_peringatan"; +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { + IconCircleFilled, + IconDots, + IconMessageCircle, +} from "@tabler/icons-react"; +import { IconCircle } from "@tabler/icons-react"; +import ButtonMore from "./button_more"; + +export default function ComponentForum_AuthorNameOnDetail({ + forumId, + imagesId, + authorName, + username, + tglPublish, + isPembatas, + tipe, +}: { + forumId?: string; + imagesId?: string; + authorName?: string; + username?: string; + tglPublish?: Date; + isPembatas?: boolean; + tipe: string +}) { + const router = useRouter(); + const skrng = new Date(); + return ( + <> + + + { + if (forumId) { + router.push(RouterForum.forumku + forumId); + } else { + ComponentGlobal_NotifikasiPeringatan("Id tidak ditemukan"); + } + }} + > + + + + + + {authorName ? authorName : "Nama author "} + + + {username ? username : "@username "} + + + + {/* + + + + {authorName ? authorName : "Nama author "} + + + + + {username ? username : "@username "} + + + + + + + {skrng.toLocaleDateString(["id-ID"], { + dateStyle: "medium", + })} + + + + + */} + + + + + + {isPembatas ? : ""} + + + ); +} diff --git a/src/app_modules/forum/component/button_more.tsx b/src/app_modules/forum/component/button_more.tsx new file mode 100644 index 00000000..285f8c4e --- /dev/null +++ b/src/app_modules/forum/component/button_more.tsx @@ -0,0 +1,172 @@ +"use client"; + +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { ComponentGlobal_NotifikasiBerhasil } from "@/app_modules/component_global/notif_global/notifikasi_berhasil"; +import { + Drawer, + Stack, + Grid, + Button, + Modal, + Title, + Group, + ActionIcon, + Text, + Box, + Center, + Loader, +} from "@mantine/core"; +import { useDisclosure } from "@mantine/hooks"; +import { IconTrash, IconEdit, IconFlag3, IconDots } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +import { createStyles } from "@mantine/core"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; +import { useAtom } from "jotai"; +import { gs_forum_loading_edit_posting } from "../global_state"; +import ComponentForum_LoadingDrawer from "./loading_drawer"; + +const useStyles = createStyles((theme) => ({ + myCustomButton: { + ...theme.fn.focusStyles(), + }, + radiusCustom: { + // borderRadius: "10px, 10px, 0px,0px", + borderTopRightRadius: "10px", + borderTopLeftRadius: "10px", + }, +})); + +export default function ButtonMore({ id, tipe }: { id: any; tipe: string }) { + const router = useRouter(); + const { classes } = useStyles(); + const [opened, { open, close }] = useDisclosure(false); + const [openDel, setOpenDel] = useState(false); + + // loading + const [loadingEdit, setLoadingEdit] = useState(false); + const [loadingReport, setLoadingReport] = useState(false); + + // if (loadingEdit) return ; + + return ( + <> + + + { + close(); + setOpenDel(true); + }} + > + + + + + Hapus + + + + { + setLoadingEdit(true); + if (tipe === "posting") { + router.push(RouterForum.edit_posting + id); + } else { + router.push(RouterForum.edit_komentar + id); + } + }} + > + + + + + + Edit {tipe}{" "} + {loadingEdit ? : ""} + + + + + { + setLoadingReport(true); + if (tipe === "posting") { + router.push(RouterForum.report_posting + id); + } else { + router.push(RouterForum.report_komentar + id); + } + }} + > + + + + + + + Laporkan {tipe} + {" "} + {loadingReport ? : ""} + + + + + + + + + { + setOpenDel(false); + }} + centered + withCloseButton={false} + > + + Yakin menghapus {tipe} ini ? + + + + + + + + open()}> + + + + ); +} diff --git a/src/app_modules/forum/component/header/header_rata_kiri.tsx b/src/app_modules/forum/component/header/header_rata_kiri.tsx new file mode 100644 index 00000000..d99b6f8e --- /dev/null +++ b/src/app_modules/forum/component/header/header_rata_kiri.tsx @@ -0,0 +1,30 @@ +"use client"; + +import { ActionIcon, Group, Header, Title } from "@mantine/core"; +import { IconX } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; + +export default function ComponentForum_HeaderRataKiri({ + title, +}: { + title: string; +}) { + const router = useRouter(); + return ( + <> +
    + + { + router.back(); + }} + > + + + {title} + +
    + + ); +} diff --git a/src/app_modules/forum/component/header/header_tamplate.tsx b/src/app_modules/forum/component/header/header_tamplate.tsx new file mode 100644 index 00000000..4025fe08 --- /dev/null +++ b/src/app_modules/forum/component/header/header_tamplate.tsx @@ -0,0 +1,69 @@ +"use client"; + +import { Header, Group, ActionIcon, Text, Title } from "@mantine/core"; +import { IconArrowLeft, IconChevronLeft } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import { useState } from "react"; + +export default function ComponentForum_HeaderTamplate({ + hideBack, + changeIconBack, + route, + route2, + title, + icon, + bg, +}: { + hideBack?: boolean; + changeIconBack?: any; + route?: any; + route2?: any; + title: string; + icon?: any; + bg?: any; +}) { + const router = useRouter(); + return ( + <> +
    + + {hideBack ? ( + + ) : ( + { + if (route === null || route === undefined) { + return router.back(); + } else { + return router.push(route); + } + }} + > + {changeIconBack ? changeIconBack : } + + )} + {title} + {(() => { + if (route2 === null || route2 === undefined) { + return ; + } else { + return ( + router.push(route2)} + > + {icon} + + ); + } + })()} + +
    + + ); +} diff --git a/src/app_modules/forum/component/loading_drawer.tsx b/src/app_modules/forum/component/loading_drawer.tsx new file mode 100644 index 00000000..3a1a53ac --- /dev/null +++ b/src/app_modules/forum/component/loading_drawer.tsx @@ -0,0 +1,22 @@ +"use client"; + +import { Center, Group, LoadingOverlay, Skeleton } from "@mantine/core"; + +export default function ComponentForum_LoadingDrawer() { + const customLoad = ( +
    + + {Array(3) + .fill(0) + .map((e, i) => ( + + ))} + +
    + ); + return ( + <> + {customLoad} + + ); +} diff --git a/src/app_modules/forum/create/index.tsx b/src/app_modules/forum/create/index.tsx new file mode 100644 index 00000000..41e605d1 --- /dev/null +++ b/src/app_modules/forum/create/index.tsx @@ -0,0 +1,76 @@ +"use client"; + +import { + ActionIcon, + Button, + Center, + Group, + Loader, + Paper, + Stack, +} from "@mantine/core"; +import "react-quill/dist/quill.snow.css"; +import "react-quill/dist/quill.bubble.css"; +import { IconPhotoUp } from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +import dynamic from "next/dynamic"; +import React, { useState } from "react"; +const ReactQuill = dynamic( + () => { + return import("react-quill"); + }, + { ssr: false } +); + +export default function Forum_Create() { + const [value, setValue] = useState(""); + const [reload, setReload] = useState(false); + useShallowEffect(() => { + if (window && window.document) setReload(true); + }, []); + + if (!reload) + return ( + <> + + + ); + + return ( + <> + + + { + setValue(val); + }} + /> + + + {/* + + */} + + + +
    + + ); +} + +function ButtonAction() { + const router = useRouter(); + return ( + <> + + + ); +} diff --git a/src/app_modules/forum/create/layout.tsx b/src/app_modules/forum/create/layout.tsx new file mode 100644 index 00000000..2a82a5b0 --- /dev/null +++ b/src/app_modules/forum/create/layout.tsx @@ -0,0 +1,19 @@ +"use client"; + +import { AppShell } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../component/header/header_tamplate"; + +export default function LayoutForum_Create({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + }> + {children} + + + ); +} diff --git a/src/app_modules/forum/detail/index.tsx b/src/app_modules/forum/detail/index.tsx new file mode 100644 index 00000000..3e5e3257 --- /dev/null +++ b/src/app_modules/forum/detail/index.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { + ActionIcon, + Box, + Card, + Divider, + Group, + Stack, + Text, +} from "@mantine/core"; +import { IconMessageCircle } from "@tabler/icons-react"; +import ComponentForum_AuthorNameOnHeader from "../component/author_header_name"; +import ComponentForum_AuthorNameOnDetail from "../component/author_name_on_detail"; +import { useRouter } from "next/navigation"; + +export default function Forum_Detail({ forumId }: { forumId: string }) { + return ( + <> + + + + + + ); +} + +function ForumView({ forumId }: { forumId: string }) { + const router = useRouter(); + return ( + <> + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad, + vitae. Quisquam aspernatur, eius consequatur dicta repellendus + facere vero recusandae deleniti voluptas quod architecto, tenetur + totam excepturi rem nam iusto earum. + + + + + + + + { + router.push(RouterForum.komentar + forumId); + }} + > + + + 1 + + + + {new Date( + "August 19, 1975 23:15:30 GMT+00:00" + ).toLocaleTimeString()} + + + {new Date().toLocaleDateString(["id-ID"], { + dateStyle: "medium", + })} + + + + + + + + + + + ); +} + +function DiskusiView() { + return ( + <> + + {Array(5) + .fill(0) + .map((e, i) => ( + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. + Ad, vitae. Quisquam aspernatur, eius consequatur dicta + repellendus facere vero recusandae deleniti voluptas quod + architecto, tenetur totam excepturi rem nam iusto earum. + + + + + + {/* + + {new Date( + "August 19, 1975 23:15:30 GMT+00:00" + ).toLocaleTimeString()} + + + {new Date().toLocaleDateString(["id-ID"], { + dateStyle: "medium", + })} + + */} + + + + + + ))} + + + ); +} diff --git a/src/app_modules/forum/detail/layout.tsx b/src/app_modules/forum/detail/layout.tsx new file mode 100644 index 00000000..5acc9b8a --- /dev/null +++ b/src/app_modules/forum/detail/layout.tsx @@ -0,0 +1,38 @@ +"use client"; + +import { ActionIcon, AppShell, Group, Header, Title } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../component/header/header_tamplate"; +import { useRouter } from "next/navigation"; +import { IconChevronLeft } from "@tabler/icons-react"; + +export default function LayoutForum_Detail({ + children, +}: { + children: React.ReactNode; +}) { + const router = useRouter(); + return ( + <> + + + { + router.back(); + }} + > + + + Postingan + + + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/edit/komentar/index.tsx b/src/app_modules/forum/edit/komentar/index.tsx new file mode 100644 index 00000000..e97c6cdc --- /dev/null +++ b/src/app_modules/forum/edit/komentar/index.tsx @@ -0,0 +1,84 @@ +"use client" + +import { + ActionIcon, + Button, + Center, + Group, + Loader, + Paper, + Stack, +} from "@mantine/core"; +import "react-quill/dist/quill.snow.css"; +import "react-quill/dist/quill.bubble.css"; +import { IconPhotoUp } from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + + +import dynamic from "next/dynamic"; +import React, { useState } from "react"; +import { useAtom } from "jotai"; +import { gs_forum_loading_edit_posting } from "../../global_state"; +const ReactQuill = dynamic( + () => { + return import("react-quill"); + }, + { ssr: false } +); + +export default function Forum_EditKomentar() { + const [value, setValue] = useState(""); + const [reload, setReload] = useState(false); + useShallowEffect(() => { + if (window && window.document) setReload(true); + }, []); + + if (!reload) + return ( + <> + + + ); + + return ( + <> + + + { + setValue(val); + }} + /> + + + {/* + + */} + + + +
    + + ); +} + +function ButtonAction() { + const router = useRouter(); + const [loadingEdit, setLoadingEdit] = useAtom(gs_forum_loading_edit_posting); + + return ( + <> + + + ); +} diff --git a/src/app_modules/forum/edit/komentar/layout.tsx b/src/app_modules/forum/edit/komentar/layout.tsx new file mode 100644 index 00000000..f153d9a1 --- /dev/null +++ b/src/app_modules/forum/edit/komentar/layout.tsx @@ -0,0 +1,21 @@ +"use client"; + +import { AppShell } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../../component/header/header_tamplate"; + +export default function LayoutForum_EditKomentar({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/edit/posting/index.tsx b/src/app_modules/forum/edit/posting/index.tsx new file mode 100644 index 00000000..4898bb4d --- /dev/null +++ b/src/app_modules/forum/edit/posting/index.tsx @@ -0,0 +1,84 @@ +"use client" + +import { + ActionIcon, + Button, + Center, + Group, + Loader, + Paper, + Stack, +} from "@mantine/core"; +import "react-quill/dist/quill.snow.css"; +import "react-quill/dist/quill.bubble.css"; +import { IconPhotoUp } from "@tabler/icons-react"; +import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + + +import dynamic from "next/dynamic"; +import React, { useState } from "react"; +import { useAtom } from "jotai"; +import { gs_forum_loading_edit_posting } from "../../global_state"; +const ReactQuill = dynamic( + () => { + return import("react-quill"); + }, + { ssr: false } +); + +export default function Forum_EditPosting() { + const [value, setValue] = useState(""); + const [reload, setReload] = useState(false); + useShallowEffect(() => { + if (window && window.document) setReload(true); + }, []); + + if (!reload) + return ( + <> + + + ); + + return ( + <> + + + { + setValue(val); + }} + /> + + + {/* + + */} + + + +
    + + ); +} + +function ButtonAction() { + const router = useRouter(); + const [loadingEdit, setLoadingEdit] = useAtom(gs_forum_loading_edit_posting); + + return ( + <> + + + ); +} diff --git a/src/app_modules/forum/edit/posting/layout.tsx b/src/app_modules/forum/edit/posting/layout.tsx new file mode 100644 index 00000000..94e0f885 --- /dev/null +++ b/src/app_modules/forum/edit/posting/layout.tsx @@ -0,0 +1,21 @@ +"use client"; + +import { AppShell } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../../component/header/header_tamplate"; + +export default function LayoutForum_EditPosting({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/forumku/index.tsx b/src/app_modules/forum/forumku/index.tsx new file mode 100644 index 00000000..a2b5a566 --- /dev/null +++ b/src/app_modules/forum/forumku/index.tsx @@ -0,0 +1,136 @@ +"use client"; + +import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; +import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header"; +import { MODEL_USER } from "@/app_modules/home/model/interface"; +import { + ActionIcon, + Avatar, + Button, + Card, + Center, + Divider, + Group, + Stack, + Text, +} from "@mantine/core"; +import { IconCircleFilled, IconMessageCircle } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import ComponentForum_AuthorNameOnHeader from "../component/author_header_name"; +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { useState } from "react"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; + +export default function Forum_Forumku({ + auhtorSelectedData, +}: { + auhtorSelectedData: MODEL_USER; +}) { + const router = useRouter(); + const [loadingDetail, setLoaduingDetail] = useState(false); + const [loadingKomen, setLoadingKomen] = useState(false); + + if (loadingDetail) return ; + if (loadingKomen) return ; + return ( + <> + +
    + +
    + + + + {auhtorSelectedData?.Profile?.name} + + + @{auhtorSelectedData?.username}{" "} + + 5 Posting + + + + + + + + + {Array(5) + .fill(0) + .map((e, i) => ( + + + + + { + // console.log("halaman forum"); + setLoaduingDetail(true); + router.push(RouterForum.main_detail + i); + }} + > + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. + Ad, vitae. Quisquam aspernatur, eius consequatur dicta + repellendus facere vero recusandae deleniti voluptas quod + architecto, tenetur totam excepturi rem nam iusto earum. + + + + + + + { + setLoadingKomen(true); + router.push(RouterForum.komentar + i); + }} + > + + + 1 + + + + + + ))} + +
    + + ); +} diff --git a/src/app_modules/forum/forumku/layout.tsx b/src/app_modules/forum/forumku/layout.tsx new file mode 100644 index 00000000..a6a1f824 --- /dev/null +++ b/src/app_modules/forum/forumku/layout.tsx @@ -0,0 +1,24 @@ +"use client"; + +import { AppShell } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../component/header/header_tamplate"; +import { MODEL_USER } from "@/app_modules/home/model/interface"; + +export default function LayoutForum_Forumku({ + children, + username, +}: { + children: React.ReactNode; + username: string; +}) { + return ( + <> + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/global_state/index.tsx b/src/app_modules/forum/global_state/index.tsx new file mode 100644 index 00000000..aa86ad42 --- /dev/null +++ b/src/app_modules/forum/global_state/index.tsx @@ -0,0 +1,3 @@ +import { atomWithStorage } from "jotai/utils"; + +export const gs_forum_loading_edit_posting = atomWithStorage("gs_forum_loading_edit_posting", false) \ No newline at end of file diff --git a/src/app_modules/forum/index.ts b/src/app_modules/forum/index.ts new file mode 100644 index 00000000..fb864b53 --- /dev/null +++ b/src/app_modules/forum/index.ts @@ -0,0 +1,41 @@ +import Forum_Splash from "./splash"; +import Forum_Beranda from "./main/beranda"; +import LayoutForum_Main from "./main/layout"; +import Forum_Forumku from "./forumku"; +import Forum_Create from "./create"; +import LayoutForum_Create from "./create/layout"; +import LayoutForum_Forumku from "./forumku/layout"; +import Forum_Detail from "./detail"; +import LayoutForum_Detail from "./detail/layout"; +import Forum_Komentar from "./komentar"; +import LayoutForum_Komentar from "./komentar/layout"; +import Forum_EditPosting from "./edit/posting"; +import LayoutForum_EditPosting from "./edit/posting/layout"; +import Forum_ReportPosting from "./report/posting"; +import LayoutForum_ReportPosting from "./report/posting/layout"; +import Forum_EditKomentar from "./edit/komentar"; +import LayoutForum_EditKomentar from "./edit/komentar/layout"; +import Forum_ReportKomentar from "./report/komentar"; +import LayoutForum_ReportKomentar from "./report/komentar/layout"; + +export { + Forum_Splash, + Forum_Beranda, + LayoutForum_Main, + Forum_Forumku, + Forum_Create, + LayoutForum_Create, + LayoutForum_Forumku, + Forum_Detail, + LayoutForum_Detail, + Forum_Komentar, + LayoutForum_Komentar, + Forum_EditPosting, + LayoutForum_EditPosting, + Forum_ReportPosting, + LayoutForum_ReportPosting, + Forum_EditKomentar, + LayoutForum_EditKomentar as LaoyoutForum_EditKomentar, + Forum_ReportKomentar, + LayoutForum_ReportKomentar, +}; diff --git a/src/app_modules/forum/komentar/index.tsx b/src/app_modules/forum/komentar/index.tsx new file mode 100644 index 00000000..1393c49a --- /dev/null +++ b/src/app_modules/forum/komentar/index.tsx @@ -0,0 +1,86 @@ +"use client"; + +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { + ActionIcon, + Button, + Card, + Group, + Paper, + Stack, + Text, +} from "@mantine/core"; +import ComponentForum_AuthorNameOnHeader from "../component/author_header_name"; + +import dynamic from "next/dynamic"; +import React, { useState } from "react"; +const ReactQuill = dynamic( + () => { + return import("react-quill"); + }, + { ssr: false } +); +import "react-quill/dist/quill.bubble.css"; +import { IconPhotoUp } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; + +export default function Forum_Komentar({ forumId }: { forumId: string }) { + const [value, setValue] = useState(""); + + return ( + <> + + + + + + + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. Ad, + vitae. Quisquam aspernatur, eius consequatur dicta repellendus + facere vero recusandae deleniti voluptas quod architecto, + tenetur totam excepturi rem nam iusto earum. + + + + + + + { + setValue(val); + }} + /> + + + + + + + + + + + ); +} + +function ButtonAction({ forumId }: { forumId: string }) { + const router = useRouter(); + return ( + <> + + + ); +} diff --git a/src/app_modules/forum/komentar/layout.tsx b/src/app_modules/forum/komentar/layout.tsx new file mode 100644 index 00000000..082fcc62 --- /dev/null +++ b/src/app_modules/forum/komentar/layout.tsx @@ -0,0 +1,46 @@ +"use client"; + +import { + ActionIcon, + AppShell, + Button, + Group, + Header, + Title, +} from "@mantine/core"; +import { IconChevronLeft } from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../component/header/header_tamplate"; + +export default function LayoutForum_Komentar({ + children, +}: { + children: React.ReactNode; +}) { + const router = useRouter(); + return ( + <> + + + { + router.back(); + }} + > + + + Komentar + + + } + // header={} + > + {children} + + + ); +} diff --git a/src/app_modules/forum/main/beranda.tsx b/src/app_modules/forum/main/beranda.tsx new file mode 100644 index 00000000..10db345f --- /dev/null +++ b/src/app_modules/forum/main/beranda.tsx @@ -0,0 +1,117 @@ +"use client"; + +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { RouterJob } from "@/app/lib/router_hipmi/router_job"; +import ComponentGlobal_AuthorNameOnHeader from "@/app_modules/component_global/author_name_on_header"; +import { + Affix, + rem, + ActionIcon, + Card, + CardSection, + Text, + Stack, + Divider, + Group, +} from "@mantine/core"; +import { useTimeout, useWindowScroll } from "@mantine/hooks"; +import { + IconCirclePlus, + IconMessageCircle, + IconPencilPlus, +} from "@tabler/icons-react"; +import { useRouter } from "next/navigation"; +import ComponentForum_AuthorNameOnHeader from "../component/author_header_name"; +import { useState } from "react"; +import ComponentGlobal_V2_LoadingPage from "@/app_modules/component_global/loading_page_v2"; +import { useAtom } from "jotai"; +import { gs_forum_loading_edit_posting } from "../global_state"; + +export default function Forum_Beranda() { + const router = useRouter(); + const skrng = Date.now(); + const [scroll, scrollTo] = useWindowScroll(); + const [loadingCreate, setLoadingCreate] = useState(false); + const [loadingKomen, setLoadingKomen] = useState(false); + const [loadingDetail, setLoaduingDetail] = useState(false); + + if (loadingDetail) return ; + if (loadingKomen) return ; + + return ( + <> + + 0 ? 0.5 : ""} + style={{ + transition: "0.5s", + }} + size={"xl"} + radius={"xl"} + variant="transparent" + bg={"blue"} + onClick={() => { + setLoadingCreate(true); + router.push(RouterForum.create); + }} + > + + + + + + {Array(5) + .fill(0) + .map((e, i) => ( + + + + + { + // console.log("halaman forum"); + setLoaduingDetail(true); + router.push(RouterForum.main_detail + i); + }} + > + + + Lorem ipsum dolor sit amet, consectetur adipisicing elit. + Ad, vitae. Quisquam aspernatur, eius consequatur dicta + repellendus facere vero recusandae deleniti voluptas quod + architecto, tenetur totam excepturi rem nam iusto earum. + + + + + + + { + setLoadingKomen(true); + router.push(RouterForum.komentar + i); + }} + > + + + 1 + + + + + + ))} + + + ); +} diff --git a/src/app_modules/forum/main/layout.tsx b/src/app_modules/forum/main/layout.tsx new file mode 100644 index 00000000..85ae4f3c --- /dev/null +++ b/src/app_modules/forum/main/layout.tsx @@ -0,0 +1,133 @@ +"use client"; + +import { + ActionIcon, + AppShell, + Avatar, + Center, + Footer, + Grid, + Group, + Header, + Stack, + Text, + Title, +} from "@mantine/core"; +import React, { useState } from "react"; +import ComponentForum_HeaderTamplate from "../component/header/header_tamplate"; +import { RouterHome } from "@/app/lib/router_hipmi/router_home"; +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { IconChevronLeft, IconCircle, IconHome } from "@tabler/icons-react"; +import router from "next/router"; +import { useRouter } from "next/navigation"; +import { title } from "process"; +import { MODEL_USER } from "@/app_modules/home/model/interface"; +import { RouterProfile } from "@/app/lib/router_hipmi/router_katalog"; + +export default function LayoutForum_Main({ + children, + dataAuthor, +}: { + children: React.ReactNode; + dataAuthor: MODEL_USER; +}) { + const router = useRouter(); + const [hotMenu, setHotMenu] = useState(1); + const [loading, setLoading] = useState(false); + + const listFooter = [ + { + id: 1, + name: "Beranda", + path: RouterForum.beranda, + icon: , + }, + + { + id: 2, + name: "ForumKu", + path: RouterForum.forumku, + icon: , + }, + ]; + + return ( + <> + + + { + return router.push(RouterHome.main_home); + }} + > + + + + Forum + { + setLoading(true); + router.push(RouterForum.forumku + dataAuthor?.id); + }} + > + + + + + } + + // footer={ + //
    + // + // {listFooter.map((e) => ( + // { + // router.replace(e.path); + // setHotMenu(e.id); + // }} + // > + //
    + // + // + // {e.icon} + // + // + // {e.name} + // + // + //
    + //
    + // ))} + //
    + //
    + // } + > + {children} +
    + + ); +} diff --git a/src/app_modules/forum/report/komentar/index.tsx b/src/app_modules/forum/report/komentar/index.tsx new file mode 100644 index 00000000..efdbd538 --- /dev/null +++ b/src/app_modules/forum/report/komentar/index.tsx @@ -0,0 +1,11 @@ +"use client" + +import { Stack } from "@mantine/core" + +export default function Forum_ReportKomentar({id}: {id: string}){ + return <> + + ini laporan + + +} \ No newline at end of file diff --git a/src/app_modules/forum/report/komentar/layout.tsx b/src/app_modules/forum/report/komentar/layout.tsx new file mode 100644 index 00000000..2a9c3d91 --- /dev/null +++ b/src/app_modules/forum/report/komentar/layout.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { ActionIcon, AppShell, Group, Header, Title } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../../component/header/header_tamplate"; +import { IconChevronLeft, IconX } from "@tabler/icons-react"; +import router from "next/router"; +import ComponentForum_HeaderRataKiri from "../../component/header/header_rata_kiri"; + +export default function LayoutForum_ReportKomentar({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/report/posting/index.tsx b/src/app_modules/forum/report/posting/index.tsx new file mode 100644 index 00000000..28fea8f8 --- /dev/null +++ b/src/app_modules/forum/report/posting/index.tsx @@ -0,0 +1,11 @@ +"use client" + +import { Stack } from "@mantine/core" + +export default function Forum_ReportPosting({id}: {id: string}){ + return <> + + ini laporan + + +} \ No newline at end of file diff --git a/src/app_modules/forum/report/posting/layout.tsx b/src/app_modules/forum/report/posting/layout.tsx new file mode 100644 index 00000000..8cb917eb --- /dev/null +++ b/src/app_modules/forum/report/posting/layout.tsx @@ -0,0 +1,26 @@ +"use client"; + +import { ActionIcon, AppShell, Group, Header, Title } from "@mantine/core"; +import React from "react"; +import ComponentForum_HeaderTamplate from "../../component/header/header_tamplate"; +import { IconChevronLeft, IconX } from "@tabler/icons-react"; +import router from "next/router"; +import ComponentForum_HeaderRataKiri from "../../component/header/header_rata_kiri"; + +export default function LayoutForum_ReportPosting({ + children, +}: { + children: React.ReactNode; +}) { + return ( + <> + + } + > + {children} + + + ); +} diff --git a/src/app_modules/forum/splash/index.tsx b/src/app_modules/forum/splash/index.tsx new file mode 100644 index 00000000..2d9e1281 --- /dev/null +++ b/src/app_modules/forum/splash/index.tsx @@ -0,0 +1,27 @@ +"use client"; + +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import { Center, Image, Paper } from "@mantine/core"; +import { useShallowEffect } from "@mantine/hooks"; +import { useRouter } from "next/navigation"; + +export default function Forum_Splash() { +const router = useRouter() + useShallowEffect(() => { + setTimeout(() => { + // setHotMenu(1); + // setStatus("Publish"); + router.replace(RouterForum.beranda); + }, 2000); + }, []); + + return ( + <> +
    + + logo + +
    + + ); +} diff --git a/src/app_modules/home/fun/get/get_one_user_by_id.ts b/src/app_modules/home/fun/get/get_one_user_by_id.ts index 1ceddd3a..132fb4a0 100644 --- a/src/app_modules/home/fun/get/get_one_user_by_id.ts +++ b/src/app_modules/home/fun/get/get_one_user_by_id.ts @@ -2,13 +2,14 @@ import prisma from "@/app/lib/prisma"; -export async function User_getOneById(userId: string) { +export async function user_getOneById(userId: string) { const data = await prisma.user.findFirst({ where: { id: userId, }, select: { id: true, + username: true, Profile: true, }, }); diff --git a/src/app_modules/home/view.tsx b/src/app_modules/home/view.tsx index 4e558468..80b6d85b 100644 --- a/src/app_modules/home/view.tsx +++ b/src/app_modules/home/view.tsx @@ -38,7 +38,8 @@ import { ComponentGlobal_NotifikasiPeringatan } from "../component_global/notif_ import { RouterJob } from "@/app/lib/router_hipmi/router_job"; import { useState } from "react"; import { useDisclosure } from "@mantine/hooks"; -import ComponentGlobal_LoadingPage from "../component_global/loading_page"; +import { RouterForum } from "@/app/lib/router_hipmi/router_forum"; +import ComponentGlobal_V2_LoadingPage from "../component_global/loading_page_v2"; export default function HomeView({ dataUser }: { dataUser: MODEL_USER }) { const router = useRouter(); @@ -51,7 +52,7 @@ export default function HomeView({ dataUser }: { dataUser: MODEL_USER }) { id: 1, name: "Forums", icon: , - link: "", + link: RouterForum.splash, }, { @@ -101,16 +102,7 @@ export default function HomeView({ dataUser }: { dataUser: MODEL_USER }) { return ( <> - {visible ? ( - - } - /> - - ) : ( - "" - )} + {visible ? : ""} diff --git a/yarn.lock b/yarn.lock index a4903cf7..ec82a380 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3717,6 +3717,11 @@ react-fast-marquee@^1.6.4: resolved "https://registry.yarnpkg.com/react-fast-marquee/-/react-fast-marquee-1.6.4.tgz#ac0bed0faee63e4d97e9b8cd03f3bea9f242fab3" integrity sha512-LAgvhRmHdqaUQ8R5jCUwzEGFUIjnCCt3T3W8X7j7wF6DWe0SATlpP0JX1V0pp2qX3DYUezmn1Iz5AtRFdL2EWQ== +react-icons@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-5.0.1.tgz#1694e11bfa2a2888cab47dcc30154ce90485feee" + integrity sha512-WqLZJ4bLzlhmsvme6iFdgO8gfZP17rfjYEJ2m9RsZjZ+cc4k1hTzknEz63YS1MeT50kVzoa1Nz36f4BEx+Wigw== + react-international-phone@^4.2.6: version "4.2.6" resolved "https://registry.yarnpkg.com/react-international-phone/-/react-international-phone-4.2.6.tgz#a92518b66b44015f5e32c96b646e0355056ae809"