diff --git a/jquery-easy-loading/jquery-easy-loading-tests.ts b/jquery-easy-loading/jquery-easy-loading-tests.ts new file mode 100644 index 000000000..704b75efe --- /dev/null +++ b/jquery-easy-loading/jquery-easy-loading-tests.ts @@ -0,0 +1,39 @@ +/// +/// + +function test_options() { + + const jqElement: JQuery = $("body").loading({ + overlay: $(".some-class"), + zIndex: 1000, + message: "some message", + theme: "some theme", + shownClass: "some-class", + hiddenClass: "some-class", + stoppable: true, + start: true, + onStart: (loading: JQueryEasyLoading.LoadingObject) => console.log("starting"), + onStop: (loading: JQueryEasyLoading.LoadingObject) => console.log("stopping"), + onClick: (someVar1: any, someVar2: any) => console.log("some message"), + }); + + const jqLoading: JQueryEasyLoading.LoadingObject = $("body").Loading({ + message: "some message", + }); +} + +function test_static() { + + $.Loading.setDefaults({ + message: "some message", + }); +} + +function test_commands() { + + $('body') + .loading("resize") + .loading("start") + .loading("stop") + .loading("toggle"); +} diff --git a/jquery-easy-loading/jquery-easy-loading.d.ts b/jquery-easy-loading/jquery-easy-loading.d.ts new file mode 100644 index 000000000..5b93e325b --- /dev/null +++ b/jquery-easy-loading/jquery-easy-loading.d.ts @@ -0,0 +1,192 @@ +// Type definitions for jquery-easy-loading 1.2.0 +// Project: http://carlosbonetti.github.io/jquery-loading/ +// Definitions by: delphinus +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +declare module JQueryEasyLoading { + + interface Static { + + /** + * Extend the Loading plugin default settings with the user options + * Use it as `$.Loading.setDefaults({ ... })` + * + * @param {Object} options Custom options to override the plugin defaults + */ + setDefaults(options: Options): void; + } + + interface LoadingObject { + + /** + * Initializes the overlay and attach handlers to the appropriate events + */ + init(): void; + + /** + * Return a new default overlay + * + * @return {jQuery} A new overlay already appended to the page's body + */ + createOerlay(): JQuery; + + /** + * Attach some internal methods to external events + * e.g. overlay click, window resize etc + */ + attachMethodsToExternalEvents(): void; + + /** + * Attach the handlers defined on `options` for the respective events + */ + attachOptionsHandlers(): void; + + /** + * Calculate the z-index for the default overlay element + * Return the z-index passed as setting to the plugin or calculate it + * based on the target's z-index + */ + calcZIndex(): number; + + /** + * Reposition the overlay on the top of the target element + * This method needs to be called if the target element changes position + * or dimension + */ + resize(): void; + + /** + * Trigger the `loading.start` event and turn on the loading state + */ + start(): void; + + /** + * Trigger the `loading.stop` event and turn off the loading state + */ + stop(): void; + + /** + * Check whether the loading state is active or not + * + * @return {Boolean} + */ + active(): boolean; + + /** + * Toggle the state of the loading overlay + */ + toggle(): void; + } + + interface Options { + + /** + * jQuery element to be used as overlay + * If not defined, a default overlay will be created + */ + overlay?: JQuery; + + /** + * z-index to be used by the default overlay + * If not defined, a z-index will be calculated based on the + * target's z-index + * Has no effect if a custom overlay is defined + */ + zIndex?: number; + + /** + * Message to be rendered on the overlay content + * Has no effect if a custom overlay is defined + */ + message?: string; + + /** + * Theme to be applied on the loading element + * + * Some default themes are implemented on `jquery.loading.css`, but you can + * define your own. Just add a `.loading-theme-my_awesome_theme` selector + * somewhere with your custom styles and change this option + * to 'my_awesome_theme'. The class is applied to the parent overlay div + * + * Has no effect if a custom overlay is defined + */ + theme?: string; + + /** + * Class(es) to be applied to the overlay element when the loading state is started + */ + shownClass?: string; + + /** + * Class(es) to be applied to the overlay element when the loading state is stopped + */ + hiddenClass?: string; + + /** + * Set to true to stop the loading state if the overlay is clicked + * This options does NOT override the onClick event + */ + stoppable?: boolean; + + /** + * Set to false to not start the loading state when initialized + */ + start?: boolean; + + /** + * Function to be executed when the loading state is started + * Receives the loading object as parameter + * + * The function is attached to the `loading.start` event + */ + onStart?: (loading: LoadingObject) => void; + + /** + * Function to be executed when the loading state is stopped + * Receives the loading object as parameter + * + * The function is attached to the `loading.stop` event + */ + onStop?: (loading: LoadingObject) => void; + + /** + * Function to be executed when the overlay is clicked + * Receives the loading object as parameter + * + * The function is attached to the `loading.click` event + */ + onClick?: Function; + } + + type Command = "resize" | "start" | "stop" | "toggle"; +} + +interface JQueryStatic { + + Loading: JQueryEasyLoading.Static; +} + +interface JQuery { + /** + * Initializes the plugin and return a chainable jQuery object + * + * @param {Object} [options] Initialization options. Extends `Loading.defaults` + * @return {jQuery} + */ + loading(options?: JQueryEasyLoading.Options | JQueryEasyLoading.Command): JQuery; + + /** + * Return the loading object associated to the element or initialize it + * This method is interesting if you need the plugin object to access the + * internal API + * Example: `$('#some-element').Loading().toggle()` + * + * @param {Object} [options] Initialization options. If new options are given + * to a previously initialized object, the old ones are overriden and the + * plugin restarted + * @return {Loading} + */ + Loading(options?: JQueryEasyLoading.Options): JQueryEasyLoading.LoadingObject; +}