🤖 Merge PR #46605 [react-mailchimp-subscribe] Split ResponseArgs by @mariano-filipe

Split into success and error responses. The 'message' of an error response can
also be an instance of Error when the jsonp request to MailChimp fails
(e.g. due to timeout errors). Also, bump minor version.
This commit is contained in:
Filipe Mariano 2020-08-12 18:40:09 -03:00 committed by GitHub
parent efd1527d3d
commit fda4373744
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,10 +1,10 @@
// Type definitions for react-mailchimp-subscribe 2.0
// Type definitions for react-mailchimp-subscribe 2.1
// Project: https://revolunet.github.io/react-mailchimp-subscribe/
// Definitions by: Omar Diab <https://github.com/osdiab>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
// TypeScript Version: 2.9
import { Component, ReactNode } from "react";
import { Component, ReactNode } from 'react';
// A few common set of form fields, based on defaults in Mailchimp's website
export interface EmailFormFields {
@ -17,20 +17,27 @@ export interface NameFormFields extends EmailFormFields {
}
export interface ClassicFormFields extends NameFormFields {
"BIRTHDAY[month]": number;
"BIRTHDAY[day]": number;
'BIRTHDAY[month]': number;
'BIRTHDAY[day]': number;
}
// library default form just sends EMAIL
export type DefaultFormFields = EmailFormFields;
export interface ResponseArgs {
status: "success" | "error";
export interface ErrorResponseArgs {
status: 'error';
message: string | Error;
}
export interface SuccessResponseArgs {
status: 'success';
message: string;
}
export type ResponseArgs = ErrorResponseArgs | SuccessResponseArgs;
export interface PendingArgs {
status: "sending" | null;
status: 'sending' | null;
message: null;
}
@ -38,14 +45,11 @@ export interface SubscribeArg<FormFields> {
subscribe: (data: FormFields) => void;
}
export type FormHooks<FormFields> = SubscribeArg<FormFields> &
(ResponseArgs | PendingArgs);
export type FormHooks<FormFields> = SubscribeArg<FormFields> & (ErrorResponseArgs | SuccessResponseArgs | PendingArgs);
export interface Props<FormFields> {
render?: (hooks: FormHooks<FormFields>) => ReactNode;
url: string;
}
export default class MailchimpSubscribe<FormFields = DefaultFormFields> extends Component<
Props<FormFields>
> {}
export default class MailchimpSubscribe<FormFields = DefaultFormFields> extends Component<Props<FormFields>> {}