@tipp/ui 2.3.20 → 2.3.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/app/index.cjs +5 -2
- package/dist/app/index.cjs.map +1 -1
- package/dist/app/index.js +7 -7
- package/dist/app/platform/coach-question-list.cjs +5 -2
- package/dist/app/platform/coach-question-list.cjs.map +1 -1
- package/dist/app/platform/coach-question-list.js +1 -1
- package/dist/app/platform/contents-card.cjs +5 -2
- package/dist/app/platform/contents-card.cjs.map +1 -1
- package/dist/app/platform/contents-card.js +1 -1
- package/dist/app/platform/edit-coaching-time.cjs +5 -2
- package/dist/app/platform/edit-coaching-time.cjs.map +1 -1
- package/dist/app/platform/edit-coaching-time.js +5 -5
- package/dist/app/platform/edit-service-type.cjs +5 -2
- package/dist/app/platform/edit-service-type.cjs.map +1 -1
- package/dist/app/platform/edit-service-type.js +4 -4
- package/dist/app/platform/goal-manage-card-edit.cjs +5 -2
- package/dist/app/platform/goal-manage-card-edit.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-edit.js +5 -5
- package/dist/app/platform/goal-manage-card-read.cjs +5 -2
- package/dist/app/platform/goal-manage-card-read.cjs.map +1 -1
- package/dist/app/platform/goal-manage-card-read.js +1 -1
- package/dist/app/platform/on-offline-radio-card.cjs +5 -2
- package/dist/app/platform/on-offline-radio-card.cjs.map +1 -1
- package/dist/app/platform/on-offline-radio-card.js +4 -4
- package/dist/app/platform/report-card.cjs +5 -2
- package/dist/app/platform/report-card.cjs.map +1 -1
- package/dist/app/platform/report-card.js +1 -1
- package/dist/app/platform/reservation-card.cjs +5 -2
- package/dist/app/platform/reservation-card.cjs.map +1 -1
- package/dist/app/platform/reservation-card.js +4 -4
- package/dist/app/platform/session-card.cjs +5 -2
- package/dist/app/platform/session-card.cjs.map +1 -1
- package/dist/app/platform/session-card.js +6 -6
- package/dist/app/platform/session-review-simple-read.cjs +5 -2
- package/dist/app/platform/session-review-simple-read.cjs.map +1 -1
- package/dist/app/platform/session-review-simple-read.js +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs +5 -2
- package/dist/app/platform/userInfos/coaching-customer-info/index.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/index.js +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs +5 -2
- package/dist/app/platform/userInfos/coaching-customer-info/large.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/large.js +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs +5 -2
- package/dist/app/platform/userInfos/coaching-customer-info/medium.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/medium.js +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs +5 -2
- package/dist/app/platform/userInfos/coaching-customer-info/small.cjs.map +1 -1
- package/dist/app/platform/userInfos/coaching-customer-info/small.js +1 -1
- package/dist/app/platform/userInfos/session-user-info-detail.cjs +5 -2
- package/dist/app/platform/userInfos/session-user-info-detail.cjs.map +1 -1
- package/dist/app/platform/userInfos/session-user-info-detail.js +1 -1
- package/dist/app/platform/userInfos/utils.cjs +5 -2
- package/dist/app/platform/userInfos/utils.cjs.map +1 -1
- package/dist/app/platform/userInfos/utils.js +1 -1
- package/dist/atoms/index.cjs +5 -2
- package/dist/atoms/index.cjs.map +1 -1
- package/dist/atoms/index.js +1 -1
- package/dist/chunk-3C6HB5HA.js +144 -0
- package/dist/chunk-3C6HB5HA.js.map +1 -0
- package/dist/chunk-3CJZYFG3.js +174 -0
- package/dist/chunk-3CJZYFG3.js.map +1 -0
- package/dist/chunk-4U6DFH7Z.js +50 -0
- package/dist/chunk-4U6DFH7Z.js.map +1 -0
- package/dist/chunk-5IIGHOLB.js +196 -0
- package/dist/chunk-5IIGHOLB.js.map +1 -0
- package/dist/chunk-7TOQOZH7.js +245 -0
- package/dist/chunk-7TOQOZH7.js.map +1 -0
- package/dist/chunk-7ZH2GXUS.js +174 -0
- package/dist/chunk-7ZH2GXUS.js.map +1 -0
- package/dist/chunk-AC6MUU6D.js +146 -0
- package/dist/chunk-AC6MUU6D.js.map +1 -0
- package/dist/chunk-AGTBJUYD.js +50 -0
- package/dist/chunk-AGTBJUYD.js.map +1 -0
- package/dist/chunk-BSRPUECS.js +144 -0
- package/dist/chunk-BSRPUECS.js.map +1 -0
- package/dist/chunk-C24L6Z2K.js +69 -0
- package/dist/chunk-C24L6Z2K.js.map +1 -0
- package/dist/chunk-CAYZTABQ.js +144 -0
- package/dist/chunk-CAYZTABQ.js.map +1 -0
- package/dist/chunk-CKQYG7TZ.js +245 -0
- package/dist/chunk-CKQYG7TZ.js.map +1 -0
- package/dist/chunk-CLLBSWGX.js +145 -0
- package/dist/chunk-CLLBSWGX.js.map +1 -0
- package/dist/chunk-CNJT7KEY.js +218 -0
- package/dist/chunk-CNJT7KEY.js.map +1 -0
- package/dist/chunk-DNIPGDRU.js +145 -0
- package/dist/chunk-DNIPGDRU.js.map +1 -0
- package/dist/chunk-DPPRU4D3.js +174 -0
- package/dist/chunk-DPPRU4D3.js.map +1 -0
- package/dist/chunk-DZ6LWD2X.js +174 -0
- package/dist/chunk-DZ6LWD2X.js.map +1 -0
- package/dist/chunk-DZCLAKSB.js +218 -0
- package/dist/chunk-DZCLAKSB.js.map +1 -0
- package/dist/chunk-EDJIZYNL.js +89 -0
- package/dist/chunk-EDJIZYNL.js.map +1 -0
- package/dist/chunk-EE4HLQGV.js +145 -0
- package/dist/chunk-EE4HLQGV.js.map +1 -0
- package/dist/chunk-GJ4GPOIC.js +144 -0
- package/dist/chunk-GJ4GPOIC.js.map +1 -0
- package/dist/chunk-GLZ66EYJ.js +146 -0
- package/dist/chunk-GLZ66EYJ.js.map +1 -0
- package/dist/chunk-H7IE4ZJG.js +174 -0
- package/dist/chunk-H7IE4ZJG.js.map +1 -0
- package/dist/chunk-I7E2IWC4.js +149 -0
- package/dist/chunk-I7E2IWC4.js.map +1 -0
- package/dist/chunk-IDY6K633.js +145 -0
- package/dist/chunk-IDY6K633.js.map +1 -0
- package/dist/chunk-IKJLNJ64.js +145 -0
- package/dist/chunk-IKJLNJ64.js.map +1 -0
- package/dist/chunk-IW7G7LMH.js +245 -0
- package/dist/chunk-IW7G7LMH.js.map +1 -0
- package/dist/chunk-JFM62CXW.js +50 -0
- package/dist/chunk-JFM62CXW.js.map +1 -0
- package/dist/chunk-KC6AEXYR.js +174 -0
- package/dist/chunk-KC6AEXYR.js.map +1 -0
- package/dist/chunk-KOMV6H3L.js +144 -0
- package/dist/chunk-KOMV6H3L.js.map +1 -0
- package/dist/chunk-KVO5ZNRN.js +50 -0
- package/dist/chunk-KVO5ZNRN.js.map +1 -0
- package/dist/chunk-KZVNK5NO.js +145 -0
- package/dist/chunk-KZVNK5NO.js.map +1 -0
- package/dist/chunk-L7ATTNZ2.js +174 -0
- package/dist/chunk-L7ATTNZ2.js.map +1 -0
- package/dist/chunk-LTJELIXX.js +149 -0
- package/dist/chunk-LTJELIXX.js.map +1 -0
- package/dist/chunk-LWVP3RG6.js +212 -0
- package/dist/chunk-LWVP3RG6.js.map +1 -0
- package/dist/chunk-MG3MDWHJ.js +245 -0
- package/dist/chunk-MG3MDWHJ.js.map +1 -0
- package/dist/chunk-MQXF7JLT.js +145 -0
- package/dist/chunk-MQXF7JLT.js.map +1 -0
- package/dist/chunk-N5B7ANSJ.js +145 -0
- package/dist/chunk-N5B7ANSJ.js.map +1 -0
- package/dist/chunk-OSEENHZJ.js +50 -0
- package/dist/chunk-OSEENHZJ.js.map +1 -0
- package/dist/chunk-P4HTQBD6.js +245 -0
- package/dist/chunk-P4HTQBD6.js.map +1 -0
- package/dist/chunk-P74G3XSY.js +50 -0
- package/dist/chunk-P74G3XSY.js.map +1 -0
- package/dist/chunk-PTYFKWCC.js +145 -0
- package/dist/chunk-PTYFKWCC.js.map +1 -0
- package/dist/chunk-PYQQZYJL.js +145 -0
- package/dist/chunk-PYQQZYJL.js.map +1 -0
- package/dist/chunk-Q267B6E6.js +146 -0
- package/dist/chunk-Q267B6E6.js.map +1 -0
- package/dist/chunk-QDC3LFHS.js +149 -0
- package/dist/chunk-QDC3LFHS.js.map +1 -0
- package/dist/chunk-RCTE4E7R.js +144 -0
- package/dist/chunk-RCTE4E7R.js.map +1 -0
- package/dist/chunk-S5M6VXKE.js +144 -0
- package/dist/chunk-S5M6VXKE.js.map +1 -0
- package/dist/chunk-SB2VNB4J.js +145 -0
- package/dist/chunk-SB2VNB4J.js.map +1 -0
- package/dist/chunk-SJ7MGKPR.js +245 -0
- package/dist/chunk-SJ7MGKPR.js.map +1 -0
- package/dist/chunk-SM22LXE7.js +145 -0
- package/dist/chunk-SM22LXE7.js.map +1 -0
- package/dist/chunk-SP4QJ7QT.js +69 -0
- package/dist/chunk-SP4QJ7QT.js.map +1 -0
- package/dist/chunk-VGHBEX6O.js +145 -0
- package/dist/chunk-VGHBEX6O.js.map +1 -0
- package/dist/chunk-VJ7AGB7Y.js +245 -0
- package/dist/chunk-VJ7AGB7Y.js.map +1 -0
- package/dist/chunk-VNJ3VOSY.js +50 -0
- package/dist/chunk-VNJ3VOSY.js.map +1 -0
- package/dist/chunk-WZLD5ZHV.js +245 -0
- package/dist/chunk-WZLD5ZHV.js.map +1 -0
- package/dist/chunk-Z4NLUDDL.js +145 -0
- package/dist/chunk-Z4NLUDDL.js.map +1 -0
- package/dist/chunk-ZOMXQCLY.js +245 -0
- package/dist/chunk-ZOMXQCLY.js.map +1 -0
- package/dist/chunk-ZVWUCJMB.js +146 -0
- package/dist/chunk-ZVWUCJMB.js.map +1 -0
- package/dist/context/dynamic-form-context.cjs +5 -2
- package/dist/context/dynamic-form-context.cjs.map +1 -1
- package/dist/context/dynamic-form-context.js +2 -2
- package/dist/context/index.cjs +5 -2
- package/dist/context/index.cjs.map +1 -1
- package/dist/context/index.js +2 -2
- package/dist/index.cjs +44 -14
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +7 -7
- package/dist/molecules/dynamic-field.cjs +5 -2
- package/dist/molecules/dynamic-field.cjs.map +1 -1
- package/dist/molecules/dynamic-field.js +3 -3
- package/dist/molecules/dynamic-form.cjs +44 -14
- package/dist/molecules/dynamic-form.cjs.map +1 -1
- package/dist/molecules/dynamic-form.js +4 -4
- package/dist/molecules/form/form.cjs +5 -2
- package/dist/molecules/form/form.cjs.map +1 -1
- package/dist/molecules/form/form.js +1 -1
- package/dist/molecules/form/index.cjs +5 -2
- package/dist/molecules/form/index.cjs.map +1 -1
- package/dist/molecules/form/index.js +1 -1
- package/dist/molecules/index.cjs +44 -14
- package/dist/molecules/index.cjs.map +1 -1
- package/dist/molecules/index.js +4 -4
- package/package.json +1 -1
- package/src/molecules/dynamic-form.tsx +44 -15
- package/src/molecules/form/form.tsx +10 -2
package/dist/molecules/index.js
CHANGED
|
@@ -87,10 +87,10 @@ import {
|
|
|
87
87
|
import {
|
|
88
88
|
DynamicForm,
|
|
89
89
|
createYupValidation
|
|
90
|
-
} from "../chunk-
|
|
90
|
+
} from "../chunk-SJ7MGKPR.js";
|
|
91
91
|
import {
|
|
92
92
|
DynamicFormField
|
|
93
|
-
} from "../chunk-
|
|
93
|
+
} from "../chunk-DNIPGDRU.js";
|
|
94
94
|
import {
|
|
95
95
|
ForceRefresh
|
|
96
96
|
} from "../chunk-EWFZXCMV.js";
|
|
@@ -108,8 +108,8 @@ import "../chunk-3INEXJIV.js";
|
|
|
108
108
|
import {
|
|
109
109
|
DotNavigation
|
|
110
110
|
} from "../chunk-IJOOKMKQ.js";
|
|
111
|
-
import "../chunk-
|
|
112
|
-
import "../chunk-
|
|
111
|
+
import "../chunk-4U6DFH7Z.js";
|
|
112
|
+
import "../chunk-QDC3LFHS.js";
|
|
113
113
|
import "../chunk-5ZITU5L7.js";
|
|
114
114
|
import "../chunk-5XYPLDI5.js";
|
|
115
115
|
import "../chunk-6NPTJBFE.js";
|
package/package.json
CHANGED
|
@@ -26,21 +26,28 @@ export interface DynamicFormProps {
|
|
|
26
26
|
/**
|
|
27
27
|
* 첫 번째 에러 필드로 스크롤하는 함수
|
|
28
28
|
*/
|
|
29
|
-
function scrollToFirstError(
|
|
29
|
+
function scrollToFirstError(
|
|
30
|
+
errors: Record<string, unknown>,
|
|
31
|
+
_fields: DynamicFormFieldSchema[]
|
|
32
|
+
): void {
|
|
30
33
|
const firstErrorFieldName = Object.keys(errors)[0];
|
|
31
34
|
if (!firstErrorFieldName) return;
|
|
32
35
|
|
|
33
36
|
// 해당 필드의 DOM 요소를 찾기 (여러 선택자 시도)
|
|
34
37
|
let fieldElement = document.querySelector(`[name="${firstErrorFieldName}"]`);
|
|
35
|
-
|
|
38
|
+
|
|
36
39
|
// input 요소를 찾지 못한 경우, 해당 필드의 컨테이너를 찾기
|
|
37
40
|
if (!fieldElement) {
|
|
38
|
-
fieldElement = document.querySelector(
|
|
41
|
+
fieldElement = document.querySelector(
|
|
42
|
+
`[data-field-name="${firstErrorFieldName}"]`
|
|
43
|
+
);
|
|
39
44
|
}
|
|
40
|
-
|
|
45
|
+
|
|
41
46
|
// 여전히 찾지 못한 경우, FormItem의 에러 메시지 영역을 찾기
|
|
42
47
|
if (!fieldElement) {
|
|
43
|
-
fieldElement = document.querySelector(
|
|
48
|
+
fieldElement = document.querySelector(
|
|
49
|
+
`[data-error-field="${firstErrorFieldName}"]`
|
|
50
|
+
);
|
|
44
51
|
}
|
|
45
52
|
|
|
46
53
|
if (fieldElement) {
|
|
@@ -75,7 +82,10 @@ function DynamicFormRoot({
|
|
|
75
82
|
.required(`${field.label}은(는) 필수입니다`);
|
|
76
83
|
} else if (field.type === 'yes_no') {
|
|
77
84
|
// yes_no 타입은 boolean 스키마로 처리
|
|
78
|
-
schema[field.name] = Yup.boolean().oneOf(
|
|
85
|
+
schema[field.name] = Yup.boolean().oneOf(
|
|
86
|
+
[true],
|
|
87
|
+
`${field.label}에 동의해주세요`
|
|
88
|
+
);
|
|
79
89
|
} else {
|
|
80
90
|
// choice, dropdown, short_text, long_text, number, email 타입은 문자열 스키마로 처리
|
|
81
91
|
schema[field.name] = Yup.string().required(
|
|
@@ -87,9 +97,12 @@ function DynamicFormRoot({
|
|
|
87
97
|
return Object.keys(schema).length > 0 ? Yup.object(schema) : undefined;
|
|
88
98
|
}, [fields]);
|
|
89
99
|
|
|
90
|
-
const handleSubmit = useCallback(
|
|
91
|
-
|
|
92
|
-
|
|
100
|
+
const handleSubmit = useCallback(
|
|
101
|
+
async (values: Record<string, unknown>) => {
|
|
102
|
+
await onSubmit(values);
|
|
103
|
+
},
|
|
104
|
+
[onSubmit]
|
|
105
|
+
);
|
|
93
106
|
|
|
94
107
|
const formik: FormikProps<Record<string, unknown>> = useFormik({
|
|
95
108
|
initialValues: fields.reduce<Record<string, unknown>>((acc, field) => {
|
|
@@ -115,7 +128,7 @@ function DynamicFormRoot({
|
|
|
115
128
|
const timeoutId = setTimeout(() => {
|
|
116
129
|
scrollToFirstError(formik.errors, fields);
|
|
117
130
|
}, 100);
|
|
118
|
-
|
|
131
|
+
|
|
119
132
|
return () => {
|
|
120
133
|
clearTimeout(timeoutId);
|
|
121
134
|
};
|
|
@@ -123,7 +136,12 @@ function DynamicFormRoot({
|
|
|
123
136
|
}, [formik.submitCount, formik.errors, fields]);
|
|
124
137
|
|
|
125
138
|
return (
|
|
126
|
-
<DynamicFormProvider
|
|
139
|
+
<DynamicFormProvider
|
|
140
|
+
fields={fields}
|
|
141
|
+
formStyle={formStyle}
|
|
142
|
+
formik={formik}
|
|
143
|
+
readonly={readonly}
|
|
144
|
+
>
|
|
127
145
|
{children}
|
|
128
146
|
</DynamicFormProvider>
|
|
129
147
|
);
|
|
@@ -161,9 +179,12 @@ function DynamicFormFieldList({
|
|
|
161
179
|
labelVariant={labelVariant}
|
|
162
180
|
name={field.name}
|
|
163
181
|
required={field.required}
|
|
182
|
+
|
|
164
183
|
>
|
|
184
|
+
{field.description && field.type !== 'yes_no' ? (
|
|
185
|
+
<Typo variant="caption">{field.description}</Typo>
|
|
186
|
+
) : null}
|
|
165
187
|
<DynamicFormField field={field} />
|
|
166
|
-
{field.description && field.type !== 'yes_no' ? <Typo color="gray" variant="caption">{field.description}</Typo> : null}
|
|
167
188
|
</Form.FormItem>
|
|
168
189
|
</Box>
|
|
169
190
|
);
|
|
@@ -260,11 +281,19 @@ export function createYupValidation(
|
|
|
260
281
|
// field.required가 true인 경우 required 검증 추가
|
|
261
282
|
if (field.required) {
|
|
262
283
|
if (field.type === 'yes_no') {
|
|
263
|
-
schema = (schema as Yup.BooleanSchema).oneOf(
|
|
284
|
+
schema = (schema as Yup.BooleanSchema).oneOf(
|
|
285
|
+
[true],
|
|
286
|
+
validation.message || `${field.label}에 동의해주세요`
|
|
287
|
+
);
|
|
264
288
|
} else if (field.type === 'choices') {
|
|
265
|
-
schema = (schema as ReturnType<typeof Yup.array>).min(
|
|
289
|
+
schema = (schema as ReturnType<typeof Yup.array>).min(
|
|
290
|
+
1,
|
|
291
|
+
validation.message || `${field.label}을(를) 하나 이상 선택해주세요`
|
|
292
|
+
);
|
|
266
293
|
} else {
|
|
267
|
-
schema = (schema as Yup.StringSchema).required(
|
|
294
|
+
schema = (schema as Yup.StringSchema).required(
|
|
295
|
+
validation.message || `${field.label}은(는) 필수입니다`
|
|
296
|
+
);
|
|
268
297
|
}
|
|
269
298
|
}
|
|
270
299
|
|
|
@@ -57,7 +57,15 @@ function HeadingLabel(props: HeadingProps): React.ReactNode {
|
|
|
57
57
|
|
|
58
58
|
function CaptionLabel(props: TypoProps): React.ReactNode {
|
|
59
59
|
return (
|
|
60
|
-
<Typo color="gray" variant="caption" {...props}>
|
|
60
|
+
<Typo color="gray" variant="caption" weight="bold" {...props}>
|
|
61
|
+
{props.children}
|
|
62
|
+
</Typo>
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
function BodyLabel(props: TypoProps): React.ReactNode {
|
|
67
|
+
return (
|
|
68
|
+
<Typo variant="body" weight="bold" {...props}>
|
|
61
69
|
{props.children}
|
|
62
70
|
</Typo>
|
|
63
71
|
);
|
|
@@ -73,7 +81,7 @@ const Label = forwardRef<HTMLLabelElement, FormLabelProps>(
|
|
|
73
81
|
return CaptionLabel;
|
|
74
82
|
case 'body':
|
|
75
83
|
default:
|
|
76
|
-
return
|
|
84
|
+
return BodyLabel;
|
|
77
85
|
}
|
|
78
86
|
}, [variant]);
|
|
79
87
|
|