@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.
Files changed (118) hide show
  1. package/dist/chunks/BwgCheck-BDt8r0gn.js +200 -0
  2. package/dist/chunks/BwgCheck-BDt8r0gn.js.map +1 -0
  3. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs +2 -0
  4. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs.map +1 -0
  5. package/dist/chunks/{BwgLargeUploader-D6plJv5D.js → BwgDownload-CF_Zo2oU.js} +809 -908
  6. package/dist/chunks/BwgDownload-CF_Zo2oU.js.map +1 -0
  7. package/dist/chunks/BwgDownload-DvCaLWCL.cjs +3 -0
  8. package/dist/chunks/BwgDownload-DvCaLWCL.cjs.map +1 -0
  9. package/dist/chunks/SSOHandler-C7echUZs.cjs +236 -0
  10. package/dist/chunks/SSOHandler-C7echUZs.cjs.map +1 -0
  11. package/dist/chunks/{SSOHandler-yNjxYbHn.js → SSOHandler-Cr04mtMm.js} +10739 -8719
  12. package/dist/chunks/SSOHandler-Cr04mtMm.js.map +1 -0
  13. package/dist/chunks/{SearchBoxContext-CO1AyqH4.js → SearchBoxContext-C2ECWG9l.js} +7 -7
  14. package/dist/chunks/{SearchBoxContext-CO1AyqH4.js.map → SearchBoxContext-C2ECWG9l.js.map} +1 -1
  15. package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs → SearchBoxContext-aMXi2JmO.cjs} +2 -2
  16. package/dist/chunks/{SearchBoxContext-Cinu3U4b.cjs.map → SearchBoxContext-aMXi2JmO.cjs.map} +1 -1
  17. package/dist/chunks/{ViewContainer-BH7t9T4d.cjs → ViewContainer-DI7hvDi-.cjs} +2 -2
  18. package/dist/chunks/{ViewContainer-BH7t9T4d.cjs.map → ViewContainer-DI7hvDi-.cjs.map} +1 -1
  19. package/dist/chunks/{ViewContainer-CMbN_tYW.js → ViewContainer-DxhY26m3.js} +2 -2
  20. package/dist/chunks/{ViewContainer-CMbN_tYW.js.map → ViewContainer-DxhY26m3.js.map} +1 -1
  21. package/dist/chunks/apiUtils-BRaXRbjE.js +1428 -0
  22. package/dist/chunks/apiUtils-BRaXRbjE.js.map +1 -0
  23. package/dist/chunks/apiUtils-DL43X2ta.cjs +3 -0
  24. package/dist/chunks/apiUtils-DL43X2ta.cjs.map +1 -0
  25. package/dist/chunks/{codeStore-DTtOQhfW.cjs → codeStore-WWRT65Zk.cjs} +2 -2
  26. package/dist/chunks/{codeStore-DTtOQhfW.cjs.map → codeStore-WWRT65Zk.cjs.map} +1 -1
  27. package/dist/chunks/{codeStore-C0f5xZ_m.js → codeStore-kuUEfWSS.js} +2 -2
  28. package/dist/chunks/{codeStore-C0f5xZ_m.js.map → codeStore-kuUEfWSS.js.map} +1 -1
  29. package/dist/chunks/core-D7JhyoYH.cjs +2 -0
  30. package/dist/chunks/core-D7JhyoYH.cjs.map +1 -0
  31. package/dist/chunks/core-DLGhqegD.js +514 -0
  32. package/dist/chunks/core-DLGhqegD.js.map +1 -0
  33. package/dist/chunks/enc-base64-96WlVdPN.js +102 -0
  34. package/dist/chunks/enc-base64-96WlVdPN.js.map +1 -0
  35. package/dist/chunks/enc-base64-b9mIy966.cjs +2 -0
  36. package/dist/chunks/enc-base64-b9mIy966.cjs.map +1 -0
  37. package/dist/chunks/favoriteStore-D40XfOmq.js +439 -0
  38. package/dist/chunks/favoriteStore-D40XfOmq.js.map +1 -0
  39. package/dist/chunks/favoriteStore-DdGoghEn.cjs +2 -0
  40. package/dist/chunks/favoriteStore-DdGoghEn.cjs.map +1 -0
  41. package/dist/chunks/{popupStore-DGMxbQ--.cjs → popupStore-DKpp0bmC.cjs} +2 -2
  42. package/dist/chunks/{popupStore-DGMxbQ--.cjs.map → popupStore-DKpp0bmC.cjs.map} +1 -1
  43. package/dist/chunks/{popupStore-D1rxKTyJ.js → popupStore-axohgTV-.js} +2 -2
  44. package/dist/chunks/{popupStore-D1rxKTyJ.js.map → popupStore-axohgTV-.js.map} +1 -1
  45. package/dist/chunks/sha256-BMg1y0Py.js +79 -0
  46. package/dist/chunks/sha256-BMg1y0Py.js.map +1 -0
  47. package/dist/chunks/sha256-BxdSMFca.cjs +2 -0
  48. package/dist/chunks/sha256-BxdSMFca.cjs.map +1 -0
  49. package/dist/chunks/{usePopup-CdpFYf3m.cjs → usePopup-DYnRe9Th.cjs} +2 -2
  50. package/dist/chunks/{usePopup-CdpFYf3m.cjs.map → usePopup-DYnRe9Th.cjs.map} +1 -1
  51. package/dist/chunks/{usePopup-C1h8V04_.js → usePopup-Dftb7Bbl.js} +3 -3
  52. package/dist/chunks/{usePopup-C1h8V04_.js.map → usePopup-Dftb7Bbl.js.map} +1 -1
  53. package/dist/components/common/BookmarkMngModal.d.ts +16 -0
  54. package/dist/components/common/BookmarkMngModal.d.ts.map +1 -0
  55. package/dist/components/common/BookmarkPopver.d.ts +7 -0
  56. package/dist/components/common/BookmarkPopver.d.ts.map +1 -0
  57. package/dist/components/common/BwgDraggable.d.ts +25 -0
  58. package/dist/components/common/BwgDraggable.d.ts.map +1 -0
  59. package/dist/components/common/BwgEditor.d.ts +4 -0
  60. package/dist/components/common/BwgEditor.d.ts.map +1 -1
  61. package/dist/components/common/BwgGrid.d.ts +15 -3
  62. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  63. package/dist/components/common/BwgPagination.d.ts +13 -0
  64. package/dist/components/common/BwgPagination.d.ts.map +1 -0
  65. package/dist/components/common/BwgView.d.ts.map +1 -1
  66. package/dist/components/common/SearchBox.d.ts.map +1 -1
  67. package/dist/components/common/index.cjs +1 -1
  68. package/dist/components/common/index.js +1 -1
  69. package/dist/components/core/BwgDownload.d.ts +33 -0
  70. package/dist/components/core/BwgDownload.d.ts.map +1 -0
  71. package/dist/components/core/index.cjs +1 -1
  72. package/dist/components/core/index.d.ts +2 -0
  73. package/dist/components/core/index.d.ts.map +1 -1
  74. package/dist/components/core/index.js +21 -19
  75. package/dist/components/core/index.js.map +1 -1
  76. package/dist/components/layout/index.cjs +1 -1
  77. package/dist/components/layout/index.js +1 -1
  78. package/dist/components/popup/MenuReport.d.ts +8 -0
  79. package/dist/components/popup/MenuReport.d.ts.map +1 -0
  80. package/dist/index.cjs +1 -1
  81. package/dist/index.js +184 -181
  82. package/dist/index.js.map +1 -1
  83. package/dist/provider/index.cjs +1 -1
  84. package/dist/provider/index.js +2 -2
  85. package/dist/stores/favoriteStore.d.ts +81 -17
  86. package/dist/stores/favoriteStore.d.ts.map +1 -1
  87. package/dist/stores/index.cjs +1 -1
  88. package/dist/stores/index.d.ts +1 -1
  89. package/dist/stores/index.d.ts.map +1 -1
  90. package/dist/stores/index.js +6 -6
  91. package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
  92. package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
  93. package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
  94. package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
  95. package/dist/utils/apiUtils.d.ts +8 -0
  96. package/dist/utils/apiUtils.d.ts.map +1 -1
  97. package/dist/utils/commonUtils.d.ts.map +1 -1
  98. package/dist/utils/index.cjs +1 -1
  99. package/dist/utils/index.cjs.map +1 -1
  100. package/dist/utils/index.d.ts +1 -0
  101. package/dist/utils/index.d.ts.map +1 -1
  102. package/dist/utils/index.js +89 -88
  103. package/dist/utils/index.js.map +1 -1
  104. package/package.json +2 -1
  105. package/dist/chunks/BwgLargeUploader-D6plJv5D.js.map +0 -1
  106. package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs +0 -3
  107. package/dist/chunks/BwgLargeUploader-LMj6KXhK.cjs.map +0 -1
  108. package/dist/chunks/SSOHandler-DXnV_f_M.cjs +0 -236
  109. package/dist/chunks/SSOHandler-DXnV_f_M.cjs.map +0 -1
  110. package/dist/chunks/SSOHandler-yNjxYbHn.js.map +0 -1
  111. package/dist/chunks/apiUtils-BJRcT3Tm.js +0 -1315
  112. package/dist/chunks/apiUtils-BJRcT3Tm.js.map +0 -1
  113. package/dist/chunks/apiUtils-DEnQeWNI.cjs +0 -3
  114. package/dist/chunks/apiUtils-DEnQeWNI.cjs.map +0 -1
  115. package/dist/chunks/favoriteStore-Drhx0843.js +0 -111
  116. package/dist/chunks/favoriteStore-Drhx0843.js.map +0 -1
  117. package/dist/chunks/favoriteStore-Dyp89Kew.cjs +0 -2
  118. 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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"}