forked from fanruan/fineui
Joker.Wang-王顺
2 years ago
20 changed files with 2350 additions and 1854 deletions
@ -1,143 +1,155 @@ |
|||||||
(function() { |
import { shortcut, Widget, extend, createWidget, cloneDeep, some, isArray, each } from "@/core"; |
||||||
function transformItems(items) { |
import { DownListPopup } from "./popup.downlist"; |
||||||
if (!items) return items; |
import { Combo } from "@/base"; |
||||||
var result = BI.cloneDeep(items); |
import { IconTrigger } from "@/case"; |
||||||
var isComplexItmes = BI.some(items, function (_, item) { |
|
||||||
return BI.isArray(item); |
|
||||||
|
function transformItems(items) { |
||||||
|
if (!items) return items; |
||||||
|
let result = cloneDeep(items); |
||||||
|
const isComplexItmes = some(items, (_, item) => isArray(item)); |
||||||
|
// 传一维数组,帮转二维
|
||||||
|
if (!isComplexItmes) { |
||||||
|
result = [result]; |
||||||
|
} |
||||||
|
// 帮转 el
|
||||||
|
each(result, (_, arr) => { |
||||||
|
each(arr, (_, item) => { |
||||||
|
if (item.children && !item.el) { |
||||||
|
item.el = { |
||||||
|
text: item.text, |
||||||
|
icon: item.icon, |
||||||
|
cls: item.cls, |
||||||
|
iconCls1: item.iconCls1, |
||||||
|
value: item.value, |
||||||
|
}; |
||||||
|
} |
||||||
}); |
}); |
||||||
// 传一维数组,帮转二维
|
}); |
||||||
if (!isComplexItmes) { |
|
||||||
result = [result]; |
return result; |
||||||
} |
} |
||||||
// 帮转 el
|
|
||||||
BI.each(result, function (_, arr) { |
@shortcut() |
||||||
BI.each(arr, function (_, item) { |
export class DownListCombo extends Widget { |
||||||
if (item.children && !item.el) { |
static xtype = "bi.down_list_combo"; |
||||||
item.el = { |
|
||||||
text: item.text, |
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||||
icon: item.icon, |
static EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; |
||||||
cls: item.cls, |
static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
||||||
iconCls1: item.iconCls1, |
|
||||||
value: item.value |
_defaultConfig() { |
||||||
}; |
return extend(super._defaultConfig(...arguments), { |
||||||
} |
baseCls: "bi-down-list-combo", |
||||||
}); |
height: 24, |
||||||
|
items: [], |
||||||
|
adjustLength: 0, |
||||||
|
direction: "bottom", |
||||||
|
trigger: "click", |
||||||
|
container: null, |
||||||
|
stopPropagation: false, |
||||||
|
el: {}, |
||||||
|
popup: {}, |
||||||
|
minWidth: 140, |
||||||
|
maxHeight: 1000, |
||||||
|
destroyWhenHide: false, |
||||||
|
isDefaultInit: true, |
||||||
}); |
}); |
||||||
return result; |
|
||||||
} |
} |
||||||
|
|
||||||
/** |
_init() { |
||||||
* Created by roy on 15/8/14. |
super._init(...arguments); |
||||||
*/ |
const o = this.options; |
||||||
BI.DownListCombo = BI.inherit(BI.Widget, { |
|
||||||
_defaultConfig: function () { |
|
||||||
return BI.extend(BI.DownListCombo.superclass._defaultConfig.apply(this, arguments), { |
|
||||||
baseCls: "bi-down-list-combo", |
|
||||||
height: 24, |
|
||||||
items: [], |
|
||||||
adjustLength: 0, |
|
||||||
direction: "bottom", |
|
||||||
trigger: "click", |
|
||||||
container: null, |
|
||||||
stopPropagation: false, |
|
||||||
el: {}, |
|
||||||
popup: {}, |
|
||||||
minWidth: 140, |
|
||||||
maxHeight: 1000, |
|
||||||
destroyWhenHide: false, |
|
||||||
isDefaultInit: true, |
|
||||||
}); |
|
||||||
}, |
|
||||||
|
|
||||||
_init: function () { |
this.downlistcombo = createWidget({ |
||||||
BI.DownListCombo.superclass._init.apply(this, arguments); |
element: this, |
||||||
var self = this, o = this.options; |
type: Combo.xtype, |
||||||
|
trigger: o.trigger, |
||||||
this.downlistcombo = BI.createWidget({ |
isNeedAdjustWidth: false, |
||||||
element: this, |
isDefaultInit: o.isDefaultInit, |
||||||
type: "bi.combo", |
container: o.container, |
||||||
trigger: o.trigger, |
adjustLength: o.adjustLength, |
||||||
isNeedAdjustWidth: false, |
direction: o.direction, |
||||||
isDefaultInit: o.isDefaultInit, |
belowMouse: o.belowMouse, |
||||||
container: o.container, |
stopPropagation: o.stopPropagation, |
||||||
adjustLength: o.adjustLength, |
destroyWhenHide: o.destroyWhenHide, |
||||||
direction: o.direction, |
el: { |
||||||
belowMouse: o.belowMouse, |
type: IconTrigger.xtype, |
||||||
stopPropagation: o.stopPropagation, |
extraCls: o.iconCls, |
||||||
destroyWhenHide: o.destroyWhenHide, |
width: o.width, |
||||||
|
height: o.height, |
||||||
|
...o.el, |
||||||
|
}, |
||||||
|
popup: { |
||||||
el: { |
el: { |
||||||
type: "bi.icon_trigger", |
type: DownListPopup.xtype, |
||||||
extraCls: o.iconCls, |
ref: _ref => { |
||||||
width: o.width, |
this.popupView = _ref; |
||||||
height: o.height, |
|
||||||
...o.el |
|
||||||
}, |
|
||||||
popup: { |
|
||||||
el: { |
|
||||||
type: "bi.down_list_popup", |
|
||||||
ref: function (ref) { |
|
||||||
self.popupView = ref; |
|
||||||
}, |
|
||||||
items: transformItems(o.items), |
|
||||||
chooseType: o.chooseType, |
|
||||||
value: o.value, |
|
||||||
listeners: [{ |
|
||||||
eventName: BI.DownListPopup.EVENT_CHANGE, |
|
||||||
action: function (value) { |
|
||||||
self.fireEvent(BI.DownListCombo.EVENT_CHANGE, value); |
|
||||||
self.downlistcombo.hideView(); |
|
||||||
} |
|
||||||
}, { |
|
||||||
eventName: BI.DownListPopup.EVENT_SON_VALUE_CHANGE, |
|
||||||
action: function (value, fatherValue) { |
|
||||||
self.fireEvent(BI.DownListCombo.EVENT_SON_VALUE_CHANGE, value, fatherValue); |
|
||||||
self.downlistcombo.hideView(); |
|
||||||
} |
|
||||||
}] |
|
||||||
}, |
}, |
||||||
stopPropagation: o.stopPropagation, |
items: transformItems(o.items), |
||||||
maxHeight: o.maxHeight, |
chooseType: o.chooseType, |
||||||
minWidth: o.minWidth, |
value: o.value, |
||||||
...o.popup |
listeners: [ |
||||||
} |
{ |
||||||
}); |
eventName: DownListPopup.EVENT_CHANGE, |
||||||
|
action: value => { |
||||||
this.downlistcombo.on(BI.Combo.EVENT_BEFORE_POPUPVIEW, function () { |
this.fireEvent( |
||||||
self.fireEvent(BI.DownListCombo.EVENT_BEFORE_POPUPVIEW); |
DownListCombo.EVENT_CHANGE, |
||||||
}); |
value |
||||||
}, |
); |
||||||
|
this.downlistcombo.hideView(); |
||||||
|
}, |
||||||
|
}, |
||||||
|
{ |
||||||
|
eventName: DownListPopup.EVENT_SON_VALUE_CHANGE, |
||||||
|
action: (value, fatherValue) => { |
||||||
|
this.fireEvent( |
||||||
|
DownListCombo.EVENT_SON_VALUE_CHANGE, |
||||||
|
value, |
||||||
|
fatherValue |
||||||
|
); |
||||||
|
this.downlistcombo.hideView(); |
||||||
|
}, |
||||||
|
} |
||||||
|
], |
||||||
|
}, |
||||||
|
stopPropagation: o.stopPropagation, |
||||||
|
maxHeight: o.maxHeight, |
||||||
|
minWidth: o.minWidth, |
||||||
|
...o.popup, |
||||||
|
}, |
||||||
|
}); |
||||||
|
|
||||||
hideView: function () { |
this.downlistcombo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => { |
||||||
this.downlistcombo.hideView(); |
this.fireEvent(DownListCombo.EVENT_BEFORE_POPUPVIEW); |
||||||
}, |
}); |
||||||
|
} |
||||||
|
|
||||||
showView: function (e) { |
hideView() { |
||||||
this.downlistcombo.showView(e); |
this.downlistcombo.hideView(); |
||||||
}, |
} |
||||||
|
|
||||||
populate: function (items) { |
showView(e) { |
||||||
this.popupView.populate(items); |
this.downlistcombo.showView(e); |
||||||
}, |
} |
||||||
|
|
||||||
setValue: function (v) { |
populate(items) { |
||||||
this.popupView.setValue(v); |
this.popupView.populate(items); |
||||||
}, |
} |
||||||
|
|
||||||
getValue: function () { |
setValue(v) { |
||||||
return this.popupView.getValue(); |
this.popupView.setValue(v); |
||||||
}, |
} |
||||||
|
|
||||||
adjustWidth: function () { |
getValue() { |
||||||
this.downlistcombo.adjustWidth(); |
return this.popupView.getValue(); |
||||||
}, |
} |
||||||
|
|
||||||
adjustHeight: function () { |
adjustWidth() { |
||||||
this.downlistcombo.adjustHeight(); |
this.downlistcombo.adjustWidth(); |
||||||
} |
} |
||||||
}); |
|
||||||
BI.DownListCombo.EVENT_CHANGE = "EVENT_CHANGE"; |
|
||||||
BI.DownListCombo.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; |
|
||||||
BI.DownListCombo.EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; |
|
||||||
|
|
||||||
BI.shortcut("bi.down_list_combo", BI.DownListCombo); |
adjustHeight() { |
||||||
}()); |
this.downlistcombo.adjustHeight(); |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1,51 +1,62 @@ |
|||||||
/** |
import { |
||||||
* Created by roy on 15/9/6. |
shortcut, |
||||||
*/ |
Widget, |
||||||
BI.DownListGroup = BI.inherit(BI.Widget, { |
extend, |
||||||
constants: { |
createWidget, |
||||||
iconCls: "check-mark-ha-font" |
Controller, |
||||||
}, |
Events |
||||||
_defaultConfig: function () { |
} from "@/core"; |
||||||
return BI.extend(BI.DownListGroup.superclass._defaultConfig.apply(this, arguments), { |
|
||||||
baseCls: "bi-down-list-group", |
@shortcut() |
||||||
items: [ |
export class DownListGroup extends Widget { |
||||||
{ |
static xtype = "bi.down_list_group"; |
||||||
el: {} |
|
||||||
} |
constants = { iconCls: "check-mark-ha-font" }; |
||||||
] |
|
||||||
}); |
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||||
}, |
|
||||||
_init: function () { |
_defaultConfig() { |
||||||
BI.DownListGroup.superclass._init.apply(this, arguments); |
return extend(super._defaultConfig(...arguments), { |
||||||
var o = this.options, self = this; |
baseCls: "bi-down-list-group", |
||||||
|
items: [ |
||||||
this.downlistgroup = BI.createWidget({ |
{ |
||||||
element: this, |
el: {}, |
||||||
type: "bi.button_tree", |
} |
||||||
items: o.items, |
], |
||||||
chooseType: 0, // 0单选,1多选
|
}); |
||||||
layouts: [{ |
} |
||||||
type: "bi.vertical", |
|
||||||
hgap: 0, |
_init() { |
||||||
vgap: 0 |
super._init(...arguments); |
||||||
}], |
const o = this.options; |
||||||
value: o.value |
|
||||||
}); |
this.downlistgroup = createWidget({ |
||||||
this.downlistgroup.on(BI.Controller.EVENT_CHANGE, function (type) { |
element: this, |
||||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
type: "bi.button_tree", |
||||||
if(type === BI.Events.CLICK) { |
items: o.items, |
||||||
self.fireEvent(BI.DownListGroup.EVENT_CHANGE, arguments); |
chooseType: 0, // 0单选,1多选
|
||||||
} |
layouts: [ |
||||||
}); |
{ |
||||||
}, |
type: "bi.vertical", |
||||||
getValue: function () { |
hgap: 0, |
||||||
return this.downlistgroup.getValue(); |
vgap: 0, |
||||||
}, |
} |
||||||
setValue: function (v) { |
], |
||||||
this.downlistgroup.setValue(v); |
value: o.value, |
||||||
} |
}); |
||||||
|
this.downlistgroup.on(Controller.EVENT_CHANGE, (type, ...args) => { |
||||||
|
this.fireEvent(Controller.EVENT_CHANGE, type, ...args); |
||||||
}); |
if (type === Events.CLICK) { |
||||||
BI.DownListGroup.EVENT_CHANGE = "EVENT_CHANGE"; |
this.fireEvent(DownListGroup.EVENT_CHANGE, type, ...args); |
||||||
BI.shortcut("bi.down_list_group", BI.DownListGroup); |
} |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
getValue() { |
||||||
|
return this.downlistgroup.getValue(); |
||||||
|
} |
||||||
|
|
||||||
|
setValue(v) { |
||||||
|
this.downlistgroup.setValue(v); |
||||||
|
} |
||||||
|
} |
||||||
|
@ -0,0 +1,5 @@ |
|||||||
|
export { DownListGroup } from "./group.downlist"; |
||||||
|
export { DownListItem } from "./item.downlist"; |
||||||
|
export { DownListGroupItem } from "./item.downlistgroup"; |
||||||
|
export { DownListPopup } from "./popup.downlist"; |
||||||
|
export { DownListCombo } from "./combo.downlist"; |
@ -1,102 +1,125 @@ |
|||||||
BI.DownListItem = BI.inherit(BI.BasicButton, { |
import { shortcut, extend, createWidget, isPlainObject, LogicFactory, Direction } from "@/core"; |
||||||
_defaultConfig: function () { |
import { BasicButton } from "@/base"; |
||||||
var conf = BI.DownListItem.superclass._defaultConfig.apply(this, arguments); |
|
||||||
return BI.extend(conf, { |
@shortcut() |
||||||
baseCls: "bi-down-list-item bi-list-item-active", |
export class DownListItem extends BasicButton { |
||||||
cls: "", |
static xtype = "bi.down_list_item"; |
||||||
height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, |
|
||||||
logic: { |
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||||
dynamic: true |
|
||||||
}, |
_defaultConfig() { |
||||||
selected: false, |
const conf = super._defaultConfig(...arguments); |
||||||
iconHeight: null, |
|
||||||
iconWidth: null, |
return extend(conf, { |
||||||
textHgap: 0, |
baseCls: "bi-down-list-item bi-list-item-active", |
||||||
textVgap: 0, |
cls: "", |
||||||
textLgap: 0, |
height: BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT, |
||||||
textRgap: 0 |
logic: { |
||||||
}); |
dynamic: true, |
||||||
}, |
}, |
||||||
_init: function () { |
selected: false, |
||||||
BI.DownListItem.superclass._init.apply(this, arguments); |
iconHeight: null, |
||||||
var self = this, o = this.options; |
iconWidth: null, |
||||||
this.text = BI.createWidget({ |
textHgap: 0, |
||||||
type: "bi.label", |
textVgap: 0, |
||||||
cls: "list-item-text", |
textLgap: 0, |
||||||
textAlign: "left", |
textRgap: 0, |
||||||
hgap: o.textHgap, |
}); |
||||||
vgap: o.textVgap, |
} |
||||||
lgap: o.textLgap, |
|
||||||
rgap: o.textRgap, |
_init() { |
||||||
text: o.text, |
super._init(...arguments); |
||||||
value: o.value, |
const o = this.options; |
||||||
keyword: o.keyword, |
this.text = createWidget({ |
||||||
height: o.height |
type: "bi.label", |
||||||
}); |
cls: "list-item-text", |
||||||
|
textAlign: "left", |
||||||
|
hgap: o.textHgap, |
||||||
var icon = BI.isPlainObject(o.icon) ? o.icon : { |
vgap: o.textVgap, |
||||||
type: "bi.icon", |
lgap: o.textLgap, |
||||||
width: o.iconWidth, |
rgap: o.textRgap, |
||||||
height: o.iconHeight, |
text: o.text, |
||||||
} |
value: o.value, |
||||||
|
keyword: o.keyword, |
||||||
this.icon = BI.createWidget({ |
height: o.height, |
||||||
type: "bi.center_adapt", |
}); |
||||||
width: 36, |
|
||||||
height: o.height, |
const icon = isPlainObject(o.icon) |
||||||
items: [{ |
? o.icon |
||||||
el: icon, |
: { |
||||||
}], |
type: "bi.icon", |
||||||
}); |
width: o.iconWidth, |
||||||
|
height: o.iconHeight, |
||||||
BI.createWidget(BI.extend({ |
}; |
||||||
element: this |
|
||||||
}, BI.LogicFactory.createLogic(BI.LogicFactory.createLogicTypeByDirection(BI.Direction.Left), BI.extend(o.logic, { |
this.icon = createWidget({ |
||||||
items: BI.LogicFactory.createLogicItemsByDirection(BI.Direction.Left, this.icon, this.text) |
type: "bi.center_adapt", |
||||||
})))); |
width: 36, |
||||||
}, |
height: o.height, |
||||||
|
items: [ |
||||||
setValue: function () { |
{ |
||||||
if (!this.isReadOnly()) { |
el: icon, |
||||||
this.text.setValue.apply(this.text, arguments); |
} |
||||||
} |
], |
||||||
}, |
}); |
||||||
|
|
||||||
getValue: function () { |
createWidget( |
||||||
return this.text.getValue(); |
extend( |
||||||
}, |
{ |
||||||
|
element: this, |
||||||
setText: function () { |
}, |
||||||
this.text.setText.apply(this.text, arguments); |
LogicFactory.createLogic( |
||||||
}, |
LogicFactory.createLogicTypeByDirection(Direction.Left), |
||||||
|
extend(o.logic, { |
||||||
getText: function () { |
items: LogicFactory.createLogicItemsByDirection( |
||||||
return this.text.getText(); |
Direction.Left, |
||||||
}, |
this.icon, |
||||||
|
this.text |
||||||
doClick: function () { |
), |
||||||
BI.DownListItem.superclass.doClick.apply(this, arguments); |
}) |
||||||
if (this.isValid()) { |
) |
||||||
this.fireEvent(BI.DownListItem.EVENT_CHANGE, this.getValue(), this); |
) |
||||||
} |
); |
||||||
}, |
} |
||||||
|
|
||||||
doRedMark: function () { |
setValue() { |
||||||
this.text.doRedMark.apply(this.text, arguments); |
if (!this.isReadOnly()) { |
||||||
}, |
this.text.setValue(...arguments); |
||||||
|
} |
||||||
unRedMark: function () { |
} |
||||||
this.text.unRedMark.apply(this.text, arguments); |
|
||||||
}, |
getValue() { |
||||||
|
return this.text.getValue(); |
||||||
doHighLight: function () { |
} |
||||||
this.text.doHighLight.apply(this.text, arguments); |
|
||||||
}, |
setText() { |
||||||
|
this.text.setText(...arguments); |
||||||
unHighLight: function () { |
} |
||||||
this.text.unHighLight.apply(this.text, arguments); |
|
||||||
} |
getText() { |
||||||
}); |
return this.text.getText(); |
||||||
BI.DownListItem.EVENT_CHANGE = "EVENT_CHANGE"; |
} |
||||||
BI.shortcut("bi.down_list_item", BI.DownListItem); |
|
||||||
|
doClick() { |
||||||
|
super.doClick(...arguments); |
||||||
|
if (this.isValid()) { |
||||||
|
this.fireEvent(DownListItem.EVENT_CHANGE, this.getValue(), this); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
doRedMark() { |
||||||
|
this.text.doRedMark(...arguments); |
||||||
|
} |
||||||
|
|
||||||
|
unRedMark() { |
||||||
|
this.text.unRedMark(...arguments); |
||||||
|
} |
||||||
|
|
||||||
|
doHighLight() { |
||||||
|
this.text.doHighLight(...arguments); |
||||||
|
} |
||||||
|
|
||||||
|
unHighLight() { |
||||||
|
this.text.unHighLight(...arguments); |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1,118 +1,141 @@ |
|||||||
BI.DownListGroupItem = BI.inherit(BI.BasicButton, { |
import { |
||||||
_defaultConfig: function () { |
shortcut, |
||||||
var conf = BI.DownListGroupItem.superclass._defaultConfig.apply(this, arguments); |
extend, |
||||||
return BI.extend(conf, { |
createWidget, |
||||||
baseCls: (conf.baseCls || "") + " bi-down-list-group-item", |
isNotNull, |
||||||
logic: { |
isArray, |
||||||
dynamic: false |
any, |
||||||
}, |
contains, |
||||||
// invalid: true,
|
isPlainObject, |
||||||
iconCls1: "dot-e-font", |
first, |
||||||
icon: "", |
BlankSplitChar |
||||||
iconCls2: "pull-right-e-font" |
} from "@/core"; |
||||||
}); |
import { BasicButton } from "@/base"; |
||||||
}, |
|
||||||
render: function () { |
@shortcut() |
||||||
var o = this.options; |
export class DownListGroupItem extends BasicButton { |
||||||
var self = this; |
static xtype = "bi.down_list_group_item"; |
||||||
this.text = BI.createWidget({ |
|
||||||
type: "bi.label", |
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||||
cls: "list-group-item-text", |
|
||||||
textAlign: "left", |
_defaultConfig() { |
||||||
text: o.text, |
const conf = super._defaultConfig(...arguments); |
||||||
value: o.value, |
|
||||||
height: o.height, |
return extend(conf, { |
||||||
}); |
baseCls: `${conf.baseCls || ""} bi-down-list-group-item`, |
||||||
|
logic: { |
||||||
if (BI.isPlainObject(o.icon)) { |
dynamic: false, |
||||||
this.icon1 = BI.createWidget({ |
}, |
||||||
width: 36, |
// invalid: true,
|
||||||
height: o.height, |
iconCls1: "dot-e-font", |
||||||
type: "bi.center_adapt", |
icon: "", |
||||||
items: [o.icon], |
iconCls2: "pull-right-e-font", |
||||||
}); |
}); |
||||||
} else { |
} |
||||||
this.icon1 = BI.createWidget({ |
|
||||||
type: "bi.icon_button", |
render() { |
||||||
cls: o.iconCls1, |
const o = this.options; |
||||||
width: 36, |
this.text = createWidget({ |
||||||
height: o.height, |
type: "bi.label", |
||||||
iconHeight: o.iconHeight, |
cls: "list-group-item-text", |
||||||
iconWidth: 36, |
textAlign: "left", |
||||||
disableSelected: true, |
text: o.text, |
||||||
selected: this._digest(o.value), |
value: o.value, |
||||||
}); |
height: o.height, |
||||||
} |
}); |
||||||
|
|
||||||
this.icon2 = BI.createWidget({ |
if (isPlainObject(o.icon)) { |
||||||
type: "bi.icon_button", |
this.icon1 = createWidget({ |
||||||
cls: o.iconCls2, |
width: 36, |
||||||
width: 24, |
height: o.height, |
||||||
forceNotSelected: true |
type: "bi.center_adapt", |
||||||
}); |
items: [o.icon], |
||||||
|
}); |
||||||
this.element.hover(function () { |
} else { |
||||||
if (self.isEnabled()) { |
this.icon1 = createWidget({ |
||||||
self.hover(); |
type: "bi.icon_button", |
||||||
} |
cls: o.iconCls1, |
||||||
}, function () { |
width: 36, |
||||||
if (self.isEnabled()) { |
height: o.height, |
||||||
self.dishover(); |
iconHeight: o.iconHeight, |
||||||
} |
iconWidth: 36, |
||||||
}); |
disableSelected: true, |
||||||
|
selected: this._digest(o.value), |
||||||
return { |
}); |
||||||
type: "bi.horizontal_fill", |
} |
||||||
columnSize: [36, "fill", 24], |
|
||||||
items: [this.icon1, this.text, this.icon2] |
this.icon2 = createWidget({ |
||||||
} |
type: "bi.icon_button", |
||||||
}, |
cls: o.iconCls2, |
||||||
|
width: 24, |
||||||
_getLevel: function () { |
forceNotSelected: true, |
||||||
var child = BI.first(this.options.childValues); |
}); |
||||||
return BI.isNotNull(child) ? (child + "").split(BI.BlankSplitChar).length : 0; |
|
||||||
}, |
this.element.hover( |
||||||
|
() => { |
||||||
_digest: function (v) { |
if (this.isEnabled()) { |
||||||
var self = this, o = this.options; |
this.hover(); |
||||||
v = BI.isArray(v) ? v : [v]; |
} |
||||||
var level = this._getLevel(); |
}, |
||||||
return BI.any(v, function (idx, value) { |
() => { |
||||||
return BI.contains(o.childValues, (value + "").split(BI.BlankSplitChar).slice(0, level).join(BI.BlankSplitChar)); |
if (this.isEnabled()) { |
||||||
}); |
this.dishover(); |
||||||
}, |
} |
||||||
|
} |
||||||
hover: function () { |
); |
||||||
BI.DownListGroupItem.superclass.hover.apply(this, arguments); |
|
||||||
this.icon1.element.addClass("hover"); |
return { |
||||||
this.icon2.element.addClass("hover"); |
type: "bi.horizontal_fill", |
||||||
|
columnSize: [36, "fill", 24], |
||||||
}, |
items: [this.icon1, this.text, this.icon2], |
||||||
|
}; |
||||||
dishover: function () { |
} |
||||||
BI.DownListGroupItem.superclass.dishover.apply(this, arguments); |
|
||||||
this.icon1.element.removeClass("hover"); |
_getLevel() { |
||||||
this.icon2.element.removeClass("hover"); |
const child = first(this.options.childValues); |
||||||
}, |
|
||||||
|
return isNotNull(child) ? (`${child}`).split(BlankSplitChar).length : 0; |
||||||
doClick: function () { |
} |
||||||
BI.DownListGroupItem.superclass.doClick.apply(this, arguments); |
|
||||||
if (this.isValid()) { |
_digest(v) { |
||||||
this.fireEvent(BI.DownListGroupItem.EVENT_CHANGE, this.getValue()); |
const o = this.options; |
||||||
} |
v = isArray(v) ? v : [v]; |
||||||
}, |
const level = this._getLevel(); |
||||||
|
|
||||||
doRedMark: function () { |
return any(v, (idx, value) => contains( |
||||||
this.text.doRedMark.apply(this.text, arguments); |
o.childValues, |
||||||
}, |
(`${value}`).split(BlankSplitChar).slice(0, level).join(BlankSplitChar) |
||||||
|
)); |
||||||
unRedMark: function () { |
} |
||||||
this.text.unRedMark.apply(this.text, arguments); |
|
||||||
}, |
hover() { |
||||||
|
super.hover(...arguments); |
||||||
setValue: function (v) { |
this.icon1.element.addClass("hover"); |
||||||
this.icon1.setSelected && this.icon1.setSelected(this._digest(v)); |
this.icon2.element.addClass("hover"); |
||||||
}, |
} |
||||||
}); |
|
||||||
BI.DownListGroupItem.EVENT_CHANGE = "EVENT_CHANGE"; |
dishover() { |
||||||
BI.shortcut("bi.down_list_group_item", BI.DownListGroupItem); |
super.dishover(...arguments); |
||||||
|
this.icon1.element.removeClass("hover"); |
||||||
|
this.icon2.element.removeClass("hover"); |
||||||
|
} |
||||||
|
|
||||||
|
doClick() { |
||||||
|
super.doClick(...arguments); |
||||||
|
if (this.isValid()) { |
||||||
|
this.fireEvent(DownListGroupItem.EVENT_CHANGE, this.getValue()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
doRedMark() { |
||||||
|
this.text.doRedMark(...arguments); |
||||||
|
} |
||||||
|
|
||||||
|
unRedMark() { |
||||||
|
this.text.unRedMark(...arguments); |
||||||
|
} |
||||||
|
|
||||||
|
setValue(v) { |
||||||
|
this.icon1.setSelected && this.icon1.setSelected(this._digest(v)); |
||||||
|
} |
||||||
|
} |
||||||
|
@ -1,301 +1,332 @@ |
|||||||
/** |
import { |
||||||
* Created by roy on 15/9/8. |
shortcut, |
||||||
* 处理popup中的item分组样式 |
extend, |
||||||
* 一个item分组中的成员大于一时,该分组设置为单选,并且默认状态第一个成员设置为已选择项 |
createWidget, |
||||||
*/ |
createItems, |
||||||
BI.DownListPopup = BI.inherit(BI.Pane, { |
isNotNull, |
||||||
constants: { |
contains, |
||||||
nextIcon: "pull-right-e-font", |
each, |
||||||
height: 24, |
isEmpty, |
||||||
iconHeight: 12, |
map, |
||||||
iconWidth: 12, |
isNotEmptyString, |
||||||
hgap: 0, |
isNotEmptyArray, |
||||||
vgap: 0, |
some, |
||||||
border: 1 |
deepClone |
||||||
}, |
} from "@/core"; |
||||||
_defaultConfig: function () { |
import { Pane, ButtonTree } from "@/base"; |
||||||
var conf = BI.DownListPopup.superclass._defaultConfig.apply(this, arguments); |
|
||||||
return BI.extend(conf, { |
|
||||||
baseCls: "bi-down-list-popup", |
|
||||||
items: [], |
|
||||||
chooseType: BI.Selection.Multi |
|
||||||
}); |
|
||||||
}, |
|
||||||
_init: function () { |
|
||||||
BI.DownListPopup.superclass._init.apply(this, arguments); |
|
||||||
this.singleValues = []; |
|
||||||
this.childValueMap = {}; |
|
||||||
this.fatherValueMap = {}; |
|
||||||
this.items = []; |
|
||||||
var self = this, o = this.options, children = this._createPopupItems(o.items); |
|
||||||
this.popup = BI.createWidget({ |
|
||||||
type: "bi.button_tree", |
|
||||||
items: BI.createItems(children, |
|
||||||
{}, { |
|
||||||
adjustLength: -2 |
|
||||||
} |
|
||||||
), |
|
||||||
layouts: [{ |
|
||||||
type: "bi.vertical", |
|
||||||
hgap: this.constants.hgap, |
|
||||||
vgap: this.constants.vgap |
|
||||||
}], |
|
||||||
value: this._digest(o.value), |
|
||||||
chooseType: o.chooseType |
|
||||||
}); |
|
||||||
|
|
||||||
this.popup.on(BI.ButtonTree.EVENT_CHANGE, function (value, object) { |
@shortcut() |
||||||
var changedValue = value; |
export class DownListPopup extends Pane { |
||||||
if (BI.isNotNull(self.childValueMap[value])) { |
static xtype = "bi.down_list_popup"; |
||||||
changedValue = self.childValueMap[value]; |
|
||||||
self.fireEvent(BI.DownListPopup.EVENT_SON_VALUE_CHANGE, changedValue, self.fatherValueMap[value]); |
|
||||||
} else { |
|
||||||
self.fireEvent(BI.DownListPopup.EVENT_CHANGE, changedValue, object); |
|
||||||
} |
|
||||||
|
|
||||||
|
constants = { |
||||||
|
nextIcon: "pull-right-e-font", |
||||||
|
height: 24, |
||||||
|
iconHeight: 12, |
||||||
|
iconWidth: 12, |
||||||
|
hgap: 0, |
||||||
|
vgap: 0, |
||||||
|
border: 1, |
||||||
|
}; |
||||||
|
|
||||||
if (!BI.contains(self.singleValues, changedValue)) { |
static EVENT_CHANGE = "EVENT_CHANGE"; |
||||||
var item = self.getValue(); |
static EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; |
||||||
var result = []; |
|
||||||
BI.each(item, function (i, valueObject) { |
|
||||||
if (valueObject.value != changedValue) { |
|
||||||
result.push(valueObject); |
|
||||||
} |
|
||||||
}); |
|
||||||
self.setValue(result); |
|
||||||
} |
|
||||||
|
|
||||||
}); |
_defaultConfig() { |
||||||
|
const conf = super._defaultConfig(...arguments); |
||||||
|
|
||||||
|
return extend(conf, { |
||||||
|
baseCls: "bi-down-list-popup", |
||||||
|
items: [], |
||||||
|
chooseType: Selection.Multi, |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
BI.createWidget({ |
_init() { |
||||||
type: "bi.vertical", |
super._init(...arguments); |
||||||
element: this, |
this.singleValues = []; |
||||||
items: [this.popup], |
this.childValueMap = {}; |
||||||
vgap: 5 |
this.fatherValueMap = {}; |
||||||
}); |
this.items = []; |
||||||
|
const o = this.options, |
||||||
|
children = this._createPopupItems(o.items); |
||||||
|
this.popup = createWidget({ |
||||||
|
type: "bi.button_tree", |
||||||
|
items: createItems( |
||||||
|
children, |
||||||
|
{}, |
||||||
|
{ |
||||||
|
adjustLength: -2, |
||||||
|
} |
||||||
|
), |
||||||
|
layouts: [ |
||||||
|
{ |
||||||
|
type: "bi.vertical", |
||||||
|
hgap: this.constants.hgap, |
||||||
|
vgap: this.constants.vgap, |
||||||
|
} |
||||||
|
], |
||||||
|
value: this._digest(o.value), |
||||||
|
chooseType: o.chooseType, |
||||||
|
}); |
||||||
|
|
||||||
}, |
this.popup.on(ButtonTree.EVENT_CHANGE, (value, object) => { |
||||||
_createPopupItems: function (items) { |
let changedValue = value; |
||||||
var self = this, result = []; |
if (isNotNull(this.childValueMap[value])) { |
||||||
// 不能修改populate进来的item的引用
|
changedValue = this.childValueMap[value]; |
||||||
BI.each(items, function (i, it) { |
this.fireEvent( |
||||||
var item_done = { |
DownListPopup.EVENT_SON_VALUE_CHANGE, |
||||||
type: "bi.down_list_group", |
changedValue, |
||||||
items: [] |
this.fatherValueMap[value] |
||||||
}; |
); |
||||||
|
} else { |
||||||
|
this.fireEvent(DownListPopup.EVENT_CHANGE, changedValue, object); |
||||||
|
} |
||||||
|
|
||||||
var storeItem = []; |
if (!contains(this.singleValues, changedValue)) { |
||||||
|
const item = this.getValue(); |
||||||
|
const result = []; |
||||||
|
each(item, (i, valueObject) => { |
||||||
|
if (valueObject.value !== changedValue) { |
||||||
|
result.push(valueObject); |
||||||
|
} |
||||||
|
}); |
||||||
|
this.setValue(result); |
||||||
|
} |
||||||
|
}); |
||||||
|
|
||||||
BI.each(it, function (i, sourceItem) { |
createWidget({ |
||||||
var item = BI.extend({}, sourceItem); |
type: "bi.vertical", |
||||||
if (BI.isNotEmptyArray(sourceItem.children) && !BI.isEmpty(sourceItem.el)) { |
element: this, |
||||||
item.type = "bi.combo_group"; |
items: [this.popup], |
||||||
// popup未初始化返回的是options中的value, 在经过buttontree的getValue concat之后,无法区分值来自options
|
vgap: 5, |
||||||
// 还是item自身, 这边控制defaultInit为true来避免这个问题
|
}); |
||||||
item.isDefaultInit = true; |
} |
||||||
item.cls = "down-list-group"; |
|
||||||
item.trigger = "hover"; |
|
||||||
item.isNeedAdjustWidth = false; |
|
||||||
item.el = sourceItem.el; |
|
||||||
item.el.title = sourceItem.el.title || sourceItem.el.text; |
|
||||||
item.el.type = "bi.down_list_group_item"; |
|
||||||
item.el.logic = { |
|
||||||
dynamic: true |
|
||||||
}; |
|
||||||
item.el.height = sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; |
|
||||||
item.el.iconCls2 = self.constants.nextIcon; |
|
||||||
item.popup = { |
|
||||||
lgap: 1, |
|
||||||
el: { |
|
||||||
type: "bi.button_tree", |
|
||||||
chooseType: 0, |
|
||||||
layouts: [{ |
|
||||||
type: "bi.vertical" |
|
||||||
}] |
|
||||||
|
|
||||||
}, |
_createPopupItems(items) { |
||||||
innerVgap: 5, |
const result = []; |
||||||
maxHeight: 378 |
// 不能修改populate进来的item的引用
|
||||||
}; |
each(items, (i, it) => { |
||||||
self._createChildren(item, sourceItem); |
const item_done = { |
||||||
} else { |
type: "bi.down_list_group", |
||||||
item.type = sourceItem.type || "bi.down_list_item"; |
items: [], |
||||||
item.title = sourceItem.title || sourceItem.text; |
}; |
||||||
item.textRgap = 10; |
|
||||||
item.isNeedAdjustWidth = false; |
|
||||||
item.logic = { |
|
||||||
dynamic: true |
|
||||||
}; |
|
||||||
} |
|
||||||
var el_done = {}; |
|
||||||
el_done.el = item; |
|
||||||
item_done.items.push(el_done); |
|
||||||
storeItem.push(item); |
|
||||||
}); |
|
||||||
if (self._isGroup(item_done.items)) { |
|
||||||
BI.each(item_done.items, function (i, item) { |
|
||||||
self.singleValues.push(item.el.value); |
|
||||||
}); |
|
||||||
} |
|
||||||
|
|
||||||
result.push(item_done); |
const storeItem = []; |
||||||
self.items.push(storeItem); |
|
||||||
if (self._needSpliter(i, items.length)) { |
|
||||||
var spliter_container = BI.createWidget({ |
|
||||||
type: "bi.vertical", |
|
||||||
items: [{ |
|
||||||
el: { |
|
||||||
type: "bi.layout", |
|
||||||
cls: "bi-down-list-spliter bi-split-top cursor-pointer", |
|
||||||
height: 0 |
|
||||||
} |
|
||||||
|
|
||||||
}], |
each(it, (i, sourceItem) => { |
||||||
cls: "bi-down-list-spliter-container cursor-pointer", |
const item = extend({}, sourceItem); |
||||||
vgap: 5, |
if (isNotEmptyArray(sourceItem.children) && !isEmpty(sourceItem.el)) { |
||||||
hgap: 12 |
item.type = "bi.combo_group"; |
||||||
}); |
// popup未初始化返回的是options中的value, 在经过buttontree的getValue concat之后,无法区分值来自options
|
||||||
result.push(spliter_container); |
// 还是item自身, 这边控制defaultInit为true来避免这个问题
|
||||||
} |
item.isDefaultInit = true; |
||||||
}); |
item.cls = "down-list-group"; |
||||||
return result; |
item.trigger = "hover"; |
||||||
}, |
item.isNeedAdjustWidth = false; |
||||||
|
item.el = sourceItem.el; |
||||||
|
item.el.title = sourceItem.el.title || sourceItem.el.text; |
||||||
|
item.el.type = "bi.down_list_group_item"; |
||||||
|
item.el.logic = { |
||||||
|
dynamic: true, |
||||||
|
}; |
||||||
|
item.el.height = |
||||||
|
sourceItem.el.height || BI.SIZE_CONSANTS.LIST_ITEM_HEIGHT; |
||||||
|
item.el.iconCls2 = this.constants.nextIcon; |
||||||
|
item.popup = { |
||||||
|
lgap: 1, |
||||||
|
el: { |
||||||
|
type: "bi.button_tree", |
||||||
|
chooseType: 0, |
||||||
|
layouts: [ |
||||||
|
{ |
||||||
|
type: "bi.vertical", |
||||||
|
} |
||||||
|
], |
||||||
|
}, |
||||||
|
innerVgap: 5, |
||||||
|
maxHeight: 378, |
||||||
|
}; |
||||||
|
this._createChildren(item, sourceItem); |
||||||
|
} else { |
||||||
|
item.type = sourceItem.type || "bi.down_list_item"; |
||||||
|
item.title = sourceItem.title || sourceItem.text; |
||||||
|
item.textRgap = 10; |
||||||
|
item.isNeedAdjustWidth = false; |
||||||
|
item.logic = { |
||||||
|
dynamic: true, |
||||||
|
}; |
||||||
|
} |
||||||
|
const el_done = {}; |
||||||
|
el_done.el = item; |
||||||
|
item_done.items.push(el_done); |
||||||
|
storeItem.push(item); |
||||||
|
}); |
||||||
|
if (this._isGroup(item_done.items)) { |
||||||
|
each(item_done.items, (i, item) => { |
||||||
|
this.singleValues.push(item.el.value); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
_createChildren: function (targetItem, sourceItem) { |
result.push(item_done); |
||||||
var self = this; |
this.items.push(storeItem); |
||||||
targetItem.el.childValues = []; |
if (this._needSpliter(i, items.length)) { |
||||||
targetItem.items = targetItem.children = []; |
const spliter_container = createWidget({ |
||||||
BI.each(sourceItem.children, function (i, child) { |
type: "bi.vertical", |
||||||
var item = BI.extend({}, child); |
items: [ |
||||||
var fatherValue = BI.deepClone(targetItem.el.value); |
{ |
||||||
var childValue = BI.deepClone(item.value); |
el: { |
||||||
self.singleValues.push(item.value); |
type: "bi.layout", |
||||||
item.type = item.type || "bi.down_list_item"; |
cls: "bi-down-list-spliter bi-split-top cursor-pointer", |
||||||
item.extraCls = " child-down-list-item"; |
height: 0, |
||||||
item.title = item.title || item.text; |
}, |
||||||
item.textRgap = 10; |
} |
||||||
item.isNeedAdjustWidth = false; |
], |
||||||
item.logic = { |
cls: "bi-down-list-spliter-container cursor-pointer", |
||||||
dynamic: true |
vgap: 5, |
||||||
}; |
hgap: 12, |
||||||
item.father = fatherValue; |
}); |
||||||
item.childValue = item.value; |
result.push(spliter_container); |
||||||
self.fatherValueMap[self._createChildValue(fatherValue, childValue)] = fatherValue; |
} |
||||||
self.childValueMap[self._createChildValue(fatherValue, childValue)] = childValue; |
}); |
||||||
item.value = self._createChildValue(fatherValue, childValue); |
|
||||||
targetItem.el.childValues.push(item.value); |
return result; |
||||||
targetItem.items.push(item); |
} |
||||||
}); |
|
||||||
}, |
|
||||||
|
|
||||||
_isGroup: function (i) { |
_createChildren(targetItem, sourceItem) { |
||||||
return i.length > 1; |
targetItem.el.childValues = []; |
||||||
}, |
targetItem.items = targetItem.children = []; |
||||||
|
each(sourceItem.children, (i, child) => { |
||||||
|
const item = extend({}, child); |
||||||
|
const fatherValue = deepClone(targetItem.el.value); |
||||||
|
const childValue = deepClone(item.value); |
||||||
|
this.singleValues.push(item.value); |
||||||
|
item.type = item.type || "bi.down_list_item"; |
||||||
|
item.extraCls = " child-down-list-item"; |
||||||
|
item.title = item.title || item.text; |
||||||
|
item.textRgap = 10; |
||||||
|
item.isNeedAdjustWidth = false; |
||||||
|
item.logic = { |
||||||
|
dynamic: true, |
||||||
|
}; |
||||||
|
item.father = fatherValue; |
||||||
|
item.childValue = item.value; |
||||||
|
this.fatherValueMap[this._createChildValue(fatherValue, childValue)] = |
||||||
|
fatherValue; |
||||||
|
this.childValueMap[this._createChildValue(fatherValue, childValue)] = |
||||||
|
childValue; |
||||||
|
item.value = this._createChildValue(fatherValue, childValue); |
||||||
|
targetItem.el.childValues.push(item.value); |
||||||
|
targetItem.items.push(item); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
_needSpliter: function (i, itemLength) { |
_isGroup(i) { |
||||||
return i < itemLength - 1; |
return i.length > 1; |
||||||
}, |
} |
||||||
|
|
||||||
_createChildValue: function (fatherValue, childValue) { |
_needSpliter(i, itemLength) { |
||||||
return fatherValue + BI.BlankSplitChar + childValue; |
return i < itemLength - 1; |
||||||
}, |
} |
||||||
|
|
||||||
_digest: function (valueItem) { |
_createChildValue(fatherValue, childValue) { |
||||||
var self = this; |
return fatherValue + BI.BlankSplitChar + childValue; |
||||||
var valueArray = []; |
} |
||||||
BI.each(valueItem, function (i, item) { |
|
||||||
var value; |
|
||||||
if (BI.isNotNull(item.childValue)) { |
|
||||||
value = self._createChildValue(item.value, item.childValue); |
|
||||||
} else { |
|
||||||
value = item.value; |
|
||||||
} |
|
||||||
valueArray.push(value); |
|
||||||
} |
|
||||||
); |
|
||||||
return valueArray; |
|
||||||
}, |
|
||||||
|
|
||||||
_checkValues: function (values) { |
_digest(valueItem) { |
||||||
var value = []; |
const valueArray = []; |
||||||
BI.each(this.items, function (idx, itemGroup) { |
each(valueItem, (i, item) => { |
||||||
BI.each(itemGroup, function (id, item) { |
let value; |
||||||
if(BI.isNotNull(item.children)) { |
if (isNotNull(item.childValue)) { |
||||||
var childValues = BI.map(item.children, "value"); |
value = this._createChildValue(item.value, item.childValue); |
||||||
var v = joinValue(childValues, values[idx]); |
} else { |
||||||
if(BI.isNotEmptyString(v)) { |
value = item.value; |
||||||
value.push(v); |
} |
||||||
} |
valueArray.push(value); |
||||||
}else{ |
}); |
||||||
if(item.value === values[idx][0]) { |
|
||||||
value.push(values[idx][0]); |
return valueArray; |
||||||
} |
} |
||||||
} |
|
||||||
}); |
|
||||||
}); |
|
||||||
return value; |
|
||||||
|
|
||||||
function joinValue (sources, targets) { |
_checkValues(values) { |
||||||
var value = ""; |
const value = []; |
||||||
BI.some(sources, function (idx, s) { |
each(this.items, (idx, itemGroup) => { |
||||||
return BI.some(targets, function (id, t) { |
each(itemGroup, (id, item) => { |
||||||
if(s === t) { |
if (isNotNull(item.children)) { |
||||||
value = s; |
const childValues = map(item.children, "value"); |
||||||
return true; |
const v = joinValue(childValues, values[idx]); |
||||||
} |
if (isNotEmptyString(v)) { |
||||||
}); |
value.push(v); |
||||||
}); |
} |
||||||
return value; |
} else { |
||||||
} |
if (item.value === values[idx][0]) { |
||||||
}, |
value.push(values[idx][0]); |
||||||
|
} |
||||||
|
} |
||||||
|
}); |
||||||
|
}); |
||||||
|
|
||||||
|
return value; |
||||||
|
|
||||||
populate: function (items) { |
function joinValue(sources, targets) { |
||||||
BI.DownListPopup.superclass.populate.apply(this, arguments); |
let value = ""; |
||||||
this.items = []; |
some(sources, (idx, s) => some(targets, (id, t) => { |
||||||
this.childValueMap = {}; |
if (s === t) { |
||||||
this.fatherValueMap = {}; |
value = s; |
||||||
this.singleValues = []; |
|
||||||
var children = this._createPopupItems(items); |
return true; |
||||||
var popupItem = BI.createItems(children, |
} |
||||||
{}, { |
})); |
||||||
adjustLength: -2 |
|
||||||
} |
return value; |
||||||
); |
} |
||||||
this.popup.populate(popupItem); |
} |
||||||
}, |
|
||||||
|
|
||||||
setValue: function (valueItem) { |
populate(items) { |
||||||
this.popup.setValue(this._digest(valueItem)); |
super.populate(...arguments); |
||||||
}, |
this.items = []; |
||||||
|
this.childValueMap = {}; |
||||||
|
this.fatherValueMap = {}; |
||||||
|
this.singleValues = []; |
||||||
|
const children = this._createPopupItems(items); |
||||||
|
const popupItem = createItems( |
||||||
|
children, |
||||||
|
{}, |
||||||
|
{ |
||||||
|
adjustLength: -2, |
||||||
|
} |
||||||
|
); |
||||||
|
this.popup.populate(popupItem); |
||||||
|
} |
||||||
|
|
||||||
_getValue: function () { |
setValue(valueItem) { |
||||||
var v = []; |
this.popup.setValue(this._digest(valueItem)); |
||||||
BI.each(this.popup.getAllButtons(), function (i, item) { |
} |
||||||
i % 2 === 0 && v.push(item.getValue()); |
|
||||||
}); |
|
||||||
return v; |
|
||||||
}, |
|
||||||
|
|
||||||
getValue: function () { |
_getValue() { |
||||||
var self = this, result = []; |
const v = []; |
||||||
var values = this._checkValues(this._getValue()); |
each(this.popup.getAllButtons(), (i, item) => { |
||||||
BI.each(values, function (i, value) { |
i % 2 === 0 && v.push(item.getValue()); |
||||||
var valueItem = {}; |
}); |
||||||
if (BI.isNotNull(self.childValueMap[value])) { |
|
||||||
var fartherValue = self.fatherValueMap[value]; |
return v; |
||||||
valueItem.childValue = self.childValueMap[value]; |
} |
||||||
valueItem.value = fartherValue; |
|
||||||
} else { |
|
||||||
valueItem.value = value; |
|
||||||
} |
|
||||||
result.push(valueItem); |
|
||||||
}); |
|
||||||
return result; |
|
||||||
} |
|
||||||
|
|
||||||
|
getValue() { |
||||||
}); |
const result = []; |
||||||
|
const values = this._checkValues(this._getValue()); |
||||||
BI.DownListPopup.EVENT_CHANGE = "EVENT_CHANGE"; |
each(values, (i, value) => { |
||||||
BI.DownListPopup.EVENT_SON_VALUE_CHANGE = "EVENT_SON_VALUE_CHANGE"; |
const valueItem = {}; |
||||||
BI.shortcut("bi.down_list_popup", BI.DownListPopup); |
if (isNotNull(this.childValueMap[value])) { |
||||||
|
const fartherValue = this.fatherValueMap[value]; |
||||||
|
valueItem.childValue = this.childValueMap[value]; |
||||||
|
valueItem.value = fartherValue; |
||||||
|
} else { |
||||||
|
valueItem.value = value; |
||||||
|
} |
||||||
|
result.push(valueItem); |
||||||
|
}); |
||||||
|
|
||||||
|
return result; |
||||||
|
} |
||||||
|
} |
||||||
|
@ -0,0 +1,2 @@ |
|||||||
|
export { AccurateCalculationModel } from "./model.accuratecalculation"; |
||||||
|
export { IntervalSlider } from "./intervalslider"; |
@ -1,196 +1,217 @@ |
|||||||
BI.SignTextEditor = BI.inherit(BI.Widget, { |
import { |
||||||
_defaultConfig: function () { |
shortcut, |
||||||
var conf = BI.SignTextEditor.superclass._defaultConfig.apply(this, arguments); |
Widget, |
||||||
return BI.extend(conf, { |
extend, |
||||||
baseCls: (conf.baseCls || "") + " bi-sign-initial-editor", |
emptyFn, |
||||||
validationChecker: BI.emptyFn, |
createWidget, |
||||||
|
nextTick, |
||||||
|
Controller, |
||||||
|
AbsoluteLayout, |
||||||
|
VerticalLayout, |
||||||
|
bind, |
||||||
|
isEmpty, |
||||||
|
isKey |
||||||
|
} from "@/core"; |
||||||
|
import { TextButton, Editor } from "@/base"; |
||||||
|
|
||||||
|
@shortcut() |
||||||
|
export class SignTextEditor extends Widget { |
||||||
|
static xtype = "bi.sign_text_editor"; |
||||||
|
|
||||||
|
static EVENT_CONFIRM = "EVENT_CONFIRM"; |
||||||
|
static EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM"; |
||||||
|
static EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL"; |
||||||
|
|
||||||
|
_defaultConfig() { |
||||||
|
const conf = super._defaultConfig(...arguments); |
||||||
|
|
||||||
|
return extend(conf, { |
||||||
|
baseCls: `${conf.baseCls || ""} bi-sign-initial-editor`, |
||||||
|
validationChecker: emptyFn, |
||||||
text: "", |
text: "", |
||||||
height: 24 |
height: 24, |
||||||
}); |
}); |
||||||
}, |
} |
||||||
|
|
||||||
_init: function () { |
_init() { |
||||||
BI.SignTextEditor.superclass._init.apply(this, arguments); |
super._init(...arguments); |
||||||
var self = this, o = this.options; |
const o = this.options; |
||||||
this.editor = BI.createWidget({ |
this.editor = createWidget({ |
||||||
type: "bi.editor", |
type: Editor.xtype, |
||||||
simple: o.simple, |
simple: o.simple, |
||||||
height: o.height, |
height: o.height, |
||||||
hgap: 4, |
hgap: 4, |
||||||
vgap: 2, |
vgap: 2, |
||||||
value: o.value, |
value: o.value, |
||||||
validationChecker: o.validationChecker, |
validationChecker: o.validationChecker, |
||||||
allowBlank: false |
allowBlank: false, |
||||||
}); |
}); |
||||||
this.text = BI.createWidget({ |
this.text = createWidget({ |
||||||
type: "bi.text_button", |
type: TextButton.xtype, |
||||||
cls: "sign-editor-text", |
cls: "sign-editor-text", |
||||||
title: function () { |
title: () => this.getValue(), |
||||||
return self.getValue(); |
|
||||||
}, |
|
||||||
textAlign: o.textAlign, |
textAlign: o.textAlign, |
||||||
height: o.height, |
height: o.height, |
||||||
hgap: 4, |
hgap: 4, |
||||||
handler: function () { |
handler: () => { |
||||||
self._showInput(); |
this._showInput(); |
||||||
self.editor.focus(); |
this.editor.focus(); |
||||||
self.editor.selectAll(); |
this.editor.selectAll(); |
||||||
} |
}, |
||||||
}); |
}); |
||||||
this.text.on(BI.TextButton.EVENT_CHANGE, function () { |
this.text.on(TextButton.EVENT_CHANGE, () => { |
||||||
BI.nextTick(function () { |
nextTick(() => { |
||||||
self.fireEvent(BI.SignTextEditor.EVENT_CLICK_LABEL); |
this.fireEvent(SignTextEditor.EVENT_CLICK_LABEL); |
||||||
}); |
}); |
||||||
}); |
}); |
||||||
BI.createWidget({ |
createWidget({ |
||||||
type: "bi.absolute", |
type: AbsoluteLayout.xtype, |
||||||
element: this, |
element: this, |
||||||
items: [{ |
items: [ |
||||||
el: this.text, |
{ |
||||||
left: 0, |
el: this.text, |
||||||
right: 0, |
left: 0, |
||||||
top: 0, |
right: 0, |
||||||
bottom: 0 |
top: 0, |
||||||
}] |
bottom: 0, |
||||||
|
} |
||||||
|
], |
||||||
}); |
}); |
||||||
this.editor.on(BI.Controller.EVENT_CHANGE, function () { |
this.editor.on(Controller.EVENT_CHANGE, (...args) => { |
||||||
self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); |
this.fireEvent(Controller.EVENT_CHANGE, ...args); |
||||||
}); |
}); |
||||||
this.editor.on(BI.Editor.EVENT_CONFIRM, function () { |
this.editor.on(Editor.EVENT_CONFIRM, (...args) => { |
||||||
self._showHint(); |
this._showHint(); |
||||||
self._checkText(); |
this._checkText(); |
||||||
self.fireEvent(BI.SignTextEditor.EVENT_CONFIRM, arguments); |
this.fireEvent(SignTextEditor.EVENT_CONFIRM, ...args); |
||||||
}); |
}); |
||||||
this.editor.on(BI.Editor.EVENT_CHANGE_CONFIRM, function () { |
this.editor.on(Editor.EVENT_CHANGE_CONFIRM, (...args) => { |
||||||
self._showHint(); |
this._showHint(); |
||||||
self._checkText(); |
this._checkText(); |
||||||
self.fireEvent(BI.SignTextEditor.EVENT_CHANGE_CONFIRM, arguments); |
this.fireEvent(SignTextEditor.EVENT_CHANGE_CONFIRM, ...args); |
||||||
}); |
}); |
||||||
this.editor.on(BI.Editor.EVENT_ERROR, function () { |
this.editor.on(Editor.EVENT_ERROR, () => { |
||||||
self._checkText(); |
this._checkText(); |
||||||
}); |
}); |
||||||
BI.createWidget({ |
createWidget({ |
||||||
type: "bi.vertical", |
type: VerticalLayout.xtype, |
||||||
scrolly: false, |
scrolly: false, |
||||||
element: this, |
element: this, |
||||||
items: [this.editor] |
items: [this.editor], |
||||||
}); |
}); |
||||||
this._showHint(); |
this._showHint(); |
||||||
self._checkText(); |
this._checkText(); |
||||||
}, |
} |
||||||
|
|
||||||
_checkText: function () { |
_checkText() { |
||||||
var o = this.options; |
const o = this.options; |
||||||
BI.nextTick(BI.bind(function () { |
nextTick( |
||||||
if (this.editor.getValue() === "") { |
bind(() => { |
||||||
this.text.setValue(o.watermark || ""); |
if (this.editor.getValue() === "") { |
||||||
this.text.element.addClass("bi-water-mark"); |
this.text.setValue(o.watermark || ""); |
||||||
} else { |
this.text.element.addClass("bi-water-mark"); |
||||||
var v = this.editor.getValue(); |
} else { |
||||||
v = (BI.isEmpty(v) || v == o.text) ? o.text : v + o.text; |
let v = this.editor.getValue(); |
||||||
this.text.setValue(v); |
v = isEmpty(v) || v === o.text ? o.text : v + o.text; |
||||||
this.text.element.removeClass("bi-water-mark"); |
this.text.setValue(v); |
||||||
} |
this.text.element.removeClass("bi-water-mark"); |
||||||
}, this)); |
} |
||||||
}, |
}, this) |
||||||
|
); |
||||||
_showInput: function () { |
} |
||||||
|
|
||||||
|
_showInput() { |
||||||
this.editor.visible(); |
this.editor.visible(); |
||||||
this.text.invisible(); |
this.text.invisible(); |
||||||
}, |
} |
||||||
|
|
||||||
_showHint: function () { |
_showHint() { |
||||||
this.editor.invisible(); |
this.editor.invisible(); |
||||||
this.text.visible(); |
this.text.visible(); |
||||||
}, |
} |
||||||
|
|
||||||
setTitle: function (title) { |
setTitle(title) { |
||||||
this.text.setTitle(title); |
this.text.setTitle(title); |
||||||
}, |
} |
||||||
|
|
||||||
setWarningTitle: function (title) { |
setWarningTitle(title) { |
||||||
this.text.setWarningTitle(title); |
this.text.setWarningTitle(title); |
||||||
}, |
} |
||||||
|
|
||||||
focus: function () { |
focus() { |
||||||
this._showInput(); |
this._showInput(); |
||||||
this.editor.focus(); |
this.editor.focus(); |
||||||
}, |
} |
||||||
|
|
||||||
blur: function () { |
blur() { |
||||||
this.editor.blur(); |
this.editor.blur(); |
||||||
this._showHint(); |
this._showHint(); |
||||||
this._checkText(); |
this._checkText(); |
||||||
}, |
} |
||||||
|
|
||||||
doRedMark: function () { |
doRedMark() { |
||||||
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) { |
if (this.editor.getValue() === "" && isKey(this.options.watermark)) { |
||||||
return; |
return; |
||||||
} |
} |
||||||
this.text.doRedMark.apply(this.text, arguments); |
this.text.doRedMark(...arguments); |
||||||
}, |
} |
||||||
|
|
||||||
unRedMark: function () { |
unRedMark() { |
||||||
this.text.unRedMark.apply(this.text, arguments); |
this.text.unRedMark(...arguments); |
||||||
}, |
} |
||||||
|
|
||||||
doHighLight: function () { |
doHighLight() { |
||||||
if (this.editor.getValue() === "" && BI.isKey(this.options.watermark)) { |
if (this.editor.getValue() === "" && isKey(this.options.watermark)) { |
||||||
return; |
return; |
||||||
} |
} |
||||||
this.text.doHighLight.apply(this.text, arguments); |
this.text.doHighLight(...arguments); |
||||||
}, |
} |
||||||
|
|
||||||
unHighLight: function () { |
unHighLight() { |
||||||
this.text.unHighLight.apply(this.text, arguments); |
this.text.unHighLight(...arguments); |
||||||
}, |
} |
||||||
|
|
||||||
isValid: function () { |
isValid() { |
||||||
return this.editor.isValid(); |
return this.editor.isValid(); |
||||||
}, |
} |
||||||
|
|
||||||
setErrorText: function (text) { |
setErrorText(text) { |
||||||
this.editor.setErrorText(text); |
this.editor.setErrorText(text); |
||||||
}, |
} |
||||||
|
|
||||||
getErrorText: function () { |
getErrorText() { |
||||||
return this.editor.getErrorText(); |
return this.editor.getErrorText(); |
||||||
}, |
} |
||||||
|
|
||||||
isEditing: function () { |
isEditing() { |
||||||
return this.editor.isEditing(); |
return this.editor.isEditing(); |
||||||
}, |
} |
||||||
|
|
||||||
getLastValidValue: function () { |
getLastValidValue() { |
||||||
return this.editor.getLastValidValue(); |
return this.editor.getLastValidValue(); |
||||||
}, |
} |
||||||
|
|
||||||
getLastChangedValue: function () { |
getLastChangedValue() { |
||||||
return this.editor.getLastChangedValue(); |
return this.editor.getLastChangedValue(); |
||||||
}, |
} |
||||||
|
|
||||||
setValue: function (v) { |
setValue(v) { |
||||||
this.editor.setValue(v); |
this.editor.setValue(v); |
||||||
this._checkText(); |
this._checkText(); |
||||||
}, |
} |
||||||
|
|
||||||
getValue: function () { |
getValue() { |
||||||
return this.editor.getValue(); |
return this.editor.getValue(); |
||||||
}, |
} |
||||||
|
|
||||||
getState: function () { |
getState() { |
||||||
return this.text.getValue(); |
return this.text.getValue(); |
||||||
}, |
} |
||||||
|
|
||||||
setState: function (v) { |
setState(v) { |
||||||
var o = this.options; |
const o = this.options; |
||||||
this._showHint(); |
this._showHint(); |
||||||
v = (BI.isEmpty(v) || v == o.text) ? o.text : v + o.text; |
v = isEmpty(v) || v === o.text ? o.text : v + o.text; |
||||||
this.text.setValue(v); |
this.text.setValue(v); |
||||||
} |
} |
||||||
}); |
} |
||||||
BI.SignTextEditor.EVENT_CONFIRM = "EVENT_CONFIRM"; |
|
||||||
BI.SignTextEditor.EVENT_CHANGE_CONFIRM = "EVENT_CHANGE_CONFIRM"; |
|
||||||
BI.SignTextEditor.EVENT_CLICK_LABEL = "EVENT_CLICK_LABEL"; |
|
||||||
|
|
||||||
BI.shortcut("bi.sign_text_editor", BI.SignTextEditor); |
|
||||||
|
@ -1,26 +1,24 @@ |
|||||||
/** |
import { shortcut, Widget, Layout } from "@/core"; |
||||||
* Created by zcf on 2016/9/22. |
|
||||||
*/ |
|
||||||
BI.SliderIconButton = BI.inherit(BI.Widget, { |
|
||||||
|
|
||||||
props: { |
@shortcut() |
||||||
|
export class SliderIconButton extends Widget { |
||||||
|
static xtype = "bi.single_slider_button"; |
||||||
|
|
||||||
|
props = { |
||||||
baseCls: "bi-single-slider-button slider-button bi-high-light-border", |
baseCls: "bi-single-slider-button slider-button bi-high-light-border", |
||||||
height: 8, |
height: 8, |
||||||
width: 8, |
width: 8, |
||||||
}, |
} |
||||||
|
constants = { |
||||||
constants: { |
|
||||||
LARGE_SIZE: 16, |
LARGE_SIZE: 16, |
||||||
NORMAL_SIZE: 12, |
NORMAL_SIZE: 12, |
||||||
LARGE_OFFSET: 4, |
LARGE_OFFSET: 4, |
||||||
NORMAL_OFFSET: 6 |
NORMAL_OFFSET: 6, |
||||||
}, |
}; |
||||||
|
|
||||||
render: function () { |
render() { |
||||||
var self = this; |
|
||||||
return { |
return { |
||||||
type: "bi.layout", |
type: Layout.xtype, |
||||||
}; |
}; |
||||||
} |
} |
||||||
}); |
} |
||||||
BI.shortcut("bi.single_slider_button", BI.SliderIconButton); |
|
||||||
|
@ -0,0 +1,5 @@ |
|||||||
|
export { SingleSlider } from "./singleslider"; |
||||||
|
export { SingleSliderLabel } from "./singleslider.label"; |
||||||
|
export { SingleSliderNormal } from "./singleslider.normal"; |
||||||
|
export { SignTextEditor } from "./button/editor.sign.text"; |
||||||
|
export { SliderIconButton } from "./button/iconbutton.slider"; |
Loading…
Reference in new issue