DefinitelyTyped/types/react-mailchimp-subscribe/index.d.ts
Filipe Mariano fda4373744
🤖 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.
2020-08-12 17:40:09 -04:00

56 lines
1.5 KiB
TypeScript

// 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';
// A few common set of form fields, based on defaults in Mailchimp's website
export interface EmailFormFields {
EMAIL: string;
}
export interface NameFormFields extends EmailFormFields {
FNAME: string;
LNAME: string;
}
export interface ClassicFormFields extends NameFormFields {
'BIRTHDAY[month]': number;
'BIRTHDAY[day]': number;
}
// library default form just sends EMAIL
export type DefaultFormFields = EmailFormFields;
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;
message: null;
}
export interface SubscribeArg<FormFields> {
subscribe: (data: FormFields) => void;
}
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>> {}