@tslib/vue-ext
Advanced tools
Comparing version 1.0.31 to 1.1.2
@@ -1,11 +0,9 @@ | ||
import Vue from "vue"; | ||
import { VueConstructor } from "vue"; | ||
import { Store } from "vuex"; | ||
export interface IComponentInfo { | ||
module: string; | ||
name: string; | ||
page: string; | ||
title: string; | ||
icon: string; | ||
index: number; | ||
accessGroup: [string]; | ||
Instance: Vue; | ||
} | ||
@@ -18,2 +16,3 @@ export interface IModuleInfo { | ||
index: number; | ||
accessGroup: [string]; | ||
pages: { | ||
@@ -23,3 +22,3 @@ [p: string]: IComponentInfo; | ||
components: { | ||
[c: string]: IComponentInfo; | ||
[c: string]: VueConstructor; | ||
}; | ||
@@ -31,4 +30,3 @@ } | ||
export declare const store: Store<{ | ||
entry: string; | ||
moduleRegister: IModules; | ||
moduleList: IModules; | ||
}>; |
@@ -16,39 +16,29 @@ "use strict"; | ||
state: { | ||
entry: "pc", | ||
moduleRegister: {} // 已加载的组件列表 | ||
moduleList: {} // 已加载的组件列表 | ||
}, | ||
mutations: { | ||
setEntry(state, value) { | ||
state.entry = value; | ||
}, | ||
registerModule(state, modInfo) { | ||
// 转换大小写 | ||
modInfo.name = lodash_1.default.camelCase(modInfo.name); | ||
modInfo.pages = modInfo.pages || {}; | ||
modInfo.components = modInfo.components || {}; | ||
state.moduleRegister[modInfo.name] = modInfo; | ||
state.moduleList[modInfo.name] = modInfo; | ||
}, | ||
registerVueComponents(state, value) { | ||
const mod = lodash_1.default.camelCase(value.module); | ||
const pg = lodash_1.default.camelCase(value.name); | ||
if (lodash_1.default.isEmpty(state.moduleRegister[mod])) { | ||
// 获取实例名称 | ||
const mod = state.moduleList[value.module]; | ||
if (lodash_1.default.isEmpty(mod)) { | ||
//初始化创建组件信息 | ||
_d("Invalid or Unregister Module:", mod); | ||
_d("Invalid Module for registerVueComponents:", value); | ||
return; | ||
} | ||
if (lodash_1.default.isEmpty(pg)) { | ||
_d("registerVueComponents Error,name is empty:", pg); | ||
const pageName = value.vueClass.options.name; | ||
if (lodash_1.default.isEmpty(pageName)) { | ||
_d("registerVueComponents ,No Define Page Name:", value); | ||
return; | ||
} | ||
const page = mod.pages[pageName]; | ||
if (lodash_1.default.isEmpty(page)) { | ||
_d("registerVueComponents ,not defined Page:", pageName); | ||
return; | ||
} | ||
// 注册组件 | ||
if (value.page) { | ||
// 注册为页面组件 | ||
_d("register page:", mod, pg); | ||
state.moduleRegister[mod].pages[pg] = value; | ||
} | ||
else { | ||
// 注册为通用组件 | ||
_d("register components:", mod, pg); | ||
state.moduleRegister[mod].components[pg] = value; | ||
} | ||
mod.components[pageName] = value.vueClass; | ||
_d("register Vue components successed:", value.module, pageName); | ||
} | ||
@@ -55,0 +45,0 @@ } |
@@ -6,6 +6,6 @@ import Vue from "vue"; | ||
export declare type FN_EXTERN = typeof Vue.extend; | ||
export declare function _extend(options: any): any; | ||
export declare function _export(options: any): any; | ||
declare module "vue/types/vue" { | ||
interface VueConstructor { | ||
extendVue: FN_EXTERN; | ||
export: FN_EXTERN; | ||
} | ||
@@ -15,7 +15,2 @@ } | ||
interface ComponentOptions<V extends Vue> { | ||
module?: string; | ||
index?: number; | ||
page?: string; | ||
icon?: string; | ||
accessGroup?: [string]; | ||
timerInterval?: number; | ||
@@ -22,0 +17,0 @@ onTimer?: Function; |
@@ -10,2 +10,3 @@ "use strict"; | ||
const _d = debug_1.default("app:vueExt"); | ||
_d("init vueExt..."); | ||
// 初始化store | ||
@@ -17,22 +18,13 @@ const globalStore_1 = require("./globalStore"); | ||
require("./extTimer"); | ||
_d("init vueExt..."); | ||
function _extend(options) { | ||
function _export(options) { | ||
const VueInstance = vue_1.default.extend.apply(vue_1.default, arguments); | ||
if (options && options.module && options.name) { | ||
globalStore_1.store.commit(`registerVueComponents`, { | ||
module: options.module, | ||
name: options.name, | ||
Instance: VueInstance, | ||
page: options.page, | ||
icon: options.icon, | ||
index: options.index, | ||
accessGroup: options.accessGroup | ||
}); | ||
globalStore_1.store.commit(`registerVueComponents`, VueInstance); | ||
} | ||
return VueInstance; | ||
} | ||
exports._extend = _extend; | ||
exports._export = _export; | ||
// 初始化vue扩展 | ||
vue_1.default.extendVue = _extend; | ||
vue_1.default.export = _export; | ||
exports.default = vue_1.default; | ||
//# sourceMappingURL=vueExt.js.map |
{ | ||
"name": "@tslib/vue-ext", | ||
"version": "1.0.31", | ||
"version": "1.1.2", | ||
"private": false, | ||
@@ -5,0 +5,0 @@ "description": "config file loader for typescript", |
@@ -13,9 +13,7 @@ import Vue, { VueConstructor } from "vue"; | ||
export interface IComponentInfo { | ||
module: string; | ||
name: string; | ||
page: string; | ||
title: string; | ||
icon: string; | ||
index: number; | ||
index: number; // 排序 | ||
accessGroup: [string]; | ||
Instance: Vue; | ||
} | ||
@@ -28,7 +26,10 @@ export interface IModuleInfo { | ||
index: number; // 排序 | ||
accessGroup: [string]; | ||
pages: { | ||
// 导出页面信息列表 | ||
[p: string]: IComponentInfo; | ||
}; | ||
components: { | ||
[c: string]: IComponentInfo; | ||
// 导出组件列表,组件实例 | ||
[c: string]: VueConstructor; | ||
}; | ||
@@ -44,39 +45,36 @@ } | ||
state: { | ||
entry: "pc", // 类型入口,默认为pc | ||
moduleRegister: {} as IModules // 已加载的组件列表 | ||
moduleList: {} as IModules // 已加载的组件列表 | ||
}, | ||
mutations: { | ||
setEntry(state, value) { | ||
state.entry = value; | ||
}, | ||
registerModule(state, modInfo: IModuleInfo) { | ||
// 转换大小写 | ||
modInfo.name = _.camelCase(modInfo.name); | ||
modInfo.pages = modInfo.pages || {}; | ||
modInfo.components = modInfo.components || {}; | ||
state.moduleRegister[modInfo.name] = modInfo; | ||
state.moduleList[modInfo.name] = modInfo; | ||
}, | ||
registerVueComponents(state, value: IComponentInfo) { | ||
const mod = _.camelCase(value.module); | ||
const pg = _.camelCase(value.name); | ||
if (_.isEmpty(state.moduleRegister[mod])) { | ||
registerVueComponents( | ||
state, | ||
value: { | ||
module: string; | ||
vueClass: VueConstructor & { options: { name: string } }; | ||
} | ||
) { | ||
// 获取实例名称 | ||
const mod = state.moduleList[value.module]; | ||
if (_.isEmpty(mod)) { | ||
//初始化创建组件信息 | ||
_d("Invalid or Unregister Module:", mod); | ||
_d("Invalid Module for registerVueComponents:", value); | ||
return; | ||
} | ||
if (_.isEmpty(pg)) { | ||
_d("registerVueComponents Error,name is empty:", pg); | ||
const pageName = value.vueClass.options.name; | ||
if (_.isEmpty(pageName)) { | ||
_d("registerVueComponents ,No Define Page Name:", value); | ||
return; | ||
} | ||
const page = mod.pages[pageName]; | ||
if (_.isEmpty(page)) { | ||
_d("registerVueComponents ,not defined Page:", pageName); | ||
return; | ||
} | ||
// 注册组件 | ||
if (value.page) { | ||
// 注册为页面组件 | ||
_d("register page:", mod, pg); | ||
state.moduleRegister[mod].pages[pg] = value; | ||
} else { | ||
// 注册为通用组件 | ||
_d("register components:", mod, pg); | ||
state.moduleRegister[mod].components[pg] = value; | ||
} | ||
mod.components[pageName] = value.vueClass; | ||
_d("register Vue components successed:", value.module, pageName); | ||
} | ||
@@ -83,0 +81,0 @@ } |
@@ -9,2 +9,3 @@ import Vue, { VueConstructor, FunctionalComponentOptions } from "vue"; | ||
const _d = debug("app:vueExt"); | ||
_d("init vueExt..."); | ||
@@ -17,19 +18,9 @@ // 初始化store | ||
import "./extTimer"; | ||
_d("init vueExt..."); | ||
// 创建export导出函数 | ||
export type FN_EXTERN = typeof Vue.extend; | ||
export function _extend(options: any) { | ||
export function _export(options: any) { | ||
const VueInstance = Vue.extend.apply(Vue, arguments); | ||
if (options && options.module && options.name) { | ||
store.commit(`registerVueComponents`, { | ||
module: options.module, | ||
name: options.name, | ||
Instance: VueInstance, | ||
page: options.page, | ||
icon: options.icon, | ||
index: options.index, | ||
accessGroup: options.accessGroup | ||
}); | ||
store.commit(`registerVueComponents`, VueInstance); | ||
} | ||
@@ -39,8 +30,7 @@ return VueInstance; | ||
// 初始化vue扩展 | ||
Vue.export = _export as FN_EXTERN; | ||
Vue.extendVue = _extend as FN_EXTERN; | ||
declare module "vue/types/vue" { | ||
interface VueConstructor { | ||
extendVue: FN_EXTERN; | ||
export: FN_EXTERN; | ||
} | ||
@@ -51,7 +41,2 @@ } | ||
interface ComponentOptions<V extends Vue> { | ||
module?: string; | ||
index?: number; | ||
page?: string; | ||
icon?: string; | ||
accessGroup?: [string]; // 权限组 | ||
timerInterval?: number; | ||
@@ -58,0 +43,0 @@ onTimer?: Function; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
30773
399