diff --git a/package.json b/package.json index c0a5b94bd..a922cc97b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20230130114621", + "version": "2.0.20230202142959", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", diff --git a/src/widget/multiselect/search/multiselect.search.insert.pane.js b/src/widget/multiselect/search/multiselect.search.insert.pane.js index d459dc73a..8def90700 100644 --- a/src/widget/multiselect/search/multiselect.search.insert.pane.js +++ b/src/widget/multiselect/search/multiselect.search.insert.pane.js @@ -19,7 +19,8 @@ BI.MultiSelectSearchInsertPane = BI.inherit(BI.Widget, { itemsCreator: BI.emptyFn, valueFormatter: BI.emptyFn, keywordGetter: BI.emptyFn, - itemHeight: 24 + allowSelectAll: true, + itemHeight: 24, }); }, @@ -47,7 +48,8 @@ BI.MultiSelectSearchInsertPane = BI.inherit(BI.Widget, { }]); }, itemHeight: o.itemHeight, - value: o.value + value: o.value, + allowSelectAll: o.allowSelectAll, }); this.loader.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); diff --git a/src/widget/multiselect/search/multiselect.search.loader.js b/src/widget/multiselect/search/multiselect.search.loader.js index 5f6d09f54..9029a94ed 100644 --- a/src/widget/multiselect/search/multiselect.search.loader.js +++ b/src/widget/multiselect/search/multiselect.search.loader.js @@ -13,6 +13,7 @@ BI.MultiSelectSearchLoader = BI.inherit(BI.Widget, { keywordGetter: BI.emptyFn, valueFormatter: BI.emptyFn, itemFormatter: BI.emptyFn, + allowSelectAll: true, itemHeight: 24 }); }, @@ -23,7 +24,7 @@ BI.MultiSelectSearchLoader = BI.inherit(BI.Widget, { var self = this, opts = this.options; var hasNext = false; this.storeValue = BI.deepClone(opts.value); - this.button_group = BI.createWidget({ + this.button_group = BI.createWidget(opts.allowSelectAll ? { type: "bi.select_list", toolbar: { type: "bi.multi_select_bar", @@ -83,19 +84,71 @@ BI.MultiSelectSearchLoader = BI.inherit(BI.Widget, { hasNext: function () { return hasNext; } + } : { + type: "bi.list_pane", + logic: { + dynamic: true, + innerVgap: 5, + rowSize: ["", "fill"], + verticalAlign: BI.VerticalAlign.Stretch + }, + element: this, + el: { + chooseType: BI.ButtonGroup.CHOOSE_TYPE_MULTI, + behaviors: { + redmark: function () { + return true; + } + }, + layouts: [ + { + type: "bi.vertical" + } + ] + }, + itemsCreator: function (op, callback) { + self.storeValue && (op = BI.extend(op || {}, { + selectedValues: self.storeValue.value + })); + opts.itemsCreator(op, function (ob) { + var keyword = ob.keyword = opts.keywordGetter(); + hasNext = ob.hasNext; + var firstItems = []; + if (op.times === 1 && self.storeValue) { + var json = self._filterValues(self.storeValue); + firstItems = self._createItems(json); + } + var context = { + tipText: ob.tipText, + }; + callback(firstItems.concat(self._createItems(ob.items)), keyword, context); + if (op.times === 1 && self.storeValue) { + self.setValue(self.storeValue); + } + }); + }, + value: opts.value, + height: "fill", }); + this.button_group.on(BI.Controller.EVENT_CHANGE, function () { self.fireEvent(BI.Controller.EVENT_CHANGE, arguments); }); - this.button_group.on(BI.SelectList.EVENT_CHANGE, function () { - self.fireEvent(BI.MultiSelectSearchLoader.EVENT_CHANGE, arguments); - }); + if (opts.allowSelectAll) { + this.button_group.on(BI.SelectList.EVENT_CHANGE, function () { + self.fireEvent(BI.MultiSelectSearchLoader.EVENT_CHANGE, arguments); + }); + } else { + this.button_group.on(BI.ListPane.EVENT_CHANGE, function (val) { + self.fireEvent(BI.MultiSelectSearchLoader.EVENT_CHANGE, val); + }); + } }, _createItems: function (items) { var allSelected = this.isAllSelected(); var itemFormatter = this.options.itemFormatter; - + return BI.map(items, (index, item) => { return { type: "bi.multi_select_item", @@ -113,7 +166,8 @@ BI.MultiSelectSearchLoader = BI.inherit(BI.Widget, { }, isAllSelected: function () { - return this.button_group.isAllSelected(); + var o = this.options; + return o.allowSelectAll ? this.button_group.isAllSelected() : false; }, _filterValues: function (src) { diff --git a/src/widget/multiselectlist/multiselectlist.insert.nobar.js b/src/widget/multiselectlist/multiselectlist.insert.nobar.js index be87999ad..aa322378b 100644 --- a/src/widget/multiselectlist/multiselectlist.insert.nobar.js +++ b/src/widget/multiselectlist/multiselectlist.insert.nobar.js @@ -61,6 +61,7 @@ BI.MultiSelectInsertNoBarList = BI.inherit(BI.Single, { o.itemsCreator(op, callback); } }, + allowSelectAll: false, }); this.searcherPane.setVisible(false); @@ -244,7 +245,7 @@ BI.MultiSelectInsertNoBarList = BI.inherit(BI.Single, { // 和复选下拉框同步,allData做缓存是会爆炸的 digest(); - function digest (items) { + function digest(items) { BI.each(keywords, function (i, val) { self.storeValue.type === BI.Selection.Multi ? BI.pushDistinct(self.storeValue.value, val) : BI.remove(self.storeValue.value, val); });