UNPKG

12.5 kBTypeScriptView Raw
1// Type definitions for Foundation Sites v6.3.1
2// Project: http://foundation.zurb.com/
3// Github: https://github.com/zurb/foundation-sites
4//
5// Definitions by: Sam Vloeberghs <https://github.com/samvloeberghs/>
6// Original Definitions: https://github.com/samvloeberghs/foundation-sites-typings
7
8declare module FoundationSites {
9
10 // http://foundation.zurb.com/sites/docs/abide.html#javascript-reference
11 interface Abide {
12 requiredChecked(element: JQuery): boolean;
13 findFormError(element: JQuery): JQuery;
14 findLabel(element: JQuery): boolean;
15 addErrorClasses(element: JQuery): void;
16 removeRadioErrorClasses(groupName: string): void;
17 removeErrorClasses(element: JQuery): void;
18 validateInput(element: JQuery): boolean;
19 validateForm(): boolean;
20 validateText(element: JQuery, pattern: string): boolean;
21 validateRadio(groupName: string): boolean;
22 matchValidation(element: JQuery, validators: string, required: boolean): boolean;
23 resetForm(): void;
24 destroy(): void;
25 }
26
27 interface AbideDefaults {
28 validateOn: string;
29 labelErrorClass: string;
30 inputErrorClass: string;
31 formErrorSelector: string;
32 formErrorClass: string;
33 liveValidate: boolean;
34 validateOnBlur: boolean;
35 patterns: IAbidePatterns;
36 validators: any; // TODO, maybe there is a better solution to describe how this object may look like
37 }
38
39 interface IAbidePatterns {
40 alpha?: RegExp;
41 alpha_numeric?: RegExp;
42 integer?: RegExp;
43 number?: RegExp;
44 card?: RegExp;
45 cvv?: RegExp;
46 email ?: RegExp;
47 url?: RegExp;
48 domain?: RegExp;
49 datetime?: RegExp;
50 date?: RegExp;
51 time?: RegExp;
52 dateISO?: RegExp;
53 month_day_year?: RegExp;
54 day_month_year?: RegExp;
55 color?: RegExp;
56 }
57
58 interface IAbideOptions {
59 validateOn?: string;
60 labelErrorClass?: string;
61 inputErrorClass?: string;
62 formErrorSelector?: string;
63 formErrorClass?: string;
64 liveValidate?: boolean;
65 validators?: any;
66 }
67
68 // http://foundation.zurb.com/sites/docs/accordion.html#javascript-reference
69 interface Accordion {
70 toggle($target: JQuery): void;
71 down($target: JQuery, firstTime: boolean): void;
72 up($target: JQuery): void;
73 destroy(): void;
74 }
75
76 interface IAccordionOptions {
77 slideSpeed?: number
78 multiExpand?: boolean;
79 allowAllClosed?: boolean;
80 }
81
82 // http://foundation.zurb.com/sites/docs/accordion-menu.html#javascript-reference
83 interface AccordionMenu {
84 hideAll(): void;
85 toggle($target: JQuery): void;
86 down($target: JQuery, firstTime: boolean): void;
87 up($target: JQuery): void;
88 destroy(): void;
89 }
90
91 interface IAccordionMenuOptions {
92 slideSpeed?: number;
93 multiOpen?: boolean;
94 }
95
96 // http://foundation.zurb.com/sites/docs/drilldown-menu.html#javascript-reference
97 interface Drilldown {
98 destroy(): void;
99 }
100
101 interface IDrilldownOptions {
102 backButton?: string;
103 wrapper?: string;
104 parentLink?: boolean;
105 closeOnClick?: boolean;
106 }
107
108 // http://foundation.zurb.com/sites/docs/dropdown.html#javascript-reference
109 interface Dropdown {
110 getPositionClass(): string;
111 open(): void;
112 close(): void;
113 toggle(): void;
114 destroy(): void;
115 }
116
117 interface IDropdownOptions {
118 hoverDelay?: number;
119 hover?: boolean;
120 hoverPane?: boolean;
121 vOffset?: number;
122 hOffset?: number;
123 positionClass?: string;
124 trapFocus?: boolean;
125 autoFocus?: boolean;
126 closeOnClick?: boolean;
127 }
128
129 // http://foundation.zurb.com/sites/docs/dropdown-menu.html#javascript-reference
130 interface DropdownMenu {
131 destroy(): void;
132 }
133
134 interface IDropdownMenuOptions {
135 disableHover?: boolean;
136 autoclose?: boolean;
137 hoverDelay?: number;
138 clickOpen?: boolean;
139 closingTime?: number;
140 alignment?: string;
141 closeOnClick?: boolean;
142 verticalClass?: string;
143 rightClass?: string;
144 forceFollow?: boolean;
145 }
146
147 // http://foundation.zurb.com/sites/docs/equalizer.html#javascript-reference
148 interface Equalizer {
149 getHeights(cb: Function): Array<any>;
150 getHeightsByRow(cb: Function): Array<any>;
151 applyHeight(heights: Array<any>): void;
152 applyHeightByRow(groups: Array<any>): void;
153 destroy(): void;
154 }
155
156 interface IEqualizerOptions {
157 equalizeOnStack?: boolean;
158 equalizeByRow?: boolean;
159 equalizeOn?: string;
160 }
161
162 // http://foundation.zurb.com/sites/docs/interchange.html#javascript-reference
163 interface Interchange {
164 replace(path: string): void;
165 destroy(): void;
166 }
167
168 interface IInterchangeOptions {
169 rules?: Array<any>
170 }
171
172 // http://foundation.zurb.com/sites/docs/magellan.html#javascript-reference
173 interface Magellan {
174 calcPoints(): void;
175 scrollToLoc(location: string): void;
176 reflow(): void;
177 destroy(): void;
178 }
179
180 interface IMagellanOptions {
181 animationDuration?: number;
182 animationEasing?: string;
183 threshold?: number;
184 activeClass?: string;
185 deepLinking?: boolean;
186 barOffset?: number;
187 }
188
189 // http://foundation.zurb.com/sites/docs/offcanvas.html#javascript-reference
190 interface OffCanvas {
191 reveal(isRevealed: boolean): void;
192 open(event: Event, trigger: JQuery): void;
193 close(cb?: Function): void;
194 toggle(event: Event, trigger: JQuery): void;
195 destroy(): void;
196 }
197
198 interface IOffCanvasOptions {
199 closeOnClick?: boolean;
200 transitionTime?: number;
201 position?: string;
202 forceTop?: boolean;
203 isRevealed?: boolean;
204 revealOn?: string;
205 autoFocus?: boolean;
206 revealClass?: string;
207 trapFocus?: boolean;
208 }
209
210 // http://foundation.zurb.com/sites/docs/orbit.html#javascript-reference
211 interface Orbit {
212 geoSync(): void;
213 changeSlide(isLTR: boolean, chosenSlide?: JQuery, idx?: number): void;
214 destroy(): void;
215 }
216
217 interface IOrbitOptions {
218 bullets?: boolean;
219 navButtons?: boolean;
220 animInFromRight?: string;
221 animOutToRight?: string;
222 animInFromLeft?: string;
223 animOutToLeft?: string;
224 autoPlay?: boolean;
225 timerDelay?: number;
226 infiniteWrap?: boolean;
227 swipe?: boolean;
228 pauseOnHover?: boolean;
229 accessible?: boolean;
230 containerClass?: string;
231 slideClass?: string;
232 boxOfBullets?: string;
233 nextClass?: string;
234 prevClass?: string;
235 useMUI?: boolean;
236 }
237
238 // http://foundation.zurb.com/sites/docs/reveal.html#javascript-reference
239 interface Reveal {
240 open(): void;
241 toggle(): void;
242 close(): void;
243 destroy(): void;
244 }
245
246 interface IRevealOptions {
247 animationIn?: string;
248 animationOut?: string;
249 showDelay?: number;
250 hideDelay?: number;
251 closeOnClick?: boolean;
252 closeOnEsc?: boolean;
253 multipleOpened?: boolean;
254 vOffset?: number;
255 hOffset?: number;
256 fullScreen?: boolean;
257 btmOffsetPct?: number;
258 overlay?: boolean;
259 resetOnClose?: boolean;
260 deepLink?: boolean;
261 }
262
263 // http://foundation.zurb.com/sites/docs/slider.html#javascript-reference
264 interface Slider {
265 destroy(): void;
266 }
267
268 interface ISliderOptions {
269 start?: number;
270 end?: number;
271 step?: number;
272 initialStart ?: number;
273 initialEnd?: number;
274 binding?: boolean;
275 clickSelect?: boolean;
276 vertical?: boolean;
277 draggable?: boolean;
278 disabled?: boolean;
279 doubleSided?: boolean;
280 decimal?: number;
281 moveTime?: number;
282 disabledClass?: string;
283 }
284
285 // http://foundation.zurb.com/sites/docs/sticky.html#javascript-reference
286 interface Sticky {
287 destroy(): void;
288 }
289
290 interface IStickyOptions {
291 container?: string;
292 stickTo?: string;
293 anchor?: string;
294 topAnchor?: string;
295 btmAnchor?: string;
296 marginTop?: number;
297 marginBottom?: number;
298 stickyOn?: string;
299 stickyClass?: string;
300 containerClass?: string;
301 checkEvery?: number;
302 }
303
304 // http://foundation.zurb.com/sites/docs/tabs.html#javascript-reference
305 interface Tabs {
306 selectTab(element: JQuery | string): void;
307 destroy(): void;
308 }
309
310 interface ITabsOptions {
311 autoFocus?: boolean;
312 wrapOnKeys?: boolean;
313 matchHeight?: boolean;
314 linkClass?: string;
315 panelClass?: string;
316 }
317
318 // http://foundation.zurb.com/sites/docs/toggler.html#javascript-reference
319 interface Toggler {
320 toggle(): void;
321 destroy(): void;
322 }
323
324 interface ITogglerOptions {
325 animate?: boolean;
326 }
327
328 // http://foundation.zurb.com/sites/docs/tooltip.html#javascript-reference
329 interface Tooltip {
330 show(): void;
331 hide(): void;
332 toggle(): void;
333 destroy(): void;
334 }
335
336 interface ITooltipOptions {
337 hoverDelay?: number;
338 fadeInDuration?: number;
339 fadeOutDuration?: number;
340 disableHover?: boolean;
341 templateClasses?: string;
342 tooltipClass?: string;
343 triggerClass?: string;
344 showOn?: string;
345 template?: string;
346 tipText?: string;
347 clickOpen?: boolean;
348 positionClass?: string;
349 vOffset?: number;
350 hOffset?: number;
351 }
352
353 // Utilities
354 // ---------
355
356 interface Box {
357 ImNotTouchingYou(element: Object, parent?: Object, lrOnly?: boolean, tbOnly?: boolean): boolean;
358 GetDimensions(element: Object): Object;
359 GetOffsets(element: Object, anchor: Object, position: string, vOffset: number, hOffset: number, isOverflow: boolean): Object;
360 }
361
362 interface KeyBoard {
363 parseKey(event: any): string;
364 handleKey(event: any, component: any, functions: any): void;
365 findFocusable($element: Object): Object;
366 }
367
368 interface MediaQuery {
369 get(size: string): string;
370 atLeast(size: string): boolean;
371 queries: Array<string>;
372 current: string;
373 }
374
375 interface Motion {
376 animateIn(element: Object, animation: any, cb: Function): void;
377 animateOut(element: Object, animation: any, cb: Function): void;
378 }
379
380 interface Move {
381 // TODO
382 }
383
384 interface Nest {
385 Feather(menu: any, type: any): void;
386 Burn(menu: any, type: any): void;
387 }
388
389 interface Timer {
390 start(): void;
391 restart(): void;
392 pause(): void;
393 }
394
395 interface Touch {
396 // TODO :extension on jQuery
397 }
398
399 interface Triggers {
400 // TODO :extension on jQuery
401 }
402
403 interface FoundationSitesStatic {
404 version: string;
405
406 rtl(): boolean;
407 plugin(plugin: Object, name: string): void;
408 registerPlugin(plugin: Object): void;
409 unregisterPlugin(plugin: Object): void;
410 reInit(plugins: Array<any>): void;
411 GetYoDigits(length: number, namespace?: string): string;
412 reflow(elem: Object, plugins?: Array<string>|string): void;
413 getFnName(fn: string): string;
414 transitionend(): string;
415
416 util: {
417 throttle(func: (...args: any[]) => any, delay: number): (...args: any[]) => any;
418 };
419
420 Abide: {
421 new(element: JQuery, options?: IAbideOptions): Abide;
422 defaults: AbideDefaults;
423 }
424 Accordion: {
425 new(element: JQuery, options?: IAccordionOptions): Accordion;
426 }
427 AccordionMenu: {
428 new(element: JQuery, options?: IAccordionMenuOptions): AccordionMenu;
429 }
430 Drilldown: {
431 new(element: JQuery, options?: IDrilldownOptions): Drilldown;
432 }
433 Dropdown: {
434 new(element: JQuery, options?: IDropdownOptions): Dropdown;
435 }
436 DropdownMenu: {
437 new(element: JQuery, options?: IDropdownMenuOptions): DropdownMenu;
438 }
439 Equalizer: {
440 new(element: JQuery, options?: IEqualizerOptions): Equalizer;
441 }
442 Interchange: {
443 new(element: JQuery, options?: IInterchangeOptions): Interchange;
444 }
445 Magellan: {
446 new(element: JQuery, options?: IMagellanOptions): Magellan;
447 }
448 OffCanvas: {
449 new(element: JQuery, options?: IOffCanvasOptions): OffCanvas;
450 }
451 Orbit: {
452 new(element: JQuery, options?: IOrbitOptions): Orbit;
453 }
454 Reveal: {
455 new(element: JQuery, options?: IRevealOptions): Reveal;
456 };
457 Slider: {
458 new(element: JQuery, options?: ISliderOptions): Slider;
459 }
460 Sticky: {
461 new(element: JQuery, options?: IStickyOptions): Sticky;
462 }
463 Tabs: {
464 new(element: JQuery, options?: ITabsOptions): Tabs;
465 }
466 Toggler: {
467 new(element: JQuery, options?: ITogglerOptions): Toggler;
468 }
469 Tooltip: {
470 new(element: JQuery, options?: ITooltipOptions): Tooltip;
471 }
472
473 // utils
474 Box: Box;
475 KeyBoard: KeyBoard;
476 MediaQuery: MediaQuery;
477 Motion: Motion;
478 Move: Move;
479 Nest: Nest;
480 Timer: Timer;
481 Touch: Touch;
482 Triggers: Triggers;
483
484 }
485
486}
487
488interface JQuery {
489 foundation(method?: string|Array<any>, $element?: JQuery): JQuery;
490}
491
492declare var Foundation: FoundationSites.FoundationSitesStatic;
493
494declare module "Foundation" {
495 export = Foundation;
496}