fineui是帆软报表和BI产品线所使用的前端框架。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

80 lines
2.2 KiB

import {
shortcut,
extend,
emptyFn,
createWidget,
i18nText,
Controller,
size
} from "@/core";
import { Single, TextButton, IconButton } from "@/base";
import { MultiSelectCheckSelectedButton } from "../../multiselect/trigger/button.checkselected";
@shortcut()
export class MultiTreeCheckSelectedButton extends Single {
static xtype = "bi.multi_tree_check_selected_button";
static EVENT_CHANGE = "EVENT_CHANGE";
_defaultConfig() {
return extend(super._defaultConfig(...arguments), {
baseCls: "bi-multi-tree-check-selected-button",
itemsCreator: emptyFn,
});
}
_init() {
super._init(...arguments);
const self = this;
this.indicator = createWidget({
type: IconButton.xtype,
cls: "check-font trigger-check-selected icon-size-12",
width: 16,
height: 16,
stopPropagation: true,
});
this.checkSelected = createWidget({
type: TextButton.xtype,
cls: "bi-high-light-background trigger-check-text",
invisible: true,
hgap: 4,
text: i18nText("BI-Check_Selected"),
textAlign: "center",
});
this.checkSelected.on(Controller.EVENT_CHANGE, function () {
self.fireEvent(Controller.EVENT_CHANGE, arguments);
});
this.checkSelected.on(TextButton.EVENT_CHANGE, function () {
self.fireEvent(
MultiSelectCheckSelectedButton.EVENT_CHANGE,
arguments
);
});
createWidget({
type: "bi.horizontal",
element: this,
items: [this.indicator, this.checkSelected],
});
this.element.hover(
() => {
self.indicator.setVisible(false);
self.checkSelected.setVisible(true);
},
() => {
self.indicator.setVisible(true);
self.checkSelected.setVisible(false);
}
);
this.setVisible(false);
}
setValue(v) {
v || (v = {});
const show = size(v.value) > 0;
this.setVisible(show);
}
}