@douyinfe/semi-foundation 2.60.0 → 2.61.0-alpha.0
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/form/foundation.ts +40 -3
- package/form/interface.ts +9 -1
- package/lib/cjs/form/foundation.d.ts +7 -0
- package/lib/cjs/form/foundation.js +37 -4
- package/lib/cjs/form/interface.d.ts +7 -0
- package/lib/es/form/foundation.d.ts +7 -0
- package/lib/es/form/foundation.js +37 -4
- package/lib/es/form/interface.d.ts +7 -0
- package/package.json +2 -2
package/form/foundation.ts
CHANGED
|
@@ -9,6 +9,11 @@ import { BaseFormAdapter, FormState, CallOpts, FieldState, FieldStaff, Component
|
|
|
9
9
|
|
|
10
10
|
export type { BaseFormAdapter };
|
|
11
11
|
|
|
12
|
+
type ScrollToErrorOpts = {
|
|
13
|
+
field?: string;
|
|
14
|
+
index?: number;
|
|
15
|
+
scrollOpts?: ScrollIntoViewOptions
|
|
16
|
+
}
|
|
12
17
|
export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
13
18
|
|
|
14
19
|
data: FormState;
|
|
@@ -72,6 +77,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
72
77
|
this.getFormProps = this.getFormProps.bind(this);
|
|
73
78
|
this.getFieldExist = this.getFieldExist.bind(this);
|
|
74
79
|
this.scrollToField = this.scrollToField.bind(this);
|
|
80
|
+
this.scrollToError = this.scrollToError.bind(this);
|
|
75
81
|
}
|
|
76
82
|
|
|
77
83
|
init() {
|
|
@@ -130,7 +136,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
130
136
|
this._adapter.forceUpdate();
|
|
131
137
|
}
|
|
132
138
|
|
|
133
|
-
// in order to
|
|
139
|
+
// in order to solve bytedance internal issue-289
|
|
134
140
|
registerArrayField(arrayFieldPath: string, val: any): void {
|
|
135
141
|
this.updateArrayField(arrayFieldPath, {
|
|
136
142
|
updateKey: new Date().valueOf(),
|
|
@@ -622,6 +628,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
622
628
|
submitForm: () => this.submit(),
|
|
623
629
|
getFieldExist: (field: string) => this.getFieldExist(field),
|
|
624
630
|
scrollToField: (field: string, scrollOpts?: ScrollIntoViewOptions) => this.scrollToField(field, scrollOpts),
|
|
631
|
+
scrollToError: (opts?: ScrollToErrorOpts) => this.scrollToError(opts),
|
|
625
632
|
};
|
|
626
633
|
}
|
|
627
634
|
|
|
@@ -701,8 +708,8 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
701
708
|
const errorDOM = this._adapter.getAllErrorDOM();
|
|
702
709
|
if (errorDOM && errorDOM.length) {
|
|
703
710
|
try {
|
|
704
|
-
const
|
|
705
|
-
scrollIntoView(
|
|
711
|
+
const fieldDOM = errorDOM[0].parentNode.parentNode;
|
|
712
|
+
scrollIntoView(fieldDOM as Element, scrollOpts);
|
|
706
713
|
} catch (error) {}
|
|
707
714
|
}
|
|
708
715
|
}
|
|
@@ -713,4 +720,34 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
713
720
|
scrollIntoView(fieldDOM as Element, scrollOpts);
|
|
714
721
|
}
|
|
715
722
|
}
|
|
723
|
+
|
|
724
|
+
scrollToError(config?: ScrollToErrorOpts): void {
|
|
725
|
+
let scrollOpts: ScrollIntoViewOptions = config && config.scrollOpts ? config.scrollOpts : { behavior: 'smooth', block: 'start' };
|
|
726
|
+
let field = config && config.field;
|
|
727
|
+
let index = config && config.index;
|
|
728
|
+
let fieldDOM, errorDOM;
|
|
729
|
+
if (typeof index === 'number') {
|
|
730
|
+
const allErrorDOM = this._adapter.getAllErrorDOM();
|
|
731
|
+
let errorDOM = allErrorDOM[index];
|
|
732
|
+
if (errorDOM) {
|
|
733
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
734
|
+
}
|
|
735
|
+
} else if (field) {
|
|
736
|
+
// If field is specified, find the error dom of the corresponding field
|
|
737
|
+
errorDOM = this._adapter.getFieldErrorDOM(field);
|
|
738
|
+
if (errorDOM) {
|
|
739
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
740
|
+
}
|
|
741
|
+
} else if (typeof field === 'undefined') {
|
|
742
|
+
// If field is not specified, find all error doms and scroll to the first one
|
|
743
|
+
let allErrorDOM = this._adapter.getAllErrorDOM();
|
|
744
|
+
if (allErrorDOM && allErrorDOM.length) {
|
|
745
|
+
fieldDOM = allErrorDOM[0].parentNode.parentNode;
|
|
746
|
+
}
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
if (fieldDOM) {
|
|
750
|
+
scrollIntoView(fieldDOM as Element, scrollOpts);
|
|
751
|
+
}
|
|
752
|
+
}
|
|
716
753
|
}
|
package/form/interface.ts
CHANGED
|
@@ -22,6 +22,7 @@ export interface BaseFormAdapter<P = Record<string, any>, S = Record<string, any
|
|
|
22
22
|
getFormProps: (keys: undefined | string | Array<string>) => any;
|
|
23
23
|
getAllErrorDOM: () => NodeList;
|
|
24
24
|
getFieldDOM: (field: string) => Node;
|
|
25
|
+
getFieldErrorDOM: (field: string) => Node;
|
|
25
26
|
initFormId: () => void
|
|
26
27
|
}
|
|
27
28
|
|
|
@@ -62,6 +63,12 @@ export type FieldPathValue<T, P extends FieldPath<T>> =
|
|
|
62
63
|
? T[P]
|
|
63
64
|
: never;
|
|
64
65
|
|
|
66
|
+
export type ScrollToErrorOptions<K> = {
|
|
67
|
+
field?: K;
|
|
68
|
+
index?: number;
|
|
69
|
+
scrollConfig?: ScrollIntoViewOptions
|
|
70
|
+
}
|
|
71
|
+
|
|
65
72
|
// use object replace Record<string, any>, fix issue 933
|
|
66
73
|
export interface BaseFormApi<T extends object = any> {
|
|
67
74
|
/** get value of field */
|
|
@@ -91,7 +98,8 @@ export interface BaseFormApi<T extends object = any> {
|
|
|
91
98
|
getValues: () => T;
|
|
92
99
|
/** set value of multiple fields */
|
|
93
100
|
setValues: (fieldsValue: Partial<T>, config?: setValuesConfig) => void;
|
|
94
|
-
scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void
|
|
101
|
+
scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void;
|
|
102
|
+
scrollToError: <K extends keyof T>(config?: ScrollToErrorOptions<K>) => void
|
|
95
103
|
}
|
|
96
104
|
|
|
97
105
|
export interface CallOpts {
|
|
@@ -2,6 +2,11 @@ import BaseFoundation from '../base/foundation';
|
|
|
2
2
|
import { Options as ScrollIntoViewOptions } from 'scroll-into-view-if-needed';
|
|
3
3
|
import { BaseFormAdapter, FormState, CallOpts, FieldState, FieldStaff, ComponentProps, setValuesConfig, ArrayFieldStaff } from './interface';
|
|
4
4
|
export type { BaseFormAdapter };
|
|
5
|
+
type ScrollToErrorOpts = {
|
|
6
|
+
field?: string;
|
|
7
|
+
index?: number;
|
|
8
|
+
scrollOpts?: ScrollIntoViewOptions;
|
|
9
|
+
};
|
|
5
10
|
export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
6
11
|
data: FormState;
|
|
7
12
|
fields: Map<string, FieldStaff>;
|
|
@@ -85,6 +90,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
85
90
|
submitForm: () => void;
|
|
86
91
|
getFieldExist: (field: string) => boolean;
|
|
87
92
|
scrollToField: (field: string, scrollOpts?: ScrollIntoViewOptions) => void;
|
|
93
|
+
scrollToError: (opts?: ScrollToErrorOpts) => void;
|
|
88
94
|
setValue: (field: string, value: any, opts: CallOpts) => void;
|
|
89
95
|
setError: (field: string, error: any, opts: CallOpts) => void;
|
|
90
96
|
setTouched: (field: string, isTouched: boolean, opts: CallOpts) => void;
|
|
@@ -98,4 +104,5 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
98
104
|
_autoScroll(timeout?: boolean | number): void;
|
|
99
105
|
_getErrorFieldAndScroll(scrollOpts?: ScrollIntoViewOptions | boolean): void;
|
|
100
106
|
scrollToField(field: string, scrollOpts?: ScrollIntoViewOptions<any>): void;
|
|
107
|
+
scrollToError(config?: ScrollToErrorOpts): void;
|
|
101
108
|
}
|
|
@@ -65,6 +65,7 @@ class FormFoundation extends _foundation.default {
|
|
|
65
65
|
this.getFormProps = this.getFormProps.bind(this);
|
|
66
66
|
this.getFieldExist = this.getFieldExist.bind(this);
|
|
67
67
|
this.scrollToField = this.scrollToField.bind(this);
|
|
68
|
+
this.scrollToError = this.scrollToError.bind(this);
|
|
68
69
|
}
|
|
69
70
|
init() {
|
|
70
71
|
this._adapter.initFormId();
|
|
@@ -117,7 +118,7 @@ class FormFoundation extends _foundation.default {
|
|
|
117
118
|
this._adapter.notifyChange(this.data);
|
|
118
119
|
this._adapter.forceUpdate();
|
|
119
120
|
}
|
|
120
|
-
// in order to
|
|
121
|
+
// in order to solve bytedance internal issue-289
|
|
121
122
|
registerArrayField(arrayFieldPath, val) {
|
|
122
123
|
this.updateArrayField(arrayFieldPath, {
|
|
123
124
|
updateKey: new Date().valueOf(),
|
|
@@ -609,7 +610,8 @@ class FormFoundation extends _foundation.default {
|
|
|
609
610
|
}),
|
|
610
611
|
submitForm: () => this.submit(),
|
|
611
612
|
getFieldExist: field => this.getFieldExist(field),
|
|
612
|
-
scrollToField: (field, scrollOpts) => this.scrollToField(field, scrollOpts)
|
|
613
|
+
scrollToField: (field, scrollOpts) => this.scrollToField(field, scrollOpts),
|
|
614
|
+
scrollToError: opts => this.scrollToError(opts)
|
|
613
615
|
});
|
|
614
616
|
}
|
|
615
617
|
getFormState() {
|
|
@@ -684,8 +686,8 @@ class FormFoundation extends _foundation.default {
|
|
|
684
686
|
const errorDOM = this._adapter.getAllErrorDOM();
|
|
685
687
|
if (errorDOM && errorDOM.length) {
|
|
686
688
|
try {
|
|
687
|
-
const
|
|
688
|
-
(0, _scrollIntoViewIfNeeded.default)(
|
|
689
|
+
const fieldDOM = errorDOM[0].parentNode.parentNode;
|
|
690
|
+
(0, _scrollIntoViewIfNeeded.default)(fieldDOM, scrollOpts);
|
|
689
691
|
} catch (error) {}
|
|
690
692
|
}
|
|
691
693
|
}
|
|
@@ -699,5 +701,36 @@ class FormFoundation extends _foundation.default {
|
|
|
699
701
|
(0, _scrollIntoViewIfNeeded.default)(fieldDOM, scrollOpts);
|
|
700
702
|
}
|
|
701
703
|
}
|
|
704
|
+
scrollToError(config) {
|
|
705
|
+
let scrollOpts = config && config.scrollOpts ? config.scrollOpts : {
|
|
706
|
+
behavior: 'smooth',
|
|
707
|
+
block: 'start'
|
|
708
|
+
};
|
|
709
|
+
let field = config && config.field;
|
|
710
|
+
let index = config && config.index;
|
|
711
|
+
let fieldDOM, errorDOM;
|
|
712
|
+
if (typeof index === 'number') {
|
|
713
|
+
const allErrorDOM = this._adapter.getAllErrorDOM();
|
|
714
|
+
let errorDOM = allErrorDOM[index];
|
|
715
|
+
if (errorDOM) {
|
|
716
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
717
|
+
}
|
|
718
|
+
} else if (field) {
|
|
719
|
+
// If field is specified, find the error dom of the corresponding field
|
|
720
|
+
errorDOM = this._adapter.getFieldErrorDOM(field);
|
|
721
|
+
if (errorDOM) {
|
|
722
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
723
|
+
}
|
|
724
|
+
} else if (typeof field === 'undefined') {
|
|
725
|
+
// If field is not specified, find all error doms and scroll to the first one
|
|
726
|
+
let allErrorDOM = this._adapter.getAllErrorDOM();
|
|
727
|
+
if (allErrorDOM && allErrorDOM.length) {
|
|
728
|
+
fieldDOM = allErrorDOM[0].parentNode.parentNode;
|
|
729
|
+
}
|
|
730
|
+
}
|
|
731
|
+
if (fieldDOM) {
|
|
732
|
+
(0, _scrollIntoViewIfNeeded.default)(fieldDOM, scrollOpts);
|
|
733
|
+
}
|
|
734
|
+
}
|
|
702
735
|
}
|
|
703
736
|
exports.default = FormFoundation;
|
|
@@ -16,6 +16,7 @@ export interface BaseFormAdapter<P = Record<string, any>, S = Record<string, any
|
|
|
16
16
|
getFormProps: (keys: undefined | string | Array<string>) => any;
|
|
17
17
|
getAllErrorDOM: () => NodeList;
|
|
18
18
|
getFieldDOM: (field: string) => Node;
|
|
19
|
+
getFieldErrorDOM: (field: string) => Node;
|
|
19
20
|
initFormId: () => void;
|
|
20
21
|
}
|
|
21
22
|
export type AllErrors<T> = T extends Record<string, any> ? {
|
|
@@ -35,6 +36,11 @@ export type FieldPath<T> = T extends object ? {
|
|
|
35
36
|
[K in keyof T]: T[K] extends object ? `${string & K}.${FieldPath<T[K]>}` | `${string & K}` : `${string & K}`;
|
|
36
37
|
}[keyof T] : never;
|
|
37
38
|
export type FieldPathValue<T, P extends FieldPath<T>> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? Rest extends FieldPath<T[K]> ? FieldPathValue<T[K], Rest> : never : never : P extends keyof T ? T[P] : never;
|
|
39
|
+
export type ScrollToErrorOptions<K> = {
|
|
40
|
+
field?: K;
|
|
41
|
+
index?: number;
|
|
42
|
+
scrollConfig?: ScrollIntoViewOptions;
|
|
43
|
+
};
|
|
38
44
|
export interface BaseFormApi<T extends object = any> {
|
|
39
45
|
/** get value of field */
|
|
40
46
|
getValue: <P extends FieldPath<T>>(field?: P) => FieldPathValue<T, P>;
|
|
@@ -66,6 +72,7 @@ export interface BaseFormApi<T extends object = any> {
|
|
|
66
72
|
/** set value of multiple fields */
|
|
67
73
|
setValues: (fieldsValue: Partial<T>, config?: setValuesConfig) => void;
|
|
68
74
|
scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void;
|
|
75
|
+
scrollToError: <K extends keyof T>(config?: ScrollToErrorOptions<K>) => void;
|
|
69
76
|
}
|
|
70
77
|
export interface CallOpts {
|
|
71
78
|
[x: string]: any;
|
|
@@ -2,6 +2,11 @@ import BaseFoundation from '../base/foundation';
|
|
|
2
2
|
import { Options as ScrollIntoViewOptions } from 'scroll-into-view-if-needed';
|
|
3
3
|
import { BaseFormAdapter, FormState, CallOpts, FieldState, FieldStaff, ComponentProps, setValuesConfig, ArrayFieldStaff } from './interface';
|
|
4
4
|
export type { BaseFormAdapter };
|
|
5
|
+
type ScrollToErrorOpts = {
|
|
6
|
+
field?: string;
|
|
7
|
+
index?: number;
|
|
8
|
+
scrollOpts?: ScrollIntoViewOptions;
|
|
9
|
+
};
|
|
5
10
|
export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
6
11
|
data: FormState;
|
|
7
12
|
fields: Map<string, FieldStaff>;
|
|
@@ -85,6 +90,7 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
85
90
|
submitForm: () => void;
|
|
86
91
|
getFieldExist: (field: string) => boolean;
|
|
87
92
|
scrollToField: (field: string, scrollOpts?: ScrollIntoViewOptions) => void;
|
|
93
|
+
scrollToError: (opts?: ScrollToErrorOpts) => void;
|
|
88
94
|
setValue: (field: string, value: any, opts: CallOpts) => void;
|
|
89
95
|
setError: (field: string, error: any, opts: CallOpts) => void;
|
|
90
96
|
setTouched: (field: string, isTouched: boolean, opts: CallOpts) => void;
|
|
@@ -98,4 +104,5 @@ export default class FormFoundation extends BaseFoundation<BaseFormAdapter> {
|
|
|
98
104
|
_autoScroll(timeout?: boolean | number): void;
|
|
99
105
|
_getErrorFieldAndScroll(scrollOpts?: ScrollIntoViewOptions | boolean): void;
|
|
100
106
|
scrollToField(field: string, scrollOpts?: ScrollIntoViewOptions<any>): void;
|
|
107
|
+
scrollToError(config?: ScrollToErrorOpts): void;
|
|
101
108
|
}
|
|
@@ -56,6 +56,7 @@ export default class FormFoundation extends BaseFoundation {
|
|
|
56
56
|
this.getFormProps = this.getFormProps.bind(this);
|
|
57
57
|
this.getFieldExist = this.getFieldExist.bind(this);
|
|
58
58
|
this.scrollToField = this.scrollToField.bind(this);
|
|
59
|
+
this.scrollToError = this.scrollToError.bind(this);
|
|
59
60
|
}
|
|
60
61
|
init() {
|
|
61
62
|
this._adapter.initFormId();
|
|
@@ -108,7 +109,7 @@ export default class FormFoundation extends BaseFoundation {
|
|
|
108
109
|
this._adapter.notifyChange(this.data);
|
|
109
110
|
this._adapter.forceUpdate();
|
|
110
111
|
}
|
|
111
|
-
// in order to
|
|
112
|
+
// in order to solve bytedance internal issue-289
|
|
112
113
|
registerArrayField(arrayFieldPath, val) {
|
|
113
114
|
this.updateArrayField(arrayFieldPath, {
|
|
114
115
|
updateKey: new Date().valueOf(),
|
|
@@ -600,7 +601,8 @@ export default class FormFoundation extends BaseFoundation {
|
|
|
600
601
|
}),
|
|
601
602
|
submitForm: () => this.submit(),
|
|
602
603
|
getFieldExist: field => this.getFieldExist(field),
|
|
603
|
-
scrollToField: (field, scrollOpts) => this.scrollToField(field, scrollOpts)
|
|
604
|
+
scrollToField: (field, scrollOpts) => this.scrollToField(field, scrollOpts),
|
|
605
|
+
scrollToError: opts => this.scrollToError(opts)
|
|
604
606
|
});
|
|
605
607
|
}
|
|
606
608
|
getFormState() {
|
|
@@ -675,8 +677,8 @@ export default class FormFoundation extends BaseFoundation {
|
|
|
675
677
|
const errorDOM = this._adapter.getAllErrorDOM();
|
|
676
678
|
if (errorDOM && errorDOM.length) {
|
|
677
679
|
try {
|
|
678
|
-
const
|
|
679
|
-
scrollIntoView(
|
|
680
|
+
const fieldDOM = errorDOM[0].parentNode.parentNode;
|
|
681
|
+
scrollIntoView(fieldDOM, scrollOpts);
|
|
680
682
|
} catch (error) {}
|
|
681
683
|
}
|
|
682
684
|
}
|
|
@@ -690,4 +692,35 @@ export default class FormFoundation extends BaseFoundation {
|
|
|
690
692
|
scrollIntoView(fieldDOM, scrollOpts);
|
|
691
693
|
}
|
|
692
694
|
}
|
|
695
|
+
scrollToError(config) {
|
|
696
|
+
let scrollOpts = config && config.scrollOpts ? config.scrollOpts : {
|
|
697
|
+
behavior: 'smooth',
|
|
698
|
+
block: 'start'
|
|
699
|
+
};
|
|
700
|
+
let field = config && config.field;
|
|
701
|
+
let index = config && config.index;
|
|
702
|
+
let fieldDOM, errorDOM;
|
|
703
|
+
if (typeof index === 'number') {
|
|
704
|
+
const allErrorDOM = this._adapter.getAllErrorDOM();
|
|
705
|
+
let errorDOM = allErrorDOM[index];
|
|
706
|
+
if (errorDOM) {
|
|
707
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
708
|
+
}
|
|
709
|
+
} else if (field) {
|
|
710
|
+
// If field is specified, find the error dom of the corresponding field
|
|
711
|
+
errorDOM = this._adapter.getFieldErrorDOM(field);
|
|
712
|
+
if (errorDOM) {
|
|
713
|
+
fieldDOM = errorDOM.parentNode.parentNode;
|
|
714
|
+
}
|
|
715
|
+
} else if (typeof field === 'undefined') {
|
|
716
|
+
// If field is not specified, find all error doms and scroll to the first one
|
|
717
|
+
let allErrorDOM = this._adapter.getAllErrorDOM();
|
|
718
|
+
if (allErrorDOM && allErrorDOM.length) {
|
|
719
|
+
fieldDOM = allErrorDOM[0].parentNode.parentNode;
|
|
720
|
+
}
|
|
721
|
+
}
|
|
722
|
+
if (fieldDOM) {
|
|
723
|
+
scrollIntoView(fieldDOM, scrollOpts);
|
|
724
|
+
}
|
|
725
|
+
}
|
|
693
726
|
}
|
|
@@ -16,6 +16,7 @@ export interface BaseFormAdapter<P = Record<string, any>, S = Record<string, any
|
|
|
16
16
|
getFormProps: (keys: undefined | string | Array<string>) => any;
|
|
17
17
|
getAllErrorDOM: () => NodeList;
|
|
18
18
|
getFieldDOM: (field: string) => Node;
|
|
19
|
+
getFieldErrorDOM: (field: string) => Node;
|
|
19
20
|
initFormId: () => void;
|
|
20
21
|
}
|
|
21
22
|
export type AllErrors<T> = T extends Record<string, any> ? {
|
|
@@ -35,6 +36,11 @@ export type FieldPath<T> = T extends object ? {
|
|
|
35
36
|
[K in keyof T]: T[K] extends object ? `${string & K}.${FieldPath<T[K]>}` | `${string & K}` : `${string & K}`;
|
|
36
37
|
}[keyof T] : never;
|
|
37
38
|
export type FieldPathValue<T, P extends FieldPath<T>> = P extends `${infer K}.${infer Rest}` ? K extends keyof T ? Rest extends FieldPath<T[K]> ? FieldPathValue<T[K], Rest> : never : never : P extends keyof T ? T[P] : never;
|
|
39
|
+
export type ScrollToErrorOptions<K> = {
|
|
40
|
+
field?: K;
|
|
41
|
+
index?: number;
|
|
42
|
+
scrollConfig?: ScrollIntoViewOptions;
|
|
43
|
+
};
|
|
38
44
|
export interface BaseFormApi<T extends object = any> {
|
|
39
45
|
/** get value of field */
|
|
40
46
|
getValue: <P extends FieldPath<T>>(field?: P) => FieldPathValue<T, P>;
|
|
@@ -66,6 +72,7 @@ export interface BaseFormApi<T extends object = any> {
|
|
|
66
72
|
/** set value of multiple fields */
|
|
67
73
|
setValues: (fieldsValue: Partial<T>, config?: setValuesConfig) => void;
|
|
68
74
|
scrollToField: <K extends keyof T>(field: K, scrollConfig?: ScrollIntoViewOptions) => void;
|
|
75
|
+
scrollToError: <K extends keyof T>(config?: ScrollToErrorOptions<K>) => void;
|
|
69
76
|
}
|
|
70
77
|
export interface CallOpts {
|
|
71
78
|
[x: string]: any;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@douyinfe/semi-foundation",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.61.0-alpha.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"build:lib": "node ./scripts/compileLib.js",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"*.scss",
|
|
25
25
|
"*.css"
|
|
26
26
|
],
|
|
27
|
-
"gitHead": "
|
|
27
|
+
"gitHead": "0975fe4980561d1c172fefc4a2273f71d5154f41",
|
|
28
28
|
"devDependencies": {
|
|
29
29
|
"@babel/plugin-transform-runtime": "^7.15.8",
|
|
30
30
|
"@babel/preset-env": "^7.15.8",
|