@kokimoki/app 0.4.4 → 0.5.1
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/fields.d.ts +14 -9
- package/dist/fields.js +23 -12
- package/package.json +1 -1
package/dist/fields.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export interface FieldOptions {
|
|
2
2
|
label?: string;
|
|
3
|
-
optional: boolean;
|
|
4
3
|
}
|
|
5
4
|
export declare abstract class Field<T> {
|
|
6
5
|
readonly options: FieldOptions;
|
|
@@ -44,7 +43,7 @@ export declare class EnumField<T extends Record<string, string>> extends Field<k
|
|
|
44
43
|
value: keyof T;
|
|
45
44
|
constructor(enumValues: T, value: keyof T, options?: FieldOptions);
|
|
46
45
|
get schema(): {
|
|
47
|
-
enum:
|
|
46
|
+
enum: string[];
|
|
48
47
|
};
|
|
49
48
|
}
|
|
50
49
|
export declare class IntegerField extends Field<number> {
|
|
@@ -55,17 +54,23 @@ export declare class IntegerField extends Field<number> {
|
|
|
55
54
|
default: number;
|
|
56
55
|
};
|
|
57
56
|
}
|
|
58
|
-
export declare class FormGroup<T extends Record<string, Field<any>>> extends Field<{
|
|
59
|
-
[key in keyof T]:
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
|
|
57
|
+
export declare class FormGroup<T extends Record<string, Field<any>>, O extends Record<string, Field<any>>> extends Field<{
|
|
58
|
+
[key in keyof T]: T[key]["value"];
|
|
59
|
+
} & Partial<{
|
|
60
|
+
[key in keyof O]: O[key]["value"];
|
|
61
|
+
}>> {
|
|
62
|
+
requiredFields: T;
|
|
63
|
+
optionalFields: O;
|
|
64
|
+
constructor(requiredFields: T, optionalFields?: O, options?: FieldOptions);
|
|
63
65
|
get value(): {
|
|
64
66
|
[key in keyof T]: T[key]["value"];
|
|
65
|
-
}
|
|
67
|
+
} & Partial<{
|
|
68
|
+
[key in keyof O]: O[key]["value"];
|
|
69
|
+
}>;
|
|
66
70
|
get schema(): {
|
|
67
71
|
type: string;
|
|
68
72
|
properties: any;
|
|
73
|
+
required: string[];
|
|
69
74
|
};
|
|
70
75
|
}
|
|
71
76
|
export declare class FormArray<T> extends Field<T[]> {
|
|
@@ -78,5 +83,5 @@ export declare class FormArray<T> extends Field<T[]> {
|
|
|
78
83
|
default: T[];
|
|
79
84
|
};
|
|
80
85
|
}
|
|
81
|
-
export declare class Form<
|
|
86
|
+
export declare class Form<R extends Record<string, Field<any>>, O extends Record<string, Field<any>>> extends FormGroup<R, O> {
|
|
82
87
|
}
|
package/dist/fields.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
const defaultFieldOptions = {
|
|
2
|
-
optional: false,
|
|
3
|
-
};
|
|
1
|
+
const defaultFieldOptions = {};
|
|
4
2
|
export class Field {
|
|
5
3
|
options;
|
|
6
4
|
constructor(options) {
|
|
@@ -68,7 +66,7 @@ export class EnumField extends Field {
|
|
|
68
66
|
}
|
|
69
67
|
get schema() {
|
|
70
68
|
return {
|
|
71
|
-
enum: this.enumValues,
|
|
69
|
+
enum: Object.keys(this.enumValues),
|
|
72
70
|
};
|
|
73
71
|
}
|
|
74
72
|
}
|
|
@@ -86,24 +84,37 @@ export class IntegerField extends Field {
|
|
|
86
84
|
}
|
|
87
85
|
}
|
|
88
86
|
export class FormGroup extends Field {
|
|
89
|
-
|
|
90
|
-
|
|
87
|
+
requiredFields;
|
|
88
|
+
optionalFields;
|
|
89
|
+
constructor(requiredFields, optionalFields = {}, options = defaultFieldOptions) {
|
|
91
90
|
super(options);
|
|
92
|
-
this.
|
|
91
|
+
this.requiredFields = requiredFields;
|
|
92
|
+
this.optionalFields = optionalFields;
|
|
93
93
|
}
|
|
94
94
|
get value() {
|
|
95
|
-
|
|
95
|
+
const value = Object.entries(this.requiredFields).reduce((acc, [key, field]) => {
|
|
96
96
|
acc[key] = field.value;
|
|
97
97
|
return acc;
|
|
98
98
|
}, {});
|
|
99
|
+
Object.entries(this.optionalFields).forEach(([key, field]) => {
|
|
100
|
+
if (field.value !== undefined) {
|
|
101
|
+
value[key] = field.value;
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
return value;
|
|
99
105
|
}
|
|
100
106
|
get schema() {
|
|
107
|
+
const properties = {};
|
|
108
|
+
Object.entries(this.requiredFields).forEach(([key, field]) => {
|
|
109
|
+
properties[key] = field.schema;
|
|
110
|
+
});
|
|
111
|
+
Object.entries(this.optionalFields).forEach(([key, field]) => {
|
|
112
|
+
properties[key] = field.schema;
|
|
113
|
+
});
|
|
101
114
|
return {
|
|
102
115
|
type: "object",
|
|
103
|
-
properties
|
|
104
|
-
|
|
105
|
-
return acc;
|
|
106
|
-
}, {}),
|
|
116
|
+
properties,
|
|
117
|
+
required: Object.keys(this.requiredFields),
|
|
107
118
|
};
|
|
108
119
|
}
|
|
109
120
|
}
|