[TASK] Migrate TYPO3/CMS/Opendocs/OpendocsMenu 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 Backend: any;
9   export let DebugConsole: any;
10   export let Icons: any;
11   export let InfoWindow: any;
12   export let LoginRefresh: any;
13   export let ModuleMenu: any;
14   export let Notification: any;
15   export let Modal: any;
16   export let OpendocsMenu: any;
17   export let Popover: any;
18   export let Severity: any;
19   export let ShortcutMenu: any;
20   export let Storage: any;
21   export let Tooltip: any;
22   export let Utility: any;
23   export const lang: { [key: string]: string };
24   export const settings: any;
25   export const configuration: any;
26   export namespace CMS {
27     export namespace Backend {
28       export class FormEngineValidation {
29         public readonly errorClass: string;
30         public markFieldAsChanged($field: JQuery): void;
31         public initializeInputFields(): void;
32         public validate(): void;
33       }
34
35       export class FormEngine {
36         public readonly Validation: FormEngineValidation;
37         public preventFollowLinkIfNotSaved(href: string): boolean;
38         public setSelectOptionFromExternalSource(
39           fieldName: string,
40           value: string,
41           label: string,
42           title: string,
43           exclusiveValues?: string,
44           $optionEl?: JQuery
45         ): void;
46         public reinitialize(): void;
47       }
48
49       export class Wizard {
50         public addSlide(identifier: string, title: string, content: string, severity: number, callback?: Function): Wizard;
51         public lockNextStep(): JQuery;
52         public unlockNextStep(): JQuery;
53         public getComponent(): JQuery;
54         public addFinalProcessingSlide(callback?: Function): JQueryXHR;
55         public show(): Wizard;
56         public dismiss(): Wizard;
57       }
58     }
59   }
60 }
61
62 declare namespace TBE_EDITOR {
63   export let fieldChanged: Function;
64 }
65
66 /**
67  * Current AMD/RequireJS modules are returning *instances* of ad-hoc *classes*, make that known to TypeScript
68  */
69 declare module 'TYPO3/CMS/Backend/FormEngineValidation' {
70   export = new TYPO3.CMS.Backend.FormEngineValidation();
71 }
72
73 declare module 'TYPO3/CMS/Backend/FormEngine' {
74   export = new TYPO3.CMS.Backend.FormEngine();
75 }
76
77 declare module 'TYPO3/CMS/Backend/Wizard' {
78   export = new TYPO3.CMS.Backend.Wizard();
79 }
80
81 // type definition for global namespace object
82 interface Window {
83   TYPO3: any;
84   $: any;
85   startInModule: Array<string>;
86   inline: {
87     delayedImportElement: (objectId: number, table: string, uid: number, type: string) => void
88   };
89   rawurlencode: Function;
90   list_frame: Window;
91   jump: Function;
92   currentSubScript: string;
93   currentModuleLoaded: string;
94   fsMod: { [key: string]: any };
95   nextLoadModuleUrl: string;
96
97   // required for Paste.ts
98   // TODO these should be passed as data attributes
99   pasteAfterLinkTemplate: string;
100   pasteIntoLinkTemplate: string;
101 }
102
103 /**
104  * Needed type declarations for provided libs
105  */
106 declare module 'TYPO3/CMS/Core/Contrib/imagesloaded.pkgd.min' {
107   import * as imagesloaded from 'imagesloaded';
108   export = imagesloaded;
109 }
110
111 declare module 'cm/lib/codemirror';
112 declare module 'moment';
113
114 interface JQueryTypedEvent<T extends Event> extends JQueryEventObject {
115   originalEvent: T;
116 }
117
118 /**
119  * Required to make jQuery plugins "available" in TypeScript
120  */
121 interface JQuery {
122   clearable(options?: any): JQuery;
123
124   datetimepicker(options?: any): JQuery;
125
126   dragUploader(options?: any): JQuery;
127
128   t3FormEngineFlexFormElement(options?: any): JQuery;
129
130   // To be able to use twbs/bootstrap-slider we have to override the definition of jquerui
131   slider(options: { [key: string]: any }): any;
132
133   // To be able to use jquery/autocomplete-slider we have to override the definition of jquerui
134   autocomplete(options?: { [key: string]: any }): any;
135 }
136