diff --git a/package.json b/package.json index c5a12b0a9..7fe64f1d2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fineui", - "version": "2.0.20220928160431", + "version": "2.0.20221007090556", "description": "fineui", "main": "dist/fineui_without_conflict.min.js", "types": "dist/lib/index.d.ts", diff --git a/src/base/layer/layer.popover.js b/src/base/layer/layer.popover.js index 2a4453472..4244a1efb 100644 --- a/src/base/layer/layer.popover.js +++ b/src/base/layer/layer.popover.js @@ -158,15 +158,17 @@ BI.Popover = BI.inherit(BI.Widget, { mounted: function () { var self = this; this.dragger.element.mousedown(function (e) { - self.startX = self.element[0].offsetLeft; - self.startY = self.element[0].offsetTop; - self.tracker.captureMouseMoves(e); + if (self.options.draggable !== false) { + self.startX = self.element[0].offsetLeft; + self.startY = self.element[0].offsetTop; + self.tracker.captureMouseMoves(e); + } }); }, _getSuitableBodyHeight: function (height) { var o = this.options; - + return BI.clamp(height, 0, BI.Widget._renderEngine.createElement("body")[0].clientHeight - o.headerHeight - (o.footer ? o.footerHeight : 0) - o.bodyTgap); }, @@ -207,6 +209,10 @@ BI.Popover = BI.inherit(BI.Widget, { }; }, + setDraggable: function (b) { + this.options.draggable = b; + }, + hide: function () { }, @@ -224,9 +230,6 @@ BI.Popover = BI.inherit(BI.Widget, { setZindex: function (zindex) { this.element.css({ "z-index": zindex }); }, - - destroyed: function () { - }, }); BI.shortcut("bi.popover", BI.Popover); diff --git a/src/base/list/virtualgrouplist.js b/src/base/list/virtualgrouplist.js index a4a811c73..34b11e800 100644 --- a/src/base/list/virtualgrouplist.js +++ b/src/base/list/virtualgrouplist.js @@ -27,7 +27,7 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { render: function () { var self = this, o = this.options; - + return { type: "bi.vertical", items: [{ @@ -97,12 +97,13 @@ BI.VirtualGroupList = BI.inherit(BI.Widget, { this.container[self.renderedIndex === -1 ? "populate" : "addItems"](items.map(function (item, i) { return o.itemFormatter(item, index + i); }), this); - var addedHeight = getElementHeight() - lastHeight; + var elementHeight = getElementHeight(); + var addedHeight = elementHeight - lastHeight; this.tree.set(cnt, addedHeight); this.renderedIndex = cnt; cnt++; index += o.blockSize; - lastHeight = this.renderedIndex === -1 ? 0 : getElementHeight(); + lastHeight = this.renderedIndex === -1 ? 0 : elementHeight; } }, diff --git a/src/core/5.inject.js b/src/core/5.inject.js index 9e0ae8503..0554740f7 100644 --- a/src/core/5.inject.js +++ b/src/core/5.inject.js @@ -411,7 +411,7 @@ // 根据配置属性生成widget var createWidget = function (config, context, lazy) { - var cls = kv[config.type]; + var cls = BI.isFunction(config.type) ? config.type : kv[config.type]; if (!cls) { throw new Error("组件: [" + config.type + "] 未定义"); @@ -449,9 +449,10 @@ } else if (item.el && (item.el.type || options.type)) { el = BI.extend({}, options, item.el); } - + if (el) { - runConfigFunction(el.type); + var elType = (el.type && el.type.xtype) || el.type; + runConfigFunction(elType); } // 先把准备环境准备好 @@ -466,13 +467,14 @@ return item; } if (el) { - w = BI.Plugin.getWidget(el.type, el); - if (w.type === el.type) { - if (BI.Plugin.hasObject(el.type)) { + w = BI.Plugin.getWidget(elType, el); + var wType = (w.type && w.type.xtype) || w.type; + if (wType === elType) { + if (BI.Plugin.hasObject(elType)) { w.listeners = (w.listeners || []).concat([{ eventName: BI.Events.MOUNT, action: function () { - BI.Plugin.getObject(el.type, this); + BI.Plugin.getObject(elType, this); } }]); } diff --git a/src/core/platform/web/detectElementResize.js b/src/core/platform/web/detectElementResize.js index b34d21771..7137bb50c 100644 --- a/src/core/platform/web/detectElementResize.js +++ b/src/core/platform/web/detectElementResize.js @@ -112,7 +112,21 @@ }; var addResizeListener = function (element, fn) { - if (attachEvent) { + if (window.ResizeObserver) { + if (!element.__resizeObserver__) { + var resizeObserver = new window.ResizeObserver(function () { + element.__resizeListeners__.forEach(function (listener) { + listener(); + }); + }); + resizeObserver.observe(element); + element.__resizeObserver__ = resizeObserver; + } + if (!element.__resizeListeners__) { + element.__resizeListeners__ = []; + } + element.__resizeListeners__.push(fn); + } else if (attachEvent) { element.attachEvent("onresize", fn); BI.nextTick(fn); } else { @@ -137,8 +151,17 @@ } }; var removeResizeListener = function (element, fn) { - if (attachEvent) element.detachEvent("onresize", fn); - else { + if (window.ResizeObserver) { + var index = element.__resizeListeners__.indexOf(fn); + if (index >= 0) { + element.__resizeListeners__.splice(index, 1); + if (!element.__resizeListeners__.length) { + element.__resizeObserver__ && element.__resizeObserver__.unobserve(element); + } + } + } else if (attachEvent) { + element.detachEvent("onresize", fn); + } else { element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(fn), 1); if (!element.__resizeListeners__.length) { element.removeEventListener("scroll", scrollListener); diff --git a/src/widget/dynamicdate/dynamicdate.param.item.js b/src/widget/dynamicdate/dynamicdate.param.item.js index c8771e908..fed229fa2 100644 --- a/src/widget/dynamicdate/dynamicdate.param.item.js +++ b/src/widget/dynamicdate/dynamicdate.param.item.js @@ -20,7 +20,7 @@ BI.DynamicDateParamItem = BI.inherit(BI.Widget, { items: [{ el: { type: "bi.sign_editor", - cls: "bi-border", + cls: "bi-border bi-focus-shadow bi-border-radius", height: BI.SIZE_CONSANTS.TOOL_BAR_HEIGHT - 2, validationChecker: function (v) { return BI.isNaturalNumber(v);