@bwg-ui/core 1.1.18 → 1.1.20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunks/BwgCheck-BDt8r0gn.js +200 -0
- package/dist/chunks/BwgCheck-BDt8r0gn.js.map +1 -0
- package/dist/chunks/BwgCheck-Dtzr-6rg.cjs +2 -0
- package/dist/chunks/BwgCheck-Dtzr-6rg.cjs.map +1 -0
- package/dist/chunks/{BwgLargeUploader-D6plJv5D.js → BwgDownload-CF_Zo2oU.js} +809 -908
- package/dist/chunks/BwgDownload-CF_Zo2oU.js.map +1 -0
- package/dist/chunks/BwgDownload-DvCaLWCL.cjs +3 -0
- package/dist/chunks/BwgDownload-DvCaLWCL.cjs.map +1 -0
- package/dist/chunks/SSOHandler-C7echUZs.cjs +236 -0
- package/dist/chunks/SSOHandler-C7echUZs.cjs.map +1 -0
- package/dist/chunks/{SSOHandler-yNjxYbHn.js → SSOHandler-Cr04mtMm.js} +10739 -8719
- package/dist/chunks/SSOHandler-Cr04mtMm.js.map +1 -0
- package/dist/chunks/{SearchBoxContext-CO1AyqH4.js → SearchBoxContext-C2ECWG9l.js} +7 -7
- package/dist/chunks/{SearchBoxContext-CO1AyqH4.js.map → SearchBoxContext-C2ECWG9l.js.map} +1 -1
- package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs → SearchBoxContext-aMXi2JmO.cjs} +2 -2
- package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs.map → SearchBoxContext-aMXi2JmO.cjs.map} +1 -1
- package/dist/chunks/{ViewContainer-BH7t9T4d.cjs → ViewContainer-DI7hvDi-.cjs} +2 -2
- package/dist/chunks/{ViewContainer-BH7t9T4d.cjs.map → ViewContainer-DI7hvDi-.cjs.map} +1 -1
- package/dist/chunks/{ViewContainer-CMbN_tYW.js → ViewContainer-DxhY26m3.js} +2 -2
- package/dist/chunks/{ViewContainer-CMbN_tYW.js.map → ViewContainer-DxhY26m3.js.map} +1 -1
- package/dist/chunks/apiUtils-BRaXRbjE.js +1428 -0
- package/dist/chunks/apiUtils-BRaXRbjE.js.map +1 -0
- package/dist/chunks/apiUtils-DL43X2ta.cjs +3 -0
- package/dist/chunks/apiUtils-DL43X2ta.cjs.map +1 -0
- package/dist/chunks/{codeStore-DTtOQhfW.cjs → codeStore-WWRT65Zk.cjs} +2 -2
- package/dist/chunks/{codeStore-DTtOQhfW.cjs.map → codeStore-WWRT65Zk.cjs.map} +1 -1
- package/dist/chunks/{codeStore-C0f5xZ_m.js → codeStore-kuUEfWSS.js} +2 -2
- package/dist/chunks/{codeStore-C0f5xZ_m.js.map → codeStore-kuUEfWSS.js.map} +1 -1
- package/dist/chunks/core-D7JhyoYH.cjs +2 -0
- package/dist/chunks/core-D7JhyoYH.cjs.map +1 -0
- package/dist/chunks/core-DLGhqegD.js +514 -0
- package/dist/chunks/core-DLGhqegD.js.map +1 -0
- package/dist/chunks/enc-base64-96WlVdPN.js +102 -0
- package/dist/chunks/enc-base64-96WlVdPN.js.map +1 -0
- package/dist/chunks/enc-base64-b9mIy966.cjs +2 -0
- package/dist/chunks/enc-base64-b9mIy966.cjs.map +1 -0
- package/dist/chunks/favoriteStore-D40XfOmq.js +439 -0
- package/dist/chunks/favoriteStore-D40XfOmq.js.map +1 -0
- package/dist/chunks/favoriteStore-DdGoghEn.cjs +2 -0
- package/dist/chunks/favoriteStore-DdGoghEn.cjs.map +1 -0
- package/dist/chunks/{popupStore-DGMxbQ--.cjs → popupStore-DKpp0bmC.cjs} +2 -2
- package/dist/chunks/{popupStore-DGMxbQ--.cjs.map → popupStore-DKpp0bmC.cjs.map} +1 -1
- package/dist/chunks/{popupStore-D1rxKTyJ.js → popupStore-axohgTV-.js} +2 -2
- package/dist/chunks/{popupStore-D1rxKTyJ.js.map → popupStore-axohgTV-.js.map} +1 -1
- package/dist/chunks/sha256-BMg1y0Py.js +79 -0
- package/dist/chunks/sha256-BMg1y0Py.js.map +1 -0
- package/dist/chunks/sha256-BxdSMFca.cjs +2 -0
- package/dist/chunks/sha256-BxdSMFca.cjs.map +1 -0
- package/dist/chunks/{usePopup-CdpFYf3m.cjs → usePopup-DYnRe9Th.cjs} +2 -2
- package/dist/chunks/{usePopup-CdpFYf3m.cjs.map → usePopup-DYnRe9Th.cjs.map} +1 -1
- package/dist/chunks/{usePopup-C1h8V04_.js → usePopup-Dftb7Bbl.js} +3 -3
- package/dist/chunks/{usePopup-C1h8V04_.js.map → usePopup-Dftb7Bbl.js.map} +1 -1
- package/dist/components/common/BookmarkMngModal.d.ts +16 -0
- package/dist/components/common/BookmarkMngModal.d.ts.map +1 -0
- package/dist/components/common/BookmarkPopver.d.ts +7 -0
- package/dist/components/common/BookmarkPopver.d.ts.map +1 -0
- package/dist/components/common/BwgDraggable.d.ts +25 -0
- package/dist/components/common/BwgDraggable.d.ts.map +1 -0
- package/dist/components/common/BwgEditor.d.ts +4 -0
- package/dist/components/common/BwgEditor.d.ts.map +1 -1
- package/dist/components/common/BwgGrid.d.ts +15 -3
- package/dist/components/common/BwgGrid.d.ts.map +1 -1
- package/dist/components/common/BwgPagination.d.ts +13 -0
- package/dist/components/common/BwgPagination.d.ts.map +1 -0
- package/dist/components/common/BwgView.d.ts.map +1 -1
- package/dist/components/common/SearchBox.d.ts.map +1 -1
- package/dist/components/common/index.cjs +1 -1
- package/dist/components/common/index.js +1 -1
- package/dist/components/core/BwgDownload.d.ts +33 -0
- package/dist/components/core/BwgDownload.d.ts.map +1 -0
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.d.ts +2 -0
- package/dist/components/core/index.d.ts.map +1 -1
- package/dist/components/core/index.js +21 -19
- package/dist/components/core/index.js.map +1 -1
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/popup/MenuReport.d.ts +8 -0
- package/dist/components/popup/MenuReport.d.ts.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +184 -181
- package/dist/index.js.map +1 -1
- package/dist/provider/index.cjs +1 -1
- package/dist/provider/index.js +2 -2
- package/dist/stores/favoriteStore.d.ts +81 -17
- package/dist/stores/favoriteStore.d.ts.map +1 -1
- package/dist/stores/index.cjs +1 -1
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/index.d.ts.map +1 -1
- package/dist/stores/index.js +6 -6
- package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
- package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
- package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
- package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
- package/dist/utils/apiUtils.d.ts +8 -0
- package/dist/utils/apiUtils.d.ts.map +1 -1
- package/dist/utils/commonUtils.d.ts.map +1 -1
- package/dist/utils/index.cjs +1 -1
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +89 -88
- package/dist/utils/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/chunks/BwgLargeUploader-D6plJv5D.js.map +0 -1
- package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs +0 -3
- package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs.map +0 -1
- package/dist/chunks/SSOHandler-DXnV_f_M.cjs +0 -236
- package/dist/chunks/SSOHandler-DXnV_f_M.cjs.map +0 -1
- package/dist/chunks/SSOHandler-yNjxYbHn.js.map +0 -1
- package/dist/chunks/apiUtils-BJRcT3Tm.js +0 -1315
- package/dist/chunks/apiUtils-BJRcT3Tm.js.map +0 -1
- package/dist/chunks/apiUtils-DEnQeWNI.cjs +0 -3
- package/dist/chunks/apiUtils-DEnQeWNI.cjs.map +0 -1
- package/dist/chunks/favoriteStore-Drhx0843.js +0 -111
- package/dist/chunks/favoriteStore-Drhx0843.js.map +0 -1
- package/dist/chunks/favoriteStore-Dyp89Kew.cjs +0 -2
- package/dist/chunks/favoriteStore-Dyp89Kew.cjs.map +0 -1
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { j as r } from "./jsx-runtime-Dpn_P65e.js";
|
|
2
|
+
import { Form as g, ConfigProvider as x, Select as F, Space as p, Typography as j, Input as y, DatePicker as b, Checkbox as C } from "antd";
|
|
3
|
+
import w, { forwardRef as M, useMemo as u } from "react";
|
|
4
|
+
import m from "dayjs";
|
|
5
|
+
const h = w.memo(
|
|
6
|
+
({
|
|
7
|
+
children: n,
|
|
8
|
+
label: e,
|
|
9
|
+
name: a,
|
|
10
|
+
rules: i,
|
|
11
|
+
initialValue: o,
|
|
12
|
+
style: s,
|
|
13
|
+
...c
|
|
14
|
+
}) => {
|
|
15
|
+
const l = {
|
|
16
|
+
fontWeight: "bold"
|
|
17
|
+
}, d = Array.isArray(i) && i.some((f) => f.required === !0), t = () => typeof e == "string" ? /* @__PURE__ */ r.jsxs("span", { style: l, children: [
|
|
18
|
+
e,
|
|
19
|
+
d && /* @__PURE__ */ r.jsx("span", { style: { color: "#ff4d4f", marginLeft: "4px" }, children: "*" })
|
|
20
|
+
] }) : /* @__PURE__ */ r.jsx("span", { style: l, children: e });
|
|
21
|
+
return /* @__PURE__ */ r.jsx(
|
|
22
|
+
g.Item,
|
|
23
|
+
{
|
|
24
|
+
className: "bwg-form-item",
|
|
25
|
+
label: e ? t() : void 0,
|
|
26
|
+
labelAlign: "left",
|
|
27
|
+
name: a,
|
|
28
|
+
rules: i,
|
|
29
|
+
colon: !1,
|
|
30
|
+
initialValue: o,
|
|
31
|
+
style: s,
|
|
32
|
+
...c,
|
|
33
|
+
children: n
|
|
34
|
+
}
|
|
35
|
+
);
|
|
36
|
+
}
|
|
37
|
+
), k = M(
|
|
38
|
+
({ children: n, labelCol: e, style: a, className: i, ...o }, s) => /* @__PURE__ */ r.jsx(
|
|
39
|
+
x,
|
|
40
|
+
{
|
|
41
|
+
form: {
|
|
42
|
+
//기존 rule.message의 default message인 $name을를 입력해주세요를 변경
|
|
43
|
+
validateMessages: { required: "'${label}을(를) 입력해주세요.'" }
|
|
44
|
+
},
|
|
45
|
+
children: /* @__PURE__ */ r.jsx(
|
|
46
|
+
g,
|
|
47
|
+
{
|
|
48
|
+
ref: s,
|
|
49
|
+
...o,
|
|
50
|
+
requiredMark: !1,
|
|
51
|
+
labelCol: e || { flex: "100px" },
|
|
52
|
+
style: { padding: "10px", ...a },
|
|
53
|
+
className: `bwg-form ${i ?? ""}`,
|
|
54
|
+
children: n
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
}
|
|
58
|
+
)
|
|
59
|
+
);
|
|
60
|
+
k.displayName = "BwgForm";
|
|
61
|
+
const S = ({
|
|
62
|
+
itemProps: n,
|
|
63
|
+
selectProps: e = {
|
|
64
|
+
options: [],
|
|
65
|
+
allowClear: !0
|
|
66
|
+
}
|
|
67
|
+
}) => {
|
|
68
|
+
const a = g.useFormInstance(), i = !!a, o = u(() => e?.addField === "ALL" ? [{ label: "전체", value: "" }, ...e?.options || []] : e?.addField === "NULL" ? [{ label: "", value: "" }, ...e?.options || []] : e?.options || [], [e.options, e.addField]), s = (d) => {
|
|
69
|
+
e.onChange?.(d);
|
|
70
|
+
}, c = {
|
|
71
|
+
...e,
|
|
72
|
+
allowClear: e.allowClear ?? !0,
|
|
73
|
+
options: o,
|
|
74
|
+
onChange: s,
|
|
75
|
+
variant: e.variant
|
|
76
|
+
}, l = /* @__PURE__ */ r.jsx(F, { ...c, disabled: e.disabled });
|
|
77
|
+
return e.copyable && !i && console.warn(
|
|
78
|
+
"BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다."
|
|
79
|
+
), e.copyable ? /* @__PURE__ */ r.jsx(h, { ...n, children: /* @__PURE__ */ r.jsxs(p.Compact, { block: !0, children: [
|
|
80
|
+
/* @__PURE__ */ r.jsx(
|
|
81
|
+
g.Item,
|
|
82
|
+
{
|
|
83
|
+
name: n?.name,
|
|
84
|
+
rules: n?.rules,
|
|
85
|
+
style: { width: "100%", marginBottom: 0 },
|
|
86
|
+
validateStatus: "",
|
|
87
|
+
help: "",
|
|
88
|
+
children: l
|
|
89
|
+
}
|
|
90
|
+
),
|
|
91
|
+
/* @__PURE__ */ r.jsx(
|
|
92
|
+
j.Paragraph,
|
|
93
|
+
{
|
|
94
|
+
copyable: {
|
|
95
|
+
text: i && a?.getFieldValue(n?.name)?.toString() || "",
|
|
96
|
+
tooltips: ["코드복사", "코드복사됨"]
|
|
97
|
+
},
|
|
98
|
+
style: {
|
|
99
|
+
margin: 0,
|
|
100
|
+
backgroundColor: "#f5f5f5",
|
|
101
|
+
borderRadius: "4px",
|
|
102
|
+
border: "1px solid #d9d9d9",
|
|
103
|
+
fontSize: "12px",
|
|
104
|
+
color: "#666",
|
|
105
|
+
display: "flex",
|
|
106
|
+
alignItems: "center",
|
|
107
|
+
height: "30px",
|
|
108
|
+
padding: "0 8px"
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
)
|
|
112
|
+
] }) }) : /* @__PURE__ */ r.jsx(h, { ...n, children: l });
|
|
113
|
+
}, L = ({ itemProps: n, inputProps: e }) => /* @__PURE__ */ r.jsx(h, { ...n, children: /* @__PURE__ */ r.jsx(y, { ...e }) }), { RangePicker: B } = b, Y = {
|
|
114
|
+
year: { displayFormat: "YYYY", outputFormat: "YYYY" },
|
|
115
|
+
month: { displayFormat: "YYYY-MM", outputFormat: "YYYYMM" },
|
|
116
|
+
date: { displayFormat: "YYYY-MM-DD", outputFormat: "YYYYMMDD" },
|
|
117
|
+
time: { displayFormat: "HH:mm", outputFormat: "HHmm" },
|
|
118
|
+
datetime: {
|
|
119
|
+
displayFormat: "YYYY-MM-DD HH:mm",
|
|
120
|
+
outputFormat: "YYYYMMDDHHmm"
|
|
121
|
+
}
|
|
122
|
+
}, R = ({
|
|
123
|
+
itemProps: n,
|
|
124
|
+
inputProps: e,
|
|
125
|
+
type: a = "date",
|
|
126
|
+
minDate: i,
|
|
127
|
+
maxDate: o,
|
|
128
|
+
returnType: s = "string"
|
|
129
|
+
}) => {
|
|
130
|
+
const { displayFormat: c, outputFormat: l } = u(
|
|
131
|
+
() => Y[a],
|
|
132
|
+
[a]
|
|
133
|
+
), d = u(
|
|
134
|
+
() => Object.values(Y).map((t) => t.outputFormat).sort((t, f) => {
|
|
135
|
+
if (t.length === f.length) {
|
|
136
|
+
if (t === l) return -1;
|
|
137
|
+
if (f === l) return 1;
|
|
138
|
+
}
|
|
139
|
+
return f.length - t.length;
|
|
140
|
+
}),
|
|
141
|
+
[l]
|
|
142
|
+
// type(outputFormat)이 바뀔 때마다 재정렬
|
|
143
|
+
);
|
|
144
|
+
return /* @__PURE__ */ r.jsx(
|
|
145
|
+
h,
|
|
146
|
+
{
|
|
147
|
+
...n,
|
|
148
|
+
getValueProps: (t) => ({
|
|
149
|
+
// 폼에 저장된 값(문자열 또는 Dayjs)을 RangePicker가 요구하는 Dayjs 배열로 변환
|
|
150
|
+
value: t && t.length > 0 ? [
|
|
151
|
+
t[0] ? m.isDayjs(t[0]) ? t[0] : m(t[0], d) : null,
|
|
152
|
+
t[1] ? m.isDayjs(t[1]) ? t[1] : m(t[1], d) : null
|
|
153
|
+
] : null
|
|
154
|
+
}),
|
|
155
|
+
normalize: (t) => t ? s === "dayjs" ? [t[0] ?? void 0, t[1] ?? void 0] : [
|
|
156
|
+
t[0] ? t[0].format(l) : void 0,
|
|
157
|
+
t[1] ? t[1].format(l) : void 0
|
|
158
|
+
] : [void 0, void 0],
|
|
159
|
+
children: /* @__PURE__ */ r.jsx(
|
|
160
|
+
B,
|
|
161
|
+
{
|
|
162
|
+
...e,
|
|
163
|
+
order: !0,
|
|
164
|
+
minDate: i ? m(i, d) : void 0,
|
|
165
|
+
maxDate: o ? m(o, d) : void 0,
|
|
166
|
+
picker: a === "datetime" ? "date" : a,
|
|
167
|
+
showTime: e?.showTime ?? (a === "datetime" || a === "time"),
|
|
168
|
+
format: c
|
|
169
|
+
}
|
|
170
|
+
)
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
}, V = ({
|
|
174
|
+
itemProps: n,
|
|
175
|
+
inputProps: e = {
|
|
176
|
+
format: "YN"
|
|
177
|
+
}
|
|
178
|
+
}) => {
|
|
179
|
+
const a = g.useFormInstance(), i = (o) => {
|
|
180
|
+
e.format === "boolean" ? a.setFieldValue(n?.name, o.target.checked) : a.setFieldValue(n?.name, o.target.checked ? "Y" : "N"), e.onChange && e.onChange(o);
|
|
181
|
+
};
|
|
182
|
+
return /* @__PURE__ */ r.jsx(
|
|
183
|
+
h,
|
|
184
|
+
{
|
|
185
|
+
...n,
|
|
186
|
+
getValueProps: (o) => (console.log("getValueProps :: ", o), { checked: e.format === "boolean" ? !!o : o === "Y" }),
|
|
187
|
+
normalize: (o) => (console.log("normalize :: ", o), typeof o == "boolean" ? e.format === "boolean" ? o : o ? "Y" : "N" : e.format === "boolean" ? !!o : o ? "Y" : "N"),
|
|
188
|
+
children: /* @__PURE__ */ r.jsx(C, { ...e, onChange: i, children: e?.title })
|
|
189
|
+
}
|
|
190
|
+
);
|
|
191
|
+
};
|
|
192
|
+
export {
|
|
193
|
+
h as B,
|
|
194
|
+
k as a,
|
|
195
|
+
S as b,
|
|
196
|
+
L as c,
|
|
197
|
+
R as d,
|
|
198
|
+
V as e
|
|
199
|
+
};
|
|
200
|
+
//# sourceMappingURL=BwgCheck-BDt8r0gn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BwgCheck-BDt8r0gn.js","sources":["../../src/components/core/BwgFormItem.tsx","../../src/components/core/BwgForm.tsx","../../src/components/core/BwgSelect.tsx","../../src/components/core/BwgInput.tsx","../../src/components/core/BwgRangePicker.tsx","../../src/components/core/BwgCheck.tsx"],"sourcesContent":["import { Form, FormItemProps } from \"antd\";\r\nimport React from \"react\";\r\n\r\nexport interface BwgFormItemProps extends FormItemProps {\r\n /** 폼 아이템 이름 */\r\n name?: string | string[];\r\n /** 폼 아이템 라벨 */\r\n label?: string | React.ReactNode;\r\n /** 폼 아이템 규칙 */\r\n rules?: any;\r\n /** 폼 아이템 초기값 */\r\n initialValue?: any;\r\n /** 폼 아이템 자식 컴포넌트 */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** 입력 폼 아이템 컴포넌트 */\r\nconst BwgFormItem = React.memo(\r\n ({\r\n children,\r\n label,\r\n name,\r\n rules,\r\n initialValue,\r\n style,\r\n ...rest\r\n }: BwgFormItemProps) => {\r\n const labelStyle = {\r\n fontWeight: \"bold\",\r\n };\r\n\r\n // rules에서 required 필드 확인\r\n const isRequired =\r\n Array.isArray(rules) && rules.some((rule: any) => rule.required === true);\r\n\r\n // 라벨 렌더링 함수\r\n const renderLabel = () => {\r\n if (typeof label === \"string\") {\r\n return (\r\n <span style={labelStyle}>\r\n {label}\r\n {isRequired && (\r\n <span style={{ color: \"#ff4d4f\", marginLeft: \"4px\" }}>*</span>\r\n )}\r\n </span>\r\n );\r\n }\r\n return <span style={labelStyle}>{label}</span>;\r\n };\r\n\r\n return (\r\n <Form.Item\r\n className=\"bwg-form-item\"\r\n label={label ? renderLabel() : undefined}\r\n labelAlign=\"left\"\r\n name={name}\r\n rules={rules}\r\n colon={false}\r\n initialValue={initialValue}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </Form.Item>\r\n );\r\n }\r\n);\r\n\r\nexport default BwgFormItem;\r\n","import { ConfigProvider, Form, FormProps } from \"antd\";\r\nimport { forwardRef } from \"react\";\r\n\r\nexport interface BwgFormProps extends FormProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst BwgForm = forwardRef<any, BwgFormProps>(\r\n ({ children, labelCol, style, className, ...props }, ref) => {\r\n return (\r\n <ConfigProvider\r\n form={{\r\n //기존 rule.message의 default message인 $name을를 입력해주세요를 변경\r\n validateMessages: { required: \"'${label}을(를) 입력해주세요.'\" },\r\n }}\r\n >\r\n <Form\r\n ref={ref}\r\n {...props}\r\n requiredMark={false}\r\n labelCol={labelCol || { flex: \"100px\" }}\r\n style={{ padding: \"10px\", ...style }}\r\n className={`bwg-form ${className ?? \"\"}`}\r\n >\r\n {children}\r\n </Form>\r\n </ConfigProvider>\r\n );\r\n }\r\n);\r\n\r\nBwgForm.displayName = \"BwgForm\";\r\n\r\nexport default BwgForm;\r\n","import { useMemo } from \"react\";\r\nimport { Form, Select, Space, Typography } from \"antd\";\r\nimport { LabeledValue, SelectProps } from \"antd/es/select\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { SimpleCodeItem } from \"../../stores/codeStore\";\r\n\r\nexport type SelectBoxProps = SelectProps & {\r\n addField?: \"ALL\" | \"NULL\";\r\n options: SimpleCodeItem[];\r\n copyable?: boolean;\r\n};\r\n\r\nexport interface BwgSelectProps {\r\n /** 폼 아이템 속성 */\r\n itemProps?: BwgFormItemProps;\r\n selectProps?: SelectBoxProps;\r\n}\r\n\r\nconst BwgSelect = ({\r\n itemProps,\r\n selectProps = {\r\n options: [],\r\n allowClear: true,\r\n },\r\n}: BwgSelectProps) => {\r\n // Form 컨텍스트 체크\r\n const form = Form.useFormInstance();\r\n const isFormContext = !!form;\r\n\r\n // 옵션 리스트 메모이제이션\r\n const optionList = useMemo(() => {\r\n if (selectProps?.addField === \"ALL\") {\r\n return [{ label: \"전체\", value: \"\" }, ...(selectProps?.options || [])];\r\n } else if (selectProps?.addField === \"NULL\") {\r\n return [{ label: \"\", value: \"\" }, ...(selectProps?.options || [])];\r\n } else {\r\n return selectProps?.options || [];\r\n }\r\n }, [selectProps.options, selectProps.addField]);\r\n\r\n const handleChange = (newValue: string) => {\r\n selectProps.onChange?.(newValue);\r\n };\r\n\r\n // Select 컴포넌트에 전달할 props\r\n const selectComponentProps = {\r\n ...selectProps,\r\n allowClear: selectProps.allowClear ?? true,\r\n options: optionList,\r\n onChange: handleChange,\r\n variant: selectProps.variant,\r\n };\r\n\r\n // console.log(\"selectComponentProps :: \", selectComponentProps);\r\n\r\n const selectComponent = (\r\n <Select {...selectComponentProps} disabled={selectProps.disabled} />\r\n );\r\n\r\n // copyable일 때 Form 컨텍스트 체크\r\n if (selectProps.copyable && !isFormContext) {\r\n console.warn(\r\n \"BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다.\"\r\n );\r\n }\r\n\r\n if (selectProps.copyable) {\r\n return (\r\n <BwgFormItem {...itemProps}>\r\n <Space.Compact block>\r\n <Form.Item\r\n name={itemProps?.name}\r\n rules={itemProps?.rules}\r\n style={{ width: \"100%\", marginBottom: 0 }}\r\n validateStatus=\"\"\r\n help=\"\"\r\n >\r\n {selectComponent}\r\n </Form.Item>\r\n <Typography.Paragraph\r\n copyable={{\r\n text: isFormContext\r\n ? form?.getFieldValue(itemProps?.name)?.toString() || \"\"\r\n : \"\",\r\n tooltips: [\"코드복사\", \"코드복사됨\"],\r\n }}\r\n style={{\r\n margin: 0,\r\n backgroundColor: \"#f5f5f5\",\r\n borderRadius: \"4px\",\r\n border: \"1px solid #d9d9d9\",\r\n fontSize: \"12px\",\r\n color: \"#666\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: \"30px\",\r\n padding: \"0 8px\",\r\n }}\r\n />\r\n </Space.Compact>\r\n </BwgFormItem>\r\n );\r\n } else {\r\n return <BwgFormItem {...itemProps}>{selectComponent}</BwgFormItem>;\r\n }\r\n};\r\n\r\nexport default BwgSelect;\r\n","import React from 'react';\r\nimport { Input, InputProps } from 'antd';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\r\n\r\nexport interface BwgInputProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: InputProps;\r\n}\r\n\r\nconst BwgInput: React.FC<BwgInputProps> = ({ itemProps, inputProps }) => {\r\n return (\r\n <BwgFormItem {...itemProps}>\r\n <Input {...inputProps} />\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgInput;\r\n","import React, { useMemo } from \"react\";\r\nimport { DatePicker } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { RangePickerProps } from \"antd/es/date-picker\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\n\r\nconst { RangePicker } = DatePicker;\r\n\r\nexport interface BwgRangePickerProps {\r\n inputProps?: RangePickerProps;\r\n itemProps?: BwgFormItemProps;\r\n type?: \"year\" | \"month\" | \"date\" | \"time\" | \"datetime\";\r\n minDate?: string;\r\n maxDate?: string;\r\n returnType?: \"dayjs\" | \"string\";\r\n}\r\n\r\nconst formatMap = {\r\n year: { displayFormat: \"YYYY\", outputFormat: \"YYYY\" },\r\n month: { displayFormat: \"YYYY-MM\", outputFormat: \"YYYYMM\" },\r\n date: { displayFormat: \"YYYY-MM-DD\", outputFormat: \"YYYYMMDD\" },\r\n time: { displayFormat: \"HH:mm\", outputFormat: \"HHmm\" },\r\n datetime: {\r\n displayFormat: \"YYYY-MM-DD HH:mm\",\r\n outputFormat: \"YYYYMMDDHHmm\",\r\n },\r\n};\r\n\r\nconst BwgRangePicker = ({\r\n itemProps,\r\n inputProps,\r\n type = \"date\",\r\n minDate,\r\n maxDate,\r\n returnType = \"string\",\r\n}: BwgRangePickerProps) => {\r\n // type이 변경될 때 format이 업데이트되도록 useMemo를 사용합니다.\r\n const { displayFormat, outputFormat } = useMemo(\r\n () => formatMap[type],\r\n [type]\r\n );\r\n\r\n // 현재 type의 포맷을 우선순위로 두어 파싱 순서 결정\r\n const allOutputFormats = useMemo(\r\n () =>\r\n Object.values(formatMap)\r\n .map((f) => f.outputFormat)\r\n .sort((a, b) => {\r\n if (a.length === b.length) {\r\n if (a === outputFormat) return -1; // 현재 포맷이면 우선순위를 높인다\r\n if (b === outputFormat) return 1;\r\n }\r\n return b.length - a.length;\r\n }),\r\n [outputFormat] // type(outputFormat)이 바뀔 때마다 재정렬\r\n );\r\n return (\r\n <BwgFormItem\r\n {...itemProps}\r\n getValueProps={(value) => ({\r\n // 폼에 저장된 값(문자열 또는 Dayjs)을 RangePicker가 요구하는 Dayjs 배열로 변환\r\n value:\r\n value && value.length > 0\r\n ? [\r\n value[0]\r\n ? dayjs.isDayjs(value[0])\r\n ? (value[0] as Dayjs)\r\n : dayjs(value[0] as any, allOutputFormats)\r\n : null,\r\n value[1]\r\n ? dayjs.isDayjs(value[1])\r\n ? (value[1] as Dayjs)\r\n : dayjs(value[1] as any, allOutputFormats)\r\n : null,\r\n ]\r\n : null,\r\n })}\r\n normalize={(value: [Dayjs, Dayjs] | null) => {\r\n // RangePicker에서 넘어온 dayjs 객체 배열을 현재 type에 맞는 outputFormat으로 변환합니다.\r\n if (!value) {\r\n return [undefined, undefined];\r\n }\r\n if (returnType === \"dayjs\") {\r\n return [value[0] ?? undefined, value[1] ?? undefined];\r\n }\r\n return [\r\n value[0] ? value[0].format(outputFormat) : undefined,\r\n value[1] ? value[1].format(outputFormat) : undefined,\r\n ];\r\n }}\r\n >\r\n <RangePicker\r\n {...inputProps}\r\n order={true}\r\n // minDate/maxDate도 모든 포맷으로 파싱하도록 수정\r\n minDate={minDate ? dayjs(minDate, allOutputFormats) : undefined}\r\n maxDate={maxDate ? dayjs(maxDate, allOutputFormats) : undefined}\r\n // antd DatePicker는 type 대신 picker와 showTime 속성을 사용합니다.\r\n picker={type === \"datetime\" ? \"date\" : type}\r\n showTime={\r\n inputProps?.showTime ?? (type === \"datetime\" || type === \"time\")\r\n }\r\n // useMask 속성 관련 로직이 불분명하고, displayFormat을 직접 사용하는 것이 더 확실합니다.\r\n format={displayFormat}\r\n // onChange 이벤트는 BwgFormItem의 normalize로 처리하므로 제거합니다.\r\n />\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgRangePicker;\r\n","import { Checkbox, CheckboxProps, Form } from 'antd';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\r\n\r\nexport type BwgCheckBoxProps = CheckboxProps & {\r\n format?: 'boolean' | 'YN';\r\n};\r\n\r\nexport interface BwgCheckProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: BwgCheckBoxProps;\r\n}\r\n\r\nconst BwgCheck = ({\r\n itemProps,\r\n inputProps = {\r\n format: 'YN',\r\n },\r\n}: BwgCheckProps) => {\r\n const form = Form.useFormInstance();\r\n\r\n const handleChange = (e: any) => {\r\n //console.log('handleChange :: ', e.target.checked);\r\n if (inputProps.format === 'boolean') {\r\n form.setFieldValue(itemProps?.name, e.target.checked);\r\n } else {\r\n form.setFieldValue(itemProps?.name, e.target.checked ? 'Y' : 'N');\r\n }\r\n\r\n inputProps.onChange && inputProps.onChange(e);\r\n };\r\n\r\n return (\r\n <BwgFormItem\r\n {...itemProps}\r\n getValueProps={value => {\r\n console.log('getValueProps :: ', value);\r\n const checked =\r\n inputProps.format === 'boolean'\r\n ? Boolean(value)\r\n : value === 'Y'\r\n ? true\r\n : false;\r\n return { checked }; // ✅ 수정: value 대신 checked 반환\r\n }}\r\n normalize={value => {\r\n console.log('normalize :: ', value);\r\n // 체크박스의 경우 e.target.checked 값이 전달되므로 이를 처리\r\n if (typeof value === 'boolean') {\r\n if (inputProps.format === 'boolean') {\r\n return value;\r\n }\r\n return value ? 'Y' : 'N';\r\n }\r\n // 문자열이나 다른 값의 경우 기존 로직 유지\r\n if (inputProps.format === 'boolean') {\r\n return !!value;\r\n }\r\n return value ? 'Y' : 'N';\r\n }}\r\n >\r\n <Checkbox {...inputProps} onChange={handleChange}>\r\n {inputProps?.title}\r\n </Checkbox>\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgCheck;\r\n"],"names":["BwgFormItem","React","children","label","name","rules","initialValue","style","rest","labelStyle","isRequired","rule","renderLabel","jsxs","jsx","Form","BwgForm","forwardRef","labelCol","className","props","ref","ConfigProvider","BwgSelect","itemProps","selectProps","form","isFormContext","optionList","useMemo","handleChange","newValue","selectComponentProps","selectComponent","Select","Space","Typography","BwgInput","inputProps","Input","RangePicker","DatePicker","formatMap","BwgRangePicker","type","minDate","maxDate","returnType","displayFormat","outputFormat","allOutputFormats","f","a","b","value","dayjs","BwgCheck","e","Checkbox"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";const r=require("./jsx-runtime-CeSfJrVB.cjs"),i=require("antd"),f=require("react"),c=require("dayjs"),x=f.memo(({children:n,label:e,name:s,rules:a,initialValue:o,style:l,...u})=>{const m={fontWeight:"bold"},d=Array.isArray(a)&&a.some(g=>g.required===!0),t=()=>typeof e=="string"?r.jsxRuntimeExports.jsxs("span",{style:m,children:[e,d&&r.jsxRuntimeExports.jsx("span",{style:{color:"#ff4d4f",marginLeft:"4px"},children:"*"})]}):r.jsxRuntimeExports.jsx("span",{style:m,children:e});return r.jsxRuntimeExports.jsx(i.Form.Item,{className:"bwg-form-item",label:e?t():void 0,labelAlign:"left",name:s,rules:a,colon:!1,initialValue:o,style:l,...u,children:n})}),j=f.forwardRef(({children:n,labelCol:e,style:s,className:a,...o},l)=>r.jsxRuntimeExports.jsx(i.ConfigProvider,{form:{validateMessages:{required:"'${label}을(를) 입력해주세요.'"}},children:r.jsxRuntimeExports.jsx(i.Form,{ref:l,...o,requiredMark:!1,labelCol:e||{flex:"100px"},style:{padding:"10px",...s},className:`bwg-form ${a??""}`,children:n})}));j.displayName="BwgForm";const p=({itemProps:n,selectProps:e={options:[],allowClear:!0}})=>{const s=i.Form.useFormInstance(),a=!!s,o=f.useMemo(()=>e?.addField==="ALL"?[{label:"전체",value:""},...e?.options||[]]:e?.addField==="NULL"?[{label:"",value:""},...e?.options||[]]:e?.options||[],[e.options,e.addField]),l=d=>{e.onChange?.(d)},u={...e,allowClear:e.allowClear??!0,options:o,onChange:l,variant:e.variant},m=r.jsxRuntimeExports.jsx(i.Select,{...u,disabled:e.disabled});return e.copyable&&!a&&console.warn("BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다."),e.copyable?r.jsxRuntimeExports.jsx(x,{...n,children:r.jsxRuntimeExports.jsxs(i.Space.Compact,{block:!0,children:[r.jsxRuntimeExports.jsx(i.Form.Item,{name:n?.name,rules:n?.rules,style:{width:"100%",marginBottom:0},validateStatus:"",help:"",children:m}),r.jsxRuntimeExports.jsx(i.Typography.Paragraph,{copyable:{text:a&&s?.getFieldValue(n?.name)?.toString()||"",tooltips:["코드복사","코드복사됨"]},style:{margin:0,backgroundColor:"#f5f5f5",borderRadius:"4px",border:"1px solid #d9d9d9",fontSize:"12px",color:"#666",display:"flex",alignItems:"center",height:"30px",padding:"0 8px"}})]})}):r.jsxRuntimeExports.jsx(x,{...n,children:m})},Y=({itemProps:n,inputProps:e})=>r.jsxRuntimeExports.jsx(x,{...n,children:r.jsxRuntimeExports.jsx(i.Input,{...e})}),{RangePicker:F}=i.DatePicker,h={year:{displayFormat:"YYYY",outputFormat:"YYYY"},month:{displayFormat:"YYYY-MM",outputFormat:"YYYYMM"},date:{displayFormat:"YYYY-MM-DD",outputFormat:"YYYYMMDD"},time:{displayFormat:"HH:mm",outputFormat:"HHmm"},datetime:{displayFormat:"YYYY-MM-DD HH:mm",outputFormat:"YYYYMMDDHHmm"}},R=({itemProps:n,inputProps:e,type:s="date",minDate:a,maxDate:o,returnType:l="string"})=>{const{displayFormat:u,outputFormat:m}=f.useMemo(()=>h[s],[s]),d=f.useMemo(()=>Object.values(h).map(t=>t.outputFormat).sort((t,g)=>{if(t.length===g.length){if(t===m)return-1;if(g===m)return 1}return g.length-t.length}),[m]);return r.jsxRuntimeExports.jsx(x,{...n,getValueProps:t=>({value:t&&t.length>0?[t[0]?c.isDayjs(t[0])?t[0]:c(t[0],d):null,t[1]?c.isDayjs(t[1])?t[1]:c(t[1],d):null]:null}),normalize:t=>t?l==="dayjs"?[t[0]??void 0,t[1]??void 0]:[t[0]?t[0].format(m):void 0,t[1]?t[1].format(m):void 0]:[void 0,void 0],children:r.jsxRuntimeExports.jsx(F,{...e,order:!0,minDate:a?c(a,d):void 0,maxDate:o?c(o,d):void 0,picker:s==="datetime"?"date":s,showTime:e?.showTime??(s==="datetime"||s==="time"),format:u})})},y=({itemProps:n,inputProps:e={format:"YN"}})=>{const s=i.Form.useFormInstance(),a=o=>{e.format==="boolean"?s.setFieldValue(n?.name,o.target.checked):s.setFieldValue(n?.name,o.target.checked?"Y":"N"),e.onChange&&e.onChange(o)};return r.jsxRuntimeExports.jsx(x,{...n,getValueProps:o=>(console.log("getValueProps :: ",o),{checked:e.format==="boolean"?!!o:o==="Y"}),normalize:o=>(console.log("normalize :: ",o),typeof o=="boolean"?e.format==="boolean"?o:o?"Y":"N":e.format==="boolean"?!!o:o?"Y":"N"),children:r.jsxRuntimeExports.jsx(i.Checkbox,{...e,onChange:a,children:e?.title})})};exports.BwgCheck=y;exports.BwgForm=j;exports.BwgFormItem=x;exports.BwgInput=Y;exports.BwgRangePicker=R;exports.BwgSelect=p;
|
|
2
|
+
//# sourceMappingURL=BwgCheck-Dtzr-6rg.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BwgCheck-Dtzr-6rg.cjs","sources":["../../src/components/core/BwgFormItem.tsx","../../src/components/core/BwgForm.tsx","../../src/components/core/BwgSelect.tsx","../../src/components/core/BwgInput.tsx","../../src/components/core/BwgRangePicker.tsx","../../src/components/core/BwgCheck.tsx"],"sourcesContent":["import { Form, FormItemProps } from \"antd\";\r\nimport React from \"react\";\r\n\r\nexport interface BwgFormItemProps extends FormItemProps {\r\n /** 폼 아이템 이름 */\r\n name?: string | string[];\r\n /** 폼 아이템 라벨 */\r\n label?: string | React.ReactNode;\r\n /** 폼 아이템 규칙 */\r\n rules?: any;\r\n /** 폼 아이템 초기값 */\r\n initialValue?: any;\r\n /** 폼 아이템 자식 컴포넌트 */\r\n children?: React.ReactNode;\r\n}\r\n\r\n/** 입력 폼 아이템 컴포넌트 */\r\nconst BwgFormItem = React.memo(\r\n ({\r\n children,\r\n label,\r\n name,\r\n rules,\r\n initialValue,\r\n style,\r\n ...rest\r\n }: BwgFormItemProps) => {\r\n const labelStyle = {\r\n fontWeight: \"bold\",\r\n };\r\n\r\n // rules에서 required 필드 확인\r\n const isRequired =\r\n Array.isArray(rules) && rules.some((rule: any) => rule.required === true);\r\n\r\n // 라벨 렌더링 함수\r\n const renderLabel = () => {\r\n if (typeof label === \"string\") {\r\n return (\r\n <span style={labelStyle}>\r\n {label}\r\n {isRequired && (\r\n <span style={{ color: \"#ff4d4f\", marginLeft: \"4px\" }}>*</span>\r\n )}\r\n </span>\r\n );\r\n }\r\n return <span style={labelStyle}>{label}</span>;\r\n };\r\n\r\n return (\r\n <Form.Item\r\n className=\"bwg-form-item\"\r\n label={label ? renderLabel() : undefined}\r\n labelAlign=\"left\"\r\n name={name}\r\n rules={rules}\r\n colon={false}\r\n initialValue={initialValue}\r\n style={style}\r\n {...rest}\r\n >\r\n {children}\r\n </Form.Item>\r\n );\r\n }\r\n);\r\n\r\nexport default BwgFormItem;\r\n","import { ConfigProvider, Form, FormProps } from \"antd\";\r\nimport { forwardRef } from \"react\";\r\n\r\nexport interface BwgFormProps extends FormProps {\r\n children: React.ReactNode;\r\n}\r\n\r\nconst BwgForm = forwardRef<any, BwgFormProps>(\r\n ({ children, labelCol, style, className, ...props }, ref) => {\r\n return (\r\n <ConfigProvider\r\n form={{\r\n //기존 rule.message의 default message인 $name을를 입력해주세요를 변경\r\n validateMessages: { required: \"'${label}을(를) 입력해주세요.'\" },\r\n }}\r\n >\r\n <Form\r\n ref={ref}\r\n {...props}\r\n requiredMark={false}\r\n labelCol={labelCol || { flex: \"100px\" }}\r\n style={{ padding: \"10px\", ...style }}\r\n className={`bwg-form ${className ?? \"\"}`}\r\n >\r\n {children}\r\n </Form>\r\n </ConfigProvider>\r\n );\r\n }\r\n);\r\n\r\nBwgForm.displayName = \"BwgForm\";\r\n\r\nexport default BwgForm;\r\n","import { useMemo } from \"react\";\r\nimport { Form, Select, Space, Typography } from \"antd\";\r\nimport { LabeledValue, SelectProps } from \"antd/es/select\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { SimpleCodeItem } from \"../../stores/codeStore\";\r\n\r\nexport type SelectBoxProps = SelectProps & {\r\n addField?: \"ALL\" | \"NULL\";\r\n options: SimpleCodeItem[];\r\n copyable?: boolean;\r\n};\r\n\r\nexport interface BwgSelectProps {\r\n /** 폼 아이템 속성 */\r\n itemProps?: BwgFormItemProps;\r\n selectProps?: SelectBoxProps;\r\n}\r\n\r\nconst BwgSelect = ({\r\n itemProps,\r\n selectProps = {\r\n options: [],\r\n allowClear: true,\r\n },\r\n}: BwgSelectProps) => {\r\n // Form 컨텍스트 체크\r\n const form = Form.useFormInstance();\r\n const isFormContext = !!form;\r\n\r\n // 옵션 리스트 메모이제이션\r\n const optionList = useMemo(() => {\r\n if (selectProps?.addField === \"ALL\") {\r\n return [{ label: \"전체\", value: \"\" }, ...(selectProps?.options || [])];\r\n } else if (selectProps?.addField === \"NULL\") {\r\n return [{ label: \"\", value: \"\" }, ...(selectProps?.options || [])];\r\n } else {\r\n return selectProps?.options || [];\r\n }\r\n }, [selectProps.options, selectProps.addField]);\r\n\r\n const handleChange = (newValue: string) => {\r\n selectProps.onChange?.(newValue);\r\n };\r\n\r\n // Select 컴포넌트에 전달할 props\r\n const selectComponentProps = {\r\n ...selectProps,\r\n allowClear: selectProps.allowClear ?? true,\r\n options: optionList,\r\n onChange: handleChange,\r\n variant: selectProps.variant,\r\n };\r\n\r\n // console.log(\"selectComponentProps :: \", selectComponentProps);\r\n\r\n const selectComponent = (\r\n <Select {...selectComponentProps} disabled={selectProps.disabled} />\r\n );\r\n\r\n // copyable일 때 Form 컨텍스트 체크\r\n if (selectProps.copyable && !isFormContext) {\r\n console.warn(\r\n \"BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다.\"\r\n );\r\n }\r\n\r\n if (selectProps.copyable) {\r\n return (\r\n <BwgFormItem {...itemProps}>\r\n <Space.Compact block>\r\n <Form.Item\r\n name={itemProps?.name}\r\n rules={itemProps?.rules}\r\n style={{ width: \"100%\", marginBottom: 0 }}\r\n validateStatus=\"\"\r\n help=\"\"\r\n >\r\n {selectComponent}\r\n </Form.Item>\r\n <Typography.Paragraph\r\n copyable={{\r\n text: isFormContext\r\n ? form?.getFieldValue(itemProps?.name)?.toString() || \"\"\r\n : \"\",\r\n tooltips: [\"코드복사\", \"코드복사됨\"],\r\n }}\r\n style={{\r\n margin: 0,\r\n backgroundColor: \"#f5f5f5\",\r\n borderRadius: \"4px\",\r\n border: \"1px solid #d9d9d9\",\r\n fontSize: \"12px\",\r\n color: \"#666\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n height: \"30px\",\r\n padding: \"0 8px\",\r\n }}\r\n />\r\n </Space.Compact>\r\n </BwgFormItem>\r\n );\r\n } else {\r\n return <BwgFormItem {...itemProps}>{selectComponent}</BwgFormItem>;\r\n }\r\n};\r\n\r\nexport default BwgSelect;\r\n","import React from 'react';\r\nimport { Input, InputProps } from 'antd';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\r\n\r\nexport interface BwgInputProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: InputProps;\r\n}\r\n\r\nconst BwgInput: React.FC<BwgInputProps> = ({ itemProps, inputProps }) => {\r\n return (\r\n <BwgFormItem {...itemProps}>\r\n <Input {...inputProps} />\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgInput;\r\n","import React, { useMemo } from \"react\";\r\nimport { DatePicker } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { RangePickerProps } from \"antd/es/date-picker\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\n\r\nconst { RangePicker } = DatePicker;\r\n\r\nexport interface BwgRangePickerProps {\r\n inputProps?: RangePickerProps;\r\n itemProps?: BwgFormItemProps;\r\n type?: \"year\" | \"month\" | \"date\" | \"time\" | \"datetime\";\r\n minDate?: string;\r\n maxDate?: string;\r\n returnType?: \"dayjs\" | \"string\";\r\n}\r\n\r\nconst formatMap = {\r\n year: { displayFormat: \"YYYY\", outputFormat: \"YYYY\" },\r\n month: { displayFormat: \"YYYY-MM\", outputFormat: \"YYYYMM\" },\r\n date: { displayFormat: \"YYYY-MM-DD\", outputFormat: \"YYYYMMDD\" },\r\n time: { displayFormat: \"HH:mm\", outputFormat: \"HHmm\" },\r\n datetime: {\r\n displayFormat: \"YYYY-MM-DD HH:mm\",\r\n outputFormat: \"YYYYMMDDHHmm\",\r\n },\r\n};\r\n\r\nconst BwgRangePicker = ({\r\n itemProps,\r\n inputProps,\r\n type = \"date\",\r\n minDate,\r\n maxDate,\r\n returnType = \"string\",\r\n}: BwgRangePickerProps) => {\r\n // type이 변경될 때 format이 업데이트되도록 useMemo를 사용합니다.\r\n const { displayFormat, outputFormat } = useMemo(\r\n () => formatMap[type],\r\n [type]\r\n );\r\n\r\n // 현재 type의 포맷을 우선순위로 두어 파싱 순서 결정\r\n const allOutputFormats = useMemo(\r\n () =>\r\n Object.values(formatMap)\r\n .map((f) => f.outputFormat)\r\n .sort((a, b) => {\r\n if (a.length === b.length) {\r\n if (a === outputFormat) return -1; // 현재 포맷이면 우선순위를 높인다\r\n if (b === outputFormat) return 1;\r\n }\r\n return b.length - a.length;\r\n }),\r\n [outputFormat] // type(outputFormat)이 바뀔 때마다 재정렬\r\n );\r\n return (\r\n <BwgFormItem\r\n {...itemProps}\r\n getValueProps={(value) => ({\r\n // 폼에 저장된 값(문자열 또는 Dayjs)을 RangePicker가 요구하는 Dayjs 배열로 변환\r\n value:\r\n value && value.length > 0\r\n ? [\r\n value[0]\r\n ? dayjs.isDayjs(value[0])\r\n ? (value[0] as Dayjs)\r\n : dayjs(value[0] as any, allOutputFormats)\r\n : null,\r\n value[1]\r\n ? dayjs.isDayjs(value[1])\r\n ? (value[1] as Dayjs)\r\n : dayjs(value[1] as any, allOutputFormats)\r\n : null,\r\n ]\r\n : null,\r\n })}\r\n normalize={(value: [Dayjs, Dayjs] | null) => {\r\n // RangePicker에서 넘어온 dayjs 객체 배열을 현재 type에 맞는 outputFormat으로 변환합니다.\r\n if (!value) {\r\n return [undefined, undefined];\r\n }\r\n if (returnType === \"dayjs\") {\r\n return [value[0] ?? undefined, value[1] ?? undefined];\r\n }\r\n return [\r\n value[0] ? value[0].format(outputFormat) : undefined,\r\n value[1] ? value[1].format(outputFormat) : undefined,\r\n ];\r\n }}\r\n >\r\n <RangePicker\r\n {...inputProps}\r\n order={true}\r\n // minDate/maxDate도 모든 포맷으로 파싱하도록 수정\r\n minDate={minDate ? dayjs(minDate, allOutputFormats) : undefined}\r\n maxDate={maxDate ? dayjs(maxDate, allOutputFormats) : undefined}\r\n // antd DatePicker는 type 대신 picker와 showTime 속성을 사용합니다.\r\n picker={type === \"datetime\" ? \"date\" : type}\r\n showTime={\r\n inputProps?.showTime ?? (type === \"datetime\" || type === \"time\")\r\n }\r\n // useMask 속성 관련 로직이 불분명하고, displayFormat을 직접 사용하는 것이 더 확실합니다.\r\n format={displayFormat}\r\n // onChange 이벤트는 BwgFormItem의 normalize로 처리하므로 제거합니다.\r\n />\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgRangePicker;\r\n","import { Checkbox, CheckboxProps, Form } from 'antd';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\r\n\r\nexport type BwgCheckBoxProps = CheckboxProps & {\r\n format?: 'boolean' | 'YN';\r\n};\r\n\r\nexport interface BwgCheckProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: BwgCheckBoxProps;\r\n}\r\n\r\nconst BwgCheck = ({\r\n itemProps,\r\n inputProps = {\r\n format: 'YN',\r\n },\r\n}: BwgCheckProps) => {\r\n const form = Form.useFormInstance();\r\n\r\n const handleChange = (e: any) => {\r\n //console.log('handleChange :: ', e.target.checked);\r\n if (inputProps.format === 'boolean') {\r\n form.setFieldValue(itemProps?.name, e.target.checked);\r\n } else {\r\n form.setFieldValue(itemProps?.name, e.target.checked ? 'Y' : 'N');\r\n }\r\n\r\n inputProps.onChange && inputProps.onChange(e);\r\n };\r\n\r\n return (\r\n <BwgFormItem\r\n {...itemProps}\r\n getValueProps={value => {\r\n console.log('getValueProps :: ', value);\r\n const checked =\r\n inputProps.format === 'boolean'\r\n ? Boolean(value)\r\n : value === 'Y'\r\n ? true\r\n : false;\r\n return { checked }; // ✅ 수정: value 대신 checked 반환\r\n }}\r\n normalize={value => {\r\n console.log('normalize :: ', value);\r\n // 체크박스의 경우 e.target.checked 값이 전달되므로 이를 처리\r\n if (typeof value === 'boolean') {\r\n if (inputProps.format === 'boolean') {\r\n return value;\r\n }\r\n return value ? 'Y' : 'N';\r\n }\r\n // 문자열이나 다른 값의 경우 기존 로직 유지\r\n if (inputProps.format === 'boolean') {\r\n return !!value;\r\n }\r\n return value ? 'Y' : 'N';\r\n }}\r\n >\r\n <Checkbox {...inputProps} onChange={handleChange}>\r\n {inputProps?.title}\r\n </Checkbox>\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgCheck;\r\n"],"names":["BwgFormItem","React","children","label","name","rules","initialValue","style","rest","labelStyle","isRequired","rule","renderLabel","jsxs","jsx","Form","BwgForm","forwardRef","labelCol","className","props","ref","ConfigProvider","BwgSelect","itemProps","selectProps","form","isFormContext","optionList","useMemo","handleChange","newValue","selectComponentProps","selectComponent","Select","Space","Typography","BwgInput","inputProps","Input","RangePicker","DatePicker","formatMap","BwgRangePicker","type","minDate","maxDate","returnType","displayFormat","outputFormat","allOutputFormats","f","a","b","value","dayjs","BwgCheck","e","Checkbox"],"mappings":"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"}
|