diff --git a/apps/common/features/src/pages/(pst)/notice/ui/create-page.tsx b/apps/common/features/src/pages/(pst)/notice/ui/create-page.tsx
index ddbc22ece..37c21cb0d 100644
--- a/apps/common/features/src/pages/(pst)/notice/ui/create-page.tsx
+++ b/apps/common/features/src/pages/(pst)/notice/ui/create-page.tsx
@@ -36,7 +36,7 @@ function CreatePage({ bbsId }: { bbsId: string }) {
return (
diff --git a/apps/common/features/src/pages/(pst)/notice/ui/modify-page.tsx b/apps/common/features/src/pages/(pst)/notice/ui/modify-page.tsx
index d6114ab44..bd014917f 100644
--- a/apps/common/features/src/pages/(pst)/notice/ui/modify-page.tsx
+++ b/apps/common/features/src/pages/(pst)/notice/ui/modify-page.tsx
@@ -43,7 +43,7 @@ function ModifyPage({ bbsId, pstNo }: { bbsId: string; pstNo: string }) {
return (
diff --git a/apps/common/features/src/widgets/post/ui/post-form.tsx b/apps/common/features/src/widgets/post/ui/post-form.tsx
index 6f238ec2f..8192b0a51 100644
--- a/apps/common/features/src/widgets/post/ui/post-form.tsx
+++ b/apps/common/features/src/widgets/post/ui/post-form.tsx
@@ -1,4 +1,3 @@
-import dayjs from "dayjs";
import { useRouter } from "next/navigation";
import { useEffect, useState } from "react";
import { useQuery } from "@tanstack/react-query";
@@ -19,11 +18,9 @@ import {
TableHead,
TableRow,
Textarea,
- DateRangePicker,
FileUploader,
Button,
} from "@common/components";
-import { CodeSelect } from "@/entities/code";
import { handleTusUpload } from "@/entities/tus";
import { BOARD_POSTING_CODE, type Board } from "@/entities/board";
import { AttachmentApi, type Attachment } from "@/entities/attachment";
@@ -31,6 +28,7 @@ import type { Post, PostFormData, PostUpdateFormData } from "@/entities/post";
import { ENDPOINT } from "@/shared/config";
import { useUserStore, useAlertStore, setCookie } from "@/shared/lib";
import { Form, FormControl, FormField, FormItem } from "@/shared/ui/form";
+import { PostingPeriodSelector } from "./posting-period-selector";
type PostFormProps = {
form: UseFormReturn;
@@ -299,7 +297,7 @@ function PostForm({
return (
- ({
return (
- ({
return (
- ({
);
}
-type PostingDate = {
- pstgBgngDt: string | undefined;
- pstgEndDt: string | undefined;
-};
-
-const PeriodSelector = ({
- defaultValues,
- disabled,
- handlePeriodValueChange,
- handlePostingDateChange,
-}: {
- defaultValues?: {
- pstgPrdSeCd?: string | null;
- pstgBgngDt?: string | null;
- pstgEndDt?: string | null;
- };
- disabled: boolean;
- handlePeriodValueChange: (periodCode: string, date?: PostingDate) => void;
- handlePostingDateChange: (date?: PostingDate) => void;
-}) => {
- const [periodCode, setPeriodCode] = useState(null);
-
- const onPeriodCodeChange = (periodCode: string) => {
- setPeriodCode(periodCode);
- handlePeriodValueChange(periodCode, {
- pstgBgngDt: `${dayjs().format("YYYY-MM-DD 00:00:00")}`,
- pstgEndDt: `${dayjs().add(parseInt(periodCode), "day").format("YYYY-MM-DD 23:59:59")}`,
- });
- };
-
- const onDateChange = (date?: {
- from: Date | undefined;
- to?: Date | undefined;
- }) => {
- handlePostingDateChange({
- pstgBgngDt: dayjs(date?.from).format("YYYY-MM-DD 00:00:00"),
- pstgEndDt: dayjs(date?.to).format("YYYY-MM-DD 23:59:59"),
- });
- };
-
- const postingPeriodFormat = (periodCode: number | null) => {
- if (!periodCode) return "";
- if (periodCode === 99) return "상시";
- return `${dayjs().format("YYYY-MM-DD")} ~ ${dayjs()
- .add(periodCode, "day")
- .format("YYYY-MM-DD")}`;
- };
-
- return (
-
-
- {periodCode ? (
-
- 게시 기간: {postingPeriodFormat(parseInt(periodCode))}
-
- ) : (
- defaultValues?.pstgBgngDt &&
- defaultValues?.pstgEndDt && (
-
- 게시 기간:{" "}
-
- {dayjs(defaultValues?.pstgBgngDt).format("YYYY-MM-DD")} ~{" "}
- {dayjs(defaultValues?.pstgEndDt).format("YYYY-MM-DD")}
-
-
- )
- )}
- {periodCode === "0" && (
-
- )}
-
- );
-};
-
export { PostForm };
diff --git a/apps/common/features/src/widgets/post/ui/posting-period-selector.tsx b/apps/common/features/src/widgets/post/ui/posting-period-selector.tsx
new file mode 100644
index 000000000..1673df8c9
--- /dev/null
+++ b/apps/common/features/src/widgets/post/ui/posting-period-selector.tsx
@@ -0,0 +1,86 @@
+import dayjs from "dayjs";
+import { useState } from "react";
+import { CodeSelect } from "@/entities/code";
+import { DateRangePicker } from "@common/components";
+
+type PostingDate = {
+ pstgBgngDt: string | undefined;
+ pstgEndDt: string | undefined;
+};
+
+function PostingPeriodSelector({
+ defaultValues,
+ disabled,
+ handlePeriodValueChange,
+ handlePostingDateChange,
+}: {
+ defaultValues?: {
+ pstgPrdSeCd?: string | null;
+ pstgBgngDt?: string | null;
+ pstgEndDt?: string | null;
+ };
+ disabled: boolean;
+ handlePeriodValueChange: (periodCode: string, date?: PostingDate) => void;
+ handlePostingDateChange: (date?: PostingDate) => void;
+}) {
+ const [periodCode, setPeriodCode] = useState(null);
+
+ const onPeriodCodeChange = (periodCode: string) => {
+ setPeriodCode(periodCode);
+ handlePeriodValueChange(periodCode, {
+ pstgBgngDt: `${dayjs().format("YYYY-MM-DD 00:00:00")}`,
+ pstgEndDt: `${dayjs().add(parseInt(periodCode), "day").format("YYYY-MM-DD 23:59:59")}`,
+ });
+ };
+
+ const onDateChange = (date?: {
+ from: Date | undefined;
+ to?: Date | undefined;
+ }) => {
+ handlePostingDateChange({
+ pstgBgngDt: dayjs(date?.from).format("YYYY-MM-DD 00:00:00"),
+ pstgEndDt: dayjs(date?.to).format("YYYY-MM-DD 23:59:59"),
+ });
+ };
+
+ const postingPeriodFormat = (periodCode: number | null) => {
+ if (!periodCode) return "";
+ if (periodCode === 99) return "상시";
+ return `${dayjs().format("YYYY-MM-DD")} ~ ${dayjs()
+ .add(periodCode, "day")
+ .format("YYYY-MM-DD")}`;
+ };
+
+ return (
+
+
+ {periodCode ? (
+
+ 게시 기간: {postingPeriodFormat(parseInt(periodCode))}
+
+ ) : (
+ defaultValues?.pstgBgngDt &&
+ defaultValues?.pstgEndDt && (
+
+ 게시 기간:{" "}
+
+ {dayjs(defaultValues?.pstgBgngDt).format("YYYY-MM-DD")} ~{" "}
+ {dayjs(defaultValues?.pstgEndDt).format("YYYY-MM-DD")}
+
+
+ )
+ )}
+ {periodCode === "0" && (
+
+ )}
+
+ );
+}
+
+export { PostingPeriodSelector };