Преглед изворни кода

feat: form add stopPropagation api, #2355 (#2360)

pointhalo пре 1 година
родитељ
комит
9024c2a927
2 измењених фајлова са 14 додато и 0 уклоњено
  1. 10 0
      packages/semi-ui/form/baseForm.tsx
  2. 4 0
      packages/semi-ui/form/interface.ts

+ 10 - 0
packages/semi-ui/form/baseForm.tsx

@@ -75,6 +75,10 @@ class Form<Values extends Record<string, any> = any> extends BaseComponent<BaseF
         style: PropTypes.object,
         style: PropTypes.object,
         showValidateIcon: PropTypes.bool,
         showValidateIcon: PropTypes.bool,
         stopValidateWithError: PropTypes.bool,
         stopValidateWithError: PropTypes.bool,
+        stopPropagation: PropTypes.shape({
+            submit: PropTypes.bool,
+            reset: PropTypes.bool,
+        }),
         id: PropTypes.string,
         id: PropTypes.string,
         wrapperCol: PropTypes.object, // Control wrapperCol {span: number, offset: number} for all field child nodes
         wrapperCol: PropTypes.object, // Control wrapperCol {span: number, offset: number} for all field child nodes
         trigger: PropTypes.oneOfType([
         trigger: PropTypes.oneOfType([
@@ -240,11 +244,17 @@ class Form<Values extends Record<string, any> = any> extends BaseComponent<BaseF
 
 
     submit(e: React.FormEvent<HTMLFormElement>) {
     submit(e: React.FormEvent<HTMLFormElement>) {
         e.preventDefault();
         e.preventDefault();
+        if (this.props.stopPropagation && this.props.stopPropagation.submit) {
+            e.stopPropagation();
+        }
         this.foundation.submit(e);
         this.foundation.submit(e);
     }
     }
 
 
     reset(e: React.FormEvent<HTMLFormElement>) {
     reset(e: React.FormEvent<HTMLFormElement>) {
         e.preventDefault();
         e.preventDefault();
+        if (this.props.stopPropagation && this.props.stopPropagation.reset) {
+            e.stopPropagation();
+        }
         this.foundation.reset();
         this.foundation.reset();
     }
     }
 
 

+ 4 - 0
packages/semi-ui/form/interface.ts

@@ -128,5 +128,9 @@ export interface BaseFormProps <Values extends Record<string, any> = any> extend
     disabled?: boolean;
     disabled?: boolean;
     showValidateIcon?: boolean;
     showValidateIcon?: boolean;
     stopValidateWithError?: boolean;
     stopValidateWithError?: boolean;
+    stopPropagation?: {
+        submit?: boolean;
+        reset?: boolean
+    };
     trigger?: FieldValidateTriggerType
     trigger?: FieldValidateTriggerType
 }
 }