-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
-
19
-
20
-
21
-
22
-
23
-
24
-
25
-
26
-
27
-
28
-
29
-
30
-
31
-
32
-
33
-
34
-
35
-
36
-
37
-
38
-
39
-
40
-
41
-
42
-
43
-
44
-
45
-
46
-
47
-
48
-
49
-
50
-
51
-
52
-
53
-
54
-
55
-
56
-
57
-
58
-
59
-
60
-
61
-
62
-
63
-
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
import type * as yup from "yup";
// NOTE: `notType` is omitted because it's too hard to users to understand the
// concept and what's happening. Write your own if you need that one.
export const mixed: yup.LocaleObject["mixed"] = {
default: ({ label }) =>
(label ? label + "には" : "") + "正しい値を入力してください",
required: ({ label }) =>
(label ? label + "には" : "") + "値を入力してください",
oneOf: ({ label, values }) =>
(label ? label + "には" : "") + `${values}のいずれかを入力してください`,
notOneOf: ({ label, values }) =>
(label ? label + "には" : "") + `${values}以外のものを入力してください`,
// From user's perspective, defined and default is essentially same.
defined: ({ label }) =>
(label ? label + "には" : "") + "値を入力してください",
};
export const string: yup.LocaleObject["string"] = {
length: ({ label, length }) =>
(label ? label + "は" : "") + `${length}文字で入力してください`,
min: ({ label, min }) =>
(label ? label + "は" : "") + `${min}文字以上入力してください`,
max: ({ label, max }) =>
(label ? label + "は" : "") + `${max}文字以下にしてください`,
matches: ({ label, regex }) =>
(label ? label + "は" : "") + `以下の形式で入力してください: ${regex}`,
email: ({ label }) =>
(label ? label + "には" : "") + "正しいメールアドレスを入力してください",
url: ({ label }) =>
(label ? label + "には" : "") + "正しいURLを入力してください",
uuid: ({ label }) =>
(label ? label + "には" : "") + "正しいUUIDを入力してください",
trim: ({ label }) =>
(label ? label + "の" : "") + "前後の空白を取り除いてください",
lowercase: ({ label }) =>
(label ? label + "には" : "") + "小文字のみ入力してください",
uppercase: ({ label }) =>
(label ? label + "には" : "") + "大文字のみ入力してください",
};
export const number: yup.LocaleObject["number"] = {
min: ({ label, min }) =>
(label ? label + "は" : "") + `${min}以上にしてください`,
max: ({ label, max }) =>
(label ? label + "は" : "") + `${max}以下にしてください`,
lessThan: ({ label, less }) =>
(label ? label + "は" : "") + `${less}未満にしてください`,
moreThan: ({ label, more }) =>
(label ? label + "は" : "") + `${more}より大きい数にしてください`,
positive: ({ label }) => (label ? label + "は" : "") + "正の数にしてください",
negative: ({ label }) => (label ? label + "は" : "") + "負の数にしてください",
integer: ({ label }) =>
(label ? label + "には" : "") + "整数を入力してください",
};
// To format date, use the second argument of yup.date().min/max.
export const date: yup.LocaleObject["date"] = {
min: ({ label, min }) =>
(label ? label + "には" : "") + `${min}以降の日付を入力してください`,
max: ({ label, max }) =>
(label ? label + "には" : "") + `${max}以前の日付を入力してください`,
};
export const object: yup.LocaleObject["object"] = {
// There is no way to describe `noUnknown` message in suggestive way, right?
noUnknown: ({ label, unknown }: { label?: string; unknown?: string }) =>
(label ? label + "には" : "") +
"登録されていないキーは入力できません" +
(unknown ? ": " + unknown : ""),
};
export const array: yup.LocaleObject["array"] = {
min: ({ label, min }) =>
(label ? label + "は" : "") + `${min}つ以上入力してください`,
max: ({ label, max }) =>
(label ? label + "は" : "") + `${max}つ以下にしてください`,
};
/**
* Suggestive messages.
*/
export const suggestive: yup.LocaleObject = {
mixed,
string,
number,
date,
object,
array,
};