From d72a4c954bb6f3d8204fe78317e52a2fc593925f Mon Sep 17 00:00:00 2001 From: DanyLE Date: Fri, 17 Feb 2023 10:06:30 +0100 Subject: [PATCH] Remove old menu element, use stackmenu instead --- Makefile | 1 - d.ts/antos.d.ts | 505 +---------- src/core/BaseService.ts | 4 +- src/core/tags/MenuTag.ts | 826 ------------------ src/packages/MarketPlace/main.ts | 2 +- src/packages/SystemServices/Calendar.ts | 2 +- .../SystemServices/PushNotification.ts | 2 +- src/themes/antos_dark/afx-menu.css | 32 - src/themes/antos_light/afx-menu.css | 32 - src/themes/system/afx-menu.css | 120 --- 10 files changed, 7 insertions(+), 1519 deletions(-) delete mode 100644 src/core/tags/MenuTag.ts delete mode 100644 src/themes/antos_dark/afx-menu.css delete mode 100644 src/themes/antos_light/afx-menu.css delete mode 100644 src/themes/system/afx-menu.css diff --git a/Makefile b/Makefile index fb5ed58..4d0800a 100644 --- a/Makefile +++ b/Makefile @@ -27,7 +27,6 @@ tags = dist/core/tags/tag.js \ dist/core/tags/ListViewTag.js \ dist/core/tags/SwitchTag.js \ dist/core/tags/NSpinnerTag.js \ - dist/core/tags/MenuTag.js \ dist/core/tags/GridViewTag.js \ dist/core/tags/TabBarTag.js \ dist/core/tags/TabContainerTag.js \ diff --git a/d.ts/antos.d.ts b/d.ts/antos.d.ts index c858f80..10334e8 100644 --- a/d.ts/antos.d.ts +++ b/d.ts/antos.d.ts @@ -7474,507 +7474,6 @@ declare namespace OS { } } /// -declare namespace OS { - namespace GUI { - namespace tag { - /** - * Menu event data interface definition - */ - type MenuEventData = TagEventDataType; - /** - * This class defines the abstract prototype of an menu entry. - * Any implementation of menu entry tag should extend this class - * - * @export - * @abstract - * @class MenuEntryTag - * @extends {AFXTag} - */ - abstract class MenuEntryTag extends AFXTag { - /** - * Data placeholder of the menu entry - * - * @private - * @type {GenericObject} - * @memberof MenuEntryTag - */ - private _data; - /** - * placeholder of `menu entry select` event handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuEntryTag - */ - private _onmenuselect; - /** - * placeholder of `sub-menu entry select event` handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuEntryTag - */ - private _onchildselect; - /** - * Reference to the parent menu entry of current one - * - * @type {MenuEntryTag} - * @memberof MenuEntryTag - */ - parent: MenuEntryTag; - /** - * Reference to the root menu entry - * - * @type {MenuTag} - * @memberof MenuEntryTag - */ - root: MenuTag; - /** - *Creates an instance of MenuEntryTag. - * @memberof MenuEntryTag - */ - constructor(); - /** - * Init the tag before mounting - * - * @protected - * @memberof MenuEntryTag - */ - protected init(): void; - /** - * Set the `menu entry select` event handle - * - * @memberof MenuEntryTag - */ - set onmenuselect(v: TagEventCallback); - /** - * Setter: Set the `sub menu entry select` event handle - * - * Getter: get the current `sub menu entry select` event handle - * - * @memberof MenuEntryTag - */ - set onchildselect(v: TagEventCallback); - get onchildselect(): TagEventCallback; - /** - * Setter: Set data to the entry - * - * Getter: Get data of the current menu entry - * - * @memberof MenuEntryTag - */ - set data(data: GenericObject); - get data(): GenericObject; - /** - * Check whether the current menu entry has sub-menu - * - * @protected - * @returns {boolean} - * @memberof MenuEntryTag - */ - protected has_nodes(): boolean; - /** - * Check whether the current menu entry is the root entry - * - * @protected - * @returns - * @memberof MenuEntryTag - */ - protected is_root(): boolean; - /** - * Layout definition of the menu entry - * This function define the outer layout of the menu entry. - * Custom inner layout of each item implementation should - * be defined in [[itemlayout]] - * @protected - * @returns {TagLayoutType[]} - * @memberof MenuEntryTag - */ - protected layout(): TagLayoutType[]; - /** - * Setter: Set the sub-menu data - * - * Getter: Get the sub-menu data - * - * @memberof MenuEntryTag - */ - set nodes(v: GenericObject[]); - get nodes(): GenericObject[]; - /** - * Bind some base event to the menu entry - * - * @protected - * @memberof MenuEntryTag - */ - protected mount(): void; - /** - * Hide the sub-menu of the current menu entry - * - * @private - * @returns {void} - * @memberof MenuEntryTag - */ - private submenuoff; - /** - * This function trigger two event: - * - the `onmenuselect` event on the current entry - * - the `onchildselect` event on the parent of the current entry - * - * @protected - * @param {JQuery.ClickEvent} e - * @memberof MenuEntryTag - */ - protected select(e: JQuery.ClickEvent): void; - /** - * custom inner layout of a menu entry - * - * @protected - * @abstract - * @returns {TagLayoutType[]} - * @memberof MenuEntryTag - */ - protected abstract itemlayout(): TagLayoutType[]; - } - /** - * This class extends the [[MenuEntryTag]] prototype. It inner layout is - * defined with the following elements: - * - a [[SwitchTag]] acts as checker or radio - * - a [[LabelTag]] to display the content of the menu entry - * - a `span` element that display the keyboard shortcut of the entry - * - * @class SimpleMenuEntryTag - * @extends {MenuEntryTag} - */ - class SimpleMenuEntryTag extends MenuEntryTag { - /** - *Creates an instance of SimpleMenuEntryTag. - * @memberof SimpleMenuEntryTag - */ - constructor(); - /** - * Reset some properties to default value - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected init(): void; - /** - * Do nothing - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected calibrate(): void; - /** - * Do nothing - * - * @protected - * @param {*} [d] - * @memberof SimpleMenuEntryTag - */ - protected reload(d?: any): void; - /** - * Setter: Turn on/off the checker feature of the menu entry - * - * Getter: Check whether the checker feature is enabled on this menu entry - * - * @memberof SimpleMenuEntryTag - */ - set switch(v: boolean); - get switch(): boolean; - /** - * Setter: Turn on/off the radio feature of the menu entry - * - * Getter: Check whether the radio feature is enabled - * - * @memberof SimpleMenuEntryTag - */ - set radio(v: boolean); - get radio(): boolean; - /** - * Setter: - * - * Toggle the switch on the menu entry, this setter - * only works when the `checker` or `radio` feature is - * enabled - * - * Getter: - * - * Check whether the switch is turned on - * - * @memberof SimpleMenuEntryTag - */ - set checked(v: boolean); - get checked(): boolean; - /** - * Set the label icon using a VFS path - * - * @memberof SimpleMenuEntryTag - */ - set icon(v: string); - /** - * Set the label CSS icon class - * - * @memberof SimpleMenuEntryTag - */ - set iconclass(v: string); - /** - * Set the label text - * - * @memberof SimpleMenuEntryTag - */ - set text(v: string); - /** - * Set the keyboard shortcut text - * - * @memberof SimpleMenuEntryTag - */ - set shortcut(v: string); - /** - * Uncheck all sub-menu items of the current menu entry - * that have the radio feature enabled - * - * @returns {void} - * @memberof SimpleMenuEntryTag - */ - protected reset_radio(): void; - /** - * Mount the current tag - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected mount(): void; - /** - * Trigger the onmenuselect and onchildselect events - * - * @protected - * @param {JQuery.ClickEvent} e Mouse click event - * @returns {void} - * @memberof SimpleMenuEntryTag - */ - protected select(e: JQuery.ClickEvent): void; - /** - * Inner item layout of the menu entry - * - * @returns - * @memberof SimpleMenuEntryTag - */ - itemlayout(): ({ - el: string; - ref: string; - class?: undefined; - } | { - el: string; - class: string; - ref: string; - })[]; - } - /** - * A menu tag contains a collection of menu entries in which each - * entry maybe a leaf entry or may contain a submenu - * - * @export - * @class MenuTag - * @extends {AFXTag} - */ - class MenuTag extends AFXTag { - /** - * Reference to the parent menu entry of the current value. - * This value is `undefined` in case of the current menu is - * the root menu - * - * @type {MenuEntryTag} - * @memberof MenuTag - */ - parent: MenuEntryTag; - /** - * Reference to the root menu - * - * @type {MenuTag} - * @memberof MenuTag - */ - root: MenuTag; - /** - * The `pid` of the application that attached to this menu. - * This value is optional - * - * @type {number} - * @memberof MenuTag - */ - pid?: number; - /** - * placeholder for menu select event handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuTag - */ - private _onmenuselect; - /** - * Menu data placeholder - * - * @private - * @type {GenericObject[]} - * @memberof MenuTag - */ - private _items; - /** - *Creates an instance of MenuTag. - * @memberof MenuTag - */ - constructor(); - /** - * Reset some properties to default value - * - * @protected - * @memberof MenuTag - */ - protected init(): void; - /** - * Do nothing - * - * @protected - * @memberof MenuTag - */ - protected calibrate(): void; - /** - * Do nothing - * - * @protected - * @param {*} [d] - * @memberof MenuTag - */ - protected reload(d?: any): void; - /** - * Setter: Set the menu items data - * - * Getter: Get menu items data - * - * @memberof MenuTag - */ - set items(data: GenericObject[]); - get items(): GenericObject[]; - /** - * Setter: Set whether the current menu is a context menu - * - * Getter: Check whether the current menu is a context menu - * - * @memberof MenuTag - */ - set context(v: boolean); - get context(): boolean; - /** - * Set menu select event handle - * - * @memberof MenuTag - */ - set onmenuselect(v: TagEventCallback); - /** - * Setter: - * - * Set the default tag name of the menu item. - * If the tag is not specified in an item data, - * this value will be used - * - * Getter: - * - * Get the default menu entry tag name - * - * @memberof MenuTag - */ - set contentag(v: string); - get contentag(): string; - /** - * Get the reference to the function that triggers - * the menu select event - * - * @readonly - * @type {TagEventCallback} - * @memberof MenuTag - */ - get onmenuitemselect(): TagEventCallback; - /** - * This function triggers the menu select event - * - * @private - * @param {TagEventType} e - * @memberof MenuTag - */ - private handleselect; - /** - * Show the current menu. This function is called - * only if the current menu is a context menu - * - * @param {JQuery.MouseEventBase} e JQuery mouse event - * @returns {void} - * @memberof MenuTag - */ - show(e: JQuery.MouseEventBase): void; - /** - * Test whether the current menu is the root menu - * - * @private - * @returns {boolean} - * @memberof MenuTag - */ - private is_root; - /** - * Mount the menu tag and bind some basic events - * - * @protected - * @returns {void} - * @memberof MenuTag - */ - protected mount(): void; - /** - * Add a menu entry to the beginning of the current - * menu - * - * @param {GenericObject} item menu entry data - * @memberof MenuTag - */ - unshift(item: GenericObject): void; - /** - * Delete a menu entry - * - * @param {MenuEntryTag} item reference to the DOM element of an menu entry - * @memberof MenuTag - */ - delete(item: MenuEntryTag): void; - /** - * Add an menu entry to the beginning or end of the menu - * - * @param {GenericObject} item menu entry data - * @param {boolean} flag indicates whether the entry should be added to the beginning of the menu - * @returns {MenuEntryTag} - * @memberof MenuTag - */ - push(item: GenericObject, flag: boolean): MenuEntryTag; - /** - * Menu tag layout definition - * - * @returns - * @memberof MenuTag - */ - layout(): { - el: string; - ref: string; - children: ({ - el: string; - class: string; - ref?: undefined; - } | { - el: string; - ref: string; - class?: undefined; - })[]; - }[]; - } - } - } -} -/// declare namespace OS { namespace GUI { namespace tag { @@ -10908,7 +10407,7 @@ declare namespace OS { * * @memberof BaseService */ - onmenuselect: (d: OS.GUI.TagEventType) => void; + onmenuselect: (d: OS.GUI.TagEventType) => void; /** *Creates an instance of BaseService. * @param {string} name service class name @@ -10993,7 +10492,7 @@ declare namespace OS { * @param {GUI.TagEventType} e * @memberof BaseService */ - abstract awake(e: GUI.TagEventType): void; + abstract awake(e: GUI.TagEventType): void; /** * Do nothing * diff --git a/src/core/BaseService.ts b/src/core/BaseService.ts index 6228894..45ca848 100644 --- a/src/core/BaseService.ts +++ b/src/core/BaseService.ts @@ -86,7 +86,7 @@ namespace OS { * @memberof BaseService */ onmenuselect: ( - d: OS.GUI.TagEventType + d: OS.GUI.TagEventType ) => void; /** @@ -217,7 +217,7 @@ namespace OS { * @param {GUI.TagEventType} e * @memberof BaseService */ - abstract awake(e: GUI.TagEventType): void; + abstract awake(e: GUI.TagEventType): void; /** * Do nothing diff --git a/src/core/tags/MenuTag.ts b/src/core/tags/MenuTag.ts deleted file mode 100644 index 6eff0c0..0000000 --- a/src/core/tags/MenuTag.ts +++ /dev/null @@ -1,826 +0,0 @@ -namespace OS { - export namespace GUI { - export namespace tag { - /** - * Menu event data interface definition - */ - export type MenuEventData = TagEventDataType; - - /** - * This class defines the abstract prototype of an menu entry. - * Any implementation of menu entry tag should extend this class - * - * @export - * @abstract - * @class MenuEntryTag - * @extends {AFXTag} - */ - export abstract class MenuEntryTag extends AFXTag { - /** - * Data placeholder of the menu entry - * - * @private - * @type {GenericObject} - * @memberof MenuEntryTag - */ - private _data: GenericObject; - - /** - * placeholder of `menu entry select` event handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuEntryTag - */ - private _onmenuselect: TagEventCallback; - - /** - * placeholder of `sub-menu entry select event` handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuEntryTag - */ - private _onchildselect: TagEventCallback; - - /** - * Reference to the parent menu entry of current one - * - * @type {MenuEntryTag} - * @memberof MenuEntryTag - */ - parent: MenuEntryTag; - - /** - * Reference to the root menu entry - * - * @type {MenuTag} - * @memberof MenuEntryTag - */ - root: MenuTag; - - /** - *Creates an instance of MenuEntryTag. - * @memberof MenuEntryTag - */ - constructor() { - super(); - this._onmenuselect = this._onchildselect = ( - e: TagEventType - ): void => {}; - } - - /** - * Init the tag before mounting - * - * @protected - * @memberof MenuEntryTag - */ - protected init(): void { - this.nodes = undefined; - } - /** - * Set the `menu entry select` event handle - * - * @memberof MenuEntryTag - */ - set onmenuselect(v: TagEventCallback) { - this._onmenuselect = v; - } - - /** - * Setter: Set the `sub menu entry select` event handle - * - * Getter: get the current `sub menu entry select` event handle - * - * @memberof MenuEntryTag - */ - set onchildselect(v: TagEventCallback) { - this._onchildselect = v; - } - get onchildselect(): TagEventCallback { - return this._onchildselect; - } - /** - * Setter: Set data to the entry - * - * Getter: Get data of the current menu entry - * - * @memberof MenuEntryTag - */ - set data(data: GenericObject) { - this._data = data; - this.set(data); - } - get data(): GenericObject { - return this._data; - } - - /** - * Check whether the current menu entry has sub-menu - * - * @protected - * @returns {boolean} - * @memberof MenuEntryTag - */ - protected has_nodes(): boolean { - const ch = this.nodes; - return ch && ch.length > 0; - } - - /** - * Check whether the current menu entry is the root entry - * - * @protected - * @returns - * @memberof MenuEntryTag - */ - protected is_root() { - if (this.parent) { - return false; - } else { - return true; - } - } - - /** - * Layout definition of the menu entry - * This function define the outer layout of the menu entry. - * Custom inner layout of each item implementation should - * be defined in [[itemlayout]] - * @protected - * @returns {TagLayoutType[]} - * @memberof MenuEntryTag - */ - protected layout(): TagLayoutType[] { - return [ - { - el: "li", - ref: "container", - children: [ - { - el: "a", - ref: "entry", - children: this.itemlayout(), - }, - { el: "afx-menu", ref: "submenu" }, - ], - }, - ]; - } - - /** - * Setter: Set the sub-menu data - * - * Getter: Get the sub-menu data - * - * @memberof MenuEntryTag - */ - set nodes(v: GenericObject[]) { - $(this.refs.container).removeClass("afx_submenu"); - if (!v || !(v.length > 0)) { - $(this.refs.submenu).hide(); - return; - } - $(this.refs.container).addClass("afx_submenu"); - $(this.refs.submenu).show().attr("style", ""); - const element = this.refs.submenu as MenuTag; - element.parent = this; - element.root = this.root; - element.items = v; - // ensure that the data is in sync - this._data.nodes = v; - if (this.is_root()) { - $(this.refs.container).on("mouseleave",(e) => { - return $(this.refs.submenu).attr("style", ""); - }); - } - } - get nodes(): GenericObject[] { - if (this.data && this.data.nodes) { - return this.data.nodes; - } - return undefined; - } - /** - * Bind some base event to the menu entry - * - * @protected - * @memberof MenuEntryTag - */ - protected mount(): void { - $(this.refs.entry).on("click",(e) => this.select(e)); - } - - /** - * Hide the sub-menu of the current menu entry - * - * @private - * @returns {void} - * @memberof MenuEntryTag - */ - private submenuoff(): void { - const p = this.parent; - if (!p) { - $(this.refs.submenu).attr("style", ""); - return; - } - return p.submenuoff(); - } - - /** - * This function trigger two event: - * - the `onmenuselect` event on the current entry - * - the `onchildselect` event on the parent of the current entry - * - * @protected - * @param {JQuery.ClickEvent} e - * @memberof MenuEntryTag - */ - protected select(e: JQuery.ClickEvent): void { - const evt = { - id: this.aid, - data: { item: this, event: e }, - }; - e.preventDefault(); - if (this.is_root() && this.has_nodes()) { - $(this.refs.submenu).show(); - } else { - this.submenuoff(); - } - this._onmenuselect(evt); - if (this.parent) { - this.parent.onchildselect(evt); - } - if (this.root) { - this.root.onmenuitemselect(evt); - } - } - - /** - * custom inner layout of a menu entry - * - * @protected - * @abstract - * @returns {TagLayoutType[]} - * @memberof MenuEntryTag - */ - protected abstract itemlayout(): TagLayoutType[]; - } - - /** - * This class extends the [[MenuEntryTag]] prototype. It inner layout is - * defined with the following elements: - * - a [[SwitchTag]] acts as checker or radio - * - a [[LabelTag]] to display the content of the menu entry - * - a `span` element that display the keyboard shortcut of the entry - * - * @class SimpleMenuEntryTag - * @extends {MenuEntryTag} - */ - export class SimpleMenuEntryTag extends MenuEntryTag { - /** - *Creates an instance of SimpleMenuEntryTag. - * @memberof SimpleMenuEntryTag - */ - constructor() { - super(); - } - - /** - * Reset some properties to default value - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected init(): void { - super.init(); - this.switch = false; - this.radio = false; - this.checked = false; - } - - /** - * Do nothing - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected calibrate(): void {} - - /** - * Do nothing - * - * @protected - * @param {*} [d] - * @memberof SimpleMenuEntryTag - */ - protected reload(d?: any): void {} - - /** - * Setter: Turn on/off the checker feature of the menu entry - * - * Getter: Check whether the checker feature is enabled on this menu entry - * - * @memberof SimpleMenuEntryTag - */ - set switch(v: boolean) { - this.attsw(v, "switch"); - if (this.radio || v) { - $(this.refs.switch).show(); - } else { - $(this.refs.switch).hide(); - } - } - get switch(): boolean { - return this.hasattr("switch"); - } - - /** - * Setter: Turn on/off the radio feature of the menu entry - * - * Getter: Check whether the radio feature is enabled - * - * @memberof SimpleMenuEntryTag - */ - set radio(v: boolean) { - this.attsw(v, "radio"); - if (this.switch || v) { - $(this.refs.switch).show(); - } else { - $(this.refs.switch).hide(); - } - } - get radio(): boolean { - return this.hasattr("radio"); - } - - /** - * Setter: - * - * Toggle the switch on the menu entry, this setter - * only works when the `checker` or `radio` feature is - * enabled - * - * Getter: - * - * Check whether the switch is turned on - * - * @memberof SimpleMenuEntryTag - */ - set checked(v: boolean) { - this.attsw(v, "checked"); - if (this.data) this.data.checked = v; - if (!this.radio && !this.switch) { - return; - } - (this.refs.switch as SwitchTag).swon = v; - } - get checked(): boolean { - return this.hasattr("checked"); - } - - /** - * Set the label icon using a VFS path - * - * @memberof SimpleMenuEntryTag - */ - set icon(v: string) { - //$(this.refs.container).removeClass("fix_padding"); - if (!v) { - return; - } - //$(this).attr("icon", v); - const label = this.refs.label as LabelTag; - label.icon = v; - //$(this.refs.container).addClass("fix_padding"); - } - - /** - * Set the label CSS icon class - * - * @memberof SimpleMenuEntryTag - */ - set iconclass(v: string) { - if (!v) { - return; - } - const label = this.refs.label as LabelTag; - label.iconclass = v; - } - - /** - * Set the label text - * - * @memberof SimpleMenuEntryTag - */ - set text(v: string) { - if (v === undefined) { - return; - } - const label = this.refs.label as LabelTag; - label.text = v; - } - - /** - * Set the keyboard shortcut text - * - * @memberof SimpleMenuEntryTag - */ - set shortcut(v: string) { - $(this.refs.shortcut).hide(); - if (!v) { - return; - } - $(this.refs.shortcut).show(); - $(this.refs.shortcut).text(v); - } - - /** - * Uncheck all sub-menu items of the current menu entry - * that have the radio feature enabled - * - * @returns {void} - * @memberof SimpleMenuEntryTag - */ - protected reset_radio(): void { - if (!this.has_nodes()) { - return; - } - for (let v of this.nodes) { - if (!v.domel.radio) { - continue; - } - v.domel.checked = false; - } - } - - /** - * Mount the current tag - * - * @protected - * @memberof SimpleMenuEntryTag - */ - protected mount(): void { - super.mount(); - (this.refs.switch as SwitchTag).enable = false; - } - - /** - * Trigger the onmenuselect and onchildselect events - * - * @protected - * @param {JQuery.ClickEvent} e Mouse click event - * @returns {void} - * @memberof SimpleMenuEntryTag - */ - protected select(e: JQuery.ClickEvent): void { - if (this.switch) { - this.checked = !this.checked; - } else if (this.radio) { - const p = this.parent as SimpleMenuEntryTag; - if (p) { - p.reset_radio(); - } - this.checked = !this.checked; - } - return super.select(e); - } - - /** - * Inner item layout of the menu entry - * - * @returns - * @memberof SimpleMenuEntryTag - */ - itemlayout() { - return [ - { el: "afx-switch", ref: "switch" }, - { el: "afx-label", ref: "label" }, - { el: "span", class: "shortcut", ref: "shortcut" }, - ]; - } - } - - /** - * A menu tag contains a collection of menu entries in which each - * entry maybe a leaf entry or may contain a submenu - * - * @export - * @class MenuTag - * @extends {AFXTag} - */ - export class MenuTag extends AFXTag { - /** - * Reference to the parent menu entry of the current value. - * This value is `undefined` in case of the current menu is - * the root menu - * - * @type {MenuEntryTag} - * @memberof MenuTag - */ - parent: MenuEntryTag; - - /** - * Reference to the root menu - * - * @type {MenuTag} - * @memberof MenuTag - */ - root: MenuTag; - - /** - * The `pid` of the application that attached to this menu. - * This value is optional - * - * @type {number} - * @memberof MenuTag - */ - pid?: number; - - /** - * placeholder for menu select event handle - * - * @private - * @type {TagEventCallback} - * @memberof MenuTag - */ - private _onmenuselect: TagEventCallback; - - /** - * Menu data placeholder - * - * @private - * @type {GenericObject[]} - * @memberof MenuTag - */ - private _items: GenericObject[]; - - /** - *Creates an instance of MenuTag. - * @memberof MenuTag - */ - constructor() { - super(); - } - - /** - * Reset some properties to default value - * - * @protected - * @memberof MenuTag - */ - protected init(): void { - this.contentag = "afx-menu-entry"; - this.context = false; - this._items = []; - this._onmenuselect = ( - e: TagEventType - ): void => {}; - } - - /** - * Do nothing - * - * @protected - * @memberof MenuTag - */ - protected calibrate(): void {} - - /** - * Do nothing - * - * @protected - * @param {*} [d] - * @memberof MenuTag - */ - protected reload(d?: any): void {} - - /** - * Setter: Set the menu items data - * - * Getter: Get menu items data - * - * @memberof MenuTag - */ - set items(data: GenericObject[]) { - this._items = data; - $(this.refs.container).empty(); - data.map((item) => this.push(item, false)); - } - get items(): GenericObject[] { - return this._items; - } - - /** - * Setter: Set whether the current menu is a context menu - * - * Getter: Check whether the current menu is a context menu - * - * @memberof MenuTag - */ - set context(v: boolean) { - this.attsw(v, "context"); - $(this.refs.wrapper).removeClass("context"); - if (!v) { - return; - } - $(this.refs.wrapper).addClass("context"); - $(this).hide(); - } - get context(): boolean { - return this.hasattr("context"); - } - - /** - * Set menu select event handle - * - * @memberof MenuTag - */ - set onmenuselect(v: TagEventCallback) { - this._onmenuselect = v; - } - - /** - * Setter: - * - * Set the default tag name of the menu item. - * If the tag is not specified in an item data, - * this value will be used - * - * Getter: - * - * Get the default menu entry tag name - * - * @memberof MenuTag - */ - set contentag(v: string) { - $(this).attr("contentag", v); - } - get contentag(): string { - return $(this).attr("contentag"); - } - - /** - * Get the reference to the function that triggers - * the menu select event - * - * @readonly - * @type {TagEventCallback} - * @memberof MenuTag - */ - get onmenuitemselect(): TagEventCallback { - return this.handleselect; - } - - /** - * This function triggers the menu select event - * - * @private - * @param {TagEventType} e - * @memberof MenuTag - */ - private handleselect(e: TagEventType): void { - if (this.context) { - $(this).hide(); - } - e.id = this.aid; - this._onmenuselect(e); - this.observable.trigger("menuselect", e); - } - - /** - * Show the current menu. This function is called - * only if the current menu is a context menu - * - * @param {JQuery.MouseEventBase} e JQuery mouse event - * @returns {void} - * @memberof MenuTag - */ - show(e: JQuery.MouseEventBase): void { - if (!this.context) { - return; - } - $(this) - .css("top", e.clientY - 15 + "px") - .css("left", e.clientX - 5 + "px") - .show(); - } - - /** - * Test whether the current menu is the root menu - * - * @private - * @returns {boolean} - * @memberof MenuTag - */ - private is_root(): boolean { - return this.root === undefined; - } - - /** - * Mount the menu tag and bind some basic events - * - * @protected - * @returns {void} - * @memberof MenuTag - */ - protected mount(): void { - $(this.refs.container).css("display", "contents"); - if (!this.context) { - return; - } - $(this.refs.wrapper).on("mouseleave",(e) => { - if (!this.is_root()) { - return; - } - return $(this).hide(); - }); - } - - /** - * Add a menu entry to the beginning of the current - * menu - * - * @param {GenericObject} item menu entry data - * @memberof MenuTag - */ - unshift(item: GenericObject): void { - this.push(item, true); - } - - /** - * Delete a menu entry - * - * @param {MenuEntryTag} item reference to the DOM element of an menu entry - * @memberof MenuTag - */ - delete(item: MenuEntryTag): void { - const el = item.data; - const data = this.items; - if (data.includes(el)) { - data.splice(data.indexOf(el), 1); - } - $(item).remove(); - } - - /** - * Add an menu entry to the beginning or end of the menu - * - * @param {GenericObject} item menu entry data - * @param {boolean} flag indicates whether the entry should be added to the beginning of the menu - * @returns {MenuEntryTag} - * @memberof MenuTag - */ - push(item: GenericObject, flag: boolean): MenuEntryTag { - let tag = this.contentag; - if (item.tag) { - tag = item.tag; - } - const el = $(`<${tag}>`); - if (flag) { - $(this.refs.container).prepend(el[0]); - if (!this.items.includes(item)) { - this.items.unshift(item); - } - } else { - el.appendTo(this.refs.container); - if (!this.items.includes(item)) { - this.items.push(item); - } - } - const entry = el[0] as MenuEntryTag; - entry.uify(this.observable); - entry.parent = this.parent; - entry.root = this.parent ? this.parent.root : this; - entry.data = item; - item.domel = entry; - return entry; - } - - /** - * Menu tag layout definition - * - * @returns - * @memberof MenuTag - */ - layout() { - return [ - { - el: "ul", - ref: "wrapper", - children: [ - { el: "li", class: "afx-corner-fix" }, - { el: "div", ref: "container" }, - { el: "li", class: "afx-corner-fix" }, - ], - }, - ]; - } - } - - define("afx-menu", MenuTag); - define("afx-menu-entry", SimpleMenuEntryTag); - } - } -} diff --git a/src/packages/MarketPlace/main.ts b/src/packages/MarketPlace/main.ts index 83a17b8..861461d 100644 --- a/src/packages/MarketPlace/main.ts +++ b/src/packages/MarketPlace/main.ts @@ -467,7 +467,7 @@ namespace OS { }, ], onchildselect: ( - e: GUI.TagEventType + e: GUI.TagEventType ) => { return this.menuOptionsHandle(e.data.item.data.id); }, diff --git a/src/packages/SystemServices/Calendar.ts b/src/packages/SystemServices/Calendar.ts index 9140002..c2b6168 100644 --- a/src/packages/SystemServices/Calendar.ts +++ b/src/packages/SystemServices/Calendar.ts @@ -39,7 +39,7 @@ namespace OS { }); } - awake(e: GUI.TagEventType): void { + awake(e: GUI.TagEventType): void { this.openDialog("CalendarDialog").then((d) => console.log(d)); } // do nothing diff --git a/src/packages/SystemServices/PushNotification.ts b/src/packages/SystemServices/PushNotification.ts index a72e15d..23c7acd 100644 --- a/src/packages/SystemServices/PushNotification.ts +++ b/src/packages/SystemServices/PushNotification.ts @@ -166,7 +166,7 @@ namespace OS { * @param {GUI.TagEventType} evt * @memberof PushNotification */ - awake(evt: GUI.TagEventType): void { + awake(evt: GUI.TagEventType): void { if (this.view) { $(this.nzone).hide(); } else { diff --git a/src/themes/antos_dark/afx-menu.css b/src/themes/antos_dark/afx-menu.css deleted file mode 100644 index 5491152..0000000 --- a/src/themes/antos_dark/afx-menu.css +++ /dev/null @@ -1,32 +0,0 @@ -afx-menu li:hover > a afx-switch span:before{ - color:white; -} - -afx-menu afx-menu ul { - padding: 0; - border:1px solid #262626; - border-radius: 5px; - border-top-left-radius: 0px; - /*box-shadow: 2px 2px 2px #cbcbcb;*/ - box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.65); - background-color: #363636; -} - -afx-menu li:hover { - background-color: #2786F3; -} -afx-menu li:hover > a { - color: white; -} - -afx-menu afx-menu .afx_submenu:before, afx-menu ul.context .afx_submenu:before{ - color: #414339; - } - - afx-menu ul.context{ - border:1px solid #262626; - border-radius: 5px; - border-top-left-radius: 0px; - box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.65); - background-color: #363636; - } \ No newline at end of file diff --git a/src/themes/antos_light/afx-menu.css b/src/themes/antos_light/afx-menu.css deleted file mode 100644 index 18cc88c..0000000 --- a/src/themes/antos_light/afx-menu.css +++ /dev/null @@ -1,32 +0,0 @@ -afx-menu li:hover > a afx-switch span:before{ - color:white; -} - -afx-menu afx-menu ul { - padding: 0; - border:1px solid #a6a6a6; - border-radius: 5px; - border-top-left-radius: 0px; - /*box-shadow: 2px 2px 2px #cbcbcb;*/ - box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.65); - background-color: #e7e7e7; -} - -afx-menu li:hover { - background-color: #2786F3; -} -afx-menu li:hover > a { - color: white; -} - -afx-menu afx-menu .afx_submenu:before, afx-menu ul.context .afx_submenu:before{ - color: #414339; - } - - afx-menu ul.context{ - border:1px solid #a6a6a6; - border-radius: 5px; - border-top-left-radius: 0px; - box-shadow: 0px 3px 6px 0px rgba(0,0,0,0.65); - background-color: #e7e7e7; - } diff --git a/src/themes/system/afx-menu.css b/src/themes/system/afx-menu.css deleted file mode 100644 index 4d39809..0000000 --- a/src/themes/system/afx-menu.css +++ /dev/null @@ -1,120 +0,0 @@ - -afx-menu { - position:relative; - display:inline-block; - z-index: 100000; -} -afx-menu a{ - text-decoration: none; - display: flex; - width: 100%; - height: 100%; - flex-direction: row; -} -afx-menu a afx-label{ - flex:1; -} -afx-menu ul{ - padding:0; - margin: 0; - display:inline-block; -} -afx-menu ul li{ - white-space:nowrap; -} - -afx-menu span.shortcut{ - text-align: right; -} - -afx-menu ul li { - list-style:none; - margin:0; - position: relative; - float: left; - cursor:default; -} -/* -afx-menu ul li.fix_padding{ - padding-top:1px; - padding-bottom: 0; - padding-left: 5px; - padding-right: 5px; -} - -afx-menu afx-menu ul li.fix_padding{ - padding:3px; - padding-left: 5px; - padding-right: 5px; -} */ -afx-menu afx-menu { - top:100%; - left:0; - position: absolute; - display:none; -} - -afx-menu afx-menu li{ - float:none; - cursor:default; -} -afx-menu afx-menu afx-menu, afx-menu ul.context afx-menu{ - top:-4px; - left: 100%; -} - -afx-menu afx-menu li:hover > afx-menu, ul.context li:hover > afx-menu -{ - display: block; -} -afx-menu li.afx-corner-fix{ - height: 3px; - padding: 0; - margin: 0; - background-color: transparent; -} -afx-menu li.afx-corner-fix:hover{ - background-color: transparent; -} - - - afx-menu ul.context{ - position: absolute; - z-index: 1000000; - padding: 0; - } - afx-menu ul.context li{ - clear:float; - min-width: 150px; - width: calc(100% - 10px); - } - - afx-menu afx-switch span{ - padding-top: 3px; - font-size: 16px; - height: 19px; -} -afx-menu span.shortcut{ - text-align: right; - margin-left: 3px; - } - afx-menu ul li /*, afx-menu ul >afx-menu-entry > li*/{ - padding-left: 5px; - padding-right: 5px; -} -afx-menu afx-menu li{ - min-width: 150px; - width: calc(100% - 10px); -} -afx-menu afx-menu .afx_submenu:before, afx-menu ul.context .afx_submenu:before{ - content: "\f054"; - font-family: "FontAwesome"; - font-size: 10px; - right:5px; - position:absolute; - top:25%; - } - -afx-menu afx-label span { - height: 22px !important; - } \ No newline at end of file