diff --git a/jquery-validation-unobtrusive/jquery-validation-unobtrusive-tests.ts b/jquery-validation-unobtrusive/jquery-validation-unobtrusive-tests.ts new file mode 100644 index 000000000..96ccbe325 --- /dev/null +++ b/jquery-validation-unobtrusive/jquery-validation-unobtrusive-tests.ts @@ -0,0 +1,62 @@ +/// + +// Test overloads for `add` method +$.validator.unobtrusive.adapters.add("adapter", () => { }); +$.validator.unobtrusive.adapters.add("adapter", function () { + return true; +}); +$.validator.unobtrusive.adapters.add("adapter", ["param1", "param2"], () => { }); + +// Test overloads for `addMinMax` method +$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule"); +$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule", "minAttr"); +$.validator.unobtrusive.adapters.addMinMax("adapter", "minRule", "maxRule", "minMaxRule", "minAttr", "maxAttr"); + +// Test overloads for `addSingleVal` method +$.validator.unobtrusive.adapters.addSingleVal("adapter", "rule"); +$.validator.unobtrusive.adapters.addSingleVal("adapter", "attr", "rule"); + +// Test overloads for `addBool` method +$.validator.unobtrusive.adapters.addBool("adapter"); +$.validator.unobtrusive.adapters.addBool("adapter", "rule"); + +// Test `addMethod` +$.validator.unobtrusive.adapters.addMethod("adapter", (value, element, params) => { + return true; +}); + +// Test method chaining +$.validator.unobtrusive.adapters + .add("required", () => { }) + .addMinMax("length", "minlength", "maxlength", "rangelength") + .addSingleVal("regex", "pattern") + .addBool("url") + .addMethod("nonalphamin", (value, element, nonalphamin) => { + return null; + }); + +// Test `Adapters` indexer +var adapterName = $.validator.unobtrusive.adapters[0].name; + +// Test `Adapters` iterator +$.each($.validator.unobtrusive.adapters, function (index, adapter) { + console.log(adapter.name); + console.log(adapter.params); + console.log(adapter.adapt); +}); + +// Test `Adapters` array +$.validator.unobtrusive.adapters.push({ name: "adapter", params: ["param1"], adapt: () => { } }); + +// Test overloads for `parseElement` +$.validator.unobtrusive.parseElement("form"); +$.validator.unobtrusive.parseElement(document); +$.validator.unobtrusive.parseElement(document.getElementById("the-form")); +$.validator.unobtrusive.parseElement($("#the-form")); +$.validator.unobtrusive.parseElement($("#the-form"), true); + +// Test overloads for `parse` +$.validator.unobtrusive.parse("form"); +$.validator.unobtrusive.parse(document); +$.validator.unobtrusive.parse(document.getElementById("the-form")); +$.validator.unobtrusive.parse($("#the-form")); diff --git a/jquery-validation-unobtrusive/jquery-validation-unobtrusive.d.ts b/jquery-validation-unobtrusive/jquery-validation-unobtrusive.d.ts new file mode 100644 index 000000000..f14b58913 --- /dev/null +++ b/jquery-validation-unobtrusive/jquery-validation-unobtrusive.d.ts @@ -0,0 +1,38 @@ +// Type definitions for Microsoft jQuery Unobtrusive Validation v3.2.3 +// Project: http://aspnetwebstack.codeplex.com/ +// Definitions by: Matt Brooks +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module MicrosoftJQueryUnobtrusiveValidation { + type JQuerySelector = string | Document | Element | JQuery; + + interface Adapter { + name: string; + params: string[]; + adapt: Function + } + + interface Adapters extends Array { + add(adapterName: string, fn: Function): Adapters; + add(adapterName: string, params: string[], fn: Function): Adapters; + addMinMax(adapterName: string, minRuleName: string, maxRuleName: string, minMaxRuleName: string, minAttribute?: string, maxAttribute?: string): Adapters; + addSingleVal(adapterName: string, ruleName: string): Adapters; + addSingleVal(adapterName: string, attribute: string, ruleName: string): Adapters; + addBool(adapterName: string, ruleName?: string): Adapters; + addMethod(adapterName: string, fn: (value: string, element: Element, params: any) => any): Adapters; + } + + interface Validator { + adapters: Adapters; + parseElement(element: JQuerySelector, skipAttach?: boolean): void; + parse(selector: JQuerySelector): void; + } +} + +declare module JQueryValidation { + interface ValidatorStatic { + unobtrusive: MicrosoftJQueryUnobtrusiveValidation.Validator; + } +}