From 39b15b4d9597fe50c7bac86ce1111f741c665e0e Mon Sep 17 00:00:00 2001 From: "Jimmy.Chai" Date: Mon, 26 Aug 2024 15:36:21 +0800 Subject: [PATCH 1/4] =?UTF-8?q?BI-154374=20Revert=20"BI-144276=20fix:=20?= =?UTF-8?q?=E3=80=90=E6=9D=A5=E6=BA=90POC=E9=A1=B9=E7=9B=AE=E3=80=91?= =?UTF-8?q?=E5=A2=9E=E9=87=8F=E6=9B=B4=E6=96=B0=E5=BC=80=E5=A7=8B=E6=97=B6?= =?UTF-8?q?=E9=97=B4"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 7543b364ec5e014d642fa323afb2e476efbf64a8. --- packages/fineui/src/core/2.base.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fineui/src/core/2.base.js b/packages/fineui/src/core/2.base.js index fe07103c6..fe0c611f2 100644 --- a/packages/fineui/src/core/2.base.js +++ b/packages/fineui/src/core/2.base.js @@ -1518,7 +1518,7 @@ export function getTime() { } if (isNotNull(BI.timeZone)) { // BI-33791 1901年以前的东8区标准是GMT+0805, 统一无论是什么时间,都以整的0800这样的为基准 - return dt.getTime() + BI.timeZone + new Date().getTimezoneOffset() * 60000; + return dt.getTime() - BI.timeZone - new Date().getTimezoneOffset() * 60000; } return dt.getTime(); From e08301be71bbee50b5f2f59938a576b63e35ce7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BF=A0=E5=B1=8F=E5=B1=B1=E6=9C=80=E9=80=9F=E4=B8=8B?= =?UTF-8?q?=E5=B1=B1=E4=BC=A0=E8=AF=B4?= Date: Tue, 27 Aug 2024 11:02:42 +0800 Subject: [PATCH 2/4] Reapply "Pull request #16: Feature/x" This reverts commit 5a053e72ce751a626459037c456e24b1dcf357b1. --- packages/fineui/package.json | 2 +- .../src/base/single/input/radio/radio.js | 9 --- .../src/case/toolbar/toolbar.multiselect.js | 1 + packages/fineui/src/case/ztree/asynctree.js | 4 -- packages/fineui/src/core/utils/dom.js | 5 +- packages/fineui/src/less/base/tree/ztree.less | 7 +++ .../src/widget/downlist/combo.downlist.js | 7 +++ .../widget/dynamicdate/dynamicdate.combo.js | 24 +++++--- .../dynamicdatetime/dynamicdatetime.combo.js | 28 +++++---- .../multiselect/multiselect.insert.combo.js | 28 ++++++++- .../multiselect/multiselect.insert.trigger.js | 2 +- .../widget/multiselect/multiselect.trigger.js | 2 +- .../trigger/searcher.multiselect.insert.js | 4 ++ .../trigger/switcher.checkselected.js | 4 ++ .../src/widget/multitree/multi.tree.combo.js | 57 +++++++++++-------- .../src/widget/multitree/multi.tree.popup.js | 4 ++ .../multitree/trigger/searcher.multi.tree.js | 4 ++ .../singleselect/singleselect.insert.combo.js | 25 +++++++- .../trigger/searcher.singleselect.js | 4 ++ .../combo.textvaluedownlist.js | 11 ++++ .../src/widget/timeinterval/dateinterval.js | 18 ++++++ .../src/widget/timeinterval/timeinterval.js | 18 ++++++ packages/fineui/src/widget/year/combo.year.js | 24 +++++--- .../src/widget/yearmonth/combo.yearmonth.js | 24 +++++--- .../yearmonthinterval/yearmonthinterval.js | 18 ++++++ .../widget/yearquarter/combo.yearquarter.js | 24 +++++--- packages/fineui/typescript/index.ts | 1 + .../widget/downlist/combo.downlist.ts | 3 + .../widget/dynamicdate/dynamicdate.combo.ts | 6 +- .../dynamicdatetime/dynamicdatetime.combo.ts | 4 ++ .../multiselect/multiselect.insert.combo.ts | 10 ++++ .../multiselect/switcher.checkselected.ts | 19 +++++++ .../widget/multitree/multi.tree.combo.ts | 12 ++++ .../widget/multitree/multi.tree.popup.ts | 3 + .../singleselect/singleselect.insert.combo.ts | 5 ++ .../combo.textvaluedownlist.ts | 9 +++ .../widget/timeinterval/dateinterval.ts | 13 ++++- .../widget/timeinterval/timeinterval.ts | 11 +++- .../typescript/widget/year/combo.year.ts | 7 +++ .../widget/yearmonth/combo.yearmonth.ts | 7 +++ .../yearmonthinterval/yearmonthinterval.ts | 11 +++- .../widget/yearquarter/combo.yearquarter.ts | 7 +++ 42 files changed, 395 insertions(+), 91 deletions(-) create mode 100644 packages/fineui/typescript/widget/multiselect/switcher.checkselected.ts diff --git a/packages/fineui/package.json b/packages/fineui/package.json index 509cc8077..17ef6a00a 100644 --- a/packages/fineui/package.json +++ b/packages/fineui/package.json @@ -60,4 +60,4 @@ "core-js": "^3.37.1", "cross-env": "^7.0.3" } -} \ No newline at end of file +} diff --git a/packages/fineui/src/base/single/input/radio/radio.js b/packages/fineui/src/base/single/input/radio/radio.js index fa6a10401..aa9eae19b 100644 --- a/packages/fineui/src/base/single/input/radio/radio.js +++ b/packages/fineui/src/base/single/input/radio/radio.js @@ -56,13 +56,4 @@ export class Radio extends BasicButton { this.fireEvent(Radio.EVENT_CHANGE); } } - - setSelected(b) { - super.setSelected(b); - if (b) { - this.radio.element.addClass("bi-high-light-background"); - } else { - this.radio.element.removeClass("bi-high-light-background"); - } - } } diff --git a/packages/fineui/src/case/toolbar/toolbar.multiselect.js b/packages/fineui/src/case/toolbar/toolbar.multiselect.js index f0df9ce78..9ca7281de 100644 --- a/packages/fineui/src/case/toolbar/toolbar.multiselect.js +++ b/packages/fineui/src/case/toolbar/toolbar.multiselect.js @@ -126,6 +126,7 @@ export class MultiSelectBar extends BasicButton { } setSelected(v) { + super.setSelected(v); this.checkbox.setSelected(v); this.setHalfSelected(false); } diff --git a/packages/fineui/src/case/ztree/asynctree.js b/packages/fineui/src/case/ztree/asynctree.js index 7921ef821..7c6efe09c 100644 --- a/packages/fineui/src/case/ztree/asynctree.js +++ b/packages/fineui/src/case/ztree/asynctree.js @@ -221,15 +221,11 @@ export class AsyncTree extends TreeView { { el: { type: IconLabel.xtype, - width: 20, - height: 20, cls: "button-loading-font anim-rotate bi-card", ref: ref => { loadingIcon = ref; }, }, - left: 5, - top: 5, }, ], }); diff --git a/packages/fineui/src/core/utils/dom.js b/packages/fineui/src/core/utils/dom.js index 1be70de14..275aa3adf 100644 --- a/packages/fineui/src/core/utils/dom.js +++ b/packages/fineui/src/core/utils/dom.js @@ -743,12 +743,13 @@ export function getComboPosition(combo, popup, extraWidth, extraHeight, needAdap } if (needAdaptHeight === true && popup.resetHeight) { const comboRect = combo.element[0].getBoundingClientRect(); + const scale = comboRect.height === 0 ? 1 : comboRect.height / combo.element.height(); const relativeOffset = positionRelativeElement ? positionRelativeElement.getBoundingClientRect().top : 0; const positionTop = position.top + relativeOffset; if (positionTop < comboRect.top) { - popup.resetHeight(Math.min(viewportBounds.height - positionTop, comboRect.top, maxHeight)); + popup.resetHeight(Math.min((viewportBounds.height - positionTop) / scale, comboRect.top / scale, maxHeight)); } else if (positionTop >= comboRect.bottom) { - popup.resetHeight(Math.min(viewportBounds.height - positionTop, viewportBounds.height - comboRect.bottom, maxHeight)); + popup.resetHeight(Math.min((viewportBounds.height - positionTop) / scale, (viewportBounds.height - comboRect.bottom) / scale, maxHeight)); } } diff --git a/packages/fineui/src/less/base/tree/ztree.less b/packages/fineui/src/less/base/tree/ztree.less index e7869baae..4932e49ef 100644 --- a/packages/fineui/src/less/base/tree/ztree.less +++ b/packages/fineui/src/less/base/tree/ztree.less @@ -335,3 +335,10 @@ margin-right: 2px; vertical-align: top; } + +.ztree .button-loading-font { + .use-scale(width, 20px); + .use-scale(height, 20px); + .use-scale(left, 5px); + .use-scale(top, 5px); +} \ No newline at end of file diff --git a/packages/fineui/src/widget/downlist/combo.downlist.js b/packages/fineui/src/widget/downlist/combo.downlist.js index 341372724..eb65d8758 100644 --- a/packages/fineui/src/widget/downlist/combo.downlist.js +++ b/packages/fineui/src/widget/downlist/combo.downlist.js @@ -108,6 +108,9 @@ export class DownListCombo extends Widget { stopPropagation: o.stopPropagation, maxHeight: o.maxHeight, minWidth: o.minWidth, + ref: (ref) => { + this.popup = ref; + }, ...o.popup, }, }); @@ -125,6 +128,10 @@ export class DownListCombo extends Widget { this.downlistcombo.showView(e); } + getPopup() { + return this.popup; + } + populate(items) { this.popupView.populate(items); } diff --git a/packages/fineui/src/widget/dynamicdate/dynamicdate.combo.js b/packages/fineui/src/widget/dynamicdate/dynamicdate.combo.js index 3fa097e55..27e0caae0 100644 --- a/packages/fineui/src/widget/dynamicdate/dynamicdate.combo.js +++ b/packages/fineui/src/widget/dynamicdate/dynamicdate.combo.js @@ -208,7 +208,7 @@ export class DynamicDateCombo extends Single { min: opts.minDate, max: opts.maxDate, ref: _ref => { - this.popup = _ref; + this.popupEl = _ref; }, listeners: [ { @@ -238,7 +238,7 @@ export class DynamicDateCombo extends Single { { eventName: DynamicDatePopup.BUTTON_OK_EVENT_CHANGE, action: () => { - const value = this.popup.getValue(); + const value = this.popupEl.getValue(); if (this._checkValue(value)) { this.setValue(value); } @@ -249,7 +249,7 @@ export class DynamicDateCombo extends Single { { eventName: DynamicDatePopup.EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); }, @@ -262,6 +262,10 @@ export class DynamicDateCombo extends Single { } ], }, + ref: (ref) => { + this.popup = ref; + }, + ...opts.popup, }, // // DEC-4250 和复选下拉一样,点击triggerBtn不默认收起 // hideChecker: function (e) { @@ -271,9 +275,9 @@ export class DynamicDateCombo extends Single { { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action: () => { - this.popup.setMinDate(opts.minDate); - this.popup.setMaxDate(opts.maxDate); - this.popup.setValue(this.storeValue); + this.popupEl.setMinDate(opts.minDate); + this.popupEl.setMaxDate(opts.maxDate); + this.popupEl.setValue(this.storeValue); this.fireEvent(DynamicDateCombo.EVENT_BEFORE_POPUPVIEW); }, } @@ -332,14 +336,14 @@ export class DynamicDateCombo extends Single { const o = this.options; o.minDate = minDate; this.trigger.setMinDate(minDate); - this.popup && this.popup.setMinDate(minDate); + this.popupEl && this.popupEl.setMinDate(minDate); } setMaxDate(maxDate) { const o = this.options; o.maxDate = maxDate; this.trigger.setMaxDate(maxDate); - this.popup && this.popup.setMaxDate(maxDate); + this.popupEl && this.popupEl.setMaxDate(maxDate); } setValue(v) { @@ -356,6 +360,10 @@ export class DynamicDateCombo extends Single { return this.trigger.getKey(); } + getPopup() { + return this.popup; + } + hidePopupView() { this.combo.hideView(); } diff --git a/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.combo.js b/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.combo.js index e65e12768..3be733631 100644 --- a/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.combo.js +++ b/packages/fineui/src/widget/dynamicdatetime/dynamicdatetime.combo.js @@ -216,7 +216,7 @@ export class DynamicDateTimeCombo extends Single { min: opts.minDate, max: opts.maxDate, ref: _ref => { - this.popup = _ref; + this.popupEl = _ref; }, listeners: [ { @@ -249,7 +249,7 @@ export class DynamicDateTimeCombo extends Single { { eventName: DynamicDateTimePopup.BUTTON_OK_EVENT_CHANGE, action: () => { - const value = this.popup.getValue(); + const value = this.popupEl.getValue(); if (this._checkValue(value)) { this.setValue(value); } @@ -260,7 +260,7 @@ export class DynamicDateTimeCombo extends Single { { eventName: DynamicDateTimePopup.EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicDateTimeCombo.EVENT_CONFIRM); } @@ -271,16 +271,20 @@ export class DynamicDateTimeCombo extends Single { this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_YEAR_MONTH_POPUPVIEW); } } - ] - } + ], + }, + ref: (ref) => { + this.popup = ref; + }, + ...opts.popup, }, listeners: [ { eventName: Combo.EVENT_BEFORE_POPUPVIEW, action: () => { - this.popup.setMinDate(opts.minDate); - this.popup.setMaxDate(opts.maxDate); - this.popup.setValue(this.storeValue); + this.popupEl.setMinDate(opts.minDate); + this.popupEl.setMaxDate(opts.maxDate); + this.popupEl.setValue(this.storeValue); this.fireEvent(DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW); } } @@ -339,14 +343,14 @@ export class DynamicDateTimeCombo extends Single { const o = this.options; o.minDate = minDate; this.trigger.setMinDate(minDate); - this.popup && this.popup.setMinDate(minDate); + this.popupEl && this.popupEl.setMinDate(minDate); } setMaxDate(maxDate) { const o = this.options; o.maxDate = maxDate; this.trigger.setMaxDate(maxDate); - this.popup && this.popup.setMaxDate(maxDate); + this.popupEl && this.popupEl.setMaxDate(maxDate); } setValue(v) { @@ -363,6 +367,10 @@ export class DynamicDateTimeCombo extends Single { return this.trigger.getKey(); } + getPopup() { + return this.popup; + } + hidePopupView() { this.combo.hideView(); } diff --git a/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js b/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js index 61e9f125a..4cf2d8dfd 100644 --- a/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js +++ b/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js @@ -47,12 +47,15 @@ export class MultiSelectInsertCombo extends Single { static REQ_GET_ALL_DATA = "-1"; static EVENT_FOCUS = "EVENT_FOCUS"; static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_START = "EVENT_START"; static EVENT_STOP = "EVENT_STOP"; static EVENT_SEARCHING = "EVENT_SEARCHING"; static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; static EVENT_CONFIRM = "EVENT_CONFIRM"; static EVENT_ADD_ITEM = "EVENT_ADD_ITEM"; static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW = "EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -62,6 +65,8 @@ export class MultiSelectInsertCombo extends Single { height: 24, itemHeight: SIZE_CONSANTS.LIST_ITEM_HEIGHT, allowEdit: true, + popup: {}, + masker: {}, }); } @@ -97,6 +102,8 @@ export class MultiSelectInsertCombo extends Single { this.trigger = createWidget({ type: MultiSelectInsertTrigger.xtype, + popup: o.popup, + masker: o.masker, allowEdit: o.allowEdit, height: toPix(o.height, o.simple ? 1 : 2), text: o.text, @@ -122,6 +129,7 @@ export class MultiSelectInsertCombo extends Single { this.trigger.on(MultiSelectInsertTrigger.EVENT_START, function() { self._setStartValue(""); this.getSearcher().setValue(self.storeValue); + self.fireEvent(MultiSelectInsertCombo.EVENT_START); }); this.trigger.on(MultiSelectInsertTrigger.EVENT_STOP, () => { self._setStartValue(""); @@ -241,12 +249,14 @@ export class MultiSelectInsertCombo extends Single { self.trigger.getSearcher().adjustView(); }); }, + ...o.popup, }, value: o.value, hideChecker(e) { return ( triggerBtn.element.find(e.target).length === 0 && - self.numberCounter.element.find(e.target).length === 0 + size(self.numberCounter.getView()?.element.find(e.target)) === 0 && + size(self.trigger.getSearcher().getSearcher().getView()?.element.find(e.target)) === 0 ); }, }); @@ -259,6 +269,7 @@ export class MultiSelectInsertCombo extends Single { nextTick(() => { self._populate(); }); + self.fireEvent(MultiSelectInsertCombo.EVENT_BEFORE_POPUPVIEW); }); // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 this.wants2Quit = false; @@ -290,6 +301,8 @@ export class MultiSelectInsertCombo extends Single { valueFormatter: o.valueFormatter, itemsCreator: bind(this._itemsCreator4Trigger, this), value: o.value, + masker: o.masker, + popup: o.popup, }); this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_TRIGGER_CHANGE, () => { if (!self.combo.isViewVisible()) { @@ -298,6 +311,7 @@ export class MultiSelectInsertCombo extends Single { }); this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_BEFORE_POPUPVIEW, function() { this.updateSelectedValue(self.storeValue); + self.fireEvent(MultiSelectInsertCombo.EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW); }); this.numberCounter.on(Events.VIEW, b => { @@ -555,4 +569,16 @@ export class MultiSelectInsertCombo extends Single { this._populate(...arguments); this.numberCounter.populateSwitcher(...arguments); } + + getPopup() { + return this.popup; + } + + getNumberCounter() { + return this.numberCounter; + } + + getTrigger() { + return this.trigger; + } } diff --git a/packages/fineui/src/widget/multiselect/multiselect.insert.trigger.js b/packages/fineui/src/widget/multiselect/multiselect.insert.trigger.js index b7be3abf6..d292971c0 100644 --- a/packages/fineui/src/widget/multiselect/multiselect.insert.trigger.js +++ b/packages/fineui/src/widget/multiselect/multiselect.insert.trigger.js @@ -50,7 +50,7 @@ export class MultiSelectInsertTrigger extends Trigger { itemFormatter: o.itemFormatter, itemHeight: o.itemHeight, watermark: o.watermark, - popup: {}, + popup: o.popup, adapter: o.adapter, masker: o.masker, value: o.value, diff --git a/packages/fineui/src/widget/multiselect/multiselect.trigger.js b/packages/fineui/src/widget/multiselect/multiselect.trigger.js index d0666731d..8bfcfb6f7 100644 --- a/packages/fineui/src/widget/multiselect/multiselect.trigger.js +++ b/packages/fineui/src/widget/multiselect/multiselect.trigger.js @@ -50,7 +50,7 @@ export class MultiSelectTrigger extends Trigger { valueFormatter: o.valueFormatter, itemFormatter: o.itemFormatter, watermark: o.watermark, - popup: {}, + popup: o.popup, adapter: o.adapter, masker: o.masker, value: o.value, diff --git a/packages/fineui/src/widget/multiselect/trigger/searcher.multiselect.insert.js b/packages/fineui/src/widget/multiselect/trigger/searcher.multiselect.insert.js index 36d2cf184..cb948a7ac 100644 --- a/packages/fineui/src/widget/multiselect/trigger/searcher.multiselect.insert.js +++ b/packages/fineui/src/widget/multiselect/trigger/searcher.multiselect.insert.js @@ -132,6 +132,10 @@ export class MultiSelectInsertSearcher extends Widget { } } + getSearcher() { + return this.searcher; + } + adjustView() { this.searcher.adjustView(); } diff --git a/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js b/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js index 4d5bab1da..c4773e549 100644 --- a/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js +++ b/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js @@ -80,6 +80,10 @@ export class MultiSelectCheckSelectedSwitcher extends Widget { this.switcher.adjustView(); } + getView() { + return this.switcher.getView(); + } + hideView() { this.switcher.empty(); this.switcher.hideView(); diff --git a/packages/fineui/src/widget/multitree/multi.tree.combo.js b/packages/fineui/src/widget/multitree/multi.tree.combo.js index 7d61b6e9d..8edab4f41 100644 --- a/packages/fineui/src/widget/multitree/multi.tree.combo.js +++ b/packages/fineui/src/widget/multitree/multi.tree.combo.js @@ -10,7 +10,7 @@ import { VerticalAdaptLayout, deepClone, Selection, - SIZE_CONSANTS + size } from "@/core"; import { Single, Combo } from "@/base"; import { MultiTreeSearcher } from "./trigger/searcher.multi.tree"; @@ -27,12 +27,14 @@ export class MultiTreeCombo extends Single { static EVENT_FOCUS = "EVENT_FOCUS"; static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_START = "EVENT_START"; static EVENT_STOP = "EVENT_STOP"; static EVENT_SEARCHING = "EVENT_SEARCHING"; static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; static EVENT_CONFIRM = "EVENT_CONFIRM"; static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; + static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW = "EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -42,6 +44,8 @@ export class MultiTreeCombo extends Single { height: 24, allowEdit: true, isNeedAdjustWidth: true, + popup: {}, + masker: {}, }); } @@ -63,23 +67,20 @@ export class MultiTreeCombo extends Single { this.storeValue = { value: o.value || {} }; this.trigger = createWidget({ - type: "bi.multi_select_trigger", + type: MultiSelectTrigger.xtype, + popup: o.popup, + masker: o.masker, allowEdit: o.allowEdit, height: toPix(o.height, o.simple ? 1 : 2), valueFormatter: o.valueFormatter, text: o.text, defaultText: o.defaultText, watermark: o.watermark, - masker: { - offset: { - left: 0, - top: 0, - right: 0, - bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, - }, + adapter: () => { + return this.popup.getView(); }, searcher: { - type: "bi.multi_tree_searcher", + type: MultiTreeSearcher.xtype, itemsCreator: o.itemsCreator, listeners: [ { @@ -104,8 +105,6 @@ export class MultiTreeCombo extends Single { type: MultiTreePopup.xtype, ref() { self.popup = this; - self.trigger.setAdapter(this); - self.numberCounter.setAdapter(this); }, listeners: [ { @@ -160,13 +159,16 @@ export class MultiTreeCombo extends Single { }); }, maxWidth: o.isNeedAdjustWidth ? "auto" : 500, + ...o.popup, }, isNeedAdjustWidth: o.isNeedAdjustWidth, value: { value: o.value || {} }, hideChecker(e) { return ( triggerBtn.element.find(e.target).length === 0 && - self.numberCounter.element.find(e.target).length === 0 + size(self.numberCounter.getView()?.element.find(e.target)) === 0 && + size(self.trigger.getSearcher().getSearcher().getView()?.element.find(e.target)) === 0 && + self.trigger.getSearcher().getSearcher().getView()?.element[0] !== e.target ); }, }); @@ -193,6 +195,7 @@ export class MultiTreeCombo extends Single { self.storeValue = { value: self.combo.getValue() }; this.setValue(self.storeValue); self.numberCounter.setValue(self.storeValue); + self.fireEvent(MultiTreeCombo.EVENT_START); }); this.trigger.on(MultiSelectTrigger.EVENT_STOP, function () { self.storeValue = { value: this.getValue() }; @@ -295,23 +298,18 @@ export class MultiTreeCombo extends Single { }); this.numberCounter = createWidget({ - type: "bi.multi_select_check_selected_switcher", + type: MultiSelectCheckSelectedSwitcher, el: { - // type: "bi.multi_tree_check_selected_button", type: MultiTreeCheckSelectedButton.xtype, }, popup: { - // type: "bi.multi_tree_check_pane", type: MultiTreeCheckPane.xtype, + ...o.popup, }, - masker: { - offset: { - left: 0, - top: 0, - right: 0, - bottom: SIZE_CONSANTS.LIST_ITEM_HEIGHT + 1, - }, + adapter: () => { + return this.popup.getView(); }, + masker: o.masker, itemsCreator: o.itemsCreator, valueFormatter: o.valueFormatter, value: { value: o.value || {} }, @@ -334,6 +332,7 @@ export class MultiTreeCombo extends Single { want2showCounter = null; showCounter(); } + this.fireEvent(MultiTreeCombo.EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW); } ); @@ -443,4 +442,16 @@ export class MultiTreeCombo extends Single { setWaterMark(v) { this.trigger.setWaterMark(v); } + + getPopup() { + return this.popup; + } + + getNumberCounter() { + return this.numberCounter; + } + + getTrigger() { + return this.trigger; + } } diff --git a/packages/fineui/src/widget/multitree/multi.tree.popup.js b/packages/fineui/src/widget/multitree/multi.tree.popup.js index 44c91a591..4bd078ab1 100644 --- a/packages/fineui/src/widget/multitree/multi.tree.popup.js +++ b/packages/fineui/src/widget/multitree/multi.tree.popup.js @@ -105,4 +105,8 @@ export class MultiTreePopup extends Pane { resetWidth(w) { this.popupView.resetWidth(w); } + + getView() { + return this.popupView.getView(); + } } diff --git a/packages/fineui/src/widget/multitree/trigger/searcher.multi.tree.js b/packages/fineui/src/widget/multitree/trigger/searcher.multi.tree.js index 518dff408..972f8ac15 100644 --- a/packages/fineui/src/widget/multitree/trigger/searcher.multi.tree.js +++ b/packages/fineui/src/widget/multitree/trigger/searcher.multi.tree.js @@ -220,6 +220,10 @@ export class MultiTreeSearcher extends Widget { return this.editor.getState(); } + getSearcher() { + return this.searcher; + } + setValue(ob) { this.setState(ob); this.searcher.setValue(ob); diff --git a/packages/fineui/src/widget/singleselect/singleselect.insert.combo.js b/packages/fineui/src/widget/singleselect/singleselect.insert.combo.js index eb528ec7a..8b07ee6ec 100644 --- a/packages/fineui/src/widget/singleselect/singleselect.insert.combo.js +++ b/packages/fineui/src/widget/singleselect/singleselect.insert.combo.js @@ -10,7 +10,8 @@ import { isNotNull, nextTick, AbsoluteLayout, - makeObject + makeObject, + size } from "@/core"; import { Single, Combo } from "@/base"; import { SingleSelectTrigger } from "./singleselect.trigger"; @@ -25,10 +26,12 @@ export class SingleSelectInsertCombo extends Single { static REQ_GET_ALL_DATA = -1; static EVENT_FOCUS = "EVENT_FOCUS"; static EVENT_BLUR = "EVENT_BLUR"; + static EVENT_START = "EVENT_START"; static EVENT_STOP = "EVENT_STOP"; static EVENT_SEARCHING = "EVENT_SEARCHING"; static EVENT_CLICK_ITEM = "EVENT_CLICK_ITEM"; static EVENT_CONFIRM = "EVENT_CONFIRM"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW" _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -40,6 +43,8 @@ export class SingleSelectInsertCombo extends Single { height: 24, allowEdit: true, watermark: i18nText("BI-Basic_Search_And_Patch_Paste"), + popup: {}, + masker: {}, }); } @@ -57,6 +62,7 @@ export class SingleSelectInsertCombo extends Single { this.trigger = createWidget({ type: SingleSelectTrigger.xtype, + masker: o.masker, watermark: o.watermark, height: toPix(o.height, o.simple ? 1 : 2), allowNoSelect: o.allowNoSelect, @@ -77,6 +83,7 @@ export class SingleSelectInsertCombo extends Single { searcher: { popup: { type: SingleSelectSearchInsertPane.xtype, + ...o.popup, }, }, }); @@ -91,6 +98,7 @@ export class SingleSelectInsertCombo extends Single { this.trigger.on(SingleSelectTrigger.EVENT_START, function () { self._setStartValue(); this.getSearcher().setValue(self.storeValue); + self.fireEvent(SingleSelectInsertCombo.EVENT_START); }); this.trigger.on(SingleSelectTrigger.EVENT_STOP, () => { self._setStartValue(); @@ -156,9 +164,13 @@ export class SingleSelectInsertCombo extends Single { self.trigger.getSearcher().adjustView(); }); }, + ...o.popup, }, hideChecker(e) { - return triggerBtn.element.find(e.target).length === 0; + return ( + triggerBtn.element.find(e.target).length === 0 && + size(self.trigger.getSearcher().getSearcher().getView()?.element.find(e.target)) === 0 + ); }, value: o.value, }); @@ -171,6 +183,7 @@ export class SingleSelectInsertCombo extends Single { nextTick(() => { self.populate(); }); + self.fireEvent(SingleSelectInsertCombo .EVENT_BEFORE_POPUPVIEW); }); // 当退出的时候如果还在处理请求,则等请求结束后再对外发确定事件 this.wants2Quit = false; @@ -261,4 +274,12 @@ export class SingleSelectInsertCombo extends Single { populate() { this.combo.populate(...arguments); } + + getPopup() { + return this.popup; + } + + getTrigger() { + return this.trigger; + } } diff --git a/packages/fineui/src/widget/singleselect/trigger/searcher.singleselect.js b/packages/fineui/src/widget/singleselect/trigger/searcher.singleselect.js index 31ebc6f67..c9df1bde1 100644 --- a/packages/fineui/src/widget/singleselect/trigger/searcher.singleselect.js +++ b/packages/fineui/src/widget/singleselect/trigger/searcher.singleselect.js @@ -131,6 +131,10 @@ export class SingleSelectSearcher extends Widget { return this.searcher.getView() && this.searcher.getView().hasChecked(); } + getSearcher() { + return this.searcher; + } + setAdapter(adapter) { this.searcher.setAdapter(adapter); } diff --git a/packages/fineui/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js b/packages/fineui/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js index 398888e25..617ce13f3 100644 --- a/packages/fineui/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js +++ b/packages/fineui/src/widget/textvaluedownlistcombo/combo.textvaluedownlist.js @@ -20,6 +20,7 @@ export class TextValueDownListCombo extends Widget { static xtype = "bi.text_value_down_list_combo"; static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; _defaultConfig(config) { return extend(super._defaultConfig(...arguments), { @@ -42,6 +43,7 @@ export class TextValueDownListCombo extends Widget { this.combo = createWidget({ type: DownListCombo.xtype, element: this, + container: o.container, chooseType: Selection.Single, adjustLength: 2, width: toPix(o.width, 2), @@ -59,6 +61,7 @@ export class TextValueDownListCombo extends Widget { }, value: isNull(value) ? [] : [value], items: deepClone(o.items), + popup: o.popup, }); this.combo.on(DownListCombo.EVENT_CHANGE, () => { @@ -76,6 +79,10 @@ export class TextValueDownListCombo extends Widget { this.fireEvent(TextValueDownListCombo.EVENT_CHANGE); } }); + + this.combo.on(DownListCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(TextValueDownListCombo.EVENT_BEFORE_POPUPVIEW); + }); } _createValueMap() { @@ -114,4 +121,8 @@ export class TextValueDownListCombo extends Widget { this.combo.populate(items); this._createValueMap(); } + + getPopup() { + return this.combo.getPopup(); + } } diff --git a/packages/fineui/src/widget/timeinterval/dateinterval.js b/packages/fineui/src/widget/timeinterval/dateinterval.js index 4c7f784da..d98510c7b 100644 --- a/packages/fineui/src/widget/timeinterval/dateinterval.js +++ b/packages/fineui/src/widget/timeinterval/dateinterval.js @@ -30,6 +30,8 @@ export class DateInterval extends Single { static EVENT_ERROR = "EVENT_ERROR"; static EVENT_CHANGE = "EVENT_CHANGE"; static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW = "EVENT_BEFORE_YEAR_MONTH_POPUPVIEW"; + static EVENT_BEFORE_START_POPUPVIEW = "EVENT_BEFORE_START_POPUPVIEW"; + static EVENT_BEFORE_END_POPUPVIEW = "EVENT_BEFORE_END_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); @@ -50,6 +52,13 @@ export class DateInterval extends Single { this.left = this._createCombo(o.value.start, o.watermark?.start); this.right = this._createCombo(o.value.end, o.watermark?.end); + this.left.on(DynamicDateCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(DateInterval.EVENT_BEFORE_START_POPUPVIEW); + }) + this.right.on(DynamicDateCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(DateInterval.EVENT_BEFORE_END_POPUPVIEW); + }) + return { type: HorizontalFillLayout.xtype, columnSize: ["fill", "", "fill"], @@ -79,6 +88,8 @@ export class DateInterval extends Single { const o = this.options; const combo = createWidget({ type: DynamicDateCombo.xtype, + container: o.container, + popup: o.popup, isPreview: o.isPreview, supportDynamic: o.supportDynamic, minDate: o.minDate, @@ -243,4 +254,11 @@ export class DateInterval extends Single { end: this.right.getValue(), }; } + + getPopup() { + return { + start: this.left.getPopup(), + end: this.right.getPopup(), + }; + } } diff --git a/packages/fineui/src/widget/timeinterval/timeinterval.js b/packages/fineui/src/widget/timeinterval/timeinterval.js index 85deda173..4ae530169 100644 --- a/packages/fineui/src/widget/timeinterval/timeinterval.js +++ b/packages/fineui/src/widget/timeinterval/timeinterval.js @@ -29,6 +29,8 @@ export class TimeInterval extends Single { static EVENT_VALID = "EVENT_VALID"; static EVENT_ERROR = "EVENT_ERROR"; static EVENT_CHANGE = "EVENT_CHANGE"; + static EVENT_BEFORE_START_POPUPVIEW = "EVENT_BEFORE_START_POPUPVIEW"; + static EVENT_BEFORE_END_POPUPVIEW = "EVENT_BEFORE_END_POPUPVIEW"; _defaultConfig() { const conf = super._defaultConfig(...arguments); @@ -48,6 +50,13 @@ export class TimeInterval extends Single { this.left = this._createCombo(o.value.start, o.watermark?.start); this.right = this._createCombo(o.value.end, o.watermark?.end); + this.left.on(DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(TimeInterval.EVENT_BEFORE_START_POPUPVIEW); + }) + this.right.on(DynamicDateTimeCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(TimeInterval.EVENT_BEFORE_END_POPUPVIEW); + }) + return { type: HorizontalFillLayout.xtype, columnSize: ["fill", "", "fill"], @@ -77,6 +86,8 @@ export class TimeInterval extends Single { const o = this.options; const combo = createWidget({ type: DynamicDateTimeCombo.xtype, + container: o.container, + popup: o.popup, isPreview: o.isPreview, timeSelectTypes: o.timeSelectTypes, simple: o.simple, @@ -250,4 +261,11 @@ export class TimeInterval extends Single { end: this.right.getValue(), }; } + + getPopup() { + return { + start: this.left.getPopup(), + end: this.right.getPopup(), + }; + } } diff --git a/packages/fineui/src/widget/year/combo.year.js b/packages/fineui/src/widget/year/combo.year.js index 50056e22e..1bf7e11e6 100644 --- a/packages/fineui/src/widget/year/combo.year.js +++ b/packages/fineui/src/widget/year/combo.year.js @@ -98,13 +98,13 @@ export class DynamicYearCombo extends Widget { supportDynamic: o.supportDynamic, isPreview: o.isPreview, ref: _ref => { - this.popup = _ref; + this.popupEl = _ref; }, listeners: [ { eventName: DynamicYearPopup.EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicYearCombo.EVENT_CONFIRM); }, @@ -129,7 +129,7 @@ export class DynamicYearCombo extends Widget { { eventName: DynamicYearPopup.BUTTON_OK_EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicDateCombo.EVENT_CONFIRM); }, @@ -140,12 +140,16 @@ export class DynamicYearCombo extends Widget { max: o.maxDate, }, value: o.value || "", + ref: (ref) => { + this.popup = ref; + }, + ...o.popup, }, }); this.combo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => { - this.popup.setMinDate(o.minDate); - this.popup.setMaxDate(o.maxDate); - this.popup.setValue(this.storeValue); + this.popupEl.setMinDate(o.minDate); + this.popupEl.setMaxDate(o.maxDate); + this.popupEl.setValue(this.storeValue); this.fireEvent(DynamicYearCombo.EVENT_BEFORE_POPUPVIEW); }); @@ -205,14 +209,14 @@ export class DynamicYearCombo extends Widget { const o = this.options; o.minDate = minDate; this.trigger.setMinDate(minDate); - this.popup && this.popup.setMinDate(minDate); + this.popupEl && this.popupEl.setMinDate(minDate); } setMaxDate(maxDate) { const o = this.options; o.maxDate = maxDate; this.trigger.setMaxDate(maxDate); - this.popup && this.popup.setMaxDate(maxDate); + this.popupEl && this.popupEl.setMaxDate(maxDate); } hideView() { @@ -240,6 +244,10 @@ export class DynamicYearCombo extends Widget { setWaterMark(v) { this.trigger.setWaterMark(v); } + + getPopup() { + return this.popup; + } } extend(DynamicYearCombo, { Static: 1, diff --git a/packages/fineui/src/widget/yearmonth/combo.yearmonth.js b/packages/fineui/src/widget/yearmonth/combo.yearmonth.js index 79dfa5da8..de524f2b8 100644 --- a/packages/fineui/src/widget/yearmonth/combo.yearmonth.js +++ b/packages/fineui/src/widget/yearmonth/combo.yearmonth.js @@ -109,13 +109,13 @@ export class DynamicYearMonthCombo extends Single { supportDynamic: o.supportDynamic, isPreview: o.isPreview, ref: _ref => { - this.popup = _ref; + this.popupEl = _ref; }, listeners: [ { eventName: DynamicYearMonthPopup.EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicYearMonthCombo.EVENT_CONFIRM); }, @@ -147,7 +147,7 @@ export class DynamicYearMonthCombo extends Single { { eventName: DynamicYearMonthPopup.BUTTON_OK_EVENT_CHANGE, action: () => { - const value = this.popup.getValue(); + const value = this.popupEl.getValue(); if (this._checkValue(value)) { this.setValue(value); } @@ -161,12 +161,16 @@ export class DynamicYearMonthCombo extends Single { max: o.maxDate, }, value: o.value || "", + ref: (ref) => { + this.popup = ref; + }, + ...o.popup, }, }); this.combo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => { - this.popup.setMinDate(o.minDate); - this.popup.setMaxDate(o.maxDate); - this.popup.setValue(this.storeValue); + this.popupEl.setMinDate(o.minDate); + this.popupEl.setMaxDate(o.maxDate); + this.popupEl.setValue(this.storeValue); this.fireEvent(DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW); }); @@ -241,14 +245,18 @@ export class DynamicYearMonthCombo extends Single { const o = this.options; o.minDate = minDate; this.trigger.setMinDate(minDate); - this.popup && this.popup.setMinDate(minDate); + this.popupEl && this.popupEl.setMinDate(minDate); } setMaxDate(maxDate) { const o = this.options; o.maxDate = maxDate; this.trigger.setMaxDate(maxDate); - this.popup && this.popup.setMaxDate(maxDate); + this.popupEl && this.popupEl.setMaxDate(maxDate); + } + + getPopup() { + return this.popup; } hideView() { diff --git a/packages/fineui/src/widget/yearmonthinterval/yearmonthinterval.js b/packages/fineui/src/widget/yearmonthinterval/yearmonthinterval.js index c6bc874bb..c7abfff4e 100644 --- a/packages/fineui/src/widget/yearmonthinterval/yearmonthinterval.js +++ b/packages/fineui/src/widget/yearmonthinterval/yearmonthinterval.js @@ -20,6 +20,8 @@ export class YearMonthInterval extends Single { static EVENT_ERROR = "EVENT_ERROR"; static EVENT_CHANGE = "EVENT_CHANGE"; static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + static EVENT_BEFORE_START_POPUPVIEW = "EVENT_BEFORE_START_POPUPVIEW"; + static EVENT_BEFORE_END_POPUPVIEW = "EVENT_BEFORE_END_POPUPVIEW"; constants = { width: 25, @@ -43,6 +45,13 @@ export class YearMonthInterval extends Single { this.left = this._createCombo(o.value.start, o.watermark?.start); this.right = this._createCombo(o.value.end, o.watermark?.end); + this.left.on(DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(YearMonthInterval.EVENT_BEFORE_START_POPUPVIEW); + }) + this.right.on(DynamicYearMonthCombo.EVENT_BEFORE_POPUPVIEW, () => { + this.fireEvent(YearMonthInterval.EVENT_BEFORE_END_POPUPVIEW); + }) + return { type: HorizontalFillLayout.xtype, columnSize: ["fill", "", "fill"], @@ -72,6 +81,8 @@ export class YearMonthInterval extends Single { const o = this.options; const combo = createWidget({ type: DynamicYearMonthCombo.xtype, + container: o.container, + popup: o.popup, isPreview: o.isPreview, simple: o.simple, supportDynamic: o.supportDynamic, @@ -235,4 +246,11 @@ export class YearMonthInterval extends Single { getValue() { return { start: this.left.getValue(), end: this.right.getValue() }; } + + getPopup() { + return { + start: this.left.getPopup(), + end: this.right.getPopup(), + }; + } } diff --git a/packages/fineui/src/widget/yearquarter/combo.yearquarter.js b/packages/fineui/src/widget/yearquarter/combo.yearquarter.js index c14100a38..0f9c473c1 100644 --- a/packages/fineui/src/widget/yearquarter/combo.yearquarter.js +++ b/packages/fineui/src/widget/yearquarter/combo.yearquarter.js @@ -112,13 +112,13 @@ export class DynamicYearQuarterCombo extends Widget { supportDynamic: o.supportDynamic, isPreview: o.isPreview, ref: _ref => { - this.popup = _ref; + this.popupEl = _ref; }, listeners: [ { eventName: DynamicYearQuarterPopup.EVENT_CHANGE, action: () => { - this.setValue(this.popup.getValue()); + this.setValue(this.popupEl.getValue()); this.combo.hideView(); this.fireEvent(DynamicYearQuarterCombo.EVENT_CONFIRM); }, @@ -150,7 +150,7 @@ export class DynamicYearQuarterCombo extends Widget { { eventName: DynamicYearQuarterPopup.BUTTON_OK_EVENT_CHANGE, action: () => { - const value = this.popup.getValue(); + const value = this.popupEl.getValue(); if (this._checkValue(value)) { this.setValue(value); } @@ -164,12 +164,16 @@ export class DynamicYearQuarterCombo extends Widget { max: o.maxDate, }, value: o.value || "", + ref: (ref) => { + this.popup = ref; + }, + ...o.popup, }, }); this.combo.on(Combo.EVENT_BEFORE_POPUPVIEW, () => { - this.popup.setMinDate(o.minDate); - this.popup.setMaxDate(o.maxDate); - this.popup.setValue(this.storeValue); + this.popupEl.setMinDate(o.minDate); + this.popupEl.setMaxDate(o.maxDate); + this.popupEl.setValue(this.storeValue); this.fireEvent(DynamicYearQuarterCombo.EVENT_BEFORE_POPUPVIEW); }); @@ -244,14 +248,18 @@ export class DynamicYearQuarterCombo extends Widget { const o = this.options; o.minDate = minDate; this.trigger.setMinDate(minDate); - this.popup && this.popup.setMinDate(minDate); + this.popupEl && this.popupEl.setMinDate(minDate); } setMaxDate(maxDate) { const o = this.options; o.maxDate = maxDate; this.trigger.setMaxDate(maxDate); - this.popup && this.popup.setMaxDate(maxDate); + this.popupEl && this.popupEl.setMaxDate(maxDate); + } + + getPopup() { + return this.popup; } hideView() { diff --git a/packages/fineui/typescript/index.ts b/packages/fineui/typescript/index.ts index 97de6153e..acb087f20 100644 --- a/packages/fineui/typescript/index.ts +++ b/packages/fineui/typescript/index.ts @@ -103,6 +103,7 @@ export { CenterAdaptLayout } from "./core/wrapper/layout/adapt/adapt.center"; export { VerticalAdaptLayout } from "./core/wrapper/layout/adapt/adapt.vertical"; export { MultiSelectInsertCombo } from "./widget/multiselect/multiselect.insert.combo"; export { MultiSelectCombo } from "./widget/multiselect/multiselect.combo"; +export { MultiSelectCheckSelectedSwitcher } from "./widget/multiselect/switcher.checkselected"; export { SearchEditor } from "./widget/editor/editor.search"; export { MultiLayerSingleLevelTree } from "./widget/multilayersingletree/multilayersingletree.leveltree"; export { SimpleColorChooser } from "./case/colorchooser/colorchooser.simple"; diff --git a/packages/fineui/typescript/widget/downlist/combo.downlist.ts b/packages/fineui/typescript/widget/downlist/combo.downlist.ts index 6cc88db52..4eed3e1f7 100644 --- a/packages/fineui/typescript/widget/downlist/combo.downlist.ts +++ b/packages/fineui/typescript/widget/downlist/combo.downlist.ts @@ -1,3 +1,4 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Widget } from "../../core/widget"; export declare class DownListCombo extends Widget { @@ -15,4 +16,6 @@ export declare class DownListCombo extends Widget { adjustWidth: (e?: MouseEvent) => void; adjustHeight: (e?: MouseEvent) => void; + + getPopup(): PopupView; } diff --git a/packages/fineui/typescript/widget/dynamicdate/dynamicdate.combo.ts b/packages/fineui/typescript/widget/dynamicdate/dynamicdate.combo.ts index e9a54490a..a4f82a741 100644 --- a/packages/fineui/typescript/widget/dynamicdate/dynamicdate.combo.ts +++ b/packages/fineui/typescript/widget/dynamicdate/dynamicdate.combo.ts @@ -1,4 +1,5 @@ -import { Single } from '../../base/single/single'; +import { PopupView } from "../../base/layer/layer.popup"; +import { Single } from "../../base/single/single"; export declare class DynamicDateCombo extends Single { static xtype: string; @@ -26,6 +27,7 @@ export declare class DynamicDateCombo extends Single { }; watermark?: string; simple?: boolean; + popup?: any; } & Single['props'] setMinDate(minDate: string): void; @@ -43,6 +45,8 @@ export declare class DynamicDateCombo extends Single { blur(): void; setWaterMark(v: string): void; + + getPopup(): PopupView; } export interface DynamicDataComboValue { diff --git a/packages/fineui/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts b/packages/fineui/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts index 120f38ef3..7ef1abc68 100644 --- a/packages/fineui/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts +++ b/packages/fineui/typescript/widget/dynamicdatetime/dynamicdatetime.combo.ts @@ -1,3 +1,4 @@ +import { PopupView } from '../../base/layer/layer.popup'; import { Single } from '../../base/single/single'; export declare class DynamicDateTimeCombo extends Single { @@ -23,6 +24,7 @@ export declare class DynamicDateTimeCombo extends Single { tabIndex?: number; }; watermark?: string; + popup?: any; } & Single['props']; getValue(): DynamicDateTimeComboValue; @@ -40,6 +42,8 @@ export declare class DynamicDateTimeCombo extends Single { blur(): void; setWaterMark(v: string): void + + getPopup(): PopupView; } export interface DynamicDateTimeComboValue { diff --git a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts index bd0a75ece..6aef0a5c5 100644 --- a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts +++ b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts @@ -1,4 +1,6 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Single } from "../../base/single/single"; +import { MultiSelectCheckSelectedSwitcher } from "./switcher.checkselected"; export declare class MultiSelectInsertCombo extends Single { static xtype: string; @@ -12,6 +14,8 @@ export declare class MultiSelectInsertCombo extends Single { static REQ_GET_DATA_LENGTH: 1; static REQ_GET_ALL_DATA: -1; static EVENT_AFTER_HIDEVIEW: string; + static EVENT_BEFORE_POPUPVIEW: string; + static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW: string; props: { itemsCreator?: Function; @@ -21,6 +25,8 @@ export declare class MultiSelectInsertCombo extends Single { text?: string; watermark?: string; container?: any; + popup?: any; + masker?: any; } & Single["props"]; _itemsCreator4Trigger(op: any, callback: Function): void; @@ -67,5 +73,9 @@ export declare class MultiSelectInsertCombo extends Single { assist: string[]; }; + getPopup(): PopupView; + + getNumberCounter(): MultiSelectCheckSelectedSwitcher; + populate(...args: any[]): void; } diff --git a/packages/fineui/typescript/widget/multiselect/switcher.checkselected.ts b/packages/fineui/typescript/widget/multiselect/switcher.checkselected.ts new file mode 100644 index 000000000..8e6e83a6e --- /dev/null +++ b/packages/fineui/typescript/widget/multiselect/switcher.checkselected.ts @@ -0,0 +1,19 @@ +import { Widget } from '../../core/widget'; + +export declare class MultiSelectCheckSelectedSwitcher extends Widget { + static xtype: string; + static EVENT_TRIGGER_CHANGE: string; + static EVENT_BEFORE_POPUPVIEW: string; + static EVENT_AFTER_HIDEVIEW: string; + + props: { + itemsCreator?: Function; + valueFormatter?: Function; + }; + + adjustView(): void; + + hideView(): void; + + getView(): Widget; +} diff --git a/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts b/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts index 3fe60ebed..944397695 100644 --- a/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts +++ b/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts @@ -1,5 +1,7 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Single } from "../../base/single/single"; import { Widget } from "../../core/widget"; +import { MultiSelectCheckSelectedSwitcher } from "../multiselect/switcher.checkselected"; export declare class MultiTreeCombo extends Single { static xtype: string; @@ -10,6 +12,12 @@ export declare class MultiTreeCombo extends Single { static EVENT_CLICK_ITEM: string; static EVENT_CONFIRM: string; static EVENT_BEFORE_POPUPVIEW: string; + static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW: string; + + props: { + popup?: any; + masker?: any; + } & Single["props"]; showView(): void; hideView(): void; @@ -21,4 +29,8 @@ export declare class MultiTreeCombo extends Single { blur(): void; setWaterMark(v: string): void; + + getPopup(): PopupView; + + getNumberCounter(): MultiSelectCheckSelectedSwitcher; } diff --git a/packages/fineui/typescript/widget/multitree/multi.tree.popup.ts b/packages/fineui/typescript/widget/multitree/multi.tree.popup.ts index 68f8f65a2..3c7506623 100644 --- a/packages/fineui/typescript/widget/multitree/multi.tree.popup.ts +++ b/packages/fineui/typescript/widget/multitree/multi.tree.popup.ts @@ -1,3 +1,4 @@ +import { ButtonGroup } from "../../base/combination/group.button"; import { Pane } from "../../base/pane"; export declare class MultiTreePopup extends Pane { @@ -12,4 +13,6 @@ export declare class MultiTreePopup extends Pane { resetHeight(h: number): void; resetWidth(w: number): void; + + getView(): ButtonGroup; } diff --git a/packages/fineui/typescript/widget/singleselect/singleselect.insert.combo.ts b/packages/fineui/typescript/widget/singleselect/singleselect.insert.combo.ts index 5c9f5d934..d153b952a 100644 --- a/packages/fineui/typescript/widget/singleselect/singleselect.insert.combo.ts +++ b/packages/fineui/typescript/widget/singleselect/singleselect.insert.combo.ts @@ -1,3 +1,4 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Single } from "../../base/single/single"; export declare class SingleSelectInsertCombo extends Single { @@ -8,6 +9,7 @@ export declare class SingleSelectInsertCombo extends Single { static EVENT_SEARCHING: string; static EVENT_CLICK_ITEM: string; static EVENT_CONFIRM: string; + static EVENT_BEFORE_POPUPVIEW: string; props: { text?: string, @@ -16,5 +18,8 @@ export declare class SingleSelectInsertCombo extends Single { valueFormatter?: Function, allowEdit?: boolean, watermark?: string, + popup?: any; } & Single['props'] + + getPopup(): PopupView; } diff --git a/packages/fineui/typescript/widget/textvaluedownlistcombo/combo.textvaluedownlist.ts b/packages/fineui/typescript/widget/textvaluedownlistcombo/combo.textvaluedownlist.ts index e3387f30d..d351e5f33 100644 --- a/packages/fineui/typescript/widget/textvaluedownlistcombo/combo.textvaluedownlist.ts +++ b/packages/fineui/typescript/widget/textvaluedownlistcombo/combo.textvaluedownlist.ts @@ -1,8 +1,17 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Widget } from "../../core/widget"; export declare class TextValueDownListCombo extends Widget { static xtype: string; static EVENT_CHANGE: string; + static EVENT_BEFORE_POPUPVIEW: string; + + props: { + container?: string; + popup?: any; + }; getValue(): [T]; + + getPopup(): PopupView; } diff --git a/packages/fineui/typescript/widget/timeinterval/dateinterval.ts b/packages/fineui/typescript/widget/timeinterval/dateinterval.ts index 31001fe6a..27ca6f787 100644 --- a/packages/fineui/typescript/widget/timeinterval/dateinterval.ts +++ b/packages/fineui/typescript/widget/timeinterval/dateinterval.ts @@ -1,5 +1,5 @@ import { Single } from "../../base/single/single"; -import { DynamicDataComboValue } from "../dynamicdate/dynamicdate.combo"; +import { DynamicDataComboValue, DynamicDateCombo } from "../dynamicdate/dynamicdate.combo"; export declare class DateInterval extends Single { static xtype: string; @@ -7,13 +7,17 @@ export declare class DateInterval extends Single { static EVENT_VALID: string; static EVENT_ERROR: string; static EVENT_BEFORE_YEAR_MONTH_POPUPVIEW: string; + static EVENT_BEFORE_START_POPUPVIEW: string; + static EVENT_BEFORE_END_POPUPVIEW: string; props: { minDate?: string; maxDate?: string; supportDynamic?: boolean; watermark?: string; - } & Single['props'] + container?: string; + popup?: any; + } & Single["props"]; getValue(): { start: DynamicDataComboValue; @@ -23,4 +27,9 @@ export declare class DateInterval extends Single { setMinDate(minDate: string): void; setMaxDate(minDate: string): void; + + getPopup(): { + start: DynamicDateCombo; + end: DynamicDateCombo; + }; } diff --git a/packages/fineui/typescript/widget/timeinterval/timeinterval.ts b/packages/fineui/typescript/widget/timeinterval/timeinterval.ts index 87d4fd977..e7a72f9af 100644 --- a/packages/fineui/typescript/widget/timeinterval/timeinterval.ts +++ b/packages/fineui/typescript/widget/timeinterval/timeinterval.ts @@ -1,11 +1,13 @@ import { Single } from "../../base/single/single"; -import { DynamicDateTimeComboValue } from "../dynamicdatetime/dynamicdatetime.combo"; +import { DynamicDateTimeCombo, DynamicDateTimeComboValue } from "../dynamicdatetime/dynamicdatetime.combo"; export declare class TimeInterval extends Single { static xtype: string; static EVENT_CHANGE: string; static EVENT_VALID: string; static EVENT_ERROR: string; + static EVENT_BEFORE_START_POPUPVIEW: string; + static EVENT_BEFORE_END_POPUPVIEW: string; props: { minDate?: string; @@ -13,6 +15,8 @@ export declare class TimeInterval extends Single { supportDynamic?: boolean; watermark?: string; simple?: boolean; + container?: string; + popup?: any; } & Single['props']; getValue(): { @@ -23,4 +27,9 @@ export declare class TimeInterval extends Single { setMinDate(minDate: string): void; setMaxDate(minDate: string): void; + + getPopup(): { + start: DynamicDateTimeCombo; + end: DynamicDateTimeCombo; + }; } diff --git a/packages/fineui/typescript/widget/year/combo.year.ts b/packages/fineui/typescript/widget/year/combo.year.ts index 5b9b21acb..78917340b 100644 --- a/packages/fineui/typescript/widget/year/combo.year.ts +++ b/packages/fineui/typescript/widget/year/combo.year.ts @@ -1,3 +1,4 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Widget } from "../../core/widget"; export declare class DynamicYearCombo extends Widget { @@ -7,11 +8,17 @@ export declare class DynamicYearCombo extends Widget { static EVENT_CONFIRM: string; static EVENT_BEFORE_POPUPVIEW: string; + props: { + popup?: any; + }; + getValue(): DynamicYearComboValue; setMinDate(minDate: string): void; setMaxDate(maxDate: string): void; + + getPopup(): PopupView; } export interface DynamicYearComboValue { diff --git a/packages/fineui/typescript/widget/yearmonth/combo.yearmonth.ts b/packages/fineui/typescript/widget/yearmonth/combo.yearmonth.ts index 10f198e46..36a75cbff 100644 --- a/packages/fineui/typescript/widget/yearmonth/combo.yearmonth.ts +++ b/packages/fineui/typescript/widget/yearmonth/combo.yearmonth.ts @@ -1,3 +1,4 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Single } from "../../base/single/single"; export declare class DynamicYearMonthCombo extends Single { @@ -8,6 +9,10 @@ export declare class DynamicYearMonthCombo extends Single { static EVENT_CONFIRM: string; static EVENT_BEFORE_POPUPVIEW: string; + props: { + popup?: any; + } & Single["props"]; + hideView(): void; getKey(): string; @@ -17,6 +22,8 @@ export declare class DynamicYearMonthCombo extends Single { setMinDate(minDate: string): void; setMaxDate(maxDate: string): void; + + getPopup(): PopupView; } export interface DynamicYearMonthComboValue { diff --git a/packages/fineui/typescript/widget/yearmonthinterval/yearmonthinterval.ts b/packages/fineui/typescript/widget/yearmonthinterval/yearmonthinterval.ts index 9da536c22..a17c5d36e 100644 --- a/packages/fineui/typescript/widget/yearmonthinterval/yearmonthinterval.ts +++ b/packages/fineui/typescript/widget/yearmonthinterval/yearmonthinterval.ts @@ -1,5 +1,5 @@ import { Single } from '../../base/single/single'; -import { DynamicYearMonthComboValue } from '../yearmonth/combo.yearmonth'; +import { DynamicYearMonthCombo, DynamicYearMonthComboValue } from '../yearmonth/combo.yearmonth'; export declare class YearMonthInterval extends Single { static xtype: string; @@ -7,9 +7,13 @@ export declare class YearMonthInterval extends Single { static EVENT_ERROR: string; static EVENT_CHANGE: string; static EVENT_BEFORE_POPUPVIEW: string; + static EVENT_BEFORE_START_POPUPVIEW: string; + static EVENT_BEFORE_END_POPUPVIEW: string; props: { simple?: boolean; + container?: string; + popup?: any; } & Single['props']; getValue(): { @@ -20,4 +24,9 @@ export declare class YearMonthInterval extends Single { setMinDate(minDate: string): void; setMaxDate(maxDate: string): void; + + getPopup(): { + start: DynamicYearMonthCombo; + end: DynamicYearMonthCombo; + }; } diff --git a/packages/fineui/typescript/widget/yearquarter/combo.yearquarter.ts b/packages/fineui/typescript/widget/yearquarter/combo.yearquarter.ts index f1a07770b..de9564b3e 100644 --- a/packages/fineui/typescript/widget/yearquarter/combo.yearquarter.ts +++ b/packages/fineui/typescript/widget/yearquarter/combo.yearquarter.ts @@ -1,3 +1,4 @@ +import { PopupView } from "../../base/layer/layer.popup"; import { Widget } from "../../core/widget"; export declare class DynamicYearQuarterCombo extends Widget { @@ -5,11 +6,17 @@ export declare class DynamicYearQuarterCombo extends Widget { static EVENT_CONFIRM: string; static EVENT_BEFORE_POPUPVIEW: string; + props: { + popup?: any; + }; + getValue(): DynamicYearQuarterComboValue; setMinDate(minDate: string): void; setMaxDate(maxDate: string): void; + + getPopup(): PopupView; } export interface DynamicYearQuarterComboValue { From b43a9651297d2a8023db62c2b42d2b59449cab60 Mon Sep 17 00:00:00 2001 From: Rex Date: Tue, 27 Aug 2024 17:50:19 +0800 Subject: [PATCH 3/4] =?UTF-8?q?BI-154214=20fix=EF=BC=9A=E5=9B=BD=E9=99=85?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fineui/src/widget/dynamicdate/dynamicdate.param.item.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/fineui/src/widget/dynamicdate/dynamicdate.param.item.js b/packages/fineui/src/widget/dynamicdate/dynamicdate.param.item.js index 26dd9f22c..611f46f4a 100644 --- a/packages/fineui/src/widget/dynamicdate/dynamicdate.param.item.js +++ b/packages/fineui/src/widget/dynamicdate/dynamicdate.param.item.js @@ -79,7 +79,7 @@ export class DynamicDateParamItem extends Widget { value: 0, }, { - text: i18nText("BI-Basic_Behind"), + text: i18nText("BI-Basic_Later"), value: 1, } ], From b88df2cebec3c3e9b8fb4eafc7047479b9233dae Mon Sep 17 00:00:00 2001 From: "Jimmy.Chai" Date: Fri, 30 Aug 2024 15:05:34 +0800 Subject: [PATCH 4/4] =?UTF-8?q?BI-154149=20fix:=20=E6=97=A0=E6=B3=95?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E6=B8=85=E7=A9=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fineui/src/widget/multiselect/multiselect.insert.combo.js | 4 ++++ .../src/widget/multiselect/trigger/switcher.checkselected.js | 2 ++ packages/fineui/src/widget/multitree/multi.tree.combo.js | 4 ++++ .../typescript/widget/multiselect/multiselect.insert.combo.ts | 1 + .../fineui/typescript/widget/multitree/multi.tree.combo.ts | 1 + 5 files changed, 12 insertions(+) diff --git a/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js b/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js index 4cf2d8dfd..18a9d76fc 100644 --- a/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js +++ b/packages/fineui/src/widget/multiselect/multiselect.insert.combo.js @@ -56,6 +56,7 @@ export class MultiSelectInsertCombo extends Single { static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW = "EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW"; + static EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW = "EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -313,6 +314,9 @@ export class MultiSelectInsertCombo extends Single { this.updateSelectedValue(self.storeValue); self.fireEvent(MultiSelectInsertCombo.EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW); }); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_POPUPVIEW, function() { + self.fireEvent(MultiSelectInsertCombo.EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW); + }); this.numberCounter.on(Events.VIEW, b => { nextTick(() => { diff --git a/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js b/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js index c4773e549..985e241f3 100644 --- a/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js +++ b/packages/fineui/src/widget/multiselect/trigger/switcher.checkselected.js @@ -9,6 +9,7 @@ export class MultiSelectCheckSelectedSwitcher extends Widget { static EVENT_TRIGGER_CHANGE = "EVENT_TRIGGER_CHANGE"; static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; + static EVENT_AFTER_POPUPVIEW = "EVENT_AFTER_POPUPVIEW"; static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; _defaultConfig() { @@ -72,6 +73,7 @@ export class MultiSelectCheckSelectedSwitcher extends Widget { const me = this; nextTick(() => { me._populate(); + self.fireEvent(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_POPUPVIEW); }); }); } diff --git a/packages/fineui/src/widget/multitree/multi.tree.combo.js b/packages/fineui/src/widget/multitree/multi.tree.combo.js index 8edab4f41..f8443a0cf 100644 --- a/packages/fineui/src/widget/multitree/multi.tree.combo.js +++ b/packages/fineui/src/widget/multitree/multi.tree.combo.js @@ -35,6 +35,7 @@ export class MultiTreeCombo extends Single { static EVENT_BEFORE_POPUPVIEW = "EVENT_BEFORE_POPUPVIEW"; static EVENT_AFTER_HIDEVIEW = "EVENT_AFTER_HIDEVIEW"; static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW = "EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW"; + static EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW = "EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW"; _defaultConfig() { return extend(super._defaultConfig(...arguments), { @@ -335,6 +336,9 @@ export class MultiTreeCombo extends Single { this.fireEvent(MultiTreeCombo.EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW); } ); + this.numberCounter.on(MultiSelectCheckSelectedSwitcher.EVENT_AFTER_POPUPVIEW, function() { + self.fireEvent(MultiTreeCombo.EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW); + }); this.numberCounter.on(Events.VIEW, b => { nextTick(() => { diff --git a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts index 6aef0a5c5..6c675b48b 100644 --- a/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts +++ b/packages/fineui/typescript/widget/multiselect/multiselect.insert.combo.ts @@ -16,6 +16,7 @@ export declare class MultiSelectInsertCombo extends Single { static EVENT_AFTER_HIDEVIEW: string; static EVENT_BEFORE_POPUPVIEW: string; static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW: string; + static EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW: string; props: { itemsCreator?: Function; diff --git a/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts b/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts index 944397695..010f961f9 100644 --- a/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts +++ b/packages/fineui/typescript/widget/multitree/multi.tree.combo.ts @@ -13,6 +13,7 @@ export declare class MultiTreeCombo extends Single { static EVENT_CONFIRM: string; static EVENT_BEFORE_POPUPVIEW: string; static EVENT_BEFORE_NUMBER_COUNTER_POPUPVIEW: string; + static EVENT_AFTER_NUMBER_COUNTER_POPUPVIEW: string; props: { popup?: any;