|
|
|
@ -10,7 +10,7 @@ import {
|
|
|
|
|
VerticalAdaptLayout, |
|
|
|
|
deepClone, |
|
|
|
|
Selection, |
|
|
|
|
size |
|
|
|
|
SIZE_CONSANTS |
|
|
|
|
} from "@/core"; |
|
|
|
|
import { Single, Combo } from "@/base"; |
|
|
|
|
import { MultiTreeSearcher } from "./trigger/searcher.multi.tree"; |
|
|
|
@ -27,15 +27,12 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
|
|
|
|
|
static EVENT_FOCUS = "EVENT_FOCUS"; |
|
|
|
|
static EVENT_BLUR = "EVENT_BLUR"; |
|
|
|
|
static EVENT_START = "EVENT_START"; |
|
|
|
|
static EVENT_STOP = "EVENT_STOP"; |
|
|
|
|
static EVENT_SEARCHING = "EVENT_SEARCHING"; |
|
|
|
|
static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; |
|
|
|
|
static EVENT_CONFIRM = "EVENT_CONFIRM"; |
|
|
|
|
static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
|
|
|
|
static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; |
|
|
|
|
static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW = "EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW"; |
|
|
|
|
static EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW = "EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW"; |
|
|
|
|
|
|
|
|
|
_defaultConfig() { |
|
|
|
|
return extend(super._defaultConfig(...arguments), { |
|
|
|
@ -45,8 +42,6 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
height: 24, |
|
|
|
|
allowEdit: true, |
|
|
|
|
isNeedAdjustWidth: true, |
|
|
|
|
popup: {}, |
|
|
|
|
masker: {}, |
|
|
|
|
}); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -68,20 +63,23 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
this.storeValue = { value: o.value || {} }; |
|
|
|
|
|
|
|
|
|
this.trigger = createWidget({ |
|
|
|
|
type: MultiSelectTrigger.xtype, |
|
|
|
|
popup: o.popup, |
|
|
|
|
masker: o.masker, |
|
|
|
|
type: "bi.multi_select_trigger", |
|
|
|
|
allowEdit: o.allowEdit, |
|
|
|
|
height: toPix(o.height, o.simple ? 1 : 2), |
|
|
|
|
valueFormatter: o.valueFormatter, |
|
|
|
|
text: o.text, |
|
|
|
|
defaultText: o.defaultText, |
|
|
|
|
watermark: o.watermark, |
|
|
|
|
adapter: () => { |
|
|
|
|
return this.popup.getView(); |
|
|
|
|
masker: { |
|
|
|
|
offset: { |
|
|
|
|
left: 0, |
|
|
|
|
top: 0, |
|
|
|
|
right: 0, |
|
|
|
|
bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
searcher: { |
|
|
|
|
type: MultiTreeSearcher.xtype, |
|
|
|
|
type: "bi.multi_tree_searcher", |
|
|
|
|
itemsCreator: o.itemsCreator, |
|
|
|
|
listeners: [ |
|
|
|
|
{ |
|
|
|
@ -106,6 +104,8 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
type: MultiTreePopup.xtype, |
|
|
|
|
ref() { |
|
|
|
|
self.popup = this; |
|
|
|
|
self.trigger.setAdapter(this); |
|
|
|
|
self.numberCounter.setAdapter(this); |
|
|
|
|
}, |
|
|
|
|
listeners: [ |
|
|
|
|
{ |
|
|
|
@ -160,16 +160,13 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
}); |
|
|
|
|
}, |
|
|
|
|
maxWidth: o.isNeedAdjustWidth ? "auto" : 500, |
|
|
|
|
...o.popup, |
|
|
|
|
}, |
|
|
|
|
isNeedAdjustWidth: o.isNeedAdjustWidth, |
|
|
|
|
value: { value: o.value || {} }, |
|
|
|
|
hideChecker(e) { |
|
|
|
|
return ( |
|
|
|
|
triggerBtn.element.find(e.target).length === 0 && |
|
|
|
|
size(self.numberCounter.getView()?.element.find(e.target)) === 0 && |
|
|
|
|
size(self.trigger.getSearcher().getSearcher().getView()?.element.find(e.target)) === 0 && |
|
|
|
|
self.trigger.getSearcher().getSearcher().getView()?.element[0] !== e.target |
|
|
|
|
self.numberCounter.element.find(e.target).length === 0 |
|
|
|
|
); |
|
|
|
|
}, |
|
|
|
|
}); |
|
|
|
@ -185,6 +182,7 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
return self.combo.isViewVisible(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
let shouldComboPopulate = true; |
|
|
|
|
this.trigger.on(MultiSelectTrigger.EVENT_FOCUS, () => { |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_FOCUS); |
|
|
|
|
}); |
|
|
|
@ -196,7 +194,6 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
self.storeValue = { value: self.combo.getValue() }; |
|
|
|
|
this.setValue(self.storeValue); |
|
|
|
|
self.numberCounter.setValue(self.storeValue); |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_START); |
|
|
|
|
}); |
|
|
|
|
this.trigger.on(MultiSelectTrigger.EVENT_STOP, function () { |
|
|
|
|
self.storeValue = { value: this.getValue() }; |
|
|
|
@ -263,14 +260,14 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
} |
|
|
|
|
self.combo.setValue(self.storeValue); |
|
|
|
|
self.numberCounter.setValue(self.storeValue); |
|
|
|
|
self.populate(); |
|
|
|
|
shouldComboPopulate && self.populate(); |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_BEFORE_POPUPVIEW); |
|
|
|
|
}); |
|
|
|
|
this.combo.on(Combo.EVENT_BEFORE_HIDEVIEW, () => { |
|
|
|
|
if (isSearching()) { |
|
|
|
|
self._stopEditing(); |
|
|
|
|
self._dataChange && |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_CONFIRM); |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_CONFIRM); |
|
|
|
|
} else { |
|
|
|
|
if (isPopupView()) { |
|
|
|
|
self._stopEditing(); |
|
|
|
@ -279,7 +276,7 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
self.storeValue = { value: {} }; |
|
|
|
|
} |
|
|
|
|
self._dataChange && |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_CONFIRM); |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_CONFIRM); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
clear = false; |
|
|
|
@ -299,26 +296,39 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
this.numberCounter = createWidget({ |
|
|
|
|
type: MultiSelectCheckSelectedSwitcher, |
|
|
|
|
type: "bi.multi_select_check_selected_switcher", |
|
|
|
|
el: { |
|
|
|
|
// type: "bi.multi_tree_check_selected_button",
|
|
|
|
|
type: MultiTreeCheckSelectedButton.xtype, |
|
|
|
|
}, |
|
|
|
|
popup: { |
|
|
|
|
// type: "bi.multi_tree_check_pane",
|
|
|
|
|
type: MultiTreeCheckPane.xtype, |
|
|
|
|
...o.popup, |
|
|
|
|
}, |
|
|
|
|
adapter: () => { |
|
|
|
|
return this.popup.getView(); |
|
|
|
|
masker: { |
|
|
|
|
offset: { |
|
|
|
|
left: 0, |
|
|
|
|
top: 0, |
|
|
|
|
right: 0, |
|
|
|
|
bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, |
|
|
|
|
}, |
|
|
|
|
}, |
|
|
|
|
masker: o.masker, |
|
|
|
|
itemsCreator: o.itemsCreator, |
|
|
|
|
valueFormatter: o.valueFormatter, |
|
|
|
|
value: { value: o.value || {} }, |
|
|
|
|
}); |
|
|
|
|
this.numberCounter.on( |
|
|
|
|
MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_COMBO, |
|
|
|
|
() => { |
|
|
|
|
self.populate(); |
|
|
|
|
shouldComboPopulate = true; |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
this.numberCounter.on( |
|
|
|
|
MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, |
|
|
|
|
() => { |
|
|
|
|
if (!self.combo.isViewVisible()) { |
|
|
|
|
shouldComboPopulate = false; |
|
|
|
|
self.combo.showView(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
@ -333,12 +343,8 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
want2showCounter = null; |
|
|
|
|
showCounter(); |
|
|
|
|
} |
|
|
|
|
this.fireEvent(MultiTreeCombo.EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW); |
|
|
|
|
} |
|
|
|
|
); |
|
|
|
|
this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_POPUPVIEW, function() { |
|
|
|
|
self.fireEvent(MultiTreeCombo.EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW); |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
this.numberCounter.on(Events.VIEW, b => { |
|
|
|
|
nextTick(() => { |
|
|
|
@ -446,16 +452,4 @@ export class MultiTreeCombo extends Single {
|
|
|
|
|
setWaterMark(v) { |
|
|
|
|
this.trigger.setWaterMark(v); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getPopup() { |
|
|
|
|
return this.popup; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getNumberCounter() { |
|
|
|
|
return this.numberCounter; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
getTrigger() { |
|
|
|
|
return this.trigger; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|