diff --git a/grecaptcha/grecaptcha-tests.ts b/grecaptcha/grecaptcha-tests.ts new file mode 100644 index 000000000..cfc86e71b --- /dev/null +++ b/grecaptcha/grecaptcha-tests.ts @@ -0,0 +1,21 @@ +/// + +var params: ReCaptchaV2.Parameters = { + "sitekey": "mySuperSecretKey", + "theme": "black", // no type-checking here. + "type": "image", + "tabindex": 5, + "callback": (response: string) => { }, + "expired-callback": () => { }, +} + +var id1: number = grecaptcha.render("foo"); +var id2: number = grecaptcha.render("foo", params); +var id3: number = grecaptcha.render(document.getElementById("foo")); +var id4: number = grecaptcha.render(document.getElementById("foo"), params); + +// response takes a number and returns a string +var response1: string = grecaptcha.getResponse(id1); + +// reset takes a number +grecaptcha.reset(id1); diff --git a/grecaptcha/grecaptcha.d.ts b/grecaptcha/grecaptcha.d.ts new file mode 100644 index 000000000..e246aaf17 --- /dev/null +++ b/grecaptcha/grecaptcha.d.ts @@ -0,0 +1,67 @@ +// Type definitions for Google Recaptcha v2 +// Project: https://www.google.com/recaptcha +// Definitions by: Kristof Mattei +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +declare var grecaptcha: ReCaptchaV2.ReCaptcha; + +declare module ReCaptchaV2 +{ + class ReCaptcha + { + /** + * Renders the container as a reCAPTCHA widget and returns the ID of the newly created widget. + * @param container The HTML element to render the reCAPTCHA widget. Specify either the ID of the container (string) or the DOM element itself. + * @param parameters An object containing parameters as key=value pairs, for example, {"sitekey": "your_site_key", "theme": "light"}. See @see render parameters. + * @return the ID of the newly created widget. + **/ + render(container: (string | HTMLElement), parameters?: Parameters): number; + /** + * Resets the reCAPTCHA widget. + * @param opt_widget_id Optional widget ID, defaults to the first widget created if unspecified. + **/ + reset(opt_widget_id?: number): void; + /** + * Gets the response for the reCAPTCHA widget. + * @param opt_widget_id Optional widget ID, defaults to the first widget created if unspecified. + * @return the response of the reCAPTCHA widget. + **/ + getResponse(opt_widget_id?: number): string; + } + + interface Parameters + { + /** + * Your sitekey. + **/ + sitekey: string; + /** + * Optional. The color theme of the widget. + * Accepted values: "light", "dark" + * @default "light" + **/ + theme?: string; + /** + * Optional. The type of CAPTCHA to serve. + * Accepted values: "audio ", "image" + * @default "image" + **/ + type?: string; + /** + * Optional. The tabindex of the widget and challenge. + * If other elements in your page use tabindex, it should be set to make user navigation easier. + **/ + tabindex?: number; + /** + * Optional. Your callback function that's executed when the user submits a successful CAPTCHA response. + * The user's response, g-recaptcha-response, will be the input for your callback function. + **/ + callback?: (response: string) => void; + /** + * Optional. Your callback function that's executed when the recaptcha response expires and the user needs to solve a new CAPTCHA. + **/ + // Notice to the reader + // I need to surround this object with quotes, this will however break intellisense in VS 2013. + "expired-callback"?: () => void; + } +}