UNPKG

simpleitjs-ui

Version:
87 lines (73 loc) 2.15 kB
/// <reference path="./node_modules/simpleitjs/dist/module.d.ts" /> /// <reference path="./node_modules/simpleitjs/dist/ajax.d.ts" /> let ModuleClass: typeof Module; declare var require: (...args: any[]) => any; (function () { if (typeof window === "undefined") { ModuleClass = require('simpleitjs').Module; require('simpleitjs').Ajax; } else { const win: any = window; ModuleClass = win.SimpleJS.Module; } })(); let id = 0; const generateNxtId = () => { return id++; }; class UIModel { public _id: number = generateNxtId(); } class UIModuleOpts extends ModuleScope { public name?: string; public templateHTML?: string; public templateURL?: string; public templateSelector?: string; public model?: UIModel; constructor(config: UIModuleOpts = {}) { super(); this.name = config.name; this.templateURL = config.templateURL; this.templateSelector = config.templateSelector; this.model = config.model || new UIModel(); } } class SuperUI extends UIModuleOpts { public Ajax?: Ajax = Module.get('Ajax') as Ajax; constructor(config: UIModuleOpts = {}) { super(config); } public static invoke(model: SuperUI, ...dependencies: any[]): SuperUI { console.log('Super class invoked'); if (model.templateURL) { model.Ajax?.get<string>(model.templateURL).then((strTemplate) => { model.templateHTML = strTemplate; }); } return model; } } class UIModule extends ModuleClass { constructor(name: string, opts: UIModuleOpts, ...dependencies: any[]) { console.log('ui module initiated'); // const inst = new SuperUI(opts); const params = [name, ...dependencies, opts, SuperUI]; super(...params); } } declare var module: any; if (typeof module != "undefined" && typeof module.exports != "undefined") { module.exports = { UIModule, SuperUI, UIModel }; } else if (typeof window != "undefined") { const win: any = window; win.SimpleJS = win.SimpleJS || {}; win.SimpleJS.UI = { UIModule, SuperUI, UIModel }; }