|
|
|
import { AbsoluteLayout, shortcut, i18nText } from "@/core";
|
|
|
|
import { TextButton, Label, BasicButton } from "@/base";
|
|
|
|
|
|
|
|
@shortcut()
|
|
|
|
export class Switch extends BasicButton {
|
|
|
|
static xtype = "bi.switch";
|
|
|
|
static EVENT_CHANGE = "EVENT_CHANGE";
|
|
|
|
|
|
|
|
constants = {
|
|
|
|
CIRCLE_SIZE: 12,
|
|
|
|
};
|
|
|
|
|
|
|
|
props = {
|
|
|
|
extraCls: "bi-switch",
|
|
|
|
attributes: {
|
|
|
|
tabIndex: 1,
|
|
|
|
},
|
|
|
|
height: 20,
|
|
|
|
width: 44,
|
|
|
|
showTip: false,
|
|
|
|
};
|
|
|
|
|
|
|
|
render() {
|
|
|
|
const o = this.options,
|
|
|
|
c = this.constants;
|
|
|
|
const tgap = (o.height - c.CIRCLE_SIZE) / 2;
|
|
|
|
|
|
|
|
return {
|
|
|
|
type: AbsoluteLayout.xtype,
|
|
|
|
ref: _ref => {
|
|
|
|
this.layout = _ref;
|
|
|
|
},
|
|
|
|
items: [
|
|
|
|
{
|
|
|
|
el: {
|
|
|
|
type: TextButton.xtype,
|
|
|
|
cls: "circle-button",
|
|
|
|
},
|
|
|
|
width: 12,
|
|
|
|
height: 12,
|
|
|
|
top: tgap,
|
|
|
|
left: o.selected ? 28 : 4,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: Label.xtype,
|
|
|
|
text: i18nText("BI-Basic_Simple_Open"),
|
|
|
|
cls: "content-tip",
|
|
|
|
left: 8,
|
|
|
|
top: tgap - 2,
|
|
|
|
invisible: !(o.showTip && o.selected),
|
|
|
|
ref: _ref => {
|
|
|
|
this.openTip = _ref;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
type: Label.xtype,
|
|
|
|
text: i18nText("BI-Basic_Simple_Close"),
|
|
|
|
cls: "content-tip",
|
|
|
|
right: 8,
|
|
|
|
top: tgap - 2,
|
|
|
|
invisible: !(o.showTip && !o.selected),
|
|
|
|
ref: _ref => {
|
|
|
|
this.closeTip = _ref;
|
|
|
|
},
|
|
|
|
}
|
|
|
|
],
|
|
|
|
};
|
|
|
|
}
|
|
|
|
|
|
|
|
_setEnable(enable) {
|
|
|
|
super._setEnable(...arguments);
|
|
|
|
if (enable === true) {
|
|
|
|
this.element.attr("tabIndex", 1);
|
|
|
|
} else if (enable === false) {
|
|
|
|
this.element.removeAttr("tabIndex");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
setSelected(v) {
|
|
|
|
super.setSelected(...arguments);
|
|
|
|
this.layout.attr("items")[0].left = v ? 28 : 4;
|
|
|
|
this.layout.resize();
|
|
|
|
this.options.showTip && this.openTip.setVisible(v);
|
|
|
|
this.options.showTip && this.closeTip.setVisible(!v);
|
|
|
|
}
|
|
|
|
|
|
|
|
doClick() {
|
|
|
|
super.doClick(...arguments);
|
|
|
|
this.fireEvent(Switch.EVENT_CHANGE, this.isSelected());
|
|
|
|
}
|
|
|
|
}
|