[TASK] Migrate Modal to TypeScript
[Packages/TYPO3.CMS.git] / Build / types / TYPO3 / index.d.ts
1 /* tslint:disable:max-classes-per-file */
2
3 /**
4  * Currently a mixture between namespace and global object
5  * Add types as you use them
6  */
7 declare namespace TYPO3 {
8   export let DebugConsole: any;
9   export let Icons: any;
10   export let InfoWindow: any;
11   export let ModuleMenu: any;
12   export let Notification: any;
13   export let Modal: any;
14   export let Popover: any;
15   export let Severity: any;
16   export let ShortcutMenu: any;
17   export let Storage: any;
18   export let Utility: any;
19   export const lang: any;
20   export const settings: any;
21   export namespace CMS {
22     export namespace Backend {
23       export class FormEngineValidation {
24         public readonly errorClass: string;
25       }
26       export class FormEngine {
27         public readonly Validation: FormEngineValidation;
28       }
29     }
30   }
31 }
32
33 /**
34  * Current AMD/RequireJS modules are returning *instances* of ad-hoc *classes*, make that known to TypeScript
35  */
36
37 declare module 'TYPO3/CMS/Backend/FormEngineValidation' {
38   export = new TYPO3.CMS.Backend.FormEngineValidation();
39 }
40
41 declare module 'TYPO3/CMS/Backend/FormEngine' {
42   export = new TYPO3.CMS.Backend.FormEngine();
43 }
44
45 // type definition for global namespace object
46 interface Window {
47   TYPO3: any;
48   $: any;
49   inline: {
50     delayedImportElement: (objectId: number, table: string, uid: number, type: string) => void
51   };
52 }
53
54 /**
55  * Needed type declarations for provided libs
56  */
57 declare module 'TYPO3/CMS/Core/Contrib/imagesloaded.pkgd.min' {
58   import * as imagesloaded from 'imagesloaded';
59   export = imagesloaded;
60 }
61
62 declare module 'cm/lib/codemirror';
63 declare module 'moment';
64 declare module 'TYPO3/CMS/Backend/jsfunc.inline';
65
66 /**
67  * Options for the plugin.
68  * TODO fix this
69  */
70 interface DragUploaderOptions {
71   /**
72    * CSS selector for the element where generated messages are inserted. (required)
73    */
74   outputSelector: string;
75   /**
76    * Color of the message text. (optional)
77    */
78   outputColor?: string;
79 }
80
81 interface JQueryTypedEvent<T extends Event> extends JQueryEventObject {
82   originalEvent: T;
83 }
84
85 /**
86  * Required to make jQuery plugins "available" in TypeScript
87  */
88 interface JQuery {
89   clearable(options?: any): JQuery;
90   dragUploader(options?: DragUploaderOptions): JQuery;
91 }