/** * Copyright 2007-2025 MAIYUN.NET * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import * as clickgo from '../clickgo'; import * as lCore from './core'; import * as lForm from './form'; /** * --- 初始化系统级 ID,仅能设置一次 --- * @param id 系统级 ID */ export declare function initSysId(id: string): void; /** --- 窗体的抽象类 --- */ export declare abstract class AbstractControl { /** --- 当前文件在包内的路径 --- */ get filename(): string; /** --- 当前的窗体创建的位数 --- */ get findex(): number; /** --- 当前的控件名称 --- */ get controlName(): string; /** --- 当前组件所在的任务 ID --- */ get taskId(): string; /** --- 当前组件所在的窗体 ID --- */ get formId(): string; /** --- 当前控件所在运行窗体的包内路径不以 / 结尾 --- */ get path(): string; /** --- 样式独占前缀 --- */ get prep(): string; /** --- 获取当前的 HTML DOM --- */ get element(): HTMLElement; /** --- root form --- */ private _rootForm; /** --- 当前控件所在窗体的窗体对象 --- */ get rootForm(): lForm.AbstractForm & Record; /** --- 当前组件是否是别的组件的子组件,仅仅是包裹在组件的 layout 初始化中的才算 --- */ private readonly _rootControl; /** --- 当前组件如果在开发控件层面被包裹了,则可以获取到包裹他的组件对象 --- */ get rootControl(): (AbstractControl & Record) | null; /** * --- 当前窗体是否有焦点 --- */ get formFocus(): boolean; /** --- 获取当前语言名 --- */ get locale(): string; /** * --- 获取语言内容 --- */ get l(): (key: string, data?: string[]) => string; /** * --- 获取窗体语言内容 --- */ get fl(): (key: string, data?: string[]) => string; /** --- layout 中 :class 的转义 --- */ get classPrepend(): (cla: any) => string; /** --- 获取 alignH 的 css 属性模式,请确保 props.alignH 存在 --- */ get alignHComp(): string | undefined; /** --- 获取 alignH 的 css 属性模式,请确保 props.alignH 存在 --- */ get alignVComp(): string | undefined; /** * --- 监视变动 --- * @param name 监视的属性或 prop 值 * @param cb 回调 * @param opt 参数 */ watch(name: TK | (() => TR), cb: (val: T[TK] & TR, old: T[TK] & TR) => void | Promise, opt?: { 'immediate'?: boolean; 'deep'?: boolean; }): () => void; /** * --- 获取 refs 情况 --- */ get refs(): Record>; /** * --- 等待渲染 --- */ get nextTick(): () => Promise; /** * --- 判断当前事件可否执行 --- * @param e 鼠标、触摸、键盘事件 */ allowEvent(e: PointerEvent | KeyboardEvent): boolean; /** * --- 触发系统方法 --- * @param name 方法名 * @param param1 参数1 * @param param2 参数2 */ trigger(name: lCore.TGlobalEvent, param1?: boolean | Error | string, param2?: string): Promise; /** --- 组件内部文件,由系统重写 --- */ readonly packageFiles: Record; /** --- 组件参数,由用户定义重写 --- */ readonly props: {}; /** --- 组件参数,由用户定义重写 --- */ readonly emits: Record boolean)>; /** --- 组件的子插槽 --- */ readonly slots: Record any[]>; /** --- 获取某插槽所有子类 --- */ get slotsAll(): (name: string) => any[]; /** --- 获取 props 中的 boolean 类型的值 --- */ get propBoolean(): (name: keyof this["props"]) => boolean; /** --- 获取 props 中的 number 类型的值 --- */ get propNumber(): (name: keyof this["props"]) => number; /** --- 获取 props 中的 int 类型的值 --- */ get propInt(): (name: keyof this["props"]) => number; /** --- 获取 props 中的 array 类型的值 --- */ get propArray(): (name: keyof this["props"]) => any[]; /** * --- 向上反应事件 --- * @param name 事件名 * @param v 事件值 */ emit(name: string, ...v: string | any): void; /** * --- 获取上层控件 --- */ get parent(): AbstractControl & lForm.AbstractForm & Record; /** * --- 根据 control name 查询上层控件 --- */ get parentByName(): (controlName: string) => (AbstractControl & Record) | null; /** * --- 根据 control access 查询上层控件 --- */ get parentByAccess(): (name: string, val: string) => (AbstractControl & Record) | null; onBeforeCreate(): void | Promise; onCreated(): void | Promise; onBeforeMount(): void | Promise; /** --- 控件挂载好后触发 --- */ onMounted(): void | Promise; onBeforeUpdate(): void | Promise; onUpdated(): void | Promise; onBeforeUnmount(): void | Promise; onUnmounted(): void | Promise; } /** * --- 将 cgc 文件 blob 转换为 control 对象 --- * @param blob 文件 blob */ export declare function read(blob: Blob): Promise; /** * --- 任务创建过程中,需要对 control 进行先行初始化,并将样式表插入到实际的任务 DOM 中 --- * @param taskId 要处理的任务 ID */ export declare function init(taskId: string, opt?: { /** * --- 控件加载进度 --- * @param loaded 已加载 * @param total 总数 * @param path 已加载的控件路径 */ progress?: (loaded: number, total: number, path: string) => void | Promise; }): Promise; /** * --- 初始化获取新窗体的控件 component(init 后执行) --- * @param taskId 任务 id * @param formId 窗体 id * @param path 窗体路径基准(包内路径)不以 / 结尾 */ export declare function buildComponents(taskId: string, formId: string, path: string): false | Record; /** --- 控件文件包的 config --- */ export interface IControlConfig { 'name': string; 'ver': number; 'version': string; 'author': string; /** --- 不带扩展名,系统会在末尾添加 .js --- */ 'code': string; /** --- 不带扩展名,系统会在末尾添加 .html --- */ 'layout': string; /** --- 不带扩展名,系统会在末尾添加 .css --- */ 'style': string; /** --- 要提前加载的库名 --- */ 'modules'?: string[]; } /** --- 控件对象 --- */ export interface IControl { 'type': 'control'; /** --- 控件对象配置文件 --- */ 'config': IControlConfig; /** --- 所有已加载的文件内容 --- */ 'files': Record; } /** --- 控件文件包 --- */ export type TControlPackage = Record; /** --- Custom Event --- */ export interface ICustomEvent { 'go': boolean; preventDefault: () => void; } export interface ICheckChangeEvent extends ICustomEvent { 'detail': { 'name': string; 'value': boolean; 'indeterminate': boolean; }; } export interface ICheckChangedEvent { 'detail': { 'name': string; 'value': boolean; 'indeterminate': boolean; }; } export interface INumberBeforeChangeEvent extends ICustomEvent { 'detail': { 'value': string; 'change'?: string; }; } export interface INumberMinMaxChangeEvent extends ICustomEvent { 'detail': { 'before': string; 'value': string; }; } export interface ITextBeforeChangeEvent extends ICustomEvent { 'detail': { 'value': string; 'change'?: string; }; } export interface ITextMinMaxChangeEvent extends ICustomEvent { 'detail': { 'before': string; 'value': string; }; } export interface IMenulistItemCheckEvent extends ICustomEvent { 'detail': { /** --- 当前要选中的项 --- */ 'value': string | boolean; /** --- radio 模式下,当前项的 label 内容 --- */ 'label'?: string; }; } export interface IDateChangedEvent { 'detail': { 'before'?: number; 'value'?: number; }; } export interface ICalendarSelectedEvent { 'detail': { 'year': string; 'month': string; 'date': string; 'value': string; 'type': 'default' | 'click'; }; } export interface IDatepanelRangeEvent extends ICustomEvent { 'detail': { 'start': number; 'end': number; }; } export interface IDatepanelChangedEvent { 'detail': { 'before'?: number; 'value'?: number; }; } export interface IDatepanelSelectedEvent { 'detail': { 'time': number; 'date': number; 'month': number; 'year': number; 'day': number; 'str': string; }; } export interface IFormCloseEvent extends ICustomEvent { 'detail': { 'event': MouseEvent; }; } export interface IFormMaxEvent { 'detail': { 'event': MouseEvent | TouchEvent | null; 'action': 'click' | 'move'; /** --- 当前是否时最大化状态 --- */ 'max': boolean; /** --- 最大化之前的窗体位置 --- */ 'history': { 'width': number; 'height': number; 'left': number; 'top': number; } | null; }; } export interface IFormMinEvent { 'detail': { 'event': MouseEvent | TouchEvent | null; 'action': 'click' | 'method'; /** --- 当前是否时最小化状态 --- */ 'min': boolean; /** --- 最小化之前的窗体位置 --- */ 'history': { 'width': number; 'height': number; 'left': number; 'top': number; } | null; }; } export interface IGreatlistChangeEvent extends ICustomEvent { 'detail': { 'value': number[]; }; } export interface IGreatlistChangedEvent { 'detail': { 'value': number[]; }; } export interface IGreatlistRemoveEvent extends ICustomEvent { 'detail': { 'index': number; 'value': number; }; } export interface IGreatlistAddEvent extends ICustomEvent { 'detail': { 'index': number; 'value': number; }; } export interface IGreatlistItemclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': number; 'arrow': boolean; }; } export interface IGreatlistItemdblclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': number; 'arrow': boolean; }; } export interface IGreatselectChangeEvent extends ICustomEvent { 'detail': { 'value': number[]; }; } export interface IGreatselectChangedEvent { 'detail': { 'value': number[]; }; } export interface IGreatselectRemoveEvent extends ICustomEvent { 'detail': { 'value': number; }; } export interface IGreatselectAddEvent extends ICustomEvent { 'detail': { 'value': number; }; } export interface ICaptchaResultEvent { 'detail': { 'result': number; 'token': string; }; } export interface IPdfViewEvent { 'detail': { /** --- 宽度 point --- */ 'width': number; /** --- 高度 point --- */ 'height': number; /** --- 宽度英寸 --- */ 'inwidth': number; /** --- 高度英寸 --- */ 'inheight': number; /** --- 宽度像素 --- */ 'pxwidth': number; /** --- 高度像素 --- */ 'pxheight': number; }; } export interface IUploaderRemoveEvent extends ICustomEvent { 'detail': { 'index': number; }; } export interface IIconviewItemclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': number; }; } export interface IIconviewOpenEvent { 'detail': { 'value': number[]; }; } export interface IIconviewDropEvent { 'detail': { 'self': boolean; 'from': Array<{ 'index': number; 'type': 0 | 1 | -1 | undefined; 'path': string; }>; 'to': { 'index': number; 'type': 0 | 1 | -1 | undefined; 'path': string; }; }; } export interface IIconviewSelectEvent { 'detail': { 'area': { 'x': number; 'y': number; 'width': number; 'height': number; 'shift': boolean; 'ctrl': boolean; 'start': number; 'end': number; 'empty': boolean; }; }; } export interface ILevelselectLevelEvent { 'detail': { 'list': Array<{ 'label': string; 'value': string; }>; 'values': string[]; 'labels': string[]; }; } export interface IChecklistRemoveEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface IChecklistAddEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface IChecklistItemclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': string; 'arrow': boolean; }; } export interface IListChangeEvent extends ICustomEvent { 'detail': { 'value': string[]; }; } export interface IListChangedEvent { 'detail': { 'value': string[]; }; } export interface IListRemoveEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface IListAddEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface IListItemclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': string; 'arrow': boolean; }; } export interface IListItemdblclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': string; 'arrow': boolean; }; } export interface INavItemSelectEvent extends ICustomEvent { 'detail': { 'name': string; 'selected': string; }; } export interface IPanelGoEvent extends ICustomEvent { 'detail': { 'from': string; 'to': string; }; } export interface IPanelWentEvent { 'detail': { 'result': boolean; 'from': string; 'to': string; }; } export interface IRadioChangeEvent extends ICustomEvent { 'detail': { /** --- 设定的值 --- */ 'value': string; /** --- 选中的值 --- */ 'selected': string; }; } export interface IPaletteChangedEvent { 'detail': { /** --- 颜色值 --- */ 'value': string; /** --- 对象 --- */ 'hsl'?: { 'h': number; 's': number; 'l': number; 'a': number; }; 'rgb'?: { 'r': number; 'g': number; 'b': number; 'a': number; }; }; } export interface IColoristChangedEvent { 'detail': { /** --- 颜色值 --- */ 'value': string; /** --- 对象 --- */ 'hsl'?: { 'h': number; 's': number; 'l': number; 'a': number; }; 'rgb'?: { 'r': number; 'g': number; 'b': number; 'a': number; }; }; } export interface ISelectAddEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface ISelectRemoveEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; 'mode': 'backspace' | 'tag' | 'list'; }; } export interface ISelectAddedEvent { 'detail': { 'index': number; 'value': string; }; } export interface ISelectRemovedEvent { 'detail': { 'index': number; 'value': string; 'mode': 'backspace' | 'tag' | 'list'; }; } export interface ISelectChangeEvent extends ICustomEvent { 'detail': { 'value': string[]; }; } export interface ISelectChangedEvent { 'detail': { 'before': string[]; 'value': string[]; }; } export interface ISelectTagclickEvent { 'detail': { 'index': number; 'value': string; }; } export interface ISelectRemoteEvent { 'detail': { 'value': string; 'callback': (data?: any[] | Record) => Promise; }; } export interface ISelectItemclickedEvent { 'detail': { 'event': MouseEvent | TouchEvent; 'value': string; 'arrow': boolean; }; } export interface ISwitchChangeEvent extends ICustomEvent { 'detail': { 'value': boolean; }; } export interface ITabChangeEvent extends ICustomEvent { 'detail': { 'value': string; }; } export interface ITabChangedEvent { 'detail': { 'value': string; }; } export interface ITabCloseEvent extends ICustomEvent { 'detail': { 'index': number; 'value': string; }; } export interface ITableSortEvent extends ICustomEvent { 'detail': { 'index': number; 'label': string; 'sort': 'desc' | 'asc'; }; } export interface ITuieditorImguploadEvent { 'detail': { 'file': Blob; 'callback': (url: string, opt?: { 'alt'?: string; 'width'?: number; 'height'?: number; 'align'?: string; }) => void | Promise; }; } export interface ITagDropEvent { 'detail': { 'before': number; 'after': number; }; } export interface IObjviewerLine { /** -- 可自定义线段的名称 --- */ 'name'?: string; 'start': clickgo.control.IObjviewerLineObj; 'end': clickgo.control.IObjviewerLineObj; /** --- 默认 255 --- */ 'hue'?: string; 'path'?: string; /** --- 默认 solid --- */ 'stroke'?: 'solid' | 'dashed' | 'up' | 'down'; } export interface IObjviewerLineObj { 'obj': HTMLElement | AbstractControl; 'pos': 'lt' | 't' | 'tr' | 'r' | 'rb' | 'b' | 'bl' | 'l'; }