mirror of
https://github.com/lxsang/antos-frontend.git
synced 2024-12-27 09:48:21 +01:00
Finish tag documenting
This commit is contained in:
parent
6ea3be79f4
commit
d5df803c2c
2
Makefile
2
Makefile
@ -158,7 +158,7 @@ uglify:
|
|||||||
release: main uglify
|
release: main uglify
|
||||||
|
|
||||||
doc:
|
doc:
|
||||||
typedoc --mode file --excludeNotExported --hideGenerator --out $(DOCDIR)
|
./node_modules/.bin/typedoc --mode file --excludeNotExported --hideGenerator --name "AntOS API" --out $(DOCDIR)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -rf $(BUILDDIR)/resources
|
rm -rf $(BUILDDIR)/resources
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# antOS
|
# antOS
|
||||||
|
|
||||||
**This version 1.0.0a will remove the dependencies on Riot.js by rewriting the major API for GUI and Announcement system**
|
**This version 1.0.0a removes the dependencies on Riot.js by reimplementing the major API for GUI and Announcement system. The entire core API is also rewritten in TypeScript**
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/lxsang/antos.svg?branch=master)](https://travis-ci.org/lxsang/antos)
|
[![Build Status](https://travis-ci.org/lxsang/antos.svg?branch=master)](https://travis-ci.org/lxsang/antos)
|
||||||
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flxsang%2Fantos.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Flxsang%2Fantos?ref=badge_shield)
|
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flxsang%2Fantos.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Flxsang%2Fantos?ref=badge_shield)
|
||||||
@ -14,7 +14,7 @@ to the corresponding server side API.
|
|||||||
|
|
||||||
|
|
||||||
## Demo
|
## Demo
|
||||||
A demo of the VDE is available at my page [https://os.lxsang.me](https://os.lxsang.me) using username: demo and password: demo
|
A demo of the VDE is available at my page [https://os.iohub.dev](https://os.iohub.dev) using username: demo and password: demo
|
||||||
|
|
||||||
|
|
||||||
## AntOS applications
|
## AntOS applications
|
||||||
|
@ -46,7 +46,7 @@ namespace OS {
|
|||||||
private _selectedDate: Date;
|
private _selectedDate: Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* holder for date select event callback
|
* placeholder for date select event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<Date>}
|
* @type {TagEventCallback<Date>}
|
||||||
|
@ -74,7 +74,7 @@ namespace OS {
|
|||||||
private _selectedColor: ColorType;
|
private _selectedColor: ColorType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder for the color select event callback
|
* placeholder for the color select event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<ColorType>}
|
* @type {TagEventCallback<ColorType>}
|
||||||
|
@ -10,7 +10,7 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
export class FileViewTag extends AFXTag {
|
export class FileViewTag extends AFXTag {
|
||||||
/**
|
/**
|
||||||
* Holder for file select event callback
|
* placeholder for file select event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<API.FileInfoType>}
|
* @type {TagEventCallback<API.FileInfoType>}
|
||||||
@ -19,7 +19,7 @@ namespace OS {
|
|||||||
private _onfileselect: TagEventCallback<API.FileInfoType>;
|
private _onfileselect: TagEventCallback<API.FileInfoType>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder for file open event callback
|
* placeholder for file open event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<API.FileInfoType>}
|
* @type {TagEventCallback<API.FileInfoType>}
|
||||||
@ -37,7 +37,7 @@ namespace OS {
|
|||||||
private _selectedFile: API.FileInfoType;
|
private _selectedFile: API.FileInfoType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data holder of the current working directory
|
* Data placeholder of the current working directory
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {API.FileInfoType[]}
|
* @type {API.FileInfoType[]}
|
||||||
@ -64,7 +64,7 @@ namespace OS {
|
|||||||
private _header: GenericObject<string | number>[];
|
private _header: GenericObject<string | number>[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder for the user-specified meta-data fetch function
|
* placeholder for the user-specified meta-data fetch function
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @memberof FileViewTag
|
* @memberof FileViewTag
|
||||||
|
@ -29,7 +29,7 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
export class GridRowTag extends AFXTag {
|
export class GridRowTag extends AFXTag {
|
||||||
/**
|
/**
|
||||||
* Data holder for a collection of cell data
|
* Data placeholder for a collection of cell data
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof GridRowTag
|
* @memberof GridRowTag
|
||||||
@ -55,7 +55,7 @@ namespace OS {
|
|||||||
protected mount(): void {}
|
protected mount(): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Init the tag before mounting: reset the data holder
|
* Init the tag before mounting: reset the data placeholder
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof GridRowTag
|
* @memberof GridRowTag
|
||||||
@ -110,7 +110,7 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
export abstract class GridCellPrototype extends AFXTag {
|
export abstract class GridCellPrototype extends AFXTag {
|
||||||
/**
|
/**
|
||||||
* Holder for cell selected event callback
|
* placeholder for cell selected event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<CellEventData>}
|
* @type {TagEventCallback<CellEventData>}
|
||||||
@ -119,7 +119,7 @@ namespace OS {
|
|||||||
private _oncellselect: TagEventCallback<CellEventData>;
|
private _oncellselect: TagEventCallback<CellEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder for cell double click event callback
|
* placeholder for cell double click event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<CellEventData>}
|
* @type {TagEventCallback<CellEventData>}
|
||||||
@ -128,7 +128,7 @@ namespace OS {
|
|||||||
private _oncelldbclick: TagEventCallback<CellEventData>;
|
private _oncelldbclick: TagEventCallback<CellEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data holder of the current cell
|
* Data placeholder of the current cell
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {GenericObject<any>}
|
* @type {GenericObject<any>}
|
||||||
@ -179,7 +179,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the current cell data holder
|
* Get the current cell data placeholder
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>}
|
* @type {GenericObject<any>}
|
||||||
* @memberof GridCellPrototype
|
* @memberof GridCellPrototype
|
||||||
@ -360,7 +360,7 @@ namespace OS {
|
|||||||
private _header: GenericObject<any>[];
|
private _header: GenericObject<any>[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Grid rows data holder
|
* Grid rows data placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {GenericObject<any>[][]}
|
* @type {GenericObject<any>[][]}
|
||||||
@ -396,7 +396,7 @@ namespace OS {
|
|||||||
private _selectedCell: GridCellPrototype;
|
private _selectedCell: GridCellPrototype;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cell select event callback holder
|
* Cell select event callback placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<CellEventData>}
|
* @type {TagEventCallback<CellEventData>}
|
||||||
@ -405,7 +405,7 @@ namespace OS {
|
|||||||
private _oncellselect: TagEventCallback<CellEventData>;
|
private _oncellselect: TagEventCallback<CellEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Row select event callback holder
|
* Row select event callback placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<CellEventData>}
|
* @type {TagEventCallback<CellEventData>}
|
||||||
@ -414,7 +414,7 @@ namespace OS {
|
|||||||
private _onrowselect: TagEventCallback<CellEventData>;
|
private _onrowselect: TagEventCallback<CellEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cell double click event callback holder
|
* Cell double click event callback placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<CellEventData>}
|
* @type {TagEventCallback<CellEventData>}
|
||||||
@ -432,7 +432,7 @@ namespace OS {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Init the grid view before mounting.
|
* Init the grid view before mounting.
|
||||||
* Reset all the holders to default values
|
* Reset all the placeholders to default values
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof GridViewTag
|
* @memberof GridViewTag
|
||||||
@ -525,7 +525,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the header data holder
|
* get the header data placeholder
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof GridViewTag
|
* @memberof GridViewTag
|
||||||
@ -746,7 +746,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function triggers the row selected event, a cell select
|
* This function triggers the row select event, a cell select
|
||||||
* event will also trigger this event
|
* event will also trigger this event
|
||||||
*
|
*
|
||||||
* @param {TagEventType<CellEventData>} e
|
* @param {TagEventType<CellEventData>} e
|
||||||
|
@ -1,33 +1,76 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
/**
|
||||||
|
* This class defines basic AFX label tag.
|
||||||
|
* A label contains a text and an icon (optional)
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class LabelTag
|
||||||
|
* @extends {AFXTag}
|
||||||
|
*/
|
||||||
export class LabelTag extends AFXTag {
|
export class LabelTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* placeholder of the text to be displayed
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {(string | FormattedString)}
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
private _text: string | FormattedString;
|
private _text: string | FormattedString;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*Creates an instance of LabelTag.
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected mount() {
|
/**
|
||||||
|
* this implementation does nothing in this tag
|
||||||
}
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
|
protected mount() {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Refresh the text in the label
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @param {*} d
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
protected reload(d: any): void {
|
protected reload(d: any): void {
|
||||||
this.text = this.text;
|
this.text = this.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset to default some property value
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
protected init(): void {
|
protected init(): void {
|
||||||
this.icon = undefined;
|
this.icon = undefined;
|
||||||
this.iconclass = undefined;
|
this.iconclass = undefined;
|
||||||
this.text = undefined;
|
this.text = undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This implementation of the function does nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the VFS path of the label icon
|
||||||
|
*
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
set icon(v: string) {
|
set icon(v: string) {
|
||||||
$(this.refs.i).attr("style", "");
|
$(this.refs.i).attr("style", "");
|
||||||
$(this).attr("icon", v);
|
$(this).attr("icon", v);
|
||||||
@ -42,6 +85,11 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the CSS class of the label icon
|
||||||
|
*
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
set iconclass(v: string) {
|
set iconclass(v: string) {
|
||||||
$(this).attr("iconclass", v);
|
$(this).attr("iconclass", v);
|
||||||
$(this.refs.iclass).removeClass();
|
$(this.refs.iclass).removeClass();
|
||||||
@ -53,6 +101,11 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the text of the label
|
||||||
|
*
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
set text(v: string | FormattedString) {
|
set text(v: string | FormattedString) {
|
||||||
this._text = v;
|
this._text = v;
|
||||||
if (v && v !== "") {
|
if (v && v !== "") {
|
||||||
@ -63,10 +116,23 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
get text(): string| FormattedString {
|
/**
|
||||||
|
* Get the text displayed on the label
|
||||||
|
*
|
||||||
|
* @type {(string| FormattedString)}
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
|
get text(): string | FormattedString {
|
||||||
return this._text;
|
return this._text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Lqbel layout definition
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @returns {TagLayoutType[]}
|
||||||
|
* @memberof LabelTag
|
||||||
|
*/
|
||||||
protected layout(): TagLayoutType[] {
|
protected layout(): TagLayoutType[] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
* List item event data type
|
* List item event data type
|
||||||
*/
|
*/
|
||||||
export type ListItemEventData = TagEventDataType<ListViewItemTag>
|
export type ListItemEventData = TagEventDataType<ListViewItemTag>;
|
||||||
/**
|
/**
|
||||||
* A list item represent the individual view of an item in the [[ListView]].
|
* A list item represent the individual view of an item in the [[ListView]].
|
||||||
* This class is an abstract prototype class, implementation of any
|
* This class is an abstract prototype class, implementation of any
|
||||||
@ -18,9 +17,8 @@ namespace OS {
|
|||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export abstract class ListViewItemTag extends AFXTag {
|
export abstract class ListViewItemTag extends AFXTag {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data holder for the list item
|
* Data placeholder for the list item
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {GenericObject<any>}
|
* @type {GenericObject<any>}
|
||||||
@ -29,7 +27,7 @@ namespace OS {
|
|||||||
private _data: GenericObject<any>;
|
private _data: GenericObject<any>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Holder for the item select event callback
|
* placeholder for the item select event callback
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<ListItemEventData>}
|
* @type {TagEventCallback<ListItemEventData>}
|
||||||
@ -47,7 +45,7 @@ namespace OS {
|
|||||||
private _onctxmenu: TagEventCallback<ListItemEventData>;
|
private _onctxmenu: TagEventCallback<ListItemEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Click event callback holder
|
* Click event callback placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<ListItemEventData>}
|
* @type {TagEventCallback<ListItemEventData>}
|
||||||
@ -65,7 +63,7 @@ namespace OS {
|
|||||||
private _ondbclick: TagEventCallback<ListItemEventData>;
|
private _ondbclick: TagEventCallback<ListItemEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Item close event callback holder
|
* Item close event callback placeholder
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @type {TagEventCallback<ListItemEventData>}
|
* @type {TagEventCallback<ListItemEventData>}
|
||||||
@ -85,7 +83,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Turn on/off the `closable` feature of the list item
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -97,11 +95,18 @@ namespace OS {
|
|||||||
$(this.refs.btcl).hide();
|
$(this.refs.btcl).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the item is closable
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof ListViewItemTag
|
||||||
|
*/
|
||||||
get closable(): boolean {
|
get closable(): boolean {
|
||||||
return this.hasattr("closable");
|
return this.hasattr("closable");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Set item select event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -110,7 +115,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* select/unselect the current item
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -124,11 +129,18 @@ namespace OS {
|
|||||||
$(this.refs.item).addClass("selected");
|
$(this.refs.item).addClass("selected");
|
||||||
this._onselect({ id: this.aid, data: this });
|
this._onselect({ id: this.aid, data: this });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the current item is selected
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof ListViewItemTag
|
||||||
|
*/
|
||||||
get selected(): boolean {
|
get selected(): boolean {
|
||||||
return this.hasattr("selected");
|
return this.hasattr("selected");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Set the context menu event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -137,7 +149,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the item click event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -146,7 +158,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the item double click event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -155,7 +167,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* set the item close event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -164,7 +176,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind some events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
@ -190,7 +202,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition of the item tag.
|
||||||
|
* This function define the outer layout of the item.
|
||||||
|
* Custom inner layout of each item implementation should
|
||||||
|
* be defined in [[itemlayout]]
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
@ -210,7 +225,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the data of the list item. This will
|
||||||
|
* trigger the [[ondatachange]] function
|
||||||
*
|
*
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
*/
|
*/
|
||||||
@ -220,7 +236,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the data of the current list item
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>}
|
* @type {GenericObject<any>}
|
||||||
* @memberof ListViewItemTag
|
* @memberof ListViewItemTag
|
||||||
@ -230,7 +246,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Any subclass of this class should implement this
|
||||||
|
* function to provide its custom item layout
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @abstract
|
* @abstract
|
||||||
@ -240,7 +257,8 @@ namespace OS {
|
|||||||
protected abstract itemlayout(): TagLayoutType;
|
protected abstract itemlayout(): TagLayoutType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function is called when the item data is changed.
|
||||||
|
* It should be implemented in all subclass of this class
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @abstract
|
* @abstract
|
||||||
@ -250,19 +268,24 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* The layout of a simple list item contains only a
|
||||||
|
* AFX label
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class SimpleListItemTag
|
* @class SimpleListItemTag
|
||||||
* @extends {ListViewItemTag}
|
* @extends {ListViewItemTag}
|
||||||
*/
|
*/
|
||||||
export class SimpleListItemTag extends ListViewItemTag {
|
export class SimpleListItemTag extends ListViewItemTag {
|
||||||
|
/**
|
||||||
|
*Creates an instance of SimpleListItemTag.
|
||||||
|
* @memberof SimpleListItemTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Reset some property to default
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SimpleListItemTag
|
* @memberof SimpleListItemTag
|
||||||
@ -273,7 +296,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SimpleListItemTag
|
* @memberof SimpleListItemTag
|
||||||
@ -281,7 +304,8 @@ namespace OS {
|
|||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Refresh the inner label when the item data
|
||||||
|
* is changed
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -303,7 +327,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Re-render the list item
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SimpleListItemTag
|
* @memberof SimpleListItemTag
|
||||||
@ -313,7 +337,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* List item custom layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType}
|
* @returns {TagLayoutType}
|
||||||
@ -325,23 +349,115 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This tag defines a traditional or a dropdown list widget.
|
||||||
|
* It contains a collection of list items in which layout
|
||||||
|
* of each item may be variable
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class ListViewTag
|
* @class ListViewTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class ListViewTag extends AFXTag {
|
export class ListViewTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* placeholder of list select event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<ListItemEventData>}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _onlistselect: TagEventCallback<ListItemEventData>;
|
private _onlistselect: TagEventCallback<ListItemEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of list double click event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<ListItemEventData>}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _onlistdbclick: TagEventCallback<ListItemEventData>;
|
private _onlistdbclick: TagEventCallback<ListItemEventData>;
|
||||||
private _ondragndrop: TagEventCallback<DnDEventDataType<ListViewItemTag>>;
|
|
||||||
private _onitemclose: (e: TagEventType<ListItemEventData>) => boolean;
|
/**
|
||||||
|
* placeholder of list drag and drop event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<DnDEventDataType<ListViewItemTag>>}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
|
private _ondragndrop: TagEventCallback<
|
||||||
|
DnDEventDataType<ListViewItemTag>
|
||||||
|
>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of list item close event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
|
private _onitemclose: (
|
||||||
|
e: TagEventType<ListItemEventData>
|
||||||
|
) => boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of drag and drop mouse down event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _onmousedown: (e: JQuery.MouseEventBase) => void;
|
private _onmousedown: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of drag and drop mouse up event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _onmouseup: (e: JQuery.MouseEventBase) => void;
|
private _onmouseup: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of drag and drop mouse move event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _onmousemove: (e: JQuery.MouseEventBase) => void;
|
private _onmousemove: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the latest selected DOM item
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {ListViewItemTag}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _selectedItem: ListViewItemTag;
|
private _selectedItem: ListViewItemTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A collection of selected items in the list.
|
||||||
|
* The maximum size of this collection is 1 if
|
||||||
|
* the [[multiselect]] feature is disabled
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {ListViewItemTag[]}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _selectedItems: ListViewItemTag[];
|
private _selectedItems: ListViewItemTag[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Data placeholder of the list
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {GenericObject<any>[]}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _data: GenericObject<any>[];
|
private _data: GenericObject<any>[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Event data passing between mouse event when performing
|
||||||
|
* drag and drop on the list
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {{ from: ListViewItemTag; to: ListViewItemTag }}
|
||||||
|
* @memberof ListViewTag
|
||||||
|
*/
|
||||||
private _dnd: { from: ListViewItemTag; to: ListViewItemTag };
|
private _dnd: { from: ListViewItemTag; to: ListViewItemTag };
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -353,7 +469,9 @@ namespace OS {
|
|||||||
this._onlistdbclick = this._onlistselect = this._ondragndrop = (
|
this._onlistdbclick = this._onlistselect = this._ondragndrop = (
|
||||||
e: TagEventType<ListItemEventData>
|
e: TagEventType<ListItemEventData>
|
||||||
) => {};
|
) => {};
|
||||||
this._onitemclose = (e: TagEventType<ListItemEventData>) => {
|
this._onitemclose = (
|
||||||
|
e: TagEventType<ListItemEventData>
|
||||||
|
) => {
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
this._onmousedown = this._onmouseup = this._onmousemove = (
|
this._onmousedown = this._onmouseup = this._onmousemove = (
|
||||||
@ -364,7 +482,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Reset the tag's properties to the default values
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -382,7 +500,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function does nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -391,7 +509,7 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* toggle between dropdown and traditional list
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -429,16 +547,18 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set drag and drop event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
set ondragndrop(v: TagEventCallback<DnDEventDataType<ListViewItemTag>>) {
|
set ondragndrop(
|
||||||
|
v: TagEventCallback<DnDEventDataType<ListViewItemTag>>
|
||||||
|
) {
|
||||||
this._ondragndrop = v;
|
this._ondragndrop = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set list select event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -447,7 +567,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set double click event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -456,16 +576,18 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set item close event handle
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
set onitemclose(v: (e: TagEventType<ListItemEventData>) => boolean) {
|
set onitemclose(
|
||||||
|
v: (e: TagEventType<ListItemEventData>) => boolean
|
||||||
|
) {
|
||||||
this._onitemclose = v;
|
this._onitemclose = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the list is dropdown or traditional list
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -475,7 +597,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the default tag name of list's items.
|
||||||
|
* If the tag name is not specified in the
|
||||||
|
* data of a list item, this tag will be used
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -484,7 +608,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the default tag name of list item
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -494,7 +618,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Turn on/off of the `multiselect` feature
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -503,7 +627,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether multi-select is allowed
|
||||||
|
* in this list
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -515,7 +640,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Enable/disable drag and drop event in the list
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -524,7 +649,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the drag and drop event is enabled
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -534,7 +659,26 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Set the buttons layout of the list.
|
||||||
|
* Button layout allows to add some custom
|
||||||
|
* behaviors to the list.
|
||||||
*
|
*
|
||||||
|
* Each button data should define the [[onbtclick]]
|
||||||
|
* event handle to specify the custom behavior
|
||||||
|
*
|
||||||
|
* When the list is configured as dropdown. The buttons
|
||||||
|
* layout will be disabled
|
||||||
|
*
|
||||||
|
* Example of a button data:
|
||||||
|
*
|
||||||
|
* ```
|
||||||
|
* {
|
||||||
|
* text: "Button text",
|
||||||
|
* icon: "home://path/to/icon.png",
|
||||||
|
* iconclass: "icon-class-name",
|
||||||
|
* onbtclick: (e) => console.log(e)
|
||||||
|
* }
|
||||||
|
* ```
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -555,7 +699,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get data of the list
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -565,7 +709,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set data to the list
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -588,7 +732,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -596,7 +740,7 @@ namespace OS {
|
|||||||
protected ondatachange(): void {}
|
protected ondatachange(): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select list item(s) by their indexes
|
||||||
*
|
*
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -628,7 +772,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the latest selected item
|
||||||
*
|
*
|
||||||
* @readonly
|
* @readonly
|
||||||
* @type {ListViewItemTag}
|
* @type {ListViewItemTag}
|
||||||
@ -639,7 +783,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get all the selected items
|
||||||
*
|
*
|
||||||
* @readonly
|
* @readonly
|
||||||
* @type {ListViewItemTag[]}
|
* @type {ListViewItemTag[]}
|
||||||
@ -650,7 +794,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the indexes of all selected items
|
||||||
*
|
*
|
||||||
* @type {(number | number[])}
|
* @type {(number | number[])}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -667,10 +811,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Add an item to the beginning of the list
|
||||||
*
|
*
|
||||||
* @param {GenericObject<any>} item
|
* @param {GenericObject<any>} item
|
||||||
* @returns
|
* @returns {ListViewItemTag} the added list item element
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
unshift(item: GenericObject<any>) {
|
unshift(item: GenericObject<any>) {
|
||||||
@ -678,7 +822,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* check whether the list has data
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {GenericObject<any>} v
|
* @param {GenericObject<any>} v
|
||||||
@ -690,11 +834,11 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add an item to the beginning or end of the list
|
||||||
*
|
*
|
||||||
*
|
* @param {GenericObject<any>} item list item data
|
||||||
* @param {GenericObject<any>} item
|
* @param {boolean} [flag] indicates whether to add the item in the beginning of the list
|
||||||
* @param {boolean} [flag]
|
* @returns {ListViewItemTag} the added list item element
|
||||||
* @returns {ListViewItemTag}
|
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
push(
|
push(
|
||||||
@ -739,9 +883,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Delete an item
|
||||||
*
|
*
|
||||||
*
|
* @param {ListViewItemTag} item item DOM element
|
||||||
* @param {ListViewItemTag} item
|
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
delete(item: ListViewItemTag): void {
|
delete(item: ListViewItemTag): void {
|
||||||
@ -761,7 +905,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select item next to the currently selected item.
|
||||||
|
* If there is no item selected, the first item will
|
||||||
|
* be selected
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -779,7 +925,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select the previous item in the list.
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -797,7 +943,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Unselect all the selected items in the list
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
@ -811,15 +957,18 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function triggers the click event on an item
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e tag event object
|
||||||
* @param {boolean} flag
|
* @param {boolean} flag indicates whether this is a double click event
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
private iclick(e: TagEventType<ListViewItemTag>, flag: boolean): void {
|
private iclick(
|
||||||
|
e: TagEventType<ListViewItemTag>,
|
||||||
|
flag: boolean
|
||||||
|
): void {
|
||||||
if (!e.data) {
|
if (!e.data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -833,24 +982,27 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function triggers the double click event on an item
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e tag event object
|
||||||
* @returns
|
* @returns
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
private idbclick(e: TagEventType<ListViewItemTag>) {
|
private idbclick(e: TagEventType<ListViewItemTag>) {
|
||||||
const evt: TagEventType<ListItemEventData> = { id: this.aid, data: { item: e.data } };
|
const evt: TagEventType<ListItemEventData> = {
|
||||||
|
id: this.aid,
|
||||||
|
data: { item: e.data },
|
||||||
|
};
|
||||||
this._onlistdbclick(evt);
|
this._onlistdbclick(evt);
|
||||||
return this.observable.trigger("listdbclick", evt);
|
return this.observable.trigger("listdbclick", evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function triggers the list item select event
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e tag event object
|
||||||
* @returns
|
* @returns
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -909,7 +1061,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind some basic event
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -981,10 +1133,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function triggers the item close event
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e tag event object
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ListViewTag
|
* @memberof ListViewTag
|
||||||
*/
|
*/
|
||||||
@ -992,7 +1144,7 @@ namespace OS {
|
|||||||
if (!e.data) {
|
if (!e.data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const evt = { id: this.aid, data: {item: e.data} };
|
const evt = { id: this.aid, data: { item: e.data } };
|
||||||
const r = this._onitemclose(evt);
|
const r = this._onitemclose(evt);
|
||||||
if (!r) {
|
if (!r) {
|
||||||
return;
|
return;
|
||||||
@ -1002,7 +1154,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Show the dropdown list.
|
||||||
|
* This function is called only when the list is a dropdown
|
||||||
|
* list
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} e
|
* @param {*} e
|
||||||
@ -1028,7 +1182,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Hide the dropdown list.
|
||||||
|
* This function is called only when the list is a dropdown
|
||||||
|
* list
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} e
|
* @param {*} e
|
||||||
@ -1041,7 +1197,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* calibrate the list layout
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -1058,7 +1214,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* List view layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,16 +1,14 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS101: Remove unnecessary use of Array.from
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS205: Consider reworking code to avoid use of IIFEs
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
export type MenuEventData = TagEventDataType<MenuEntryTag>;
|
|
||||||
/**
|
/**
|
||||||
*
|
* Menu event data interface definition
|
||||||
|
*/
|
||||||
|
export type MenuEventData = TagEventDataType<MenuEntryTag>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class defines the abstract prototype of an menu entry.
|
||||||
|
* Any implementation of menu entry tag should extend this class
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @abstract
|
* @abstract
|
||||||
@ -18,10 +16,47 @@ namespace OS {
|
|||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export abstract class MenuEntryTag extends AFXTag {
|
export abstract class MenuEntryTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Data placeholder of the menu entry
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {GenericObject<any>}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
private _data: GenericObject<any>;
|
private _data: GenericObject<any>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of `menu entry select` event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<MenuEventData>}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
private _onmenuselect: TagEventCallback<MenuEventData>;
|
private _onmenuselect: TagEventCallback<MenuEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* placeholder of `sub-menu entry select event` handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<MenuEventData>}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
private _onchildselect: TagEventCallback<MenuEventData>;
|
private _onchildselect: TagEventCallback<MenuEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the parent menu entry of current one
|
||||||
|
*
|
||||||
|
* @type {MenuEntryTag}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
parent: MenuEntryTag;
|
parent: MenuEntryTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the root menu entry
|
||||||
|
*
|
||||||
|
* @type {MenuTag}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
root: MenuTag;
|
root: MenuTag;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -36,7 +71,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the tag before mounting
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -45,7 +80,7 @@ namespace OS {
|
|||||||
this.nodes = undefined;
|
this.nodes = undefined;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Set the `menu entry select` event handle
|
||||||
*
|
*
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -54,7 +89,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the `sub menu entry select` event handle
|
||||||
*
|
*
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -63,7 +98,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* get the current `sub menu entry select` event handle
|
||||||
*
|
*
|
||||||
* @type {TagEventCallback}
|
* @type {TagEventCallback}
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -72,7 +107,7 @@ namespace OS {
|
|||||||
return this._onchildselect;
|
return this._onchildselect;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Set data to the entry
|
||||||
*
|
*
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -82,7 +117,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get data of the current menu entry
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>}
|
* @type {GenericObject<any>}
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -92,7 +127,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current menu entry has sub-menu
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
@ -104,7 +139,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current menu entry is the root entry
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns
|
* @returns
|
||||||
@ -119,8 +154,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* 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
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -143,7 +180,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the sub-menu data
|
||||||
*
|
*
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -169,7 +206,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the sub-menu data
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -181,7 +218,7 @@ namespace OS {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Bind some base event to the menu entry
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof MenuEntryTag
|
* @memberof MenuEntryTag
|
||||||
@ -191,7 +228,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Hide the sub-menu of the current menu entry
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -207,7 +244,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function trigger two event:
|
||||||
|
* - the `onmenuselect` event on the current entry
|
||||||
|
* - the `onchildselect` event on the parent of the current entry
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {JQuery.ClickEvent} e
|
* @param {JQuery.ClickEvent} e
|
||||||
@ -233,11 +272,23 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* custom inner layout of a menu entry
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @abstract
|
||||||
|
* @returns {TagLayoutType[]}
|
||||||
|
* @memberof MenuEntryTag
|
||||||
|
*/
|
||||||
protected abstract itemlayout(): TagLayoutType[];
|
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
|
* @class SimpleMenuEntryTag
|
||||||
* @extends {MenuEntryTag}
|
* @extends {MenuEntryTag}
|
||||||
@ -250,17 +301,39 @@ namespace OS {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reset some properties to default value
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof SimpleMenuEntryTag
|
||||||
|
*/
|
||||||
protected init(): void {
|
protected init(): void {
|
||||||
super.init();
|
super.init();
|
||||||
this.switch = false;
|
this.switch = false;
|
||||||
this.radio = false;
|
this.radio = false;
|
||||||
this.checked = false;
|
this.checked = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof SimpleMenuEntryTag
|
||||||
|
*/
|
||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @param {*} [d]
|
||||||
|
* @memberof SimpleMenuEntryTag
|
||||||
|
*/
|
||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Turn on/off the checker feature of the menu entry
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -274,7 +347,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the checker feature is enabled on this menu entry
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -284,7 +357,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Turn on/off the radio feature of the menu entry
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -298,7 +371,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the radio feature is enabled
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -308,7 +381,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Toggle the switch on the menu entry, this setter
|
||||||
|
* only works when the `checker` or `radio` feature is
|
||||||
|
* enabled
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -322,7 +397,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the switch is turned on
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -332,7 +407,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the label icon using a VFS path
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -348,7 +423,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the label CSS icon class
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -361,7 +436,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the label text
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -374,7 +449,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the keyboard shortcut text
|
||||||
*
|
*
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -388,7 +463,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Uncheck all sub-menu items of the current menu entry
|
||||||
|
* that have the radio feature enabled
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -406,7 +482,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the current tag
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -417,10 +493,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Trigger the onmenuselect and onchildselect events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {JQuery.ClickEvent} e
|
* @param {JQuery.ClickEvent} e Mouse click event
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
*/
|
*/
|
||||||
@ -438,7 +514,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Inner item layout of the menu entry
|
||||||
*
|
*
|
||||||
* @returns
|
* @returns
|
||||||
* @memberof SimpleMenuEntryTag
|
* @memberof SimpleMenuEntryTag
|
||||||
@ -453,17 +529,57 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* A menu tag contains a collection of menu entries in which each
|
||||||
|
* entry maybe a leaf entry or may contain a submenu
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class MenuTag
|
* @class MenuTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
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;
|
parent: MenuEntryTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the root menu
|
||||||
|
*
|
||||||
|
* @type {MenuTag}
|
||||||
|
* @memberof MenuTag
|
||||||
|
*/
|
||||||
root: MenuTag;
|
root: MenuTag;
|
||||||
pid: number;
|
|
||||||
|
/**
|
||||||
|
* 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<MenuEventData>}
|
||||||
|
* @memberof MenuTag
|
||||||
|
*/
|
||||||
private _onmenuselect: TagEventCallback<MenuEventData>;
|
private _onmenuselect: TagEventCallback<MenuEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Menu data placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {GenericObject<any>[]}
|
||||||
|
* @memberof MenuTag
|
||||||
|
*/
|
||||||
private _items: GenericObject<any>[];
|
private _items: GenericObject<any>[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -475,7 +591,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Reset some properties to default value
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
@ -484,11 +600,13 @@ namespace OS {
|
|||||||
this.contentag = "afx-menu-entry";
|
this.contentag = "afx-menu-entry";
|
||||||
this.context = false;
|
this.context = false;
|
||||||
this._items = [];
|
this._items = [];
|
||||||
this._onmenuselect = (e: TagEventType<MenuEventData>): void => {};
|
this._onmenuselect = (
|
||||||
|
e: TagEventType<MenuEventData>
|
||||||
|
): void => {};
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
@ -496,7 +614,7 @@ namespace OS {
|
|||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -505,7 +623,7 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the menu items data
|
||||||
*
|
*
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -516,7 +634,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get menu items data
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
@ -526,7 +644,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set whether the current menu is a context menu
|
||||||
*
|
*
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -541,7 +659,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current menu is a context menu
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
@ -551,7 +669,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set menu select event handle
|
||||||
*
|
*
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -560,7 +678,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the default tag name of the menu item.
|
||||||
|
* If the tag is not specified in an item data,
|
||||||
|
* this value will be used
|
||||||
*
|
*
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -569,7 +689,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the default menu entry tag name
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
@ -579,7 +699,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the reference to the function that triggers
|
||||||
|
* the menu select event
|
||||||
*
|
*
|
||||||
* @readonly
|
* @readonly
|
||||||
* @type {TagEventCallback}
|
* @type {TagEventCallback}
|
||||||
@ -590,7 +711,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function triggers the menu select event
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e
|
||||||
@ -606,9 +727,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Show the current menu. This function is called
|
||||||
|
* only if the current menu is a context menu
|
||||||
*
|
*
|
||||||
*
|
* @param {JQuery.MouseEventBase} e JQuery mouse event
|
||||||
* @param {JQuery.MouseEventBase} e
|
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -623,7 +745,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Test whether the current menu is the root menu
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
@ -634,7 +756,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the menu tag and bind some basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -654,9 +776,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add a menu entry to the beginning of the current
|
||||||
|
* menu
|
||||||
*
|
*
|
||||||
*
|
* @param {GenericObject<any>} item menu entry data
|
||||||
* @param {GenericObject<any>} item
|
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
unshift(item: GenericObject<any>): void {
|
unshift(item: GenericObject<any>): void {
|
||||||
@ -664,9 +787,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Delete a menu entry
|
||||||
*
|
*
|
||||||
*
|
* @param {MenuEntryTag} item reference to the DOM element of an menu entry
|
||||||
* @param {MenuEntryTag} item
|
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
delete(item: MenuEntryTag): void {
|
delete(item: MenuEntryTag): void {
|
||||||
@ -679,10 +802,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add an menu entry to the beginning or end of the menu
|
||||||
*
|
*
|
||||||
*
|
* @param {GenericObject<any>} item menu entry data
|
||||||
* @param {GenericObject<any>} item
|
* @param {boolean} flag indicates whether the entry should be added to the beginning of the menu
|
||||||
* @param {boolean} flag
|
|
||||||
* @returns {MenuEntryTag}
|
* @returns {MenuEntryTag}
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
*/
|
*/
|
||||||
@ -713,7 +836,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Menu tag layout definition
|
||||||
*
|
*
|
||||||
* @returns
|
* @returns
|
||||||
* @memberof MenuTag
|
* @memberof MenuTag
|
||||||
|
@ -1,22 +1,38 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
*
|
* A simple number sinner tag
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class NSpinnerTag
|
* @class NSpinnerTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class NSpinnerTag extends AFXTag {
|
export class NSpinnerTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Placeholder for value change event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<number>}
|
||||||
|
* @memberof NSpinnerTag
|
||||||
|
*/
|
||||||
private _onchange: TagEventCallback<number>;
|
private _onchange: TagEventCallback<number>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for the spinner data
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof NSpinnerTag
|
||||||
|
*/
|
||||||
private _value: number;
|
private _value: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place holder for the spinner step
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof NSpinnerTag
|
||||||
|
*/
|
||||||
step: number;
|
step: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +45,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the spinner value to `0` and step to `1`
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
@ -40,7 +56,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -49,7 +65,7 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the value change event handle
|
||||||
*
|
*
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
*/
|
*/
|
||||||
@ -58,7 +74,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
@ -93,7 +109,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Calibrate the layout of the spinner
|
||||||
*
|
*
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
*/
|
*/
|
||||||
@ -133,7 +149,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the spinner value
|
||||||
*
|
*
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
*/
|
*/
|
||||||
@ -146,7 +162,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the spinner value
|
||||||
*
|
*
|
||||||
* @type {number}
|
* @type {number}
|
||||||
* @memberof NSpinnerTag
|
* @memberof NSpinnerTag
|
||||||
@ -156,7 +172,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Spinner layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,20 +1,32 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
*
|
* An overlay tag is a layout tag that alway stay on top of
|
||||||
|
* the virtual desktop environment. Tile layout elements ([[VBoxTag]], [[HboxTag]])
|
||||||
|
* can be used inside this tag to compose elements
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class OverlayTag
|
* @class OverlayTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class OverlayTag extends AFXTag {
|
export class OverlayTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Tag width placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {string}
|
||||||
|
* @memberof OverlayTag
|
||||||
|
*/
|
||||||
private _width: string;
|
private _width: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tag height place holder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {string}
|
||||||
|
* @memberof OverlayTag
|
||||||
|
*/
|
||||||
private _height: string;
|
private _height: string;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -29,7 +41,7 @@ namespace OS {
|
|||||||
//$(@refs.yield).css "flex", "1"
|
//$(@refs.yield).css "flex", "1"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Put the tag on top of the virtual desktop environment
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
@ -43,7 +55,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -52,7 +64,8 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the width of the tag, the tag width should be in form of:
|
||||||
|
* `100px` of `80%`
|
||||||
*
|
*
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
*/
|
*/
|
||||||
@ -65,7 +78,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the tag width
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
@ -75,7 +88,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tag height, the tag height should be in form of:
|
||||||
|
* `100px` of `80%`
|
||||||
*
|
*
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
*/
|
*/
|
||||||
@ -88,7 +102,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the tag height
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
@ -98,7 +112,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Calibrate the element when mounting
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -109,7 +123,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Calibrate the width and height of the tag
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof OverlayTag
|
* @memberof OverlayTag
|
||||||
@ -126,7 +140,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition of the tag
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,21 +1,54 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
|
* A `resizer` tag is basically used to dynamically resize an element using mouse.
|
||||||
|
* It is usually put inside a [[TileLayoutTag]] an can be attached to any element. Example:
|
||||||
*
|
*
|
||||||
|
* The resizer tag in the following example will be attached to the first `afx-vbox`,
|
||||||
|
* and allows to resize this element using mouse
|
||||||
|
*
|
||||||
|
* ```xml
|
||||||
|
* <afx-hbox>
|
||||||
|
* <afx-vbox>...</afx-vbox>
|
||||||
|
* <afx-resizer></afx-resizer>
|
||||||
|
* <afx-vbox>...</afx-vbox>
|
||||||
|
* </afx-hbox>
|
||||||
|
* ```
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class ResizerTag
|
* @class ResizerTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class ResizerTag extends AFXTag {
|
export class ResizerTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Reference to the element that this tag is attached to
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {*}
|
||||||
|
* @memberof ResizerTag
|
||||||
|
*/
|
||||||
private _resizable_el: any;
|
private _resizable_el: any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the parent tag of the current tag.
|
||||||
|
* The parent tag should be an instance of a [[TileLayoutTag]]
|
||||||
|
* such as [[VBoxTag]] or [[HBoxTag]]
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {*}
|
||||||
|
* @memberof ResizerTag
|
||||||
|
*/
|
||||||
private _parent: any;
|
private _parent: any;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of the minimum value that
|
||||||
|
* the attached element can be resized
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof ResizerTag
|
||||||
|
*/
|
||||||
private _minsize: number;
|
private _minsize: number;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -27,7 +60,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the properties of the tag to default values
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
@ -40,16 +73,17 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
*/
|
*/
|
||||||
protected reload(d?: any): void {
|
protected reload(d?: any): void {}
|
||||||
}
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set resize direction, two possible values:
|
||||||
|
* - `hz` - horizontal direction, resize by width
|
||||||
|
* - `ve` - vertical direction, resize by height
|
||||||
*
|
*
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
*/
|
*/
|
||||||
@ -58,7 +92,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the resize direction
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
@ -68,7 +102,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag to the DOM tree
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
@ -111,7 +145,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Enable draggable on the element
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
@ -141,10 +175,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Resize the attached element in the horizontal direction (width)
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {JQuery.MouseEventBase} e
|
* @param {JQuery.MouseEventBase} e JQuery mouse event
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
*/
|
*/
|
||||||
@ -165,10 +199,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Resize the attached element in the vertical direction (height)
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {JQuery.MouseEventBase} e
|
* @param {JQuery.MouseEventBase} e JQuery mouse event
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof ResizerTag
|
* @memberof ResizerTag
|
||||||
*/
|
*/
|
||||||
@ -189,7 +223,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition of the tag, empty layout
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,25 +1,52 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
*
|
* A slider or track bar is a graphical control element with which
|
||||||
|
* a user may set a value by moving an indicator, usually horizontally
|
||||||
*
|
*
|
||||||
* @class SliderTag
|
* @class SliderTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
class SliderTag extends AFXTag {
|
class SliderTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Slider max value placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof SliderTag
|
||||||
|
*/
|
||||||
private _max: number;
|
private _max: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Current slider value placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof SliderTag
|
||||||
|
*/
|
||||||
private _value: number;
|
private _value: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of the on change event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<number>}
|
||||||
|
* @memberof SliderTag
|
||||||
|
*/
|
||||||
private _onchange: TagEventCallback<number>;
|
private _onchange: TagEventCallback<number>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of the on changing event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<number>}
|
||||||
|
* @memberof SliderTag
|
||||||
|
*/
|
||||||
private _onchanging: TagEventCallback<number>;
|
private _onchanging: TagEventCallback<number>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*Creates an instance of SliderTag.
|
* Creates an instance of SliderTag.
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
@ -27,7 +54,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the default value of the slider:
|
||||||
|
* - `max`: 100
|
||||||
|
* - `value`: 0
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
@ -40,7 +69,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -49,7 +78,9 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set value change event handle.
|
||||||
|
* This handle will be triggered when the
|
||||||
|
* slider indicator is released
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -58,7 +89,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set value changing event handle.
|
||||||
|
* This handle is triggered when moving the
|
||||||
|
* slider indicator
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -67,7 +100,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Enable/disable the slider
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -88,7 +121,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the slider is enabled
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
@ -98,7 +131,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the slider value
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -108,7 +141,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the current slider value
|
||||||
*
|
*
|
||||||
* @type {number}
|
* @type {number}
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
@ -118,7 +151,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the maximum value of the slider
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -128,7 +161,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the maximum value of the slider
|
||||||
*
|
*
|
||||||
* @type {number}
|
* @type {number}
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
@ -138,13 +171,12 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind some basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
|
|
||||||
this.enable_dragging();
|
this.enable_dragging();
|
||||||
$(this.refs.point).css("position", "absolute");
|
$(this.refs.point).css("position", "absolute");
|
||||||
$(this.refs.point).hide();
|
$(this.refs.point).hide();
|
||||||
@ -165,7 +197,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Calibrate the slide based on its value and max value
|
||||||
*
|
*
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
*/
|
*/
|
||||||
@ -194,7 +226,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* enable dragging on the slider indicator
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @memberof SliderTag
|
* @memberof SliderTag
|
||||||
@ -231,7 +263,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,19 +1,28 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
/**
|
||||||
|
* A switch tag is basically used to visualize an boolean data value.
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class SwitchTag
|
||||||
|
* @extends {AFXTag}
|
||||||
|
*/
|
||||||
export class SwitchTag extends AFXTag {
|
export class SwitchTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Placeholder for the onchange event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<boolean>}
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
private _onchange: TagEventCallback<boolean>;
|
private _onchange: TagEventCallback<boolean>;
|
||||||
private _onchanging: TagEventCallback<boolean>;
|
|
||||||
constructor() {
|
|
||||||
super();
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Turn on/off the switch
|
||||||
|
*
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
set swon(v: boolean) {
|
set swon(v: boolean) {
|
||||||
this.attsw(v, "swon");
|
this.attsw(v, "swon");
|
||||||
$(this.refs.switch).removeClass();
|
$(this.refs.switch).removeClass();
|
||||||
@ -22,28 +31,65 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the switch is turned on
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
get swon(): boolean {
|
get swon(): boolean {
|
||||||
return this.hasattr("swon");
|
return this.hasattr("swon");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable the switch
|
||||||
|
*
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
set enable(v: boolean) {
|
set enable(v: boolean) {
|
||||||
this.attsw(v, "enable");
|
this.attsw(v, "enable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the switch is enabled
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
get enable(): boolean {
|
get enable(): boolean {
|
||||||
return this.hasattr("enable");
|
return this.hasattr("enable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the onchange event handle
|
||||||
|
*
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
set onswchange(v: TagEventCallback<boolean>) {
|
set onswchange(v: TagEventCallback<boolean>) {
|
||||||
this._onchange = v;
|
this._onchange = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mount the tag and bind the click event to the switch
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
$(this.refs.switch).click((e) => {
|
$(this.refs.switch).click((e) => {
|
||||||
return this.makechange(e);
|
return this.makechange(e);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function will turn the switch (on/off)
|
||||||
|
* and trigger the onchange event
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {JQuery.ClickEvent} e
|
||||||
|
* @returns
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
private makechange(e: JQuery.ClickEvent) {
|
private makechange(e: JQuery.ClickEvent) {
|
||||||
if (!this.enable) {
|
if (!this.enable) {
|
||||||
return;
|
return;
|
||||||
@ -54,6 +100,13 @@ namespace OS {
|
|||||||
return this.observable.trigger("switch", evt);
|
return this.observable.trigger("switch", evt);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tag layout definition
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @returns
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
protected layout() {
|
protected layout() {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@ -63,12 +116,35 @@ namespace OS {
|
|||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init the tag:
|
||||||
|
* - switch is turn off
|
||||||
|
* - switch is enabled
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
protected init(): void {
|
protected init(): void {
|
||||||
this.swon = false;
|
this.swon = false;
|
||||||
this.enable = true;
|
this.enable = true;
|
||||||
this._onchange = this._onchanging = (e) => {};
|
this._onchange = (e) => {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @param {*} [d]
|
||||||
|
* @memberof SwitchTag
|
||||||
|
*/
|
||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,22 +1,41 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* A system panel contains the following elements:
|
||||||
|
* - Spotlight to access to applications menu
|
||||||
|
* - Current focused application menu
|
||||||
|
* - System tray for all running services running in background
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class SystemPanelTag
|
* @class SystemPanelTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class SystemPanelTag extends AFXTag {
|
export class SystemPanelTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Reference to spotlight data
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {(GenericObject<string | FormattedString>)}
|
||||||
|
* @memberof SystemPanelTag
|
||||||
|
*/
|
||||||
private _osmenu: GenericObject<string | FormattedString>;
|
private _osmenu: GenericObject<string | FormattedString>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder indicates whether the spotlight is currently shown
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof SystemPanelTag
|
||||||
|
*/
|
||||||
private _view: boolean;
|
private _view: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place holder for a private callback function
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof SystemPanelTag
|
||||||
|
*/
|
||||||
private _cb: (e: JQuery.MouseEventBase) => void;
|
private _cb: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -33,7 +52,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SystemPanelTag
|
* @memberof SystemPanelTag
|
||||||
@ -41,7 +60,7 @@ namespace OS {
|
|||||||
protected init(): void {}
|
protected init(): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -50,7 +69,8 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Attach a service to the system tray on the pannel,
|
||||||
|
* this operation is performed when a service is started
|
||||||
*
|
*
|
||||||
* @param {BaseService} s
|
* @param {BaseService} s
|
||||||
* @returns
|
* @returns
|
||||||
@ -62,7 +82,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Launch the selected application from the spotlight
|
||||||
|
* applications list
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -84,7 +105,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Perform spotlight search operation on keyboard event
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {JQuery.KeyboardEventBase} e
|
* @param {JQuery.KeyboardEventBase} e
|
||||||
@ -126,7 +147,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* detach a service from the system tray of the panel.
|
||||||
|
* This function is called when the corresponding running
|
||||||
|
* service is killed
|
||||||
*
|
*
|
||||||
* @param {BaseService} s
|
* @param {BaseService} s
|
||||||
* @memberof SystemPanelTag
|
* @memberof SystemPanelTag
|
||||||
@ -138,7 +161,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition of the panel
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
@ -222,7 +245,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Refresh applications list on the spotlight widget
|
||||||
|
* from system packages meta-data
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @memberof SystemPanelTag
|
* @memberof SystemPanelTag
|
||||||
@ -253,7 +277,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Show/hide the spotlight
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @param {boolean} flag
|
* @param {boolean} flag
|
||||||
@ -276,7 +300,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Calibrate the spotlight widget
|
||||||
*
|
*
|
||||||
* @memberof SystemPanelTag
|
* @memberof SystemPanelTag
|
||||||
*/
|
*/
|
||||||
@ -287,7 +311,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag bind some basic event
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof SystemPanelTag
|
* @memberof SystemPanelTag
|
||||||
|
@ -1,23 +1,42 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS101: Remove unnecessary use of Array.from
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
/**
|
||||||
|
* Tag event data type definition
|
||||||
|
*/
|
||||||
type TabEventData = TagEventDataType<ListViewItemTag>;
|
type TabEventData = TagEventDataType<ListViewItemTag>;
|
||||||
/**
|
/**
|
||||||
*
|
* a TabBar allows to control a collection of tabs
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class TabBarTag
|
* @class TabBarTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class TabBarTag extends AFXTag {
|
export class TabBarTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Placeholder of currently selected tab index
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof TabBarTag
|
||||||
|
*/
|
||||||
private _selected: number;
|
private _selected: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of tab close event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof TabBarTag
|
||||||
|
*/
|
||||||
private _ontabclose: (e: TagEventType<TabEventData>) => boolean;
|
private _ontabclose: (e: TagEventType<TabEventData>) => boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of tab select event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<TabEventData>}
|
||||||
|
* @memberof TabBarTag
|
||||||
|
*/
|
||||||
private _ontabselect: TagEventCallback<TabEventData>;
|
private _ontabselect: TagEventCallback<TabEventData>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -31,7 +50,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the tag
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
@ -41,7 +60,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -50,7 +69,7 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Enable/disable a tab to be closed
|
||||||
*
|
*
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
@ -59,7 +78,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether tabs can be closed
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
@ -69,9 +88,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add a tab in the end of the tab bar
|
||||||
*
|
*
|
||||||
*
|
* @param {GenericObject<any>} item tab data
|
||||||
* @param {GenericObject<any>} item
|
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
push(item: GenericObject<any>): ListViewItemTag {
|
push(item: GenericObject<any>): ListViewItemTag {
|
||||||
@ -80,9 +99,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Delete a tab
|
||||||
*
|
*
|
||||||
*
|
* @param {ListViewItemTag} el reference to DOM element of a tab
|
||||||
* @param {ListViewItemTag} el
|
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
delete(el: ListViewItemTag) {
|
delete(el: ListViewItemTag) {
|
||||||
@ -90,9 +109,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Add a tab to the beginning of the tab bar
|
||||||
*
|
*
|
||||||
*
|
* @param {GenericObject<any>} item tab data
|
||||||
* @param {GenericObject<any>} item
|
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
unshift(item: GenericObject<any>): ListViewItemTag {
|
unshift(item: GenericObject<any>): ListViewItemTag {
|
||||||
@ -101,7 +120,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set tabs data
|
||||||
*
|
*
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
@ -113,7 +132,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get all tabs data
|
||||||
*
|
*
|
||||||
* @type {GenericObject<any>[]}
|
* @type {GenericObject<any>[]}
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
@ -123,7 +142,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select a tab by its index
|
||||||
*
|
*
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
@ -132,7 +151,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the currently selected tab
|
||||||
*
|
*
|
||||||
* @type {(number | number[])}
|
* @type {(number | number[])}
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
@ -142,7 +161,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab close event handle
|
||||||
*
|
*
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
@ -151,7 +170,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab select event handle
|
||||||
*
|
*
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
*/
|
*/
|
||||||
@ -160,7 +179,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tab bar and bind some basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TabBarTag
|
* @memberof TabBarTag
|
||||||
@ -178,7 +197,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* TabBar layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,24 +1,54 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
|
/**
|
||||||
|
* Tab container data type definition
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @interface TabContainerTabType
|
||||||
|
*/
|
||||||
export interface TabContainerTabType {
|
export interface TabContainerTabType {
|
||||||
|
/**
|
||||||
|
* Reference to the DOM element of the current container
|
||||||
|
*
|
||||||
|
* @type {HTMLElement}
|
||||||
|
* @memberof TabContainerTabType
|
||||||
|
*/
|
||||||
container: HTMLElement;
|
container: HTMLElement;
|
||||||
|
|
||||||
[propName: string]: any;
|
[propName: string]: any;
|
||||||
}
|
}
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
|
* A tab container allows to attach each tab on a [[TabBarTag]]
|
||||||
|
* with a container widget. The attached container widget should be
|
||||||
|
* composed inside a [[HBoxTag]]
|
||||||
*
|
*
|
||||||
|
* The tab bar in a tab container can be configured to display tabs
|
||||||
|
* in horizontal (row) or vertical (column) order. Default to vertical order
|
||||||
|
*
|
||||||
|
* Once a tab is selected, its attached container will be shown
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class TabContainerTag
|
* @class TabContainerTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class TabContainerTag extends AFXTag {
|
export class TabContainerTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Reference to the currently selected tab DOM element
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TabContainerTabType}
|
||||||
|
* @memberof TabContainerTag
|
||||||
|
*/
|
||||||
private _selectedTab: TabContainerTabType;
|
private _selectedTab: TabContainerTabType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder of the tab select event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<TabContainerTabType>}
|
||||||
|
* @memberof TabContainerTag
|
||||||
|
*/
|
||||||
private _ontabselect: TagEventCallback<TabContainerTabType>;
|
private _ontabselect: TagEventCallback<TabContainerTabType>;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -28,11 +58,10 @@ namespace OS {
|
|||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this._ontabselect = (e) => {};
|
this._ontabselect = (e) => {};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the tab bar direction to vertical (column)
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
@ -42,7 +71,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -51,7 +80,7 @@ namespace OS {
|
|||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab select event handle
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -60,7 +89,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab bar direction:
|
||||||
|
* - `row`: horizontal direction
|
||||||
|
* - `column`: vertical direction
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -73,7 +104,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the tab bar direction
|
||||||
*
|
*
|
||||||
* @type {("row"| "column")}
|
* @type {("row"| "column")}
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
@ -83,7 +114,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select a tab using the its tab data type.
|
||||||
|
* This will show the attached container to the tab
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -101,7 +133,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the tab data of the currently selected Tab
|
||||||
*
|
*
|
||||||
* @type {TabContainerTabType}
|
* @type {TabContainerTabType}
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
@ -111,7 +143,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab bar width, this function only
|
||||||
|
* works when the tab bar direction is set to
|
||||||
|
* `row`
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -124,7 +158,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tab bar height, this function only works
|
||||||
|
* when the tab bar direction is set to `column`
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -134,7 +169,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
@ -146,8 +181,10 @@ namespace OS {
|
|||||||
this.selectedTab = data;
|
this.selectedTab = data;
|
||||||
return this._ontabselect({ data: data, id: this.aid });
|
return this._ontabselect({ data: data, id: this.aid });
|
||||||
};
|
};
|
||||||
this.observable.one("mounted", (id)=>{
|
this.observable.one("mounted", (id) => {
|
||||||
$(this.refs.yield).children().each((i, e) => {
|
$(this.refs.yield)
|
||||||
|
.children()
|
||||||
|
.each((i, e) => {
|
||||||
const item = {} as GenericObject<any>;
|
const item = {} as GenericObject<any>;
|
||||||
if ($(e).attr("tabname")) {
|
if ($(e).attr("tabname")) {
|
||||||
item.text = $(e).attr("tabname");
|
item.text = $(e).attr("tabname");
|
||||||
@ -159,18 +196,23 @@ namespace OS {
|
|||||||
item.iconclass = $(e).attr("iconclass");
|
item.iconclass = $(e).attr("iconclass");
|
||||||
}
|
}
|
||||||
item.container = e;
|
item.container = e;
|
||||||
$(e).css("width", "100%").css("height", "100%").hide();
|
$(e)
|
||||||
const el = (this.refs.bar as TabBarTag).push(item);
|
.css("width", "100%")
|
||||||
|
.css("height", "100%")
|
||||||
|
.hide();
|
||||||
|
const el = (this.refs.bar as TabBarTag).push(
|
||||||
|
item
|
||||||
|
);
|
||||||
el.selected = true;
|
el.selected = true;
|
||||||
});
|
});
|
||||||
})
|
});
|
||||||
|
|
||||||
this.observable.on("resize", (e) => this.calibrate());
|
this.observable.on("resize", (e) => this.calibrate());
|
||||||
this.calibrate();
|
this.calibrate();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* calibrate the tab container
|
||||||
*
|
*
|
||||||
* @memberof TabContainerTag
|
* @memberof TabContainerTag
|
||||||
*/
|
*/
|
||||||
@ -179,7 +221,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
|
@ -1,19 +1,49 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
/**
|
||||||
|
* A tile layout organize it child elements
|
||||||
|
* in a fixed horizontal or vertical direction.
|
||||||
|
*
|
||||||
|
* The size of each child element is attributed based
|
||||||
|
* on its configuration of automatically based on the
|
||||||
|
* remaining space in the layout
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class TileLayoutTag
|
||||||
|
* @extends {AFXTag}
|
||||||
|
*/
|
||||||
export class TileLayoutTag extends AFXTag {
|
export class TileLayoutTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
*C reates an instance of TileLayoutTag.
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
// @setopt @conf.opt, "grow"
|
|
||||||
protected init(): void {
|
/**
|
||||||
}
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
|
protected init(): void {}
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @param {*} [d]
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the name of the tile container, should be: `hbox` or `vbox`
|
||||||
|
*
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
set name(v: string) {
|
set name(v: string) {
|
||||||
if (!v) {
|
if (!v) {
|
||||||
return;
|
return;
|
||||||
@ -25,10 +55,24 @@ namespace OS {
|
|||||||
this.calibrate();
|
this.calibrate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the tile container
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
get name(): string {
|
get name(): string {
|
||||||
return $(this).attr("name");
|
return $(this).attr("name");
|
||||||
}
|
}
|
||||||
set dir(v: "row"| "column") {
|
|
||||||
|
/**
|
||||||
|
* SET the layout direction, should be:
|
||||||
|
* - `row`: horizontal direction
|
||||||
|
* - `column`: vertical direction
|
||||||
|
*
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
|
set dir(v: "row" | "column") {
|
||||||
if (!v) {
|
if (!v) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -36,10 +80,24 @@ namespace OS {
|
|||||||
$(this.refs.yield).css("flex-direction", v);
|
$(this.refs.yield).css("flex-direction", v);
|
||||||
this.calibrate();
|
this.calibrate();
|
||||||
}
|
}
|
||||||
get dir(): "row"| "column"
|
|
||||||
{
|
/**
|
||||||
|
* Get layout direction
|
||||||
|
*
|
||||||
|
* @type {("row"| "column")}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
|
get dir(): "row" | "column" {
|
||||||
return $(this).attr("dir") as any;
|
return $(this).attr("dir") as any;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mount the element
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
$(this).css("display", "block");
|
$(this).css("display", "block");
|
||||||
$(this.refs.yield)
|
$(this.refs.yield)
|
||||||
@ -50,6 +108,12 @@ namespace OS {
|
|||||||
return this.calibrate();
|
return this.calibrate();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* re-organize the layout
|
||||||
|
*
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
calibrate(): void {
|
calibrate(): void {
|
||||||
if (this.dir === "row") {
|
if (this.dir === "row") {
|
||||||
return this.hcalibrate();
|
return this.hcalibrate();
|
||||||
@ -59,6 +123,14 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Organize the layout in horizontal direction, only work when
|
||||||
|
* the layout direction set to horizontal
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
private hcalibrate(): void {
|
private hcalibrate(): void {
|
||||||
const auto_width = [];
|
const auto_width = [];
|
||||||
let ocwidth = 0;
|
let ocwidth = 0;
|
||||||
@ -100,6 +172,14 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Organize the layout in vertical direction, only work when
|
||||||
|
* the layout direction set to vertical
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
private vcalibrate(): void {
|
private vcalibrate(): void {
|
||||||
const auto_height = [];
|
const auto_height = [];
|
||||||
let ocheight = 0;
|
let ocheight = 0;
|
||||||
@ -142,6 +222,12 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Layout definition
|
||||||
|
*
|
||||||
|
* @returns
|
||||||
|
* @memberof TileLayoutTag
|
||||||
|
*/
|
||||||
layout() {
|
layout() {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
@ -152,29 +238,61 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A HBox organize its child elements in horizontal direction
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class HBoxTag
|
||||||
|
* @extends {TileLayoutTag}
|
||||||
|
*/
|
||||||
export class HBoxTag extends TileLayoutTag {
|
export class HBoxTag extends TileLayoutTag {
|
||||||
|
/**
|
||||||
|
* Creates an instance of HBoxTag.
|
||||||
|
* @memberof HBoxTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mount the tag
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof HBoxTag
|
||||||
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
super.mount();
|
super.mount();
|
||||||
this.dir = "row";
|
this.dir = "row";
|
||||||
this.name = "hbox";
|
this.name = "hbox";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A VBox organize its child elements in vertical direction
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class VBoxTag
|
||||||
|
* @extends {TileLayoutTag}
|
||||||
|
*/
|
||||||
export class VBoxTag extends TileLayoutTag {
|
export class VBoxTag extends TileLayoutTag {
|
||||||
|
/**
|
||||||
|
*Creates an instance of VBoxTag.
|
||||||
|
* @memberof VBoxTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mount the tag
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof VBoxTag
|
||||||
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
super.mount();
|
super.mount();
|
||||||
this.dir = "column";
|
this.dir = "column";
|
||||||
this.name = "vbox";
|
this.name = "vbox";
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,40 +1,120 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS101: Remove unnecessary use of Array.from
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* DS205: Consider reworking code to avoid use of IIFEs
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
*
|
* Tree view data type definition
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @interface TreeViewDataType
|
* @interface TreeViewDataType
|
||||||
*/
|
*/
|
||||||
export interface TreeViewDataType {
|
export interface TreeViewDataType {
|
||||||
|
/**
|
||||||
|
* The child nodes data of the current tree node
|
||||||
|
*
|
||||||
|
* @type {TreeViewDataType[]}
|
||||||
|
* @memberof TreeViewDataType
|
||||||
|
*/
|
||||||
nodes?: TreeViewDataType[];
|
nodes?: TreeViewDataType[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Boolean indicates whether the current node is opened.
|
||||||
|
* Only work when the current node is not a leaf node
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof TreeViewDataType
|
||||||
|
*/
|
||||||
open?: boolean;
|
open?: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The node's path from the root node
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof TreeViewDataType
|
||||||
|
*/
|
||||||
path?: string;
|
path?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether this node should be selected
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof TreeViewDataType
|
||||||
|
*/
|
||||||
selected?: boolean;
|
selected?: boolean;
|
||||||
[propName: string]: any;
|
[propName: string]: any;
|
||||||
}
|
}
|
||||||
export type TreeItemEventData = TagEventDataType<TreeViewItemPrototype>;
|
|
||||||
/**
|
/**
|
||||||
*
|
* Tree node event data type definition
|
||||||
|
*/
|
||||||
|
export type TreeItemEventData = TagEventDataType<
|
||||||
|
TreeViewItemPrototype
|
||||||
|
>;
|
||||||
|
/**
|
||||||
|
* Abstract prototype of a tree node. All tree node definition should
|
||||||
|
* extend this class
|
||||||
*
|
*
|
||||||
* @class TreeViewItemPrototype
|
* @class TreeViewItemPrototype
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export abstract class TreeViewItemPrototype extends AFXTag {
|
export abstract class TreeViewItemPrototype extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Node data placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TreeViewDataType}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
private _data: TreeViewDataType;
|
private _data: TreeViewDataType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for the indent level of the current node from root node
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
private _indent: number;
|
private _indent: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* private event object used by current node event
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventType<TreeItemEventData>}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
private _evt: TagEventType<TreeItemEventData>;
|
private _evt: TagEventType<TreeItemEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the root node
|
||||||
|
*
|
||||||
|
* @type {TreeViewTag}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
treeroot: TreeViewTag;
|
treeroot: TreeViewTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The tree path from the root node
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
treepath: string;
|
treepath: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the parent node of the current node
|
||||||
|
*
|
||||||
|
* @type {TreeViewTag}
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
parent: TreeViewTag;
|
parent: TreeViewTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for the `fetch` function of the node.
|
||||||
|
* This function is used to fetch the child nodes of the
|
||||||
|
* current nodes. This function should a promise on
|
||||||
|
* a list of [[TreeViewDataType]]
|
||||||
|
*
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
fetch: (
|
fetch: (
|
||||||
d: TreeViewItemPrototype
|
d: TreeViewItemPrototype
|
||||||
) => Promise<TreeViewDataType[]>;
|
) => Promise<TreeViewDataType[]>;
|
||||||
@ -44,14 +124,20 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Update the tree, this function
|
||||||
|
* is used to refresh/expand/collapse the
|
||||||
|
* current node based on the input parameter
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} p
|
* @param {*} p string indication, the value should be:
|
||||||
|
* - `expand`: expand the current node
|
||||||
|
* - `collapse`: collapse the current node
|
||||||
|
* - other string: this string is considered as a tree path of a node. If this value
|
||||||
|
* is the value of current node tree path, the node will be refreshed. Otherwise, nothing
|
||||||
|
* happens
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -75,7 +161,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the data of the current node. This wll trigger the
|
||||||
|
* [[ondatachange]] function
|
||||||
*
|
*
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -94,7 +181,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the current node's data
|
||||||
*
|
*
|
||||||
* @type {TreeViewDataType}
|
* @type {TreeViewDataType}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -104,7 +191,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Select or unselect the current node.
|
||||||
|
* This will trigger the item select event
|
||||||
|
* on the tree root if the parameter is `true`
|
||||||
*
|
*
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -125,7 +214,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current node is selected
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -135,7 +224,9 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Refresh the current node and expands its sub tree.
|
||||||
|
* This function only works if the current node is not
|
||||||
|
* a leaf node
|
||||||
*
|
*
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -169,13 +260,14 @@ namespace OS {
|
|||||||
"afx-tree-view-folder-open"
|
"afx-tree-view-folder-open"
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
$(this.refs.toggle).addClass("afx-tree-view-folder-close");
|
$(this.refs.toggle).addClass(
|
||||||
|
"afx-tree-view-folder-close"
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current node is expanded
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -184,7 +276,7 @@ namespace OS {
|
|||||||
return this.hasattr("open");
|
return this.hasattr("open");
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Get the current indent level
|
||||||
*
|
*
|
||||||
* @type {number}
|
* @type {number}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -194,7 +286,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the current indent level of this node from the root node
|
||||||
*
|
*
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -213,7 +305,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current node is not a leaf node
|
||||||
*
|
*
|
||||||
* @private
|
* @private
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
@ -228,7 +320,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the child nodes data of the current node
|
||||||
*
|
*
|
||||||
* @type {TreeViewDataType[]}
|
* @type {TreeViewDataType[]}
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -239,7 +331,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the child nodes data of the current node
|
||||||
*
|
*
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
*/
|
*/
|
||||||
@ -269,6 +361,12 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init the tag with default properties data
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
protected init(): void {
|
protected init(): void {
|
||||||
this.treeroot = undefined;
|
this.treeroot = undefined;
|
||||||
this.treepath = this.aid.toString();
|
this.treepath = this.aid.toString();
|
||||||
@ -279,7 +377,7 @@ namespace OS {
|
|||||||
this._indent = 0;
|
this._indent = 0;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tag and bind basic events
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TreeViewItemPrototype
|
* @memberof TreeViewItemPrototype
|
||||||
@ -310,7 +408,10 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition of a node. This function
|
||||||
|
* returns the definition of the base outer layout
|
||||||
|
* of a node. Custom inner layout of the node should
|
||||||
|
* be defined in the [[itemlayout]] function
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
@ -346,7 +447,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function need to be implemented by all subclasses
|
||||||
|
* to define the inner layout of the node
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @abstract
|
* @abstract
|
||||||
@ -356,7 +458,9 @@ namespace OS {
|
|||||||
protected abstract itemlayout(): TagLayoutType[];
|
protected abstract itemlayout(): TagLayoutType[];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function is called when the node data change.
|
||||||
|
* It needs to be implemented on all subclasses of this
|
||||||
|
* class
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @abstract
|
* @abstract
|
||||||
@ -365,9 +469,9 @@ namespace OS {
|
|||||||
protected abstract ondatachange(): void;
|
protected abstract ondatachange(): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* SimpleTreeViewItem extends [[TreeViewItemPrototype]] and
|
||||||
|
* define it inner layout using a [[LabelTag]]
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class SimpleTreeViewItem
|
* @class SimpleTreeViewItem
|
||||||
@ -383,7 +487,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Refresh the label when data changed
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -399,7 +503,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Inner layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns
|
* @returns
|
||||||
@ -410,29 +514,143 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* A tree view widget presents a hierarchical list of nodes.
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
* @class TreeViewTag
|
* @class TreeViewTag
|
||||||
* @extends {AFXTag}
|
* @extends {AFXTag}
|
||||||
*/
|
*/
|
||||||
export class TreeViewTag extends AFXTag {
|
export class TreeViewTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* Reference the the selected node
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TreeViewItemPrototype}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _selectedItem: TreeViewItemPrototype;
|
private _selectedItem: TreeViewItemPrototype;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for tree select event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<TreeItemEventData>}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _ontreeselect: TagEventCallback<TreeItemEventData>;
|
private _ontreeselect: TagEventCallback<TreeItemEventData>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Place holder for tree double click event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<TreeItemEventData>}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _ontreedbclick: TagEventCallback<TreeItemEventData>;
|
private _ontreedbclick: TagEventCallback<TreeItemEventData>;
|
||||||
private _ondragndrop: TagEventCallback<DnDEventDataType<TreeViewTag>>;
|
|
||||||
|
/**
|
||||||
|
* Placeholder for drag and drop event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TagEventCallback<DnDEventDataType<TreeViewTag>>}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
|
private _ondragndrop: TagEventCallback<
|
||||||
|
DnDEventDataType<TreeViewTag>
|
||||||
|
>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tree data placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {TreeViewDataType}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _data: TreeViewDataType;
|
private _data: TreeViewDataType;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for private dragndrop mouse down event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _treemousedown: (e: JQuery.MouseEventBase) => void;
|
private _treemousedown: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for private dragndrop mouse up event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _treemouseup: (e: JQuery.MouseEventBase) => void;
|
private _treemouseup: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder for private dragndrop mouse move event handle
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _treemousemove: (e: JQuery.MouseEventBase) => void;
|
private _treemousemove: (e: JQuery.MouseEventBase) => void;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Private data object passing between dragndrop mouse event
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {{ from: TreeViewTag; to: TreeViewTag }}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
private _dnd: { from: TreeViewTag; to: TreeViewTag };
|
private _dnd: { from: TreeViewTag; to: TreeViewTag };
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to parent tree of the current tree.
|
||||||
|
* This value is undefined if the current tree is the root
|
||||||
|
*
|
||||||
|
* @type {TreeViewTag}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
parent: TreeViewTag;
|
parent: TreeViewTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Reference to the root tree, this value is undefined
|
||||||
|
* if the curent tree is root
|
||||||
|
*
|
||||||
|
* @type {TreeViewTag}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
treeroot: TreeViewTag;
|
treeroot: TreeViewTag;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* tree path of the current tree from the root
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
treepath: string;
|
treepath: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indent level of the current tree
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
indent: number;
|
indent: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Indicates whether the tree should be expanded
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof TreeViewTag
|
||||||
|
*/
|
||||||
open: boolean;
|
open: boolean;
|
||||||
|
/**
|
||||||
|
* Placeholder for the `fetch` function of the tree.
|
||||||
|
* This function is used to fetch the child nodes of the
|
||||||
|
* current tree. This function should a promise on
|
||||||
|
* a list of [[TreeViewDataType]]
|
||||||
|
*
|
||||||
|
* @memberof TreeViewItemPrototype
|
||||||
|
*/
|
||||||
fetch: (
|
fetch: (
|
||||||
d: TreeViewItemPrototype
|
d: TreeViewItemPrototype
|
||||||
) => Promise<TreeViewDataType[]>;
|
) => Promise<TreeViewDataType[]>;
|
||||||
@ -443,11 +661,10 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Init the tree view before mounting:
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -464,7 +681,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Layout definition
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @returns {TagLayoutType[]}
|
* @returns {TagLayoutType[]}
|
||||||
@ -475,7 +692,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Do nothing
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @param {*} [d]
|
* @param {*} [d]
|
||||||
@ -483,7 +700,7 @@ namespace OS {
|
|||||||
*/
|
*/
|
||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
/**
|
/**
|
||||||
*
|
* Enable/disable drag and drop event on the tree
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -492,7 +709,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the drag and drop event is enabled
|
||||||
*
|
*
|
||||||
* @type {boolean}
|
* @type {boolean}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -502,7 +719,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tree select event handle
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -511,7 +728,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tree double click event handle
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -520,7 +737,11 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Set the default tag name of the tree node.
|
||||||
|
* If there is no tag name in the node data,
|
||||||
|
* this value will be used when creating node.
|
||||||
*
|
*
|
||||||
|
* Defaut to `afx-tree-view-item`
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -529,7 +750,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the default node tag name
|
||||||
*
|
*
|
||||||
* @type {string}
|
* @type {string}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -539,7 +760,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Unselect the selected element in the tree
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -550,7 +771,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the DOM element of the selected node
|
||||||
*
|
*
|
||||||
* @type {TreeViewItemPrototype}
|
* @type {TreeViewItemPrototype}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -560,7 +781,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the selected node using its DOM element
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
@ -575,7 +796,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Expand all nodes in the tree
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -588,7 +809,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Collapse all nodes in the tree
|
||||||
*
|
*
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -601,7 +822,8 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* This function will trigger the tree select or tree double click
|
||||||
|
* event
|
||||||
*
|
*
|
||||||
* @param {TagEventType} e
|
* @param {TagEventType} e
|
||||||
* @returns {void}
|
* @returns {void}
|
||||||
@ -626,7 +848,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current tree is a root tree
|
||||||
*
|
*
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -636,7 +858,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Check whether the current tree tag is a leaf
|
||||||
*
|
*
|
||||||
* @returns {boolean}
|
* @returns {boolean}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -654,21 +876,24 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set drag and drop event handle
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
set ondragndrop(v: TagEventCallback<DnDEventDataType<TreeViewTag>>) {
|
set ondragndrop(
|
||||||
|
v: TagEventCallback<DnDEventDataType<TreeViewTag>>
|
||||||
|
) {
|
||||||
this._ondragndrop = v;
|
this._ondragndrop = v;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Set the tree data. This operation will create
|
||||||
|
* all tree node elements of the current tree
|
||||||
*
|
*
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
*/
|
*/
|
||||||
set data(v: TreeViewDataType) {
|
set data(v: TreeViewDataType) {
|
||||||
this._selectedItem = undefined
|
this._selectedItem = undefined;
|
||||||
if (!v) {
|
if (!v) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -700,7 +925,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Get the tree data
|
||||||
*
|
*
|
||||||
* @type {TreeViewDataType}
|
* @type {TreeViewDataType}
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
@ -710,7 +935,7 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
* Mount the tree view
|
||||||
*
|
*
|
||||||
* @protected
|
* @protected
|
||||||
* @memberof TreeViewTag
|
* @memberof TreeViewTag
|
||||||
|
@ -1,23 +1,96 @@
|
|||||||
/*
|
|
||||||
* decaffeinate suggestions:
|
|
||||||
* DS102: Remove unnecessary code created because of implicit returns
|
|
||||||
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
||||||
*/
|
|
||||||
namespace OS {
|
namespace OS {
|
||||||
export namespace GUI {
|
export namespace GUI {
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
|
/**
|
||||||
|
* A WindowTag represents a virtual window element
|
||||||
|
* used by AntOS applications and dialogs.
|
||||||
|
*
|
||||||
|
* @export
|
||||||
|
* @class WindowTag
|
||||||
|
* @extends {AFXTag}
|
||||||
|
*/
|
||||||
export class WindowTag extends AFXTag {
|
export class WindowTag extends AFXTag {
|
||||||
|
/**
|
||||||
|
* The element ID of the virtual desktop element
|
||||||
|
*
|
||||||
|
* @type {string}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
desktop: string;
|
desktop: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Window width placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _width: number;
|
private _width: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Window height placeholder
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {number}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _height: number;
|
private _height: number;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder indicates whether the current window is shown
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _shown: boolean;
|
private _shown: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Placeholder indicates whether the current window is maximized
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _isMaxi: boolean;
|
private _isMaxi: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This placeholder stores the latest offset of the current window.
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {GenericObject<any>}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _history: GenericObject<any>;
|
private _history: GenericObject<any>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This placeholder stores the offset of the virtual desktop element
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @type {GenericObject<any>}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private _desktop_pos: GenericObject<any>;
|
private _desktop_pos: GenericObject<any>;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an instance of WindowTag.
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Init window tag
|
||||||
|
* - `shown`: false
|
||||||
|
* - `isMaxi`: false
|
||||||
|
* - `minimizable`: false
|
||||||
|
* - `resizable`: true
|
||||||
|
* - `apptitle`: Untitled
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
protected init(): void {
|
protected init(): void {
|
||||||
this._shown = false;
|
this._shown = false;
|
||||||
this._isMaxi = false;
|
this._isMaxi = false;
|
||||||
@ -27,11 +100,30 @@ namespace OS {
|
|||||||
this.minimizable = true;
|
this.minimizable = true;
|
||||||
this.resizable = true;
|
this.resizable = true;
|
||||||
this.apptitle = "Untitled";
|
this.apptitle = "Untitled";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
protected calibrate(): void {}
|
protected calibrate(): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Do nothing
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @param {*} [d]
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
protected reload(d?: any): void {}
|
protected reload(d?: any): void {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the window width
|
||||||
|
*
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
set width(v: number) {
|
set width(v: number) {
|
||||||
this._width = v;
|
this._width = v;
|
||||||
if (!v) {
|
if (!v) {
|
||||||
@ -39,10 +131,22 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
this.setsize({ w: v, h: this.height });
|
this.setsize({ w: v, h: this.height });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the window width
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
get width(): number {
|
get width(): number {
|
||||||
return this._width;
|
return this._width;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the window height
|
||||||
|
*
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
set height(v: number) {
|
set height(v: number) {
|
||||||
this._height = v;
|
this._height = v;
|
||||||
if (!v) {
|
if (!v) {
|
||||||
@ -54,9 +158,21 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the window height
|
||||||
|
*
|
||||||
|
* @type {number}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
get height(): number {
|
get height(): number {
|
||||||
return this._height;
|
return this._height;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable/disable window minimizable
|
||||||
|
*
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
set minimizable(v: boolean) {
|
set minimizable(v: boolean) {
|
||||||
this.attsw(v, "minimizable");
|
this.attsw(v, "minimizable");
|
||||||
if (v) {
|
if (v) {
|
||||||
@ -65,9 +181,22 @@ namespace OS {
|
|||||||
$(this.refs["minbt"]).hide();
|
$(this.refs["minbt"]).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the window is minimizable
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
get minimizable(): boolean {
|
get minimizable(): boolean {
|
||||||
return this.hasattr("minimizable");
|
return this.hasattr("minimizable");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* enable/disable widow resizable
|
||||||
|
*
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
set resizable(v: boolean) {
|
set resizable(v: boolean) {
|
||||||
this.attsw(v, "resizable");
|
this.attsw(v, "resizable");
|
||||||
if (v) {
|
if (v) {
|
||||||
@ -78,19 +207,45 @@ namespace OS {
|
|||||||
$(this.refs["grip"]).hide();
|
$(this.refs["grip"]).hide();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check whether the current window is resizable
|
||||||
|
*
|
||||||
|
* @type {boolean}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
get resizable(): boolean {
|
get resizable(): boolean {
|
||||||
return this.hasattr("resizable");
|
return this.hasattr("resizable");
|
||||||
}
|
}
|
||||||
set apptitle(v: string| FormattedString) {
|
|
||||||
|
/**
|
||||||
|
* Set the window title
|
||||||
|
*
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
|
set apptitle(v: string | FormattedString) {
|
||||||
$(this).attr("apptitle", v.__());
|
$(this).attr("apptitle", v.__());
|
||||||
if (v) {
|
if (v) {
|
||||||
(this.refs["txtTitle"] as LabelTag).text = v;
|
(this.refs["txtTitle"] as LabelTag).text = v;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
get apptitle(): string| FormattedString {
|
|
||||||
|
/**
|
||||||
|
* Get window title
|
||||||
|
*
|
||||||
|
* @type {(string| FormattedString)}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
|
get apptitle(): string | FormattedString {
|
||||||
return $(this).attr("apptitle");
|
return $(this).attr("apptitle");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resize all the children of the window based on its width and height
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private resize(): void {
|
private resize(): void {
|
||||||
const ch =
|
const ch =
|
||||||
$(this.refs["yield"]).height() /
|
$(this.refs["yield"]).height() /
|
||||||
@ -102,8 +257,14 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Mount the window tag and bind basic events
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
protected mount(): void {
|
protected mount(): void {
|
||||||
|
|
||||||
this.contextmenuHandle = function (e) {};
|
this.contextmenuHandle = function (e) {};
|
||||||
$(this.refs["minbt"]).click((e) => {
|
$(this.refs["minbt"]).click((e) => {
|
||||||
return this.observable.trigger("hide", {
|
return this.observable.trigger("hide", {
|
||||||
@ -182,6 +343,14 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the window size
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @param {GenericObject<any>} o format: `{ w: window_width, h: window_height }`
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private setsize(o: GenericObject<any>): void {
|
private setsize(o: GenericObject<any>): void {
|
||||||
if (!o) {
|
if (!o) {
|
||||||
return;
|
return;
|
||||||
@ -196,6 +365,12 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable to drag window on the virtual desktop
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private enable_dragging(): void {
|
private enable_dragging(): void {
|
||||||
$(this.refs["dragger"])
|
$(this.refs["dragger"])
|
||||||
.css("user-select", "none")
|
.css("user-select", "none")
|
||||||
@ -237,6 +412,13 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enable window resize, this only works if the window
|
||||||
|
* is resizable
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private enable_resize(): void {
|
private enable_resize(): void {
|
||||||
$(this.refs["grip"])
|
$(this.refs["grip"])
|
||||||
.css("user-select", "none")
|
.css("user-select", "none")
|
||||||
@ -269,6 +451,14 @@ namespace OS {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Maximize the window or restore its previous width, height,
|
||||||
|
* and position
|
||||||
|
*
|
||||||
|
* @private
|
||||||
|
* @returns {void}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
private toggle_window(): void {
|
private toggle_window(): void {
|
||||||
let h: number, w: number;
|
let h: number, w: number;
|
||||||
if (!this.resizable) {
|
if (!this.resizable) {
|
||||||
@ -298,6 +488,13 @@ namespace OS {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Layout definition of the window tag
|
||||||
|
*
|
||||||
|
* @protected
|
||||||
|
* @returns {TagLayoutType[]}
|
||||||
|
* @memberof WindowTag
|
||||||
|
*/
|
||||||
protected layout(): TagLayoutType[] {
|
protected layout(): TagLayoutType[] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
|
@ -629,14 +629,14 @@ namespace OS {
|
|||||||
};
|
};
|
||||||
/**
|
/**
|
||||||
* All the AFX tags are defined in this namespace,
|
* All the AFX tags are defined in this namespace,
|
||||||
* these tags are are defined as custom DOM elements and will be
|
* these tags are defined as custom DOM elements and will be
|
||||||
* stored in the `customElements` registry of the browser
|
* stored in the `customElements` registry of the browser
|
||||||
*/
|
*/
|
||||||
export namespace tag {
|
export namespace tag {
|
||||||
/**
|
/**
|
||||||
* Define an AFX tag as a custom element and add it to the
|
* Define an AFX tag as a custom element and add it to the
|
||||||
* global `customElements` registry. If the tag is redefined, i.e.
|
* global `customElements` registry. If the tag is redefined, i.e.
|
||||||
* the tag already exist, its behavior will be updated with the
|
* the tag already exists, its behavior will be updated with the
|
||||||
* new definition
|
* new definition
|
||||||
*
|
*
|
||||||
* @export
|
* @export
|
||||||
|
Loading…
Reference in New Issue
Block a user