@bwg-ui/core 1.1.22 → 1.1.24

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 (130) hide show
  1. package/dist/chunks/BwgSwitch-B79pseQM.js +269 -0
  2. package/dist/chunks/BwgSwitch-B79pseQM.js.map +1 -0
  3. package/dist/chunks/BwgSwitch-CAI-kEaM.cjs +2 -0
  4. package/dist/chunks/BwgSwitch-CAI-kEaM.cjs.map +1 -0
  5. package/dist/chunks/{BwgDownload-COsACbpJ.js → BwgUploader-BcVlE61B.js} +2933 -2982
  6. package/dist/chunks/BwgUploader-BcVlE61B.js.map +1 -0
  7. package/dist/chunks/BwgUploader-DaNV2URT.cjs +3 -0
  8. package/dist/chunks/BwgUploader-DaNV2URT.cjs.map +1 -0
  9. package/dist/chunks/LoadingOverlay-DAZJF5wg.js +19 -0
  10. package/dist/chunks/LoadingOverlay-DAZJF5wg.js.map +1 -0
  11. package/dist/chunks/LoadingOverlay-DcmKvoZA.cjs +2 -0
  12. package/dist/chunks/LoadingOverlay-DcmKvoZA.cjs.map +1 -0
  13. package/dist/chunks/{SSOHandler-B15Ssd5g.js → SSOHandler-CkPcSHIm.js} +12161 -11034
  14. package/dist/chunks/SSOHandler-CkPcSHIm.js.map +1 -0
  15. package/dist/chunks/SSOHandler-DiW4Ft9i.cjs +237 -0
  16. package/dist/chunks/SSOHandler-DiW4Ft9i.cjs.map +1 -0
  17. package/dist/chunks/{SearchBoxContext-BxJN-x3-.js → SearchBoxContext-BCvEYyFk.js} +7 -7
  18. package/dist/chunks/{SearchBoxContext-BxJN-x3-.js.map → SearchBoxContext-BCvEYyFk.js.map} +1 -1
  19. package/dist/chunks/{SearchBoxContext-DnQGaRgo.cjs → SearchBoxContext-DwFDOyYG.cjs} +2 -2
  20. package/dist/chunks/{SearchBoxContext-DnQGaRgo.cjs.map → SearchBoxContext-DwFDOyYG.cjs.map} +1 -1
  21. package/dist/chunks/{ViewContainer-HSyLfryI.cjs → ViewContainer-Bhq22_B3.cjs} +2 -2
  22. package/dist/chunks/{ViewContainer-HSyLfryI.cjs.map → ViewContainer-Bhq22_B3.cjs.map} +1 -1
  23. package/dist/chunks/{ViewContainer-x2yzKkIG.js → ViewContainer-CjpJqoGG.js} +2 -2
  24. package/dist/chunks/{ViewContainer-x2yzKkIG.js.map → ViewContainer-CjpJqoGG.js.map} +1 -1
  25. package/dist/chunks/apiUtils-BZ6s0_NI.cjs +3 -0
  26. package/dist/chunks/apiUtils-BZ6s0_NI.cjs.map +1 -0
  27. package/dist/chunks/apiUtils-DxzLqPhU.js +1441 -0
  28. package/dist/chunks/apiUtils-DxzLqPhU.js.map +1 -0
  29. package/dist/chunks/{codeStore-DefmZVgs.js → codeStore-CfI4Wh5M.js} +4 -4
  30. package/dist/chunks/{codeStore-DefmZVgs.js.map → codeStore-CfI4Wh5M.js.map} +1 -1
  31. package/dist/chunks/{codeStore-pQbDqWkZ.cjs → codeStore-il4-kZPe.cjs} +2 -2
  32. package/dist/chunks/{codeStore-pQbDqWkZ.cjs.map → codeStore-il4-kZPe.cjs.map} +1 -1
  33. package/dist/chunks/core-BHejg5iS.cjs +2 -0
  34. package/dist/chunks/core-BHejg5iS.cjs.map +1 -0
  35. package/dist/chunks/core-bHd8azE6.js +514 -0
  36. package/dist/chunks/core-bHd8azE6.js.map +1 -0
  37. package/dist/chunks/enc-base64-BQYwLKgk.js +102 -0
  38. package/dist/chunks/enc-base64-BQYwLKgk.js.map +1 -0
  39. package/dist/chunks/enc-base64-BkBtNBQV.cjs +2 -0
  40. package/dist/chunks/enc-base64-BkBtNBQV.cjs.map +1 -0
  41. package/dist/chunks/{favoriteStore-BXBziAgB.cjs → favoriteStore-CcKg_nEH.cjs} +2 -2
  42. package/dist/chunks/{favoriteStore-BXBziAgB.cjs.map → favoriteStore-CcKg_nEH.cjs.map} +1 -1
  43. package/dist/chunks/{favoriteStore-DAPC01iF.js → favoriteStore-Cemc-26t.js} +2 -2
  44. package/dist/chunks/{favoriteStore-DAPC01iF.js.map → favoriteStore-Cemc-26t.js.map} +1 -1
  45. package/dist/chunks/{popupStore-CcQg9AvK.js → popupStore-Bi6o78lP.js} +2 -2
  46. package/dist/chunks/{popupStore-CcQg9AvK.js.map → popupStore-Bi6o78lP.js.map} +1 -1
  47. package/dist/chunks/{popupStore-BV632k5p.cjs → popupStore-DUApUBF2.cjs} +2 -2
  48. package/dist/chunks/{popupStore-BV632k5p.cjs.map → popupStore-DUApUBF2.cjs.map} +1 -1
  49. package/dist/chunks/sha256-BZfJs28k.js +79 -0
  50. package/dist/chunks/sha256-BZfJs28k.js.map +1 -0
  51. package/dist/chunks/sha256-DiIRoCQ8.cjs +2 -0
  52. package/dist/chunks/sha256-DiIRoCQ8.cjs.map +1 -0
  53. package/dist/chunks/{usePopup-Cw5xsOaH.js → usePopup-BSqsnSz7.js} +3 -3
  54. package/dist/chunks/{usePopup-Cw5xsOaH.js.map → usePopup-BSqsnSz7.js.map} +1 -1
  55. package/dist/chunks/{usePopup-DoVGuobp.cjs → usePopup-D2JEuDrO.cjs} +2 -2
  56. package/dist/chunks/{usePopup-DoVGuobp.cjs.map → usePopup-D2JEuDrO.cjs.map} +1 -1
  57. package/dist/components/common/BwgDraggable.d.ts +1 -1
  58. package/dist/components/common/BwgDraggable.d.ts.map +1 -1
  59. package/dist/components/common/BwgEditor.d.ts +43 -36
  60. package/dist/components/common/BwgEditor.d.ts.map +1 -1
  61. package/dist/components/common/BwgGrid.d.ts +13 -5
  62. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  63. package/dist/components/common/BwgPagination.d.ts +25 -5
  64. package/dist/components/common/BwgPagination.d.ts.map +1 -1
  65. package/dist/components/common/BwgView.d.ts.map +1 -1
  66. package/dist/components/common/index.cjs +1 -1
  67. package/dist/components/common/index.js +1 -1
  68. package/dist/components/core/BwgCheck.d.ts +11 -0
  69. package/dist/components/core/BwgCheck.d.ts.map +1 -1
  70. package/dist/components/core/BwgDownload.d.ts.map +1 -1
  71. package/dist/components/core/BwgSelect.d.ts +2 -2
  72. package/dist/components/core/BwgSelect.d.ts.map +1 -1
  73. package/dist/components/core/BwgSwitch.d.ts +24 -0
  74. package/dist/components/core/BwgSwitch.d.ts.map +1 -0
  75. package/dist/components/core/index.cjs +1 -1
  76. package/dist/components/core/index.d.ts +20 -19
  77. package/dist/components/core/index.d.ts.map +1 -1
  78. package/dist/components/core/index.js +22 -21
  79. package/dist/components/layout/LoadingOverlay.d.ts +3 -3
  80. package/dist/components/layout/LoadingOverlay.d.ts.map +1 -1
  81. package/dist/components/layout/index.cjs +1 -1
  82. package/dist/components/layout/index.js +2 -2
  83. package/dist/components/popup/MenuReport.d.ts.map +1 -1
  84. package/dist/index.cjs +1 -1
  85. package/dist/index.js +116 -115
  86. package/dist/provider/index.cjs +1 -1
  87. package/dist/provider/index.js +2 -2
  88. package/dist/stores/index.cjs +1 -1
  89. package/dist/stores/index.cjs.map +1 -1
  90. package/dist/stores/index.d.ts +6 -7
  91. package/dist/stores/index.d.ts.map +1 -1
  92. package/dist/stores/index.js +16 -15
  93. package/dist/stores/index.js.map +1 -1
  94. package/dist/stores/loadingStore.d.ts +1 -0
  95. package/dist/stores/loadingStore.d.ts.map +1 -1
  96. package/dist/stores/menuModelStore.d.ts.map +1 -1
  97. package/dist/styles/assets/images/header/icon/ico-bell.svg +3 -3
  98. package/dist/styles/assets/images/header/icon/ico-logout.svg +10 -10
  99. package/dist/styles/assets/images/header/icon/ico-setting.svg +4 -4
  100. package/dist/styles/assets/images/header/icon/ico-sidebar-arrow.svg +3 -3
  101. package/dist/styles/layout.css +14 -1
  102. package/dist/utils/apiUtils.d.ts +4 -8
  103. package/dist/utils/apiUtils.d.ts.map +1 -1
  104. package/dist/utils/commonUtils.d.ts +6 -0
  105. package/dist/utils/commonUtils.d.ts.map +1 -1
  106. package/dist/utils/index.cjs +1 -1
  107. package/dist/utils/index.cjs.map +1 -1
  108. package/dist/utils/index.d.ts +0 -1
  109. package/dist/utils/index.d.ts.map +1 -1
  110. package/dist/utils/index.js +53 -54
  111. package/dist/utils/index.js.map +1 -1
  112. package/package.json +2 -1
  113. package/dist/chunks/BwgCheck-BDt8r0gn.js +0 -200
  114. package/dist/chunks/BwgCheck-BDt8r0gn.js.map +0 -1
  115. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs +0 -2
  116. package/dist/chunks/BwgCheck-Dtzr-6rg.cjs.map +0 -1
  117. package/dist/chunks/BwgDownload-COsACbpJ.js.map +0 -1
  118. package/dist/chunks/BwgDownload-i6w7ZD-i.cjs +0 -3
  119. package/dist/chunks/BwgDownload-i6w7ZD-i.cjs.map +0 -1
  120. package/dist/chunks/LoadingOverlay-CAO6_FuF.js +0 -29
  121. package/dist/chunks/LoadingOverlay-CAO6_FuF.js.map +0 -1
  122. package/dist/chunks/LoadingOverlay-NX9Mo_6n.cjs +0 -2
  123. package/dist/chunks/LoadingOverlay-NX9Mo_6n.cjs.map +0 -1
  124. package/dist/chunks/SSOHandler-B15Ssd5g.js.map +0 -1
  125. package/dist/chunks/SSOHandler-oJlon6rn.cjs +0 -236
  126. package/dist/chunks/SSOHandler-oJlon6rn.cjs.map +0 -1
  127. package/dist/chunks/apiUtils-CudW_FKE.cjs +0 -3
  128. package/dist/chunks/apiUtils-CudW_FKE.cjs.map +0 -1
  129. package/dist/chunks/apiUtils-DfPv_gmI.js +0 -2064
  130. package/dist/chunks/apiUtils-DfPv_gmI.js.map +0 -1
@@ -0,0 +1,269 @@
1
+ import { j as m } from "./jsx-runtime-Dpn_P65e.js";
2
+ import { Form as Y, Checkbox as j, DatePicker as x, ConfigProvider as y, Input as M, Select as b, Space as p, Typography as w, Switch as C } from "antd";
3
+ import D, { useMemo as g, forwardRef as H } from "react";
4
+ import d from "dayjs";
5
+ const f = D.memo(
6
+ ({
7
+ children: n,
8
+ label: t,
9
+ name: o,
10
+ rules: l,
11
+ initialValue: e,
12
+ style: i,
13
+ ...c
14
+ }) => {
15
+ const r = {
16
+ fontWeight: "bold"
17
+ }, s = Array.isArray(l) && l.some((u) => u.required === !0), a = () => typeof t == "string" ? /* @__PURE__ */ m.jsxs("span", { style: r, children: [
18
+ t,
19
+ s && /* @__PURE__ */ m.jsx("span", { style: { color: "#ff4d4f", marginLeft: "4px" }, children: "*" })
20
+ ] }) : /* @__PURE__ */ m.jsx("span", { style: r, children: t });
21
+ return /* @__PURE__ */ m.jsx(
22
+ Y.Item,
23
+ {
24
+ className: "bwg-form-item",
25
+ label: t ? a() : void 0,
26
+ labelAlign: "left",
27
+ name: o,
28
+ rules: l,
29
+ colon: !1,
30
+ initialValue: e,
31
+ style: i,
32
+ ...c,
33
+ children: n
34
+ }
35
+ );
36
+ }
37
+ ), L = ({
38
+ itemProps: n,
39
+ inputProps: t = {
40
+ format: "YN"
41
+ }
42
+ }) => {
43
+ const o = Y.useFormInstance(), l = (e) => {
44
+ t.format === "boolean" ? o.setFieldValue(n?.name, e.target.checked) : o.setFieldValue(n?.name, e.target.checked ? "Y" : "N"), t.onChange && t.onChange(e);
45
+ };
46
+ return /* @__PURE__ */ m.jsx(
47
+ f,
48
+ {
49
+ ...n,
50
+ getValueProps: (e) => ({ checked: t.format === "boolean" ? !!e : e === "Y" }),
51
+ normalize: (e) => typeof e == "boolean" ? t.format === "boolean" ? e : e ? "Y" : "N" : t.format === "boolean" ? !!e : e ? "Y" : "N",
52
+ children: /* @__PURE__ */ m.jsx(j, { ...t, onChange: l, children: t?.title })
53
+ }
54
+ );
55
+ }, h = {
56
+ year: { displayFormat: "YYYY", outputFormat: "YYYY" },
57
+ month: { displayFormat: "YYYY-MM", outputFormat: "YYYYMM" },
58
+ date: { displayFormat: "YYYY-MM-DD", outputFormat: "YYYYMMDD" },
59
+ time: { displayFormat: "HH:mm", outputFormat: "HHmm" },
60
+ datetime: {
61
+ displayFormat: "YYYY-MM-DD HH:mm",
62
+ outputFormat: "YYYYMMDDHHmm"
63
+ }
64
+ }, R = ({
65
+ itemProps: n,
66
+ inputProps: t,
67
+ type: o = "date",
68
+ returnType: l = "string"
69
+ }) => {
70
+ const { displayFormat: e, outputFormat: i } = g(
71
+ () => h[o],
72
+ [o]
73
+ ), c = g(
74
+ () => Object.values(h).map((r) => r.outputFormat).sort((r, s) => {
75
+ if (r.length === s.length) {
76
+ if (r === i) return -1;
77
+ if (s === i) return 1;
78
+ }
79
+ return s.length - r.length;
80
+ }),
81
+ [i]
82
+ // type(outputFormat)이 바뀔 때마다 재정렬
83
+ );
84
+ return /* @__PURE__ */ m.jsx(
85
+ f,
86
+ {
87
+ ...n,
88
+ getValueProps: (r) => ({
89
+ // 폼에 저장된 값(문자열 또는 Dayjs)을 DatePicker가 요구하는 Dayjs로 변환
90
+ value: r ? d.isDayjs(r) ? r : d(r, c) : null
91
+ }),
92
+ normalize: (r) => r ? l === "dayjs" ? r : r.format(i) : null,
93
+ children: /* @__PURE__ */ m.jsx(
94
+ x,
95
+ {
96
+ ...t,
97
+ picker: o === "datetime" ? "date" : o,
98
+ showTime: t?.showTime ?? (o === "datetime" || o === "time"),
99
+ format: e
100
+ }
101
+ )
102
+ }
103
+ );
104
+ }, k = H(
105
+ ({ children: n, labelCol: t, style: o, className: l, ...e }, i) => /* @__PURE__ */ m.jsx(
106
+ y,
107
+ {
108
+ form: {
109
+ //기존 rule.message의 default message인 $name을를 입력해주세요를 변경
110
+ validateMessages: { required: "'${label}을(를) 입력해주세요.'" }
111
+ },
112
+ children: /* @__PURE__ */ m.jsx(
113
+ Y,
114
+ {
115
+ ref: i,
116
+ ...e,
117
+ requiredMark: !1,
118
+ labelCol: t || { flex: "100px" },
119
+ style: { padding: "10px", ...o },
120
+ className: `bwg-form ${l ?? ""}`,
121
+ children: n
122
+ }
123
+ )
124
+ }
125
+ )
126
+ );
127
+ k.displayName = "BwgForm";
128
+ const z = ({ itemProps: n, inputProps: t }) => /* @__PURE__ */ m.jsx(f, { ...n, children: /* @__PURE__ */ m.jsx(M, { ...t }) }), { RangePicker: B } = x, F = {
129
+ year: { displayFormat: "YYYY", outputFormat: "YYYY" },
130
+ month: { displayFormat: "YYYY-MM", outputFormat: "YYYYMM" },
131
+ date: { displayFormat: "YYYY-MM-DD", outputFormat: "YYYYMMDD" },
132
+ time: { displayFormat: "HH:mm", outputFormat: "HHmm" },
133
+ datetime: {
134
+ displayFormat: "YYYY-MM-DD HH:mm",
135
+ outputFormat: "YYYYMMDDHHmm"
136
+ }
137
+ }, T = ({
138
+ itemProps: n,
139
+ inputProps: t,
140
+ type: o = "date",
141
+ minDate: l,
142
+ maxDate: e,
143
+ returnType: i = "string"
144
+ }) => {
145
+ const { displayFormat: c, outputFormat: r } = g(
146
+ () => F[o],
147
+ [o]
148
+ ), s = g(
149
+ () => Object.values(F).map((a) => a.outputFormat).sort((a, u) => {
150
+ if (a.length === u.length) {
151
+ if (a === r) return -1;
152
+ if (u === r) return 1;
153
+ }
154
+ return u.length - a.length;
155
+ }),
156
+ [r]
157
+ // type(outputFormat)이 바뀔 때마다 재정렬
158
+ );
159
+ return /* @__PURE__ */ m.jsx(
160
+ f,
161
+ {
162
+ ...n,
163
+ getValueProps: (a) => ({
164
+ // 폼에 저장된 값(문자열 또는 Dayjs)을 RangePicker가 요구하는 Dayjs 배열로 변환
165
+ value: a && a.length > 0 ? [
166
+ a[0] ? d.isDayjs(a[0]) ? a[0] : d(a[0], s) : null,
167
+ a[1] ? d.isDayjs(a[1]) ? a[1] : d(a[1], s) : null
168
+ ] : null
169
+ }),
170
+ normalize: (a) => a ? i === "dayjs" ? [a[0] ?? void 0, a[1] ?? void 0] : [
171
+ a[0] ? a[0].format(r) : void 0,
172
+ a[1] ? a[1].format(r) : void 0
173
+ ] : [void 0, void 0],
174
+ children: /* @__PURE__ */ m.jsx(
175
+ B,
176
+ {
177
+ ...t,
178
+ order: !0,
179
+ minDate: l ? d(l, s) : void 0,
180
+ maxDate: e ? d(e, s) : void 0,
181
+ picker: o === "datetime" ? "date" : o,
182
+ showTime: t?.showTime ?? (o === "datetime" || o === "time"),
183
+ format: c
184
+ }
185
+ )
186
+ }
187
+ );
188
+ }, q = ({
189
+ itemProps: n,
190
+ selectProps: t = {
191
+ options: [],
192
+ allowClear: !0
193
+ }
194
+ }) => {
195
+ const o = Y.useFormInstance(), l = !!o, e = g(() => t?.addField === "ALL" ? [{ label: "전체", value: "" }, ...t?.options || []] : t?.addField === "NULL" ? [{ label: "", value: "" }, ...t?.options || []] : t?.options || [], [t.options, t.addField]), i = (s) => {
196
+ t.onChange?.(s);
197
+ }, c = {
198
+ ...t,
199
+ allowClear: t.allowClear ?? !0,
200
+ options: e,
201
+ onChange: i,
202
+ variant: t.variant
203
+ }, r = /* @__PURE__ */ m.jsx(b, { ...c, disabled: t.disabled });
204
+ return t.copyable && !l && console.warn(
205
+ "BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다."
206
+ ), t.copyable ? /* @__PURE__ */ m.jsx(f, { ...n, name: void 0, children: /* @__PURE__ */ m.jsxs(p.Compact, { block: !0, children: [
207
+ /* @__PURE__ */ m.jsx(
208
+ Y.Item,
209
+ {
210
+ name: n?.name,
211
+ rules: n?.rules,
212
+ style: { width: "100%", marginBottom: 0 },
213
+ validateStatus: "",
214
+ help: "",
215
+ children: r
216
+ }
217
+ ),
218
+ /* @__PURE__ */ m.jsx(
219
+ w.Paragraph,
220
+ {
221
+ copyable: {
222
+ text: l && o?.getFieldValue(n?.name)?.toString() || "",
223
+ tooltips: ["코드복사", "코드복사됨"]
224
+ },
225
+ style: {
226
+ margin: 0,
227
+ backgroundColor: "#f5f5f5",
228
+ borderRadius: "4px",
229
+ border: "1px solid #d9d9d9",
230
+ fontSize: "12px",
231
+ color: "#666",
232
+ display: "flex",
233
+ alignItems: "center",
234
+ height: "30px",
235
+ padding: "0 8px"
236
+ }
237
+ }
238
+ )
239
+ ] }) }) : /* @__PURE__ */ m.jsx(f, { ...n, children: r });
240
+ }, A = ({
241
+ itemProps: n,
242
+ inputProps: t = {
243
+ format: "YN"
244
+ }
245
+ }) => {
246
+ const o = Y.useFormInstance(), l = (e, i) => {
247
+ t.format === "boolean" ? o.setFieldValue(n?.name, e) : o.setFieldValue(n?.name, e ? "Y" : "N"), t.onChange && t.onChange(e, i);
248
+ };
249
+ return /* @__PURE__ */ m.jsx(
250
+ f,
251
+ {
252
+ ...n,
253
+ getValueProps: (e) => ({ checked: t.format === "boolean" ? !!e : e === "Y" }),
254
+ normalize: (e) => typeof e == "boolean" ? t.format === "boolean" ? e : e ? "Y" : "N" : t.format === "boolean" ? !!e : e ? "Y" : "N",
255
+ children: /* @__PURE__ */ m.jsx(C, { ...t, onChange: (e, i) => l(e, i) })
256
+ }
257
+ );
258
+ };
259
+ export {
260
+ L as B,
261
+ R as a,
262
+ k as b,
263
+ f as c,
264
+ z as d,
265
+ T as e,
266
+ q as f,
267
+ A as g
268
+ };
269
+ //# sourceMappingURL=BwgSwitch-B79pseQM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BwgSwitch-B79pseQM.js","sources":["../../src/components/core/BwgFormItem.tsx","../../src/components/core/BwgCheck.tsx","../../src/components/core/BwgDatePicker.tsx","../../src/components/core/BwgForm.tsx","../../src/components/core/BwgInput.tsx","../../src/components/core/BwgRangePicker.tsx","../../src/components/core/BwgSelect.tsx","../../src/components/core/BwgSwitch.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 { 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\n/**\r\n * 체크박스 컴포넌트\r\n * @param itemProps - BwgFormItemProps\r\n * @param inputProps - BwgCheckBoxProps\r\n * @returns \r\n * @example\r\n * <BwgCheck\r\n * itemProps={{ name: 'check' }}\r\n * inputProps={{ format: 'YN' }}\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","import React, { useMemo } from \"react\";\r\nimport { DatePicker } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { DatePickerProps } from \"antd/es/date-picker\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\n\r\nexport interface BwgDatePickerProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: DatePickerProps;\r\n type?: \"year\" | \"month\" | \"date\" | \"time\" | \"datetime\";\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 BwgDatePicker = ({\r\n itemProps,\r\n inputProps,\r\n type = \"date\",\r\n returnType = \"string\",\r\n}: BwgDatePickerProps) => {\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)을 DatePicker가 요구하는 Dayjs로 변환\r\n value: value\r\n ? dayjs.isDayjs(value)\r\n ? (value as Dayjs)\r\n : dayjs(value as any, allOutputFormats)\r\n : null,\r\n })}\r\n normalize={(value) => {\r\n // DatePicker에서 넘어온 Dayjs를 returnType에 따라 반환\r\n if (!value) return null;\r\n if (returnType === \"dayjs\") return value as Dayjs;\r\n return value.format(outputFormat);\r\n }}\r\n >\r\n <DatePicker\r\n {...inputProps}\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로 처리하므로 중복되는 handleChange를 제거합니다.\r\n ></DatePicker>\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgDatePicker;\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 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 { Form, Select, Space, Typography } from 'antd';\r\nimport { SelectProps } from 'antd/es/select';\r\nimport { useMemo } from 'react';\r\nimport { SimpleCodeItem } from '../../stores/codeStore';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\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} name={undefined}>\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 { Form, Switch, SwitchProps } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\n\r\nexport type BwgSwitchItemProps = SwitchProps & {\r\n format?: 'boolean' | 'YN';\r\n };\r\n \r\n export interface BwgSwitchProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: BwgSwitchItemProps;\r\n }\r\n\r\n/**\r\n * 스위치 컴포넌트\r\n * @param itemProps - BwgFormItemProps\r\n * @param inputProps - BwgSwitchItemProps\r\n * @returns \r\n * @example\r\n * <BwgSwitch\r\n * itemProps={{ name: 'switch' }}\r\n * inputProps={{ format: 'YN' }}\r\n * />\r\n * @returns \r\n */\r\nconst BwgSwitch = ({\r\n itemProps,\r\n inputProps = {\r\n format: 'YN',\r\n },\r\n}: BwgSwitchProps) => {\r\n const form = Form.useFormInstance();\r\n \r\n const handleChange = (checked: boolean, e: any) => {\r\n if (inputProps.format === 'boolean') {\r\n form.setFieldValue(itemProps?.name, checked);\r\n } else {\r\n form.setFieldValue(itemProps?.name, checked ? 'Y' : 'N');\r\n }\r\n \r\n inputProps.onChange && inputProps.onChange(checked, e as any);\r\n };\r\n\r\n return <BwgFormItem {...itemProps} \r\n 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 };\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 <Switch {...inputProps} onChange={(checked: boolean, e: any) => handleChange(checked, e)} />\r\n </BwgFormItem>;\r\n};\r\n\r\nexport default BwgSwitch;"],"names":["BwgFormItem","React","children","label","name","rules","initialValue","style","rest","labelStyle","isRequired","rule","renderLabel","jsxs","jsx","Form","BwgCheck","itemProps","inputProps","form","handleChange","value","Checkbox","formatMap","BwgDatePicker","type","returnType","displayFormat","outputFormat","useMemo","allOutputFormats","f","a","b","dayjs","DatePicker","BwgForm","forwardRef","labelCol","className","props","ref","ConfigProvider","BwgInput","Input","RangePicker","BwgRangePicker","minDate","maxDate","BwgSelect","selectProps","isFormContext","optionList","newValue","selectComponentProps","selectComponent","Select","Space","Typography","BwgSwitch","checked","e","Switch"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ "use strict";const s=require("./jsx-runtime-CeSfJrVB.cjs"),l=require("antd"),Y=require("react"),u=require("dayjs"),c=Y.memo(({children:a,label:t,name:o,rules:i,initialValue:e,style:m,...x})=>{const r={fontWeight:"bold"},d=Array.isArray(i)&&i.some(f=>f.required===!0),n=()=>typeof t=="string"?s.jsxRuntimeExports.jsxs("span",{style:r,children:[t,d&&s.jsxRuntimeExports.jsx("span",{style:{color:"#ff4d4f",marginLeft:"4px"},children:"*"})]}):s.jsxRuntimeExports.jsx("span",{style:r,children:t});return s.jsxRuntimeExports.jsx(l.Form.Item,{className:"bwg-form-item",label:t?n():void 0,labelAlign:"left",name:o,rules:i,colon:!1,initialValue:e,style:m,...x,children:a})}),F=({itemProps:a,inputProps:t={format:"YN"}})=>{const o=l.Form.useFormInstance(),i=e=>{t.format==="boolean"?o.setFieldValue(a?.name,e.target.checked):o.setFieldValue(a?.name,e.target.checked?"Y":"N"),t.onChange&&t.onChange(e)};return s.jsxRuntimeExports.jsx(c,{...a,getValueProps:e=>({checked:t.format==="boolean"?!!e:e==="Y"}),normalize:e=>typeof e=="boolean"?t.format==="boolean"?e:e?"Y":"N":t.format==="boolean"?!!e:e?"Y":"N",children:s.jsxRuntimeExports.jsx(l.Checkbox,{...t,onChange:i,children:t?.title})})},g={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"}},p=({itemProps:a,inputProps:t,type:o="date",returnType:i="string"})=>{const{displayFormat:e,outputFormat:m}=Y.useMemo(()=>g[o],[o]),x=Y.useMemo(()=>Object.values(g).map(r=>r.outputFormat).sort((r,d)=>{if(r.length===d.length){if(r===m)return-1;if(d===m)return 1}return d.length-r.length}),[m]);return s.jsxRuntimeExports.jsx(c,{...a,getValueProps:r=>({value:r?u.isDayjs(r)?r:u(r,x):null}),normalize:r=>r?i==="dayjs"?r:r.format(m):null,children:s.jsxRuntimeExports.jsx(l.DatePicker,{...t,picker:o==="datetime"?"date":o,showTime:t?.showTime??(o==="datetime"||o==="time"),format:e})})},j=Y.forwardRef(({children:a,labelCol:t,style:o,className:i,...e},m)=>s.jsxRuntimeExports.jsx(l.ConfigProvider,{form:{validateMessages:{required:"'${label}을(를) 입력해주세요.'"}},children:s.jsxRuntimeExports.jsx(l.Form,{ref:m,...e,requiredMark:!1,labelCol:t||{flex:"100px"},style:{padding:"10px",...o},className:`bwg-form ${i??""}`,children:a})}));j.displayName="BwgForm";const w=({itemProps:a,inputProps:t})=>s.jsxRuntimeExports.jsx(c,{...a,children:s.jsxRuntimeExports.jsx(l.Input,{...t})}),{RangePicker:M}=l.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"}},y=({itemProps:a,inputProps:t,type:o="date",minDate:i,maxDate:e,returnType:m="string"})=>{const{displayFormat:x,outputFormat:r}=Y.useMemo(()=>h[o],[o]),d=Y.useMemo(()=>Object.values(h).map(n=>n.outputFormat).sort((n,f)=>{if(n.length===f.length){if(n===r)return-1;if(f===r)return 1}return f.length-n.length}),[r]);return s.jsxRuntimeExports.jsx(c,{...a,getValueProps:n=>({value:n&&n.length>0?[n[0]?u.isDayjs(n[0])?n[0]:u(n[0],d):null,n[1]?u.isDayjs(n[1])?n[1]:u(n[1],d):null]:null}),normalize:n=>n?m==="dayjs"?[n[0]??void 0,n[1]??void 0]:[n[0]?n[0].format(r):void 0,n[1]?n[1].format(r):void 0]:[void 0,void 0],children:s.jsxRuntimeExports.jsx(M,{...t,order:!0,minDate:i?u(i,d):void 0,maxDate:e?u(e,d):void 0,picker:o==="datetime"?"date":o,showTime:t?.showTime??(o==="datetime"||o==="time"),format:x})})},R=({itemProps:a,selectProps:t={options:[],allowClear:!0}})=>{const o=l.Form.useFormInstance(),i=!!o,e=Y.useMemo(()=>t?.addField==="ALL"?[{label:"전체",value:""},...t?.options||[]]:t?.addField==="NULL"?[{label:"",value:""},...t?.options||[]]:t?.options||[],[t.options,t.addField]),m=d=>{t.onChange?.(d)},x={...t,allowClear:t.allowClear??!0,options:e,onChange:m,variant:t.variant},r=s.jsxRuntimeExports.jsx(l.Select,{...x,disabled:t.disabled});return t.copyable&&!i&&console.warn("BwgSelect: copyable 기능은 Form 컨텍스트 내에서만 사용 가능합니다."),t.copyable?s.jsxRuntimeExports.jsx(c,{...a,name:void 0,children:s.jsxRuntimeExports.jsxs(l.Space.Compact,{block:!0,children:[s.jsxRuntimeExports.jsx(l.Form.Item,{name:a?.name,rules:a?.rules,style:{width:"100%",marginBottom:0},validateStatus:"",help:"",children:r}),s.jsxRuntimeExports.jsx(l.Typography.Paragraph,{copyable:{text:i&&o?.getFieldValue(a?.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"}})]})}):s.jsxRuntimeExports.jsx(c,{...a,children:r})},b=({itemProps:a,inputProps:t={format:"YN"}})=>{const o=l.Form.useFormInstance(),i=(e,m)=>{t.format==="boolean"?o.setFieldValue(a?.name,e):o.setFieldValue(a?.name,e?"Y":"N"),t.onChange&&t.onChange(e,m)};return s.jsxRuntimeExports.jsx(c,{...a,getValueProps:e=>({checked:t.format==="boolean"?!!e:e==="Y"}),normalize:e=>typeof e=="boolean"?t.format==="boolean"?e:e?"Y":"N":t.format==="boolean"?!!e:e?"Y":"N",children:s.jsxRuntimeExports.jsx(l.Switch,{...t,onChange:(e,m)=>i(e,m)})})};exports.BwgCheck=F;exports.BwgDatePicker=p;exports.BwgForm=j;exports.BwgFormItem=c;exports.BwgInput=w;exports.BwgRangePicker=y;exports.BwgSelect=R;exports.BwgSwitch=b;
2
+ //# sourceMappingURL=BwgSwitch-CAI-kEaM.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BwgSwitch-CAI-kEaM.cjs","sources":["../../src/components/core/BwgFormItem.tsx","../../src/components/core/BwgCheck.tsx","../../src/components/core/BwgDatePicker.tsx","../../src/components/core/BwgForm.tsx","../../src/components/core/BwgInput.tsx","../../src/components/core/BwgRangePicker.tsx","../../src/components/core/BwgSelect.tsx","../../src/components/core/BwgSwitch.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 { 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\n/**\r\n * 체크박스 컴포넌트\r\n * @param itemProps - BwgFormItemProps\r\n * @param inputProps - BwgCheckBoxProps\r\n * @returns \r\n * @example\r\n * <BwgCheck\r\n * itemProps={{ name: 'check' }}\r\n * inputProps={{ format: 'YN' }}\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","import React, { useMemo } from \"react\";\r\nimport { DatePicker } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\nimport { DatePickerProps } from \"antd/es/date-picker\";\r\nimport dayjs, { Dayjs } from \"dayjs\";\r\n\r\nexport interface BwgDatePickerProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: DatePickerProps;\r\n type?: \"year\" | \"month\" | \"date\" | \"time\" | \"datetime\";\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 BwgDatePicker = ({\r\n itemProps,\r\n inputProps,\r\n type = \"date\",\r\n returnType = \"string\",\r\n}: BwgDatePickerProps) => {\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)을 DatePicker가 요구하는 Dayjs로 변환\r\n value: value\r\n ? dayjs.isDayjs(value)\r\n ? (value as Dayjs)\r\n : dayjs(value as any, allOutputFormats)\r\n : null,\r\n })}\r\n normalize={(value) => {\r\n // DatePicker에서 넘어온 Dayjs를 returnType에 따라 반환\r\n if (!value) return null;\r\n if (returnType === \"dayjs\") return value as Dayjs;\r\n return value.format(outputFormat);\r\n }}\r\n >\r\n <DatePicker\r\n {...inputProps}\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로 처리하므로 중복되는 handleChange를 제거합니다.\r\n ></DatePicker>\r\n </BwgFormItem>\r\n );\r\n};\r\n\r\nexport default BwgDatePicker;\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 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 { Form, Select, Space, Typography } from 'antd';\r\nimport { SelectProps } from 'antd/es/select';\r\nimport { useMemo } from 'react';\r\nimport { SimpleCodeItem } from '../../stores/codeStore';\r\nimport BwgFormItem, { BwgFormItemProps } from './BwgFormItem';\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} name={undefined}>\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 { Form, Switch, SwitchProps } from \"antd\";\r\nimport BwgFormItem, { BwgFormItemProps } from \"./BwgFormItem\";\r\n\r\nexport type BwgSwitchItemProps = SwitchProps & {\r\n format?: 'boolean' | 'YN';\r\n };\r\n \r\n export interface BwgSwitchProps {\r\n itemProps?: BwgFormItemProps;\r\n inputProps?: BwgSwitchItemProps;\r\n }\r\n\r\n/**\r\n * 스위치 컴포넌트\r\n * @param itemProps - BwgFormItemProps\r\n * @param inputProps - BwgSwitchItemProps\r\n * @returns \r\n * @example\r\n * <BwgSwitch\r\n * itemProps={{ name: 'switch' }}\r\n * inputProps={{ format: 'YN' }}\r\n * />\r\n * @returns \r\n */\r\nconst BwgSwitch = ({\r\n itemProps,\r\n inputProps = {\r\n format: 'YN',\r\n },\r\n}: BwgSwitchProps) => {\r\n const form = Form.useFormInstance();\r\n \r\n const handleChange = (checked: boolean, e: any) => {\r\n if (inputProps.format === 'boolean') {\r\n form.setFieldValue(itemProps?.name, checked);\r\n } else {\r\n form.setFieldValue(itemProps?.name, checked ? 'Y' : 'N');\r\n }\r\n \r\n inputProps.onChange && inputProps.onChange(checked, e as any);\r\n };\r\n\r\n return <BwgFormItem {...itemProps} \r\n 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 };\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 <Switch {...inputProps} onChange={(checked: boolean, e: any) => handleChange(checked, e)} />\r\n </BwgFormItem>;\r\n};\r\n\r\nexport default BwgSwitch;"],"names":["BwgFormItem","React","children","label","name","rules","initialValue","style","rest","labelStyle","isRequired","rule","renderLabel","jsxs","jsx","Form","BwgCheck","itemProps","inputProps","form","handleChange","value","Checkbox","formatMap","BwgDatePicker","type","returnType","displayFormat","outputFormat","useMemo","allOutputFormats","f","a","b","dayjs","DatePicker","BwgForm","forwardRef","labelCol","className","props","ref","ConfigProvider","BwgInput","Input","RangePicker","BwgRangePicker","minDate","maxDate","BwgSelect","selectProps","isFormContext","optionList","newValue","selectComponentProps","selectComponent","Select","Space","Typography","BwgSwitch","checked","e","Switch"],"mappings":"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"}