diff --git a/foundation-sites/foundation-tests.ts b/foundation-sites/foundation-tests.ts new file mode 100644 index 000000000..225f3c0fa --- /dev/null +++ b/foundation-sites/foundation-tests.ts @@ -0,0 +1,99 @@ +// Tests for type definitions for Foundation Sites v6.0.4 +// Project: http://foundation.zurb.com/ +// Definitions by: Sam Vloeberghs +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// +/// + +$(document).foundation(); +$(document).foundation('method5'); +$(document).foundation(['method', 'method2']); + +Foundation.Abide($('.selector')); +Foundation.Abide($('.selector'), {}); + +Foundation.Accordion($('.selector')); +Foundation.Accordion($('.selector'), {}); + +Foundation.AccordionMenu($('.selector')); +Foundation.AccordionMenu($('.selector'), {}); + +Foundation.DrillDown($('.selector')); +Foundation.DrillDown($('.selector'), {}); + +Foundation.Dropdown($('.selector')); +Foundation.Dropdown($('.selector'), {}); + +Foundation.DropdownMenu($('.selector')); +Foundation.DropdownMenu($('.selector'), {}); + +Foundation.Equalizer($('.selector')); +Foundation.Equalizer($('.selector'), {}); + +Foundation.Interchange($('.selector')); +Foundation.Interchange($('.selector'), {}); + +Foundation.Magellan($('.selector')); +Foundation.Magellan($('.selector'), {}); + +Foundation.OffCanvas($('.selector')); +Foundation.OffCanvas($('.selector'), {}); + +Foundation.Orbit($('.selector')); +Foundation.Orbit($('.selector'), {}); + +Foundation.Reveal($('.selector')); +Foundation.Reveal($('.selector'), {}); + +Foundation.Slider($('.selector')); +Foundation.Slider($('.selector'), {}); + +Foundation.Sticky($('.selector')); +Foundation.Sticky($('.selector'), {}); + +Foundation.Tabs($('.selector')); +Foundation.Tabs($('.selector'), {}); + +Foundation.Toggler($('.selector')); +Foundation.Toggler($('.selector'), {}); + +Foundation.Tooltip($('.selector')); +Foundation.Tooltip($('.selector'), {}); + +/* + TODO: fix this: + error TS7017: Index signature of object type implicitly has an 'any' type. + + function pluginList() { + + 'use strict'; + + return [ + 'Abide', + 'Accordion', + 'AccordionMenu', + 'DrillDown', + 'Dropdown', + 'DropdownMenu', + 'Equalizer', + 'Interchange', + 'Magellan', + 'OffCanvas', + 'Orbit', + 'Reveal', + 'Slider', + 'Sticky', + 'Tabs', + 'Toggler', + 'Tooltip' + ]; + } + + pluginList().forEach((value:string) => { + Foundation[value]($('.selector')); + Foundation[value]($('.selector'), {}); + }); + */ + + diff --git a/foundation-sites/foundation.d.ts b/foundation-sites/foundation.d.ts new file mode 100644 index 000000000..a6dd7682d --- /dev/null +++ b/foundation-sites/foundation.d.ts @@ -0,0 +1,428 @@ +// Type definitions for Foundation Sites v6.0.4 +// Project: http://foundation.zurb.com/ +// Definitions by: Sam Vloeberghs +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare module FoundationSites { + + // http://foundation.zurb.com/sites/docs/abide.html#javascript-reference + interface Abide { + requiredChedck(element:Object): boolean; + findLabel(element:Object): boolean; + addErrorClasses(element:Object): void; + removeErrorClasses(element:Object): void; + validateInput(element:Object, form:Object): void; + validateForm(element:Object): void; + validateText(element:Object): boolean; + validateRadio(group:string): boolean; + resetForm($form:Object): void; + } + + interface IAbidePatterns { + alpha?: RegExp; + alpha_numeric?: RegExp; + integer?: RegExp; + number?: RegExp; + card?: RegExp; + cvv?: RegExp; + email ?: RegExp; + url?: RegExp; + domain?: RegExp; + datetime?: RegExp; + date?: RegExp; + time?: RegExp; + dateISO?: RegExp; + month_day_year?: RegExp; + day_month_year?: RegExp; + color?: RegExp; + } + + interface IAbideOptions { + slideSpeed?: number; + multiOpen?: boolean; + patters?: IAbidePatterns; + } + + // http://foundation.zurb.com/sites/docs/accordion.html#javascript-reference + interface Accordion { + toggle($target:JQuery): void; + down($target:JQuery, firstTime:boolean): void; + up($target:JQuery): void; + destroy(): void; + } + + interface IAccordionOptions { + slideSpeed?: number + multiOpen?: boolean; + } + + // http://foundation.zurb.com/sites/docs/accordion-menu.html#javascript-reference + interface AccordionMenu { + toggle($target:JQuery): void; + down($target:JQuery, firstTime:boolean): void; + up($target:JQuery): void; + destroy(): void; + } + + interface IAccordionMenuOptions { + slideSpeed?: number; + multiOpen?: boolean; + } + + // http://foundation.zurb.com/sites/docs/drilldown-menu.html#javascript-reference + interface Drilldown { + _hideAll($elem:JQuery): void; + _show($elem:JQuery): void; + _hide($elem:JQuery): void; + destroy(): void; + } + + interface IDrilldownOptions { + backButton?: string; + wrapper?: string + closeOnClick?: boolean + } + + // http://foundation.zurb.com/sites/docs/dropdown.html#javascript-reference + interface Dropdown { + getPositionClass(): string; + open(): void; + close(): void; + toggle(): void; + destroy(): void; + } + + interface IDropdownOptions { + hoverDelay?: number; + hover?: boolean; + vOffset?: number; + hOffset?: number; + positionClass?: string; + trapFocus?: boolean; + autoFocus?: boolean; + } + + // http://foundation.zurb.com/sites/docs/dropdown-menu.html#javascript-reference + interface DropdownMenu { + destroy(): void; + } + + interface IDropdownMenuOptions { + disableHover?: boolean; + autoclose?: boolean; + hoverDelay?: number; + clickOpen?: boolean; + closingTime?: number; + alignments?: string; + verticalClasss?: string; + rightClasss?: string; + } + + // http://foundation.zurb.com/sites/docs/equalizer.html#javascript-reference + interface Equalizer { + getHeights(element:Object): Array; + applyHeight($eqParent:Object, heights:Array): void; + destroy(): void; + } + + interface IEqualizerOptions { + equalizeOnStack?: boolean; + throttleInterval?: number; + } + + // http://foundation.zurb.com/sites/docs/interchange.html#javascript-reference + interface Interchange { + replace(path:string): void; + destroy(): void; + } + + interface IInterchangeOptions { + rules?: Array + } + + // http://foundation.zurb.com/sites/docs/magellan.html#javascript-reference + interface Magellan { + calcPoints(): void; + reflow(): void; + destroy(): void; + } + + interface IMagellanOptions { + animationDuration?: number; + animationEasing?: string; + threshold?: number; + activeClass?: string; + deepLinking?: boolean; + } + + // http://foundation.zurb.com/sites/docs/offcanvas.html#javascript-reference + interface OffCanvas { + open(event:Object, trigger:JQuery): void; + toggle(event:Object, trigger:JQuery): void; + close(): void; + destroy(): void; + } + + interface IOffCanvasOptions { + closeOnClick?: boolean; + transitionTime?: number; + position?: string; + forceTop?: boolean; + isRevealed?: boolean; + revealOn?: string; + autoFocus?: boolean; + revealClass?: string; + } + + // http://foundation.zurb.com/sites/docs/orbit.html#javascript-reference + interface Orbit { + changeSlide(isLTR:boolean, chosenSlide?:Object, idx?:number): void; + geoSync(): void; + destroy(): void; + } + + interface IOrbitOptions { + bullets?: boolean; + navButtons?: boolean; + animInFromRight?: string; + animOutToRight?: string; + animInFromLeft?: string; + animOutToLeft?: string; + autoPlay?: boolean; + timerDelay?: number; + infiniteWrap?: boolean; + swipe?: boolean; + pauseOnHover?: boolean; + accessible?: boolean; + containerClass?: string; + slideClass?: string; + boxOfBullets?: string; + nextClass?: string; + prevClass?: string; + } + + // http://foundation.zurb.com/sites/docs/reveal.html#javascript-reference + interface Reveal { + open(): void; + toggle(): void; + close(): void; + destroy(): void; + } + + interface IRevealOptions { + animationIn?: string; + animationOut?: string; + showDelay?: number; + hideDelay?: number; + closeOnClick?: boolean; + closeOnEsc?: boolean; + multipleOpened?: boolean; + vOffset?: number; + hOffset?: number; + fullScreen?: boolean; + btmOffsetPct?: number; + overlay?: boolean; + resetOnClose?: boolean; + } + + // http://foundation.zurb.com/sites/docs/slider.html#javascript-reference + interface Slider { + destroy(): void; + } + + interface ISliderOptions { + start?: number; + end?: number; + step?: number; + initialStart ?: number; + initialEnd?: number; + binding?: boolean; + clickSelect?: boolean; + vertical?: boolean; + draggable?: boolean; + disabled?: boolean; + doubleSided?: boolean; + decimal?: number; + moveTime?: number; + disabledClass?: string; + } + + // http://foundation.zurb.com/sites/docs/sticky.html#javascript-reference + interface Sticky { + _pauseListeners(scrollListener:string): void; + _calc(checkSizes:boolean, scroll:number): void; + destroy(): void; + emCalc(number:any): void; + } + + interface IStickyOptions { + container?: string; + stickTo?: string; + anchor?: string; + topAnchor?: string; + btmAnchor?: string; + marginTop?: number; + marginBottom?: number; + stickyOn?: string; + stickyClass?: string; + containerClass?: string; + checkEvery?: number; + } + + // http://foundation.zurb.com/sites/docs/tabs.html#javascript-reference + interface Tabs { + _handleTabChange($target:JQuery): void; + selectTab($target:JQuery): void; + destroy(): void; + } + + interface ITabsOptions { + animate?: boolean; + } + + // http://foundation.zurb.com/sites/docs/toggler.html#javascript-reference + interface Toggler { + toggle(): void; + destroy(): void; + } + + interface ITogglerOptions { + animate?: boolean; + } + + // http://foundation.zurb.com/sites/docs/tooltip.html#javascript-reference + interface Tooltip { + show(): void; + hide(): void; + toggle(): void; + destroy(): void; + } + + interface ITooltipOptions { + hoverDelay?: number; + fadeInDuration?: number; + fadeOutDuration?: number; + disableHover?: boolean; + templateClasses?: string; + tooltipClass?: string; + triggerClass?: string; + showOn?: string; + template?: string; + tipText?: string; + clickOpen?: boolean; + positionClass?: string; + vOffset?: number; + hOffset?:number; + } + + // Utilities + // --------- + + interface Box { + ImNotTouchingYou(element:Object, parent?:Object, lrOnly?:boolean, tbOnly?:boolean): boolean; + GetDimensions(element:Object): Object; + GetOffsets(element:Object, anchor:Object, position:string, vOffset:number, hOffset:number, isOverflow:boolean): Object; + } + + interface KeyBoard { + parseKey(event:any): string; + findFocusable($element:Object): Object; + } + + interface MediaQuery { + get(size:string): string; + atLeast(size:string): boolean; + queries:Array; + current:any; + } + + interface Motion { + animateIn(element:Object, animation:any, cb:Function): void; + animateOut(element:Object, animation:any, cb:Function): void; + } + + interface Move { + // TODO + } + + interface Nest { + // TODO + //Feather: function(menu, type) + // Burn: function(menu, type){ + } + + interface Timer { + start(): void; + restart(): void; + pause(): void; + } + + interface Touch { + // TODO :extension on jQuery + } + + interface Triggers { + // TODO :extension on jQuery + } + + interface FoundationSitesStatic { + version : string; + + rtl(): boolean; + plugin(plugin:Object, name:string): void; + registerPlugin(plugin:Object): void; + unregisterPlugin(plugin:Object): void; + GetYoDigits(length:number, namespace?:string): string; + reflow(elem:Object, plugins?:Array|string): void; + getFnName(fn:string): string; + transitionend(): string; + + util : { + throttle(func:(...args:any[]) => any, delay:number): (...args:any[]) => any; + }; + onImagesLoaded(images:Object, cb:Function): void; + + Abide(element:Object, options?:IAbideOptions): Abide; + Accordion(element:Object, options?:IAccordionOptions): Accordion; + AccordionMenu(element:Object, options?:IAccordionMenuOptions): AccordionMenu; + DrillDown(element:Object, options?:IDrilldownOptions): Drilldown; + Dropdown(element:Object, options?:IDropdownOptions): Dropdown; + DropdownMenu(element:Object, options?:IDropdownMenuOptions): DropdownMenu; + Equalizer(element:Object, options?:IEqualizerOptions): Equalizer; + Interchange(element:Object, options?:IInterchangeOptions): Interchange; + Magellan(element:Object, options?:IMagellanOptions): Magellan; + OffCanvas(element:Object, options?:IOffCanvasOptions): OffCanvas; + Orbit(element:Object, options?:IOrbitOptions): Orbit; + Reveal(element:Object, options?:IRevealOptions): Reveal; + Slider(element:Object, options?:ISliderOptions): Slider; + Sticky(element:Object, options?:IStickyOptions): Sticky; + Tabs(element:Object, options?:ITabsOptions): Tabs; + Toggler(element:Object, options?:ITogglerOptions): Toggler; + Tooltip(element:Object, options?:ITooltipOptions): Tooltip; + + // utils + Box: Box; + KeyBoard: KeyBoard; + MediaQuery: MediaQuery; + Motion: Motion; + Move: Move; + Nest: Nest; + Timer: Timer; + Touch: Touch; + Triggers: Triggers; + + } + +} + +interface JQuery { + foundation(method?:string|Array) : JQuery; +} + +declare var Foundation:FoundationSites.FoundationSitesStatic; + +declare module "Foundation" { + export = Foundation; +} diff --git a/foundation/foundation.d.ts b/foundation/foundation.d.ts index a51e47ae9..ce782fd92 100644 --- a/foundation/foundation.d.ts +++ b/foundation/foundation.d.ts @@ -304,6 +304,16 @@ declare module Foundation { add_custom_rule(rule : string, media : string) : void; image_loaded(images : JQuery, callback : (...args : any[]) => any) : void; random_str(length? : number) : string; + is_small_only(): boolean; + is_small_up(): boolean; + is_medium_only(): boolean; + is_medium_up(): boolean; + is_large_only(): boolean; + is_large_up(): boolean; + is_xlarge_only(): boolean; + is_xlarge_up(): boolean; + is_xxlarge_only(): boolean; + is_xxlarge_up(): boolean; }; } }