com.phloxui
Version:
PhloxUI Ng2+ Framework
81 lines (80 loc) • 10.7 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { DefaultMenuItem } from '../DefaultMenuItem.component';
import { DefaultMenu } from '../DefaultMenu.component';
import { MenuItemModel } from '../model/MenuItemModel';
import { MenuModel } from '../model/MenuModel';
import { ActionModelMenu } from '../model/ActionModelMenu';
export class DefaultActionModelMenuFactory {
/**
* @param {?} anyModel
* @param {?} context
* @return {?}
*/
getMenuItemModels(anyModel, context) {
let /** @type {?} */ menuItemModelArray = [];
if (anyModel === null || typeof anyModel === 'undefined') {
return menuItemModelArray;
}
let /** @type {?} */ menuItems = [];
if (anyModel instanceof ActionModelMenu) {
let /** @type {?} */ actionMenu = /** @type {?} */ (anyModel);
menuItems = actionMenu.items;
}
for (let /** @type {?} */ action of menuItems) {
if (action.isShow === null) {
continue;
}
if (typeof action.isShow !== 'function') {
continue;
}
if (!action.isShow(context)) {
continue;
}
let /** @type {?} */ isEnable = true;
let /** @type {?} */ menuItem = null;
let /** @type {?} */ actionItems = this.getMenuItemModels(action, context);
if (actionItems.length > 0) {
// is menu
menuItem = new MenuModel(DefaultMenu, action.label, actionItems, action.menuModelFactory);
}
else {
// is item
menuItem = new MenuItemModel(DefaultMenuItem, action.label, isEnable, (actionEvent) => {
if (!isEnable) {
return;
}
action.actionPerformedHandler.call(null, actionEvent);
});
}
if (menuItem !== null) {
menuItemModelArray.push(menuItem);
}
}
return menuItemModelArray;
}
/**
* @param {?} context
* @return {?}
*/
createMenuModel(context) {
let /** @type {?} */ menuItemModelArray = [];
if (context === null || typeof context === 'undefined') {
return new MenuModel(DefaultMenuItem, 'action Menu', menuItemModelArray);
}
let /** @type {?} */ anyContext = context;
if (typeof anyContext.getModel !== 'function') {
return new MenuModel(DefaultMenuItem, 'action Menu', menuItemModelArray);
}
let /** @type {?} */ anyModel = anyContext.getModel();
if (anyModel === null || typeof anyModel === 'undefined') {
return new MenuModel(DefaultMenuItem, 'action Menu', menuItemModelArray);
}
menuItemModelArray = this.getMenuItemModels(anyModel, context);
let /** @type {?} */ model = new MenuModel(DefaultMenuItem, 'action Menu', menuItemModelArray);
return model;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVmYXVsdEFjdGlvbk1vZGVsTWVudUZhY3RvcnkuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9jb20ucGhsb3h1aS8iLCJzb3VyY2VzIjpbImxpYi9jb21wb25lbnQvZWRpdG9yL0RlZmF1bHRBY3Rpb25Nb2RlbE1lbnVGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBRzNELE1BQU07Ozs7OztJQUVNLGlCQUFpQixDQUFDLFFBQWEsRUFBRSxPQUFpQjtRQUN0RCxxQkFBSSxrQkFBa0IsR0FBb0IsRUFBRSxDQUFDO1FBRTdDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksT0FBTyxRQUFRLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQztZQUN2RCxNQUFNLENBQUMsa0JBQWtCLENBQUM7U0FDN0I7UUFFRCxxQkFBSSxTQUFTLEdBQVUsRUFBRSxDQUFDO1FBQzFCLEVBQUUsQ0FBQSxDQUFDLFFBQVEsWUFBYSxlQUFlLENBQUMsQ0FBQSxDQUFDO1lBQ3JDLHFCQUFJLFVBQVUscUJBQUcsUUFBMkIsQ0FBQSxDQUFDO1lBRTdDLFNBQVMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1NBQ2hDO1FBRUQsR0FBRyxDQUFDLENBQUMscUJBQUksTUFBTSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDM0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDO2dCQUN6QixRQUFRLENBQUM7YUFDWjtZQUVELEVBQUUsQ0FBQyxDQUFDLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxVQUFVLENBQUMsQ0FBQyxDQUFDO2dCQUN0QyxRQUFRLENBQUE7YUFDWDtZQUVELEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzFCLFFBQVEsQ0FBQzthQUNaO1lBRUQscUJBQUksUUFBUSxHQUFZLElBQUksQ0FBQztZQUU3QixxQkFBSSxRQUFRLEdBQUcsSUFBSSxDQUFDO1lBQ3BCLHFCQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBRTFELEVBQUUsQ0FBQSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUEsQ0FBQzs7Z0JBRXZCLFFBQVEsR0FBRyxJQUFJLFNBQVMsQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQUM7YUFDN0Y7WUFBQyxJQUFJLENBQUMsQ0FBQzs7Z0JBRUosUUFBUSxHQUFHLElBQUksYUFBYSxDQUFDLGVBQWUsRUFBRSxNQUFNLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxDQUFDLFdBQWdCLEVBQUUsRUFBRTtvQkFDdkYsRUFBRSxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQSxDQUFDO3dCQUNWLE1BQU0sQ0FBQztxQkFDVjtvQkFDRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztpQkFDekQsQ0FBQyxDQUFDO2FBQ047WUFFRCxFQUFFLENBQUEsQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLENBQUEsQ0FBQztnQkFDbEIsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ3JDO1NBQ0o7UUFFRCxNQUFNLENBQUMsa0JBQWtCLENBQUM7Ozs7OztJQUd2QixlQUFlLENBQUMsT0FBaUI7UUFDcEMscUJBQUksa0JBQWtCLEdBQW9CLEVBQUUsQ0FBQztRQUU3QyxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sT0FBTyxLQUFLLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDckQsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUM1RTtRQUVELHFCQUFJLFVBQVUsR0FBUSxPQUFPLENBQUM7UUFFOUIsRUFBRSxDQUFDLENBQUMsT0FBTyxVQUFVLENBQUMsUUFBUSxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7WUFDNUMsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDLGVBQWUsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLENBQUMsQ0FBQztTQUM1RTtRQUVELHFCQUFJLFFBQVEsR0FBUSxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFMUMsRUFBRSxDQUFDLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxPQUFPLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELE1BQU0sQ0FBQyxJQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7U0FDNUU7UUFFRCxrQkFBa0IsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBRy9ELHFCQUFJLEtBQUssR0FBYyxJQUFJLFNBQVMsQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLGtCQUFrQixDQUFDLENBQUM7UUFFekYsTUFBTSxDQUFDLEtBQUssQ0FBQzs7Q0FFcEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJTWVudU1vZGVsRmFjdG9yeSB9IGZyb20gJy4uL0lNZW51TW9kZWxGYWN0b3J5JztcbmltcG9ydCB7IElDb250ZXh0IH0gZnJvbSAnLi4vSUNvbnRleHQnO1xuaW1wb3J0IHsgRGVmYXVsdE1lbnVJdGVtIH0gZnJvbSAnLi4vRGVmYXVsdE1lbnVJdGVtLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWZhdWx0TWVudSB9IGZyb20gJy4uL0RlZmF1bHRNZW51LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBNZW51SXRlbU1vZGVsIH0gZnJvbSAnLi4vbW9kZWwvTWVudUl0ZW1Nb2RlbCc7XG5pbXBvcnQgeyBNZW51TW9kZWwgfSBmcm9tICcuLi9tb2RlbC9NZW51TW9kZWwnO1xuaW1wb3J0IHsgQWN0aW9uTW9kZWwgfSBmcm9tICcuLi9tb2RlbC9BY3Rpb25Nb2RlbCc7XG5pbXBvcnQgeyBBY3Rpb25Nb2RlbE1lbnUgfSBmcm9tICcuLi9tb2RlbC9BY3Rpb25Nb2RlbE1lbnUnO1xuaW1wb3J0IHsgQWN0aW9uQnV0dG9uIH0gZnJvbSAnLi9lZGl0b3IuaW50ZXJuYWwvQWN0aW9uQnV0dG9uLmNvbXBvbmVudCc7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0QWN0aW9uTW9kZWxNZW51RmFjdG9yeSBpbXBsZW1lbnRzIElNZW51TW9kZWxGYWN0b3J5IHtcblxuICAgIHByaXZhdGUgZ2V0TWVudUl0ZW1Nb2RlbHMoYW55TW9kZWw6IGFueSwgY29udGV4dDogSUNvbnRleHQpOiBNZW51SXRlbU1vZGVsW117XG4gICAgICAgIGxldCBtZW51SXRlbU1vZGVsQXJyYXk6IE1lbnVJdGVtTW9kZWxbXSA9IFtdO1xuXG4gICAgICAgIGlmIChhbnlNb2RlbCA9PT0gbnVsbCB8fCB0eXBlb2YgYW55TW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbWVudUl0ZW1Nb2RlbEFycmF5O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG1lbnVJdGVtczogYW55W10gPSBbXTtcbiAgICAgICAgaWYoYW55TW9kZWwgaW5zdGFuY2VvZiAgQWN0aW9uTW9kZWxNZW51KXtcbiAgICAgICAgICAgIGxldCBhY3Rpb25NZW51ID0gYW55TW9kZWwgYXMgQWN0aW9uTW9kZWxNZW51O1xuXG4gICAgICAgICAgICBtZW51SXRlbXMgPSBhY3Rpb25NZW51Lml0ZW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIG1lbnVJdGVtcykge1xuICAgICAgICAgICAgaWYgKGFjdGlvbi5pc1Nob3cgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhY3Rpb24uaXNTaG93ICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFhY3Rpb24uaXNTaG93KGNvbnRleHQpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCBpc0VuYWJsZTogYm9vbGVhbiA9IHRydWU7XG5cbiAgICAgICAgICAgIGxldCBtZW51SXRlbSA9IG51bGw7XG4gICAgICAgICAgICBsZXQgYWN0aW9uSXRlbXMgPSB0aGlzLmdldE1lbnVJdGVtTW9kZWxzKGFjdGlvbiwgY29udGV4dCk7XG5cbiAgICAgICAgICAgIGlmKGFjdGlvbkl0ZW1zLmxlbmd0aCA+IDApe1xuICAgICAgICAgICAgICAgIC8vIGlzIG1lbnVcbiAgICAgICAgICAgICAgICBtZW51SXRlbSA9IG5ldyBNZW51TW9kZWwoRGVmYXVsdE1lbnUsIGFjdGlvbi5sYWJlbCwgYWN0aW9uSXRlbXMsIGFjdGlvbi5tZW51TW9kZWxGYWN0b3J5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgLy8gaXMgaXRlbVxuICAgICAgICAgICAgICAgIG1lbnVJdGVtID0gbmV3IE1lbnVJdGVtTW9kZWwoRGVmYXVsdE1lbnVJdGVtLCBhY3Rpb24ubGFiZWwsIGlzRW5hYmxlLCAoYWN0aW9uRXZlbnQ6IGFueSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZighaXNFbmFibGUpe1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5hY3Rpb25QZXJmb3JtZWRIYW5kbGVyLmNhbGwobnVsbCwgYWN0aW9uRXZlbnQpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZihtZW51SXRlbSAhPT0gbnVsbCl7XG4gICAgICAgICAgICAgICAgbWVudUl0ZW1Nb2RlbEFycmF5LnB1c2gobWVudUl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG1lbnVJdGVtTW9kZWxBcnJheTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlTWVudU1vZGVsKGNvbnRleHQ6IElDb250ZXh0KTogTWVudU1vZGVsIHtcbiAgICAgICAgbGV0IG1lbnVJdGVtTW9kZWxBcnJheTogTWVudUl0ZW1Nb2RlbFtdID0gW107XG5cbiAgICAgICAgaWYgKGNvbnRleHQgPT09IG51bGwgfHwgdHlwZW9mIGNvbnRleHQgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1lbnVNb2RlbChEZWZhdWx0TWVudUl0ZW0sICdhY3Rpb24gTWVudScsIG1lbnVJdGVtTW9kZWxBcnJheSk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgYW55Q29udGV4dDogYW55ID0gY29udGV4dDtcblxuICAgICAgICBpZiAodHlwZW9mIGFueUNvbnRleHQuZ2V0TW9kZWwgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybiBuZXcgTWVudU1vZGVsKERlZmF1bHRNZW51SXRlbSwgJ2FjdGlvbiBNZW51JywgbWVudUl0ZW1Nb2RlbEFycmF5KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBhbnlNb2RlbDogYW55ID0gYW55Q29udGV4dC5nZXRNb2RlbCgpO1xuXG4gICAgICAgIGlmIChhbnlNb2RlbCA9PT0gbnVsbCB8fCB0eXBlb2YgYW55TW9kZWwgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IE1lbnVNb2RlbChEZWZhdWx0TWVudUl0ZW0sICdhY3Rpb24gTWVudScsIG1lbnVJdGVtTW9kZWxBcnJheSk7XG4gICAgICAgIH1cblxuICAgICAgICBtZW51SXRlbU1vZGVsQXJyYXkgPSB0aGlzLmdldE1lbnVJdGVtTW9kZWxzKGFueU1vZGVsLCBjb250ZXh0KTtcblxuXG4gICAgICAgIGxldCBtb2RlbDogTWVudU1vZGVsID0gbmV3IE1lbnVNb2RlbChEZWZhdWx0TWVudUl0ZW0sICdhY3Rpb24gTWVudScsIG1lbnVJdGVtTW9kZWxBcnJheSk7XG5cbiAgICAgICAgcmV0dXJuIG1vZGVsO1xuICAgIH1cbn1cbiJdfQ==