50e9f1c4800a5ae0efcda3b112703b19b7050376
[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 Popover: any;
14   export let Severity: any;
15   export let ShortcutMenu: any;
16   export let Storage: any;
17   export let Utility: any;
18   export const lang: any;
19   export const settings: any;
20   export namespace CMS {
21     export namespace Backend {
22       export class FormEngineValidation {
23         public readonly errorClass: string;
24       }
25       export class FormEngine {
26         public readonly Validation: FormEngineValidation;
27       }
28       export class Modal {
29         public readonly sizes: {[key: string]: string};
30         public readonly styles: {[key: string]: string};
31         public readonly types: {[key: string]: string};
32         public currentModal: JQuery;
33         public advanced(configuration: object): any;
34         public confirm(title: string, content: any, severity: number, buttons: any[], additionalCssClasses?: string[]): JQuery; // tslint:disable-line:max-line-length
35         public show(title: string, content: any, severity: number, buttons: any[], additionalCssClasses?: string[]): JQuery; // tslint:disable-line:max-line-length
36         public dismiss(): void;
37       }
38     }
39   }
40 }
41
42 /**
43  * Current AMD/RequireJS modules are returning *instances* of ad-hoc *classes*, make that known to TypeScript
44  */
45
46 declare module 'TYPO3/CMS/Backend/FormEngineValidation' {
47   export = new TYPO3.CMS.Backend.FormEngineValidation();
48 }
49
50 declare module 'TYPO3/CMS/Backend/FormEngine' {
51   export = new TYPO3.CMS.Backend.FormEngine();
52 }
53
54 declare module 'TYPO3/CMS/Backend/Modal' {
55   export = new TYPO3.CMS.Backend.Modal();
56 }
57
58 // type definition for global namespace object
59 interface Window {
60   TYPO3: any;
61   $: any;
62   inline: {
63     delayedImportElement: (objectId: number, table: string, uid: number, type: string) => void
64   };
65 }
66
67 /**
68  * Needed type declarations for provided libs
69  */
70 declare module 'TYPO3/CMS/Core/Contrib/imagesloaded.pkgd.min' {
71   import * as imagesloaded from 'imagesloaded';
72   export = imagesloaded;
73 }
74
75 declare module 'cm/lib/codemirror';
76 declare module 'moment';
77 declare module 'TYPO3/CMS/Backend/jsfunc.inline';
78
79 /**
80  * Options for the plugin.
81  * TODO fix this
82  */
83 interface DragUploaderOptions {
84   /**
85    * CSS selector for the element where generated messages are inserted. (required)
86    */
87   outputSelector: string;
88   /**
89    * Color of the message text. (optional)
90    */
91   outputColor?: string;
92 }
93
94 interface JQueryTypedEvent<T extends Event> extends JQueryEventObject {
95   originalEvent: T;
96 }
97
98 /**
99  * Required to make jQuery plugins "available" in TypeScript
100  */
101 interface JQuery {
102   clearable(options?: any): JQuery;
103   dragUploader(options?: DragUploaderOptions): JQuery;
104 }