com.phloxui
Version:
PhloxUI Ng2+ Framework
91 lines (90 loc) • 7.88 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
import { AbstractMenuItem } from '../component/AbstractMenuItem';
/**
* <p style="text-indent: 2em;">
* An abstract base class for <code>menu</code> component. A <code>menu</code> might consist of one or more child <code>menu item</code>s.
* You can see that this class extends [[AbstractMenuItem]] allowing itself to be able to be added into another parent <code>menu</code>.
* It is not necessary that all child <code>menu item</code>s must be the same <code>type</code>. For example, a single <code>menu</code>
* may consist of <code>checkable menu item</code>s or <code>sub menu</code>s etc. You can specify the type of each <code>menu item</code>
* by using the model's field [[MenuItemModel.type]].
* </p>
*
* @author shiorin, tee4cute
* @see [[AbstractMenuItem]]
* @see [[MenuItemModel]]
* @abstract
*/
export class AbstractMenu extends AbstractMenuItem {
/**
* @param {?} needFocusService
*/
constructor(needFocusService) {
super(needFocusService);
this.items = [];
this.menuItemHandler = (data) => {
if ((data !== null && typeof data !== 'undefined') && (data.instance !== null && typeof data.instance !== 'undefined')) {
if (this !== null && typeof this !== 'undefined') {
data.instance.setMenu(this);
data.instance.setModel(data.model);
this.addMenuItem(data.instance);
}
else {
data.instance.setMenu(null);
}
}
};
}
/**
* @param {?} menuItem
* @return {?}
*/
addMenuItem(menuItem) {
if (menuItem == null) {
return;
}
this.items.push(menuItem);
}
/**
* @return {?}
*/
getItems() {
return this.items;
}
/**
* @return {?}
*/
renderMenu() {
// clear items
this.items = [];
this.doRenderMenu();
}
/**
* @return {?}
*/
getMenuItemHandler() {
return this.menuItemHandler;
}
/**
* @return {?}
*/
getModel() {
return this.model;
}
}
function AbstractMenu_tsickle_Closure_declarations() {
/** @type {?} */
AbstractMenu.prototype.model;
/** @type {?} */
AbstractMenu.prototype.items;
/** @type {?} */
AbstractMenu.prototype.menuItemHandler;
/**
* @abstract
* @return {?}
*/
AbstractMenu.prototype.doRenderMenu = function () { };
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RNZW51LmpzIiwic291cmNlUm9vdCI6Im5nOi8vY29tLnBobG94dWkvIiwic291cmNlcyI6WyJsaWIvY29tcG9uZW50L0Fic3RyYWN0TWVudS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBR0EsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7Ozs7OztBQWdCakUsTUFBTSxtQkFBNkIsU0FBUSxnQkFBZ0I7Ozs7SUFXdkQsWUFBWSxnQkFBa0M7UUFDMUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLENBQUM7UUFFeEIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQ2pDLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLElBQUksSUFBSSxPQUFPLElBQUksS0FBSyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3JILEVBQUUsQ0FBQyxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksT0FBTyxJQUFJLEtBQUssV0FBVyxDQUFDLENBQUEsQ0FBQztvQkFDOUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDbkMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7aUJBQ25DO2dCQUFDLElBQUksQ0FBQyxDQUFDO29CQUNKLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMvQjthQUNKO1NBQ0osQ0FBQTtLQUNKOzs7OztJQUVTLFdBQVcsQ0FBQyxRQUEwQjtRQUM1QyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztZQUNuQixNQUFNLENBQUM7U0FDVjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0tBQzdCOzs7O0lBRU0sUUFBUTtRQUNYLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDOzs7OztJQUtmLFVBQVU7O1FBRWIsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7UUFDaEIsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDOzs7OztJQUdqQixrQkFBa0I7UUFDdkIsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUM7Ozs7O0lBR3ZCLFFBQVE7UUFDYixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQzs7Q0FFdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1lbnVJdGVtTW9kZWwgfSBmcm9tICcuL21vZGVsL01lbnVJdGVtTW9kZWwnO1xuaW1wb3J0IHsgTWVudU1vZGVsIH0gZnJvbSAnLi9tb2RlbC9NZW51TW9kZWwnO1xuaW1wb3J0IHsgQWJzdHJhY3RNZW51SXRlbSB9IGZyb20gJy4uL2NvbXBvbmVudC9BYnN0cmFjdE1lbnVJdGVtJztcbmltcG9ydCB7IE5lZWRGb2N1c1NlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlL05lZWRGb2N1c1NlcnZpY2Uuc2VydmljZSc7XG5cbi8qKlxuICogPHAgc3R5bGU9XCJ0ZXh0LWluZGVudDogMmVtO1wiPlxuICogQW4gYWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgPGNvZGU+bWVudTwvY29kZT4gY29tcG9uZW50LiBBIDxjb2RlPm1lbnU8L2NvZGU+IG1pZ2h0IGNvbnNpc3Qgb2Ygb25lIG9yIG1vcmUgY2hpbGQgPGNvZGU+bWVudSBpdGVtPC9jb2RlPnMuXG4gKiBZb3UgY2FuIHNlZSB0aGF0IHRoaXMgY2xhc3MgZXh0ZW5kcyBbW0Fic3RyYWN0TWVudUl0ZW1dXSBhbGxvd2luZyBpdHNlbGYgdG8gYmUgYWJsZSB0byBiZSBhZGRlZCBpbnRvIGFub3RoZXIgcGFyZW50IDxjb2RlPm1lbnU8L2NvZGU+LlxuICogSXQgaXMgbm90IG5lY2Vzc2FyeSB0aGF0IGFsbCBjaGlsZCA8Y29kZT5tZW51IGl0ZW08L2NvZGU+cyBtdXN0IGJlIHRoZSBzYW1lIDxjb2RlPnR5cGU8L2NvZGU+LiBGb3IgZXhhbXBsZSwgYSBzaW5nbGUgPGNvZGU+bWVudTwvY29kZT5cbiAqIG1heSBjb25zaXN0IG9mIDxjb2RlPmNoZWNrYWJsZSBtZW51IGl0ZW08L2NvZGU+cyBvciA8Y29kZT5zdWIgbWVudTwvY29kZT5zIGV0Yy4gWW91IGNhbiBzcGVjaWZ5IHRoZSB0eXBlIG9mIGVhY2ggPGNvZGU+bWVudSBpdGVtPC9jb2RlPlxuICogYnkgdXNpbmcgdGhlIG1vZGVsJ3MgZmllbGQgW1tNZW51SXRlbU1vZGVsLnR5cGVdXS5cbiAqIDwvcD5cbiAqXG4gKiBAYXV0aG9yIHNoaW9yaW4sIHRlZTRjdXRlXG4gKiBAc2VlIFtbQWJzdHJhY3RNZW51SXRlbV1dXG4gKiBAc2VlIFtbTWVudUl0ZW1Nb2RlbF1dXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdE1lbnUgZXh0ZW5kcyBBYnN0cmFjdE1lbnVJdGVtIHtcblxuICAgIC8vIE92ZXJyaWRlIHRoaXMgcHJvcGVydHkgdG8gZGVjbGFyZSBpdCBhcyBUeXBlPE1lbnVNb2RlbD5cbiAgICAvLyBAT3B0aW9uKClcbiAgICAvLyBASTE4TigpXG4gICAgcHJvdGVjdGVkIG1vZGVsOiBNZW51TW9kZWw7XG4gICAgLy8gQEkxOE4oKVxuICAgIHByb3RlY3RlZCBpdGVtczogQWJzdHJhY3RNZW51SXRlbVtdO1xuICAgIC8vIEBPcHRpb24oKVxuICAgIHByb3RlY3RlZCBtZW51SXRlbUhhbmRsZXI6IEZ1bmN0aW9uO1xuXG4gICAgY29uc3RydWN0b3IobmVlZEZvY3VzU2VydmljZTogTmVlZEZvY3VzU2VydmljZSkge1xuICAgICAgICBzdXBlcihuZWVkRm9jdXNTZXJ2aWNlKTtcblxuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgIHRoaXMubWVudUl0ZW1IYW5kbGVyID0gKGRhdGE6IGFueSkgPT4ge1xuICAgICAgICAgICAgaWYgKChkYXRhICE9PSBudWxsICYmIHR5cGVvZiBkYXRhICE9PSAndW5kZWZpbmVkJykgJiYgKGRhdGEuaW5zdGFuY2UgIT09IG51bGwgJiYgdHlwZW9mIGRhdGEuaW5zdGFuY2UgIT09ICd1bmRlZmluZWQnKSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzICE9PSBudWxsICYmIHR5cGVvZiB0aGlzICE9PSAndW5kZWZpbmVkJyl7XG4gICAgICAgICAgICAgICAgICAgIGRhdGEuaW5zdGFuY2Uuc2V0TWVudSh0aGlzKTtcbiAgICAgICAgICAgICAgICAgICAgZGF0YS5pbnN0YW5jZS5zZXRNb2RlbChkYXRhLm1vZGVsKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRNZW51SXRlbShkYXRhLmluc3RhbmNlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRhLmluc3RhbmNlLnNldE1lbnUobnVsbCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFkZE1lbnVJdGVtKG1lbnVJdGVtOiBBYnN0cmFjdE1lbnVJdGVtKTogdm9pZCB7XG4gICAgICAgIGlmIChtZW51SXRlbSA9PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5pdGVtcy5wdXNoKG1lbnVJdGVtKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SXRlbXMoKTogQWJzdHJhY3RNZW51SXRlbVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXRlbXM7XG4gICAgfVxuXG4gICAgYWJzdHJhY3QgZG9SZW5kZXJNZW51KCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgcmVuZGVyTWVudSgpOiB2b2lke1xuICAgICAgICAvLyBjbGVhciBpdGVtc1xuICAgICAgICB0aGlzLml0ZW1zID0gW107XG4gICAgICAgIHRoaXMuZG9SZW5kZXJNZW51KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1lbnVJdGVtSGFuZGxlcigpOiBGdW5jdGlvbiB7XG4gICAgICByZXR1cm4gdGhpcy5tZW51SXRlbUhhbmRsZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGVsKCk6IE1lbnVNb2RlbCB7XG4gICAgICByZXR1cm4gdGhpcy5tb2RlbDtcbiAgICB9XG59XG4iXX0=