diff --git a/demo/js/base/button/demo.button.js b/demo/js/base/button/demo.button.js index 32d8b86b41..e365447107 100644 --- a/demo/js/base/button/demo.button.js +++ b/demo/js/base/button/demo.button.js @@ -177,6 +177,28 @@ Demo.Button = BI.inherit(BI.Widget, { iconClass: "close-font", height: 30 } + }, { + el: { + type: "bi.multi_select_bar", + selected: true, + halfSelected: true + } + }, { + el: { + type: "bi.multi_select_bar", + selected: true, + halfSelected: false + } + }, { + el: { + type: "bi.multi_select_bar", + selected: false, + halfSelected: true + } + }, { + el: { + type: "bi.multi_select_bar" + } } ]; BI.each(items, function (i, item) { diff --git a/dist/bundle.js b/dist/bundle.js index fa54ab5750..d6f801394e 100644 --- a/dist/bundle.js +++ b/dist/bundle.js @@ -74555,25 +74555,31 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { disableSelected: true, isHalfCheckedBySelectedValue: function (selectedValues) { return selectedValues.length > 0; - } + }, + halfSelected: false }); }, _init: function () { BI.MultiSelectBar.superclass._init.apply(this, arguments); var self = this, o = this.options; + var isSelect = o.selected === true; + var isHalfSelect = !o.selected && o.halfSelected; this.checkbox = BI.createWidget({ type: "bi.checkbox", stopPropagation: true, handler: function () { self.setSelected(self.isSelected()); - } + }, + selected: isSelect, + invisible: isHalfSelect }); this.half = BI.createWidget({ type: "bi.half_icon_button", stopPropagation: true, handler: function () { self.setSelected(true); - } + }, + invisible: isSelect || !isHalfSelect }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self); @@ -74612,7 +74618,10 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { el: this.text }] }); - this.half.invisible(); + }, + + _setSelected: function (v) { + this.checkbox.setSelected(!!v); }, // 自己手动控制选中 @@ -74631,8 +74640,9 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, setHalfSelected: function (b) { - this._half = !!b; + this.halfSelected = !!b; if (b === true) { + this.checkbox.setSelected(false); this.half.visible(); this.checkbox.invisible(); } else { @@ -74642,7 +74652,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, isHalfSelected: function () { - return !!this._half; + return !this.isSelected() && !!this.halfSelected; }, isSelected: function () { @@ -74652,7 +74662,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { setValue: function (selectedValues) { BI.MultiSelectBar.superclass.setValue.apply(this, arguments); var isAllChecked = this.options.isAllCheckedBySelectedValue.apply(this, arguments); - this.setSelected(isAllChecked); + this._setSelected(isAllChecked); !isAllChecked && this.setHalfSelected(this.options.isHalfCheckedBySelectedValue.apply(this, arguments)); } }); diff --git a/dist/case.js b/dist/case.js index c2151cc77a..e41b8ac329 100644 --- a/dist/case.js +++ b/dist/case.js @@ -12410,25 +12410,31 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { disableSelected: true, isHalfCheckedBySelectedValue: function (selectedValues) { return selectedValues.length > 0; - } + }, + halfSelected: false }); }, _init: function () { BI.MultiSelectBar.superclass._init.apply(this, arguments); var self = this, o = this.options; + var isSelect = o.selected === true; + var isHalfSelect = !o.selected && o.halfSelected; this.checkbox = BI.createWidget({ type: "bi.checkbox", stopPropagation: true, handler: function () { self.setSelected(self.isSelected()); - } + }, + selected: isSelect, + invisible: isHalfSelect }); this.half = BI.createWidget({ type: "bi.half_icon_button", stopPropagation: true, handler: function () { self.setSelected(true); - } + }, + invisible: isSelect || !isHalfSelect }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self); @@ -12467,7 +12473,10 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { el: this.text }] }); - this.half.invisible(); + }, + + _setSelected: function (v) { + this.checkbox.setSelected(!!v); }, // 自己手动控制选中 @@ -12486,8 +12495,9 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, setHalfSelected: function (b) { - this._half = !!b; + this.halfSelected = !!b; if (b === true) { + this.checkbox.setSelected(false); this.half.visible(); this.checkbox.invisible(); } else { @@ -12497,7 +12507,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, isHalfSelected: function () { - return !!this._half; + return !this.isSelected() && !!this.halfSelected; }, isSelected: function () { @@ -12507,7 +12517,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { setValue: function (selectedValues) { BI.MultiSelectBar.superclass.setValue.apply(this, arguments); var isAllChecked = this.options.isAllCheckedBySelectedValue.apply(this, arguments); - this.setSelected(isAllChecked); + this._setSelected(isAllChecked); !isAllChecked && this.setHalfSelected(this.options.isHalfCheckedBySelectedValue.apply(this, arguments)); } }); diff --git a/dist/demo.js b/dist/demo.js index 0ddcded728..3f7fd511ee 100644 --- a/dist/demo.js +++ b/dist/demo.js @@ -196,6 +196,28 @@ $(function () { iconClass: "close-font", height: 30 } + }, { + el: { + type: "bi.multi_select_bar", + selected: true, + halfSelected: true + } + }, { + el: { + type: "bi.multi_select_bar", + selected: true, + halfSelected: false + } + }, { + el: { + type: "bi.multi_select_bar", + selected: false, + halfSelected: true + } + }, { + el: { + type: "bi.multi_select_bar" + } } ]; BI.each(items, function (i, item) { diff --git a/dist/fineui.js b/dist/fineui.js index fe12250fcc..934f64ccef 100644 --- a/dist/fineui.js +++ b/dist/fineui.js @@ -76249,25 +76249,31 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { disableSelected: true, isHalfCheckedBySelectedValue: function (selectedValues) { return selectedValues.length > 0; - } + }, + halfSelected: false }); }, _init: function () { BI.MultiSelectBar.superclass._init.apply(this, arguments); var self = this, o = this.options; + var isSelect = o.selected === true; + var isHalfSelect = !o.selected && o.halfSelected; this.checkbox = BI.createWidget({ type: "bi.checkbox", stopPropagation: true, handler: function () { self.setSelected(self.isSelected()); - } + }, + selected: isSelect, + invisible: isHalfSelect }); this.half = BI.createWidget({ type: "bi.half_icon_button", stopPropagation: true, handler: function () { self.setSelected(true); - } + }, + invisible: isSelect || !isHalfSelect }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self); @@ -76306,7 +76312,10 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { el: this.text }] }); - this.half.invisible(); + }, + + _setSelected: function (v) { + this.checkbox.setSelected(!!v); }, // 自己手动控制选中 @@ -76325,8 +76334,9 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, setHalfSelected: function (b) { - this._half = !!b; + this.halfSelected = !!b; if (b === true) { + this.checkbox.setSelected(false); this.half.visible(); this.checkbox.invisible(); } else { @@ -76336,7 +76346,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, isHalfSelected: function () { - return !!this._half; + return !this.isSelected() && !!this.halfSelected; }, isSelected: function () { @@ -76346,7 +76356,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { setValue: function (selectedValues) { BI.MultiSelectBar.superclass.setValue.apply(this, arguments); var isAllChecked = this.options.isAllCheckedBySelectedValue.apply(this, arguments); - this.setSelected(isAllChecked); + this._setSelected(isAllChecked); !isAllChecked && this.setHalfSelected(this.options.isHalfCheckedBySelectedValue.apply(this, arguments)); } }); diff --git a/src/case/toolbar/toolbar.multiselect.js b/src/case/toolbar/toolbar.multiselect.js index 0c536148ff..c36a53cc64 100644 --- a/src/case/toolbar/toolbar.multiselect.js +++ b/src/case/toolbar/toolbar.multiselect.js @@ -16,25 +16,31 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { disableSelected: true, isHalfCheckedBySelectedValue: function (selectedValues) { return selectedValues.length > 0; - } + }, + halfSelected: false }); }, _init: function () { BI.MultiSelectBar.superclass._init.apply(this, arguments); var self = this, o = this.options; + var isSelect = o.selected === true; + var isHalfSelect = !o.selected && o.halfSelected; this.checkbox = BI.createWidget({ type: "bi.checkbox", stopPropagation: true, handler: function () { self.setSelected(self.isSelected()); - } + }, + selected: isSelect, + invisible: isHalfSelect }); this.half = BI.createWidget({ type: "bi.half_icon_button", stopPropagation: true, handler: function () { self.setSelected(true); - } + }, + invisible: isSelect || !isHalfSelect }); this.checkbox.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, BI.Events.CLICK, self.isSelected(), self); @@ -73,7 +79,10 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { el: this.text }] }); - this.half.invisible(); + }, + + _setSelected: function (v) { + this.checkbox.setSelected(!!v); }, // 自己手动控制选中 @@ -92,8 +101,9 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, setHalfSelected: function (b) { - this._half = !!b; + this.halfSelected = !!b; if (b === true) { + this.checkbox.setSelected(false); this.half.visible(); this.checkbox.invisible(); } else { @@ -103,7 +113,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { }, isHalfSelected: function () { - return !!this._half; + return !this.isSelected() && !!this.halfSelected; }, isSelected: function () { @@ -113,7 +123,7 @@ BI.MultiSelectBar = BI.inherit(BI.BasicButton, { setValue: function (selectedValues) { BI.MultiSelectBar.superclass.setValue.apply(this, arguments); var isAllChecked = this.options.isAllCheckedBySelectedValue.apply(this, arguments); - this.setSelected(isAllChecked); + this._setSelected(isAllChecked); !isAllChecked && this.setHalfSelected(this.options.isHalfCheckedBySelectedValue.apply(this, arguments)); } });