import { IBzEvent, IEntity } from '@ibizstudio/api'; /** * 选中数据状态管理 * * @export * @class SelectState */ export class SelectState { /** * 选中数据变更 * * @type {Subject} * @memberof SelectState */ readonly evt: IBzEvent<{ change: IEntity }> = new IBzEvent(); /** * 当前选中激活数据 * * @private * @type {*} * @memberof SelectState */ private activateItem: any = null; /** * 当前选中数据 * * @type {*} * @memberof SelectState */ get data(): IEntity { return this.activateItem; } /** * 选中时设置的上下文 * * @author chitanda * @date 2022-11-23 12:11:37 * @type {(IContext | null)} */ context: IContext | null = null; /** * 设置当前选中数据 * * @author chitanda * @date 2022-11-23 12:11:56 * @param {IEntity} data * @param {IContext} [context] */ set(data: IEntity, context?: IContext): void { this.activateItem = data; this.context = context ? context : null; this.evt.emit('change', this.activateItem); } /** * 清除选中项 * * @memberof SelectState */ clear(): void { this.activateItem = null; this.context = null; this.evt.emit('change', this.activateItem); } }