simpleitjs-ui
Version:
UI Framework based on simpleitjs
87 lines (73 loc) • 2.15 kB
text/typescript
/// <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
};
}