Merge pull request #6890 from itboy87/master

Added the type definitions for the lobibox library
This commit is contained in:
Masahiro Wakame
2015-12-10 22:56:30 +09:00
2 changed files with 341 additions and 0 deletions
+144
View File
@@ -0,0 +1,144 @@
/**
* Created by itboy on 11/22/2015.
*/
///<reference path="lobibox.d.ts"/>
///<reference path="../jquery/jquery.d.ts"/>
//Run test : LobiboxTest.test() after window load event
class LobiboxTest {
static test() {
// extending default parameters
Lobibox.notify.DEFAULTS = $.extend({}, Lobibox.notify.DEFAULTS, {
//override any options from default options
delay: false,
soundPath: '/libraries/lobibox/sounds/',
size: 'mini'
});
// notify
Lobibox.notify("error", {msg: "Hello world"});
Lobibox.notify("success", {msg: "Hello world"});
Lobibox.notify("warning", {msg: "Hello world"});
Lobibox.notify("info", {msg: "Hello world"});
// alert
Lobibox.alert("error", {msg: "Hello world"});
Lobibox.alert("success", {msg: "Hello world"});
Lobibox.alert("warning", {msg: "Hello world"});
Lobibox.alert("info", {msg: "Hello world"});
//alert with more options
Lobibox.alert('error', {
msg: 'This is an error message',
//buttons: ['ok', 'cancel', 'yes', 'no'],
//Or more powerfull way
buttons: {
ok: {
'class': 'btn btn-info',
closeOnClick: false
},
cancel: {
'class': 'btn btn-danger',
closeOnClick: false
},
yes: {
'class': 'btn btn-success',
closeOnClick: false
},
no: {
'class': 'btn btn-warning',
closeOnClick: false
},
custom: {
'class': 'btn btn-default',
text: 'Custom'
}
},
callback: function (lobibox:any, type:string):any {
let btnType:string = "";
if (type === 'no') {
btnType = 'warning';
} else if (type === 'yes') {
btnType = 'success';
} else if (type === 'ok') {
btnType = 'info';
} else if (type === 'cancel') {
btnType = 'error';
}
Lobibox.notify(btnType, {
size: 'mini',
msg: 'This is ' + btnType + ' message'
});
}
});
// confirm
Lobibox.confirm({
msg: "Are you ok",
});
// prompt
Lobibox.prompt("text", {
title: 'Please enter username',
//Attributes of <input>
attrs: {
placeholder: "Username"
}
});
// progress
Lobibox.progress({
title: 'Please wait',
label: 'Uploading files...',
onShow: function ($this:any):void {
var i = 0;
var inter = setInterval(function ():void {
window.console.log(i);
if (i > 100) {
clearInterval(inter);
}
i = i + 0.1;
$this.setProgress(i);
}, 10);
}
});
// window
Lobibox.window({
title: 'Window title',
//Available types: string, jquery object, function
content: function ():any {
return $('.container');
},
url: 'https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.css',
autoload: false,
loadMethod: 'GET',
//Load parameters
params: {
param1: 'Lorem',
param2: 'Ipsum'
},
buttons: {
load: {
text: 'Load from url'
},
close: {
text: 'Close',
closeOnClick: true
}
},
callback: function ($this:any, type:string, ev:any):void {
if (type === 'load') {
$this.load(function ():any {
//Do something when content is loaded
});
}
}
});
}
}
window.onload = (): void => {
LobiboxTest.test();
};
+197
View File
@@ -0,0 +1,197 @@
// Type definitions for lobibox 1.0.1
// Project: https://github.com/arboshiki/lobibox
// Definitions by: Sabeeh Ul Hussnain <https://github.com/itboy87>
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare var Lobibox: LobiboxModule.LobiboxStatic;
declare module "Lobibox" {
export = Lobibox;
}
declare module LobiboxModule {
interface MessageBoxesDefault {
title? : string;
horizontalOffset?: number;
width? : number;
height? : string; // Height is automatically given calculated by width
closeButton? : boolean; // Show close button or not
draggable? : boolean; // Make messagebox draggable
customBtnClass? : string; // Class for custom buttons
modal? : boolean;
debug? : boolean;
buttonsAlign? : string; // Position where buttons should be aligned
closeOnEsc? : boolean; // Close messagebox on Esc press
delayToRemove? : number;
baseClass? : string;
showClass? : string;
hideClass? : string;
msg? : string;
// methods
hide? (): MessageBoxesDefault;
show? (): MessageBoxesDefault;
setWidth? (width?: number): MessageBoxesDefault;
setHeight? (height?: number): MessageBoxesDefault;
setSize? (width?: number, height?: number): MessageBoxesDefault;
setPosition? (left?: number|string, top?: number): MessageBoxesDefault;
setTitle? (title?: string): MessageBoxesDefault;
getTitle? (): string;
// events
// when messagebox show is called but before it is actually shown
onShow? (lobibox:any): void ;
// after messagebox is shown
shown? (lobibox:any): void;
// when messagebox remove method is called but before it is actually hidden
beforeClose? (lobibox:any): void;
// after messagebox is hidden
closed? (lobibox:any): void;
}
interface MessageBoxesOptions extends MessageBoxesDefault {
bodyClass? : string;
modalClasses? : {
'error'? : string,
'success'? : string,
'info'? : string,
'warning'? : string,
'confirm'? : string,
'progress'? : string,
'prompt'? : string,
'default'? : string,
'window'? : string
},
buttonsAlign?: any;
buttons?: {
ok?: {
'class'?: string,
text?: string,
closeOnClick?: boolean
},
cancel?: {
'class'?: string,
text?: string,
closeOnClick?: boolean
},
yes?: {
'class'?: string,
text?: string,
closeOnClick?: boolean
},
no?: {
'class'?: string,
text?: string,
closeOnClick?: boolean
},
}|any;
callback? (lobibox:any, type?:string, ev?: any): void;
}
interface ConfirmOptions extends MessageBoxesOptions {
title? : string;
width? : number;
iconClass? : string;
}
interface PromptOptions extends MessageBoxesOptions, PromptMethods {
width?: number;
attrs?: any; // Object of any valid attribute of input field
value?: string; // Value which is given to textfield when messagebox is created
multiline?: boolean; // Set this true for multiline prompt
lines?: number; // This works only for multiline prompt. Number of lines
type?: string; // Prompt type. Available types (text|number|color)
label?: string; // Set some text which will be shown exactly on top of textfield
}
interface AlertOptions extends MessageBoxesOptions {
warning?: {
title?: string,
iconClass?: string // Change warning alert icon globally
};
info?:{
title?: string,
iconClass?: string // Change info alert icon globally
};
success?: {
title?: string,
iconClass?: string // Change success alert icon globally
};
error?: {
title?: string,
iconClass?: string // Change error alert icon globally
};
}
interface ProgressOptions extends MessageBoxesOptions, ProgressMethods, ProgressEvents {
width? : number;
showProgressLabel? : boolean; // Show percentage of progress
label? : string; // Show progress label
progressTpl? : boolean; //Template of progress bar
//Events
progressUpdated? : any;
progressCompleted? : any;
}
interface WindowOptions extends MessageBoxesOptions {
width? : number;
height? : any;
content? : any; // HTML Content of window
url? : string; // URL which will be used to load content
draggable? : boolean; // Override default option
autoload? : boolean; // Auto load from given url when window is created
loadMethod? : string; // Ajax method to load content
showAfterLoad? : boolean; // Show window after content is loaded or show and then load content
params? : {}; // Parameters which will be send by ajax for loading content
}
interface ProgressEvents {
progressUpdated? (lobibox:LobiboxStatic): void;
progressComplete? (lobibox:LobiboxStatic): void;
}
interface PromptMethods {
setValue? (val?:string): PromptMethods;
getValue? (): string;
}
interface ProgressMethods {
setProgress? (progress:number): ProgressMethods;
getProgress? (): number;
}
interface NotifyDefault {
title?: boolean; // Title of notification. If you do not include the title in options it will automatically takes its value
//from Lobibox.notify.OPTIONS object depending of the type of the notifications or set custom string. Set this false to disable title
size?: string; // normal, mini, large
soundPath?: string; // The folder path where sounds are located
soundExt?: string; // Default extension for all sounds
showClass?: string; // Show animation class.
hideClass?: string; // Hide animation class.
icon?: boolean; // Icon of notification. Leave as is for default icon or set custom string
msg?: string; // Message of notification
img?: string; // Image source string
closable?: boolean; // Make notifications closable
delay?: number; // Hide notification after this time (in miliseconds)
delayIndicator?: boolean; // Show timer indicator
closeOnClick?: boolean; // Close notifications by clicking on them
width?: number; // Width of notification box
sound?: boolean; // Sound of notification. Set this false to disable sound. Leave as is for default sound or set custom soud path
position?: string; // Place to show notification. Available options: "top left", "top right", "bottom left", "bottom right"
}
interface NotifyOptions extends NotifyDefault, NotifyMethods {
'class'?: string; //You can override options for large notifications from here
large?: {width?: number}; //You can override options for small notifications from here
mini?: {'class'?: string}; //Default options of different style notifications
success?: {'class'?: string, 'title'?: string,'icon'?: string,sound?: string};
error?: {'class'?: string, 'title'?: string,'icon'?: string,sound?: string};
warning?: {'class'?: string, 'title'?: string,'icon'?: string,sound?: string};
info?: {'class'?: string, 'title'?: string,'icon'?: string,sound?: string};
}
interface NotifyMethods {
remove? (): any;
}
interface LobiboxStatic {
base: {OPTIONS: MessageBoxesOptions, DEFAULTS: MessageBoxesDefault};
alert: {<T extends MessageBoxesDefault>(type: string, options?: T): LobiboxStatic, DEFAULTS: AlertOptions};
prompt: {<T extends MessageBoxesDefault>(type: string, options?: T): LobiboxStatic, DEFAULTS: PromptOptions};
confirm: {<T extends MessageBoxesDefault>(options?: ConfirmOptions): T, DEFAULTS: ConfirmOptions};
progress: {<T extends MessageBoxesDefault>(options: ProgressOptions): T, DEFAULTS: ProgressOptions};
window: {<T extends MessageBoxesDefault>(options: WindowOptions): T, DEFAULTS: WindowOptions};
notify: {<T extends NotifyDefault>(type: string, options?: NotifyOptions): T, DEFAULTS?: NotifyDefault,OPTIONS?:NotifyOptions};
}
}