From ed211c2d51f2fb900c60501209217b52b90da0c7 Mon Sep 17 00:00:00 2001 From: alan Date: Fri, 11 Dec 2020 14:46:44 +0800 Subject: [PATCH] =?UTF-8?q?KERNEL-6431=20fineui=E6=8F=8F=E8=BF=B0class?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- typescript/base/single/icon/icon.ts | 9 + typescript/base/single/single.ts | 30 ++- typescript/core/ob.ts | 38 +++ typescript/core/widget.ts | 400 +++++++++++++++++++++++++++- typescript/index.ts | 12 +- 5 files changed, 484 insertions(+), 5 deletions(-) create mode 100644 typescript/base/single/icon/icon.ts diff --git a/typescript/base/single/icon/icon.ts b/typescript/base/single/icon/icon.ts new file mode 100644 index 0000000000..72af8be061 --- /dev/null +++ b/typescript/base/single/icon/icon.ts @@ -0,0 +1,9 @@ +import { Single } from "../single"; + +export declare class Icon extends Single { + static xtype: string; + + _defaultConfig(..._args: any[]): { [key: string]: any } | {}; + + _init(): void; +} diff --git a/typescript/base/single/single.ts b/typescript/base/single/single.ts index 841fd6c819..ff6b668d7d 100644 --- a/typescript/base/single/single.ts +++ b/typescript/base/single/single.ts @@ -1,4 +1,4 @@ -import { _Widget } from "../../core/widget"; +import { Widget, _Widget } from "../../core/widget"; export interface _Single extends _Widget { _showToolTip(e: Event, opt?: SingleOpt): void; @@ -31,3 +31,31 @@ export interface _Single extends _Widget { interface SingleOpt { container?: any, belowMouse?: boolean } + +export declare class Single extends Widget { + _showToolTip(e: Event, opt?: SingleOpt): void; + + _hideTooltip(): void; + + _clearTimeOut(): void; + + enableHover(opt?: SingleOpt): void; + + disabledHover(): void; + + setTitle(title: string | Function, opt?: SingleOpt): void; + + setWarningTitle(title: string, opt?: SingleOpt): void; + + setTipType(v: string): void; + + getTipType(): string; + + isReadOnly(): boolean; + + getTitle(): string; + + getWarningTitle(): string; + + populate(..._args: any[]): void; +} diff --git a/typescript/core/ob.ts b/typescript/core/ob.ts index 88f89968e7..893280633f 100644 --- a/typescript/core/ob.ts +++ b/typescript/core/ob.ts @@ -45,3 +45,41 @@ interface Props { }[]; [key: string]: any; } + +export declare class OB { + props: Props | ((config: T) => Props & T); + + options: this["props"]; + + events?: { + [eventName: string]: Function[]; + }; + + init?(): void; + + destroyed?(): void; + + _defaultConfig(..._args: any[]): { [key: string]: any } | {}; + + _init(): void; + + _initListeners(): void; + + _getEvents(): { [eventName: string]: Function[] }; + + on(eventName: string, fn: Function): Function; + + once(eventName: string, fn: Function): void; + + un(eName: string, fn: Function): void; + + _initRef(): void; + + _purgeRef(): void; + + purgeListeners(): void; + + fireEvent(eName: string, ...args: any[]): boolean | null; + + destroy(): void; +} diff --git a/typescript/core/widget.ts b/typescript/core/widget.ts index c2b307bfb4..7bc644721a 100644 --- a/typescript/core/widget.ts +++ b/typescript/core/widget.ts @@ -1,6 +1,7 @@ -import { _OB } from "./ob"; +import { OB, _OB } from "./ob"; export interface _WidgetStatic { + /** * 注册渲染引擎 * @param engine 引擎 @@ -9,22 +10,27 @@ export interface _WidgetStatic { } export interface _Widget extends _OB { + /** * 出现loading的锁 */ __asking: boolean; + /** * 同步锁 */ __async: boolean; + /** * widget类标识符 */ widgetName: string | null; + /** * 是否为根节点 */ _isRoot: boolean; + /** * 父节点 */ @@ -38,24 +44,29 @@ export interface _Widget extends _OB { height(): number; [key: string]: any; }; + /** * 子元素 */ _children: { [key: string]: _Widget; }; + /** * 是否已挂载 */ _isMounted: boolean; + /** * 手动设置enable */ _manualSetEnable: boolean; + /** * 手动设置valid */ _manualSetValid: boolean; + /** * 渲染引擎 */ @@ -385,8 +396,395 @@ interface RenderEngine { * @param widget widget对象 */ createElement: (widget: any) => any; + /** * 创建DocumentFragment对象 */ createFragment: () => DocumentFragment; } + +export declare class Widget extends OB { + // + /** + * 注册渲染引擎 + * @param engine 引擎 + */ + static registerRenderEngine(engine: RenderEngine): void; + + /** + * 出现loading的锁 + */ + __asking: boolean; + + /** + * 同步锁 + */ + __async: boolean; + + /** + * widget类标识符 + */ + widgetName: string | null; + + /** + * 是否为根节点 + */ + _isRoot: boolean; + + /** + * 父节点 + */ + _parent: _Widget | null; + // TODO: 完成jquery文件夹后把这块改了 + /** + * 真实dom的类jQuery对象 + */ + element: { + width(): number; + height(): number; + [key: string]: any; + }; + + /** + * 子元素 + */ + _children: { + [key: string]: _Widget; + }; + + /** + * 是否已挂载 + */ + _isMounted: boolean; + + /** + * 手动设置enable + */ + _manualSetEnable: boolean; + + /** + * 手动设置valid + */ + _manualSetValid: boolean; + + /** + * 渲染引擎 + */ + _renderEngine: RenderEngine; + + _store(): void; + + // 生命周期函数 + /** + * 初始化前 + */ + beforeInit?(cb: Function): void; + + /** + * 创建前 + */ + beforeCreate?(): void; + + /** + * 创建 + */ + created?(): void; + + /** + * 渲染 + */ + render?(): any; + + /** + * 挂载前 + */ + beforeMount?(): void; + + /** + * 挂载 + */ + mounted?(): void; + + /** + * 更新前 + */ + shouldUpdate?(): void; + + /** + * 更新 + */ + update?(...args: any[]): void; + + /** + * 销毁前 + */ + beforeDestroy?(): void; + + /** + * 销毁 + */ + destroyed?(): void; + + /** + * 初始化render函数 + */ + _initRender: () => void; + + /** + * 内部主render函数 + */ + _render: () => void; + + /** + * 初始化根节点 + */ + _initRoot: () => void; + + /** + * 初始化元素宽度 + */ + _initElementWidth: () => void; + + /** + * 初始化元素高度 + */ + _initElementHeight: () => void; + + /** + * 初始化元素可见 + */ + _initVisual: () => void; + + /** + * 初始化元素可用不可用 + */ + _initEffects: () => void; + + /** + * 设置mounted锁 + */ + _initState: () => void; + + /** + * 生成真实dom + */ + _initElement: () => void; + + /** + * 设置父节点 + */ + _setParent: () => void; + + /** + * @param force 是否强制挂载子节点 + * @param deep 子节点是否也是按照当前force处理 + * @param lifeHook 生命周期钩子触不触发,默认触发 + * @param predicate 递归每个widget的回调 + */ + _mount(force?: boolean, deep?: boolean, lifeHook?: boolean, predicate?: Function): boolean; + + /** + * 挂载子节点 + */ + _mountChildren?(): void; + + /** + * 是否已挂载 + */ + isMounted(): boolean; + + /** + * 设置宽度 + */ + setWidth(w: number): void; + + /** + * 设置高度 + */ + setHeight(h: number): void; + + /** + * 设置可用 + */ + _setEnable(enable: boolean): void; + + /** + * 设置合法 + */ + _setValid(valid: boolean): void; + + /** + * 设置可见 + */ + _setVisible(visible: boolean): void; + + /** + * 设置是否可用 + */ + setEnable(enable: boolean): void; + + /** + * 设置是否可见 + */ + setVisible(visible: boolean): void; + + /** + * 设置是否合法 + */ + setValid(valid: boolean): void; + + /** + * 设置反馈效果 + * @param args arguments参数 + */ + doBehavior(...args: any[]): void; + + /** + * 获取宽度 + */ + getWidth(): number; + + /** + * 获取高度 + */ + getHeight(): number; + + /** + * 是否合法 + */ + isValid(): boolean; + + /** + * 新增子元素 + */ + addWidget(_name: any, _widget: _Widget): _Widget; + + /** + * 根据wigetname获取子元素实例 + */ + getWidgetByName(_name: string): _Widget | undefined; + + /** + * 移除子元素 + * @param nameOrWidget widgetName或widget实例 + */ + removeWidget(nameOrWidget: string | _Widget): void; + + /** + * 是否有某个子元素 + */ + hasWidget(name: string): boolean; + + /** + * 获取widgetName + */ + getName(): string; + + /** + * 设置tag + * @param tag html tag + */ + setTag(tag: string): void; + + /** + * 获取tag + */ + getTag(): string; + + /** + * 设置属性 + * @param key 键 + * @param value 值 + */ + attr(key: string | { [key: string]: any }, value?: any): any; + + /** + * 获取text + */ + getText(): string; + + /** + * 设置text + */ + setText(text: string): void; + + /** + * 获取值 + */ + getValue(): any; + + /** + * 设置值 + */ + setValue(...args: any[]): void; + + /** + * 获取是否enable + */ + isEnabled(): boolean; + + /** + * 是否可见 + */ + isVisible(): boolean; + + /** + * disable元素 + */ + disable(): void; + + /** + * enable元素 + */ + enable(): void; + + /** + * 是widget合法 + */ + valid(): void; + + /** + * 使元素不合法 + */ + invalid(): void; + + /** + * 使不可见 + */ + invisible(..._args: any[]): void; + + /** + * 可见 + */ + visible(..._args: any[]): void; + + /** + * 清除子元素 + */ + __d(): void; + + /** + * 取消挂载 + */ + _unMount(): void; + + /** + * hang元素 + */ + isolate(): void; + + /** + * 请除元素 + */ + empty(): void; + + /** + * 内部destory方法 + */ + _destroy(): void; + + /** + * destory元素 + */ + destroy(): void; +} diff --git a/typescript/index.ts b/typescript/index.ts index 7dfc8d837d..3dd952cfe8 100644 --- a/typescript/index.ts +++ b/typescript/index.ts @@ -13,7 +13,7 @@ import { _Checkbox, _CheckboxStatic } from "./base/single/input/checkbox"; import { _Input, _InputStatic } from "./base/single/input/input"; import { _AbstractLabel } from "./base/single/label/abstract.label"; import { _Label } from "./base/single/label/label"; -import { _Single } from "./base/single/single"; +import { _Single, Single } from "./base/single/single"; import { _Text } from "./base/single/text"; import { _Trigger } from "./base/single/trigger/trigger"; import { _IconChangeButton, _IconChangeButtonStatic } from "./case/button/icon/icon.change"; @@ -37,7 +37,7 @@ import { _func } from "./core/func"; import { _i18n } from "./core/i18n"; import { _Plugin } from "./core/plugin"; import { _OB } from "./core/ob"; -import { _Widget, _WidgetStatic } from "./core/widget"; +import { _Widget, _WidgetStatic, Widget } from "./core/widget"; import { _inject } from "./core/inject"; import { _Layout } from "./core/wrapper/layout"; import { _AbsoluteLayout } from "./core/wrapper/layout/layout.absolute"; @@ -45,7 +45,7 @@ import { _HTapeLayout, _VTapeLayout } from "./core/wrapper/layout/layout.tape"; import { _VerticalLayout } from "./core/wrapper/layout/layout.vertical"; import { _DefaultLayout } from "./core/wrapper/layout/layout.default"; import { _DownListCombo, _DownListComboStatic } from "./widget/downlist/combo.downlist"; - +import { Icon } from "./base/single/icon/icon"; type ClassConstructor = T & { new(config: any): T; @@ -101,8 +101,14 @@ export interface BI extends _func, _i18n, _base, _inject { DefaultLayout: ClassConstructor<_DefaultLayout>; Input: ClassConstructor<_Input> & _InputStatic; SearchTextValueCombo: ClassConstructor<_SearchTextValueCombo> & _SearchTextValueComboStatic; + Icon: typeof Icon; } export default { Decorators: decorator, }; +export { + Widget, + Single, + Icon, +};