diff --git a/packages/fineui/src/case/combo/iconcombo/combo.icon.js b/packages/fineui/src/case/combo/iconcombo/combo.icon.js index d7aaf3f63..e428c38d2 100644 --- a/packages/fineui/src/case/combo/iconcombo/combo.icon.js +++ b/packages/fineui/src/case/combo/iconcombo/combo.icon.js @@ -8,6 +8,7 @@ export class IconCombo extends Widget { static xtype = "bi.icon_combo"; static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -55,18 +56,18 @@ export class IconCombo extends Widget { value: o.value, isShowDown: o.isShowDown, }); - this.popup = createWidget(o.popup, { + this.popupEl = createWidget(o.popup, { type: IconComboPopup.xtype, chooseType: o.chooseType, items: o.items, value: o.value, }); - this.popup.on(IconComboPopup.EVENT_CHANGE, () => { - this.setValue(this.popup.getValue()); + this.popupEl.on(IconComboPopup.EVENT_CHANGE, () => { + this.setValue(this.popupEl.getValue()); this.iconCombo.hideView(); this.fireEvent(IconCombo.EVENT_CHANGE); }); - this.popup.on(Controller.EVENT_CHANGE, (...args) => { + this.popupEl.on(Controller.EVENT_CHANGE, (...args) => { this.fireEvent(Controller.EVENT_CHANGE, ...args); }); this.iconCombo = createWidget({ @@ -82,11 +83,20 @@ export class IconCombo extends Widget { el: this.trigger, hideWhenAnotherComboOpen: o.hideWhenAnotherComboOpen, popup: { - el: this.popup, + el: this.popupEl, maxWidth: o.maxWidth, maxHeight: o.maxHeight, minWidth: o.minWidth, + ref: (ref) => { + this.popup = ref; + }, }, + listeners: [{ + eventName: Combo.EVENT_BEFORE_POPUPVIEW, + action: () => { + this.fireEvent(IconCombo.EVENT_BEFORE_POPUPVIEW); + }, + }], }); } @@ -100,15 +110,19 @@ export class IconCombo extends Widget { setValue(v) { this.trigger.setValue(v); - this.popup.setValue(v); + this.popupEl.setValue(v); } getValue() { - const value = this.popup.getValue(); + const value = this.popupEl.getValue(); return isNull(value) ? [] : isArray(value) ? value : [value]; } + getPopup() { + return this.popup; + } + populate(items) { this.options.items = items; this.iconCombo.populate(items); diff --git a/packages/fineui/src/widget/numberinterval/numberinterval.js b/packages/fineui/src/widget/numberinterval/numberinterval.js index 89085cd75..e985e55f6 100644 --- a/packages/fineui/src/widget/numberinterval/numberinterval.js +++ b/packages/fineui/src/widget/numberinterval/numberinterval.js @@ -41,6 +41,8 @@ export class NumberInterval extends Single { static EVENT_CONFIRM = "EVENT_CONFIRM"; static EVENT_VALID = "EVENT_VALID"; static EVENT_ERROR = "EVENT_ERROR"; + static EVENT_BEFORE_LEFT_POPUPVIEW = "EVENT_BEFORE_LEFT_POPUPVIEW"; + static EVENT_BEFORE_RIGHT_POPUPVIEW = "EVENT_BEFORE_RIGHT_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); @@ -151,6 +153,8 @@ export class NumberInterval extends Single { }); this.smallCombo = createWidget({ type: IconCombo.xtype, + container: o.container, + popup: o.popup, cls: `number-interval-small-combo${ o.simple ? "" : " bi-border-top bi-border-bottom bi-border-right bi-border-corner-right-radius" }`, @@ -168,6 +172,12 @@ export class NumberInterval extends Single { iconCls: "less-equal-font", }, ], + listeners: [{ + eventName: IconCombo.EVENT_BEFORE_POPUPVIEW, + action: () => { + this.fireEvent(NumberInterval.EVENT_BEFORE_LEFT_POPUPVIEW); + }, + }], }); if (o.closeMin === true) { this.smallCombo.setValue(1); @@ -176,6 +186,8 @@ export class NumberInterval extends Single { } this.bigCombo = createWidget({ type: IconCombo.xtype, + container: o.container, + popup: o.popup, cls: `number-interval-big-combo${ o.simple ? "" : " bi-border-top bi-border-bottom bi-border-left bi-border-corner-left-radius" }`, @@ -193,6 +205,12 @@ export class NumberInterval extends Single { iconCls: "less-equal-font", }, ], + listeners: [{ + eventName: IconCombo.EVENT_BEFORE_POPUPVIEW, + action: () => { + this.fireEvent(NumberInterval.EVENT_BEFORE_RIGHT_POPUPVIEW); + }, + }], }); if (o.closeMax === true) { this.bigCombo.setValue(1); @@ -621,6 +639,14 @@ export class NumberInterval extends Single { this.bigEditor.focus(); } + getLeftCombo() { + return this.smallCombo; + } + + getRightCombo() { + return this.bigCombo; + } + destroyed() { const c = this.constants; Bubbles.remove(c.typeError); diff --git a/packages/fineui/typescript/case/combo/iconcombo/combo.icon.ts b/packages/fineui/typescript/case/combo/iconcombo/combo.icon.ts index 097f50971..68eacb90c 100644 --- a/packages/fineui/typescript/case/combo/iconcombo/combo.icon.ts +++ b/packages/fineui/typescript/case/combo/iconcombo/combo.icon.ts @@ -1,13 +1,17 @@ +import { PopupView } from "../../../base/layer/layer.popup"; import { Widget } from '../../../core/widget'; export declare class IconCombo extends Widget { static xtype: string; static EVENT_CHANGE: string; + static EVENT_BEFORE_POPUPVIEW: string; showView(): void; hideView(): void; populate(items: any[]): void; + + getPopup(): PopupView; } diff --git a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts index 6c675b48b..26b3d3dc2 100644 --- a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts +++ b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts @@ -6,6 +6,7 @@ export declare class MultiSelectInsertCombo extends Single { static xtype: string; static EVENT_FOCUS: string; static EVENT_BLUR: string; + static EVENT_START: string; static EVENT_STOP: string; static EVENT_SEARCHING: string; static EVENT_CLICK_ITEM: string; diff --git a/packages/fineui/typescript/widget/numberinterval/numberinterval.ts b/packages/fineui/typescript/widget/numberinterval/numberinterval.ts index 17ec1d15d..6b661a23a 100644 --- a/packages/fineui/typescript/widget/numberinterval/numberinterval.ts +++ b/packages/fineui/typescript/widget/numberinterval/numberinterval.ts @@ -1,3 +1,4 @@ +import { Combo } from '../../base/combination/combo'; import { Single } from '../../base/single/single'; export declare class NumberInterval extends Single { @@ -6,6 +7,8 @@ export declare class NumberInterval extends Single { static EVENT_CONFIRM: string; static EVENT_VALID: string; static EVENT_ERROR: string; + static EVENT_BEFORE_LEFT_POPUPVIEW: string; + static EVENT_BEFORE_RIGHT_POPUPVIEW: string; props: { watermark?: string; @@ -40,4 +43,8 @@ export declare class NumberInterval extends Single { focusMinEditor(): void; focusMaxEditor(): void; + + getLeftCombo(): Combo; + + getRightCombo(): Combo; }