foundation.d.ts 12 KB

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