eoss 0.1.0-alpha.33 → 0.1.0-alpha.34
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/account-login.js +1 -1
- package/lib/audit-trajectory.js +1 -1
- package/lib/autocomplete.js +109 -70
- package/lib/cascader.js +109 -70
- package/lib/checkbox-group.js +1 -1
- package/lib/color-picker.js +109 -70
- package/lib/config/api.js +1 -1
- package/lib/data-table.js +1 -1
- package/lib/date-picker.js +109 -70
- package/lib/dropdown-menu.js +109 -70
- package/lib/email-login.js +1 -1
- package/lib/eoss.common.js +319 -146
- package/lib/flow.js +1 -1
- package/lib/flows.js +1 -1
- package/lib/form.js +1 -1
- package/lib/icon.js +1 -1
- package/lib/index.js +1 -1
- package/lib/login.js +1 -1
- package/lib/lowcode-view.js +94 -35
- package/lib/lowcode.js +98 -24
- package/lib/main.js +2 -1
- package/lib/menu.js +109 -70
- package/lib/phone-login.js +1 -1
- package/lib/popover.js +109 -70
- package/lib/process-config.js +1 -1
- package/lib/process-module.js +1 -1
- package/lib/process-rule.js +1 -1
- package/lib/qrcode-login.js +1 -1
- package/lib/radio-group.js +1 -1
- package/lib/select.js +110 -71
- package/lib/selector-panel.js +1 -1
- package/lib/selector.js +1 -1
- package/lib/submenu.js +109 -70
- package/lib/table.js +110 -71
- package/lib/theme-chalk/base.css +1 -1
- package/lib/theme-chalk/index.css +1 -1
- package/lib/theme-chalk/main.css +1 -1
- package/lib/time-picker.js +109 -70
- package/lib/time-select.js +109 -70
- package/lib/tips.js +1 -1
- package/lib/tooltip.js +109 -70
- package/lib/tree-group.js +1 -1
- package/lib/tree.js +1 -1
- package/lib/update-history.js +1 -1
- package/lib/upload.js +1 -1
- package/lib/utils/popper.js +97 -48
- package/package.json +1 -1
- package/packages/lowcode/src/lowcode.vue +43 -2
- package/packages/lowcode/src/render.vue +47 -12
- package/packages/lowcode-view/src/render.vue +66 -26
- package/packages/lowcode-view/src/view.vue +13 -2
- package/packages/main/src/minxs.js +1 -0
- package/packages/theme-chalk/src/base.scss +2 -1
- package/src/config/api.js +1 -1
- package/src/index.js +1 -1
- package/src/utils/popper.js +109 -70
package/lib/account-login.js
CHANGED
|
@@ -5010,7 +5010,7 @@ var publishedLists = '/main2/pageComponentConfig/listPublished';
|
|
|
5010
5010
|
// 获取自定义配置详情
|
|
5011
5011
|
var pageInfo = '/main2/pageComponentConfig/info';
|
|
5012
5012
|
// 获取自定义配置授权列表
|
|
5013
|
-
var pageGroup = 'main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
5013
|
+
var pageGroup = '/main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
5014
5014
|
|
|
5015
5015
|
// 保存自定义配置,发布也调这个接口但要加上字段status=1
|
|
5016
5016
|
var pageSave = '/main2/pageComponentConfig/save';
|
package/lib/audit-trajectory.js
CHANGED
|
@@ -853,7 +853,7 @@ var publishedLists = '/main2/pageComponentConfig/listPublished';
|
|
|
853
853
|
// 获取自定义配置详情
|
|
854
854
|
var pageInfo = '/main2/pageComponentConfig/info';
|
|
855
855
|
// 获取自定义配置授权列表
|
|
856
|
-
var pageGroup = 'main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
856
|
+
var pageGroup = '/main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
857
857
|
|
|
858
858
|
// 保存自定义配置,发布也调这个接口但要加上字段status=1
|
|
859
859
|
var pageSave = '/main2/pageComponentConfig/save';
|
package/lib/autocomplete.js
CHANGED
|
@@ -6288,7 +6288,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
6288
6288
|
//
|
|
6289
6289
|
var referenceOffsets = getOffsetRectRelativeToCustomParent(
|
|
6290
6290
|
reference,
|
|
6291
|
-
|
|
6291
|
+
popper,
|
|
6292
6292
|
isParentFixed
|
|
6293
6293
|
);
|
|
6294
6294
|
|
|
@@ -6343,17 +6343,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
6343
6343
|
Popper.prototype._setupEventListeners = function () {
|
|
6344
6344
|
// NOTE: 1 DOM access here
|
|
6345
6345
|
this.state.updateBound = this.update.bind(this);
|
|
6346
|
-
|
|
6346
|
+
// 无界等微前端场景下沙箱 window 不会触发 resize,需监听真实 window
|
|
6347
|
+
this.state.realWindow = getRealWindow(this._popper);
|
|
6348
|
+
this.state.realWindow.addEventListener('resize', this.state.updateBound);
|
|
6347
6349
|
// if the boundariesElement is window we don't need to listen for the scroll event
|
|
6348
6350
|
if (this._options.boundariesElement !== 'window') {
|
|
6349
6351
|
var target = getScrollParent(this._reference);
|
|
6350
|
-
// here it could be both `body` or `documentElement` thanks to Firefox, we then check both
|
|
6351
|
-
if (
|
|
6352
|
-
target === root.document.body ||
|
|
6353
|
-
target === root.document.documentElement
|
|
6354
|
-
) {
|
|
6355
|
-
target = root;
|
|
6356
|
-
}
|
|
6357
6352
|
target.addEventListener('scroll', this.state.updateBound);
|
|
6358
6353
|
this.state.scrollTarget = target;
|
|
6359
6354
|
}
|
|
@@ -6367,7 +6362,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
6367
6362
|
*/
|
|
6368
6363
|
Popper.prototype._removeEventListeners = function () {
|
|
6369
6364
|
// NOTE: 1 DOM access here
|
|
6370
|
-
|
|
6365
|
+
(this.state.realWindow || root).removeEventListener(
|
|
6366
|
+
'resize',
|
|
6367
|
+
this.state.updateBound
|
|
6368
|
+
);
|
|
6371
6369
|
if (
|
|
6372
6370
|
this._options.boundariesElement !== 'window' &&
|
|
6373
6371
|
this.state.scrollTarget
|
|
@@ -6421,47 +6419,24 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
6421
6419
|
left: 0
|
|
6422
6420
|
};
|
|
6423
6421
|
} else if (boundariesElement === 'viewport') {
|
|
6424
|
-
|
|
6425
|
-
|
|
6426
|
-
|
|
6427
|
-
|
|
6428
|
-
|
|
6429
|
-
|
|
6430
|
-
return element == document.body
|
|
6431
|
-
? Math.max(
|
|
6432
|
-
document.documentElement.scrollTop,
|
|
6433
|
-
document.body.scrollTop
|
|
6434
|
-
)
|
|
6435
|
-
: element.scrollTop;
|
|
6436
|
-
};
|
|
6437
|
-
var getScrollLeftValue = function (element) {
|
|
6438
|
-
return element == document.body
|
|
6439
|
-
? Math.max(
|
|
6440
|
-
document.documentElement.scrollLeft,
|
|
6441
|
-
document.body.scrollLeft
|
|
6442
|
-
)
|
|
6443
|
-
: element.scrollLeft;
|
|
6444
|
-
};
|
|
6445
|
-
|
|
6446
|
-
// if the popper is fixed we don't have to substract scrolling from the boundaries
|
|
6447
|
-
var scrollTop =
|
|
6448
|
-
data.offsets.popper.position === 'fixed'
|
|
6449
|
-
? 0
|
|
6450
|
-
: getScrollTopValue(scrollParent);
|
|
6451
|
-
var scrollLeft =
|
|
6422
|
+
// 将真实 window 的视口换算到 popper 所在包含块的坐标系。
|
|
6423
|
+
// 无界等场景下沙箱 window 的尺寸、shadowRoot 内元素的 scrollTop 均不可靠,
|
|
6424
|
+
// 统一从元素自身的 view 与真实包含块获取
|
|
6425
|
+
var realWindow = getRealWindow(this._popper);
|
|
6426
|
+
var containingBlockRect = getContainingBlockRect(
|
|
6427
|
+
this._popper,
|
|
6452
6428
|
data.offsets.popper.position === 'fixed'
|
|
6453
|
-
|
|
6454
|
-
: getScrollLeftValue(scrollParent);
|
|
6429
|
+
);
|
|
6455
6430
|
|
|
6456
6431
|
boundaries = {
|
|
6457
|
-
top: 0 -
|
|
6432
|
+
top: 0 - containingBlockRect.top,
|
|
6458
6433
|
right:
|
|
6459
|
-
|
|
6460
|
-
|
|
6434
|
+
realWindow.document.documentElement.clientWidth -
|
|
6435
|
+
containingBlockRect.left,
|
|
6461
6436
|
bottom:
|
|
6462
|
-
|
|
6463
|
-
|
|
6464
|
-
left: 0 -
|
|
6437
|
+
realWindow.document.documentElement.clientHeight -
|
|
6438
|
+
containingBlockRect.top,
|
|
6439
|
+
left: 0 - containingBlockRect.left
|
|
6465
6440
|
};
|
|
6466
6441
|
} else {
|
|
6467
6442
|
if (getOffsetParent(this._popper) === boundariesElement) {
|
|
@@ -6929,7 +6904,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
6929
6904
|
element.style.visibility = 'hidden';
|
|
6930
6905
|
var calcWidthToForceRepaint = element.offsetWidth;
|
|
6931
6906
|
// original method
|
|
6932
|
-
var styles =
|
|
6907
|
+
var styles = getRealWindow(element).getComputedStyle(element);
|
|
6933
6908
|
var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
|
|
6934
6909
|
var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
|
|
6935
6910
|
var result = {
|
|
@@ -7000,9 +6975,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7000
6975
|
*/
|
|
7001
6976
|
function getStyleComputedProperty(element, property) {
|
|
7002
6977
|
// NOTE: 1 DOM access here
|
|
7003
|
-
|
|
6978
|
+
// 无界等微前端场景下沙箱 window 与元素实际渲染所在 window 可能不一致,
|
|
6979
|
+
// 需使用元素自身的 view 读取计算样式,避免跨 document 读取到空值
|
|
6980
|
+
var css = getRealWindow(element).getComputedStyle(element, null);
|
|
7004
6981
|
return css[property];
|
|
7005
6982
|
}
|
|
6983
|
+
|
|
7006
6984
|
/**
|
|
7007
6985
|
* Returns the offset parent of the given element
|
|
7008
6986
|
* @function
|
|
@@ -7017,6 +6995,68 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7017
6995
|
: offsetParent;
|
|
7018
6996
|
}
|
|
7019
6997
|
|
|
6998
|
+
/**
|
|
6999
|
+
* Returns the window the given element actually renders in.
|
|
7000
|
+
* 无界等微前端场景下组件代码运行在沙箱 window 中,而 DOM 实际渲染在
|
|
7001
|
+
* 主应用的 window(shadowRoot 内),滚动量、视口尺寸等必须取自元素自身的 view
|
|
7002
|
+
* @function
|
|
7003
|
+
* @ignore
|
|
7004
|
+
* @argument {Element} element
|
|
7005
|
+
* @returns {Window} window
|
|
7006
|
+
*/
|
|
7007
|
+
function getRealWindow(element) {
|
|
7008
|
+
return (
|
|
7009
|
+
(element &&
|
|
7010
|
+
element.ownerDocument &&
|
|
7011
|
+
element.ownerDocument.defaultView) ||
|
|
7012
|
+
root
|
|
7013
|
+
);
|
|
7014
|
+
}
|
|
7015
|
+
|
|
7016
|
+
/**
|
|
7017
|
+
* Returns the viewport rect of the containing block actually used to position the popper.
|
|
7018
|
+
* 无界微前端等场景下 popper 被挂载进子应用的 shadowRoot,offsetParent 的兜底值
|
|
7019
|
+
* (documentElement)与浏览器真实的包含块不再重合,导致下拉框/提示框整体偏移
|
|
7020
|
+
* (偏移量恰为子应用容器在主应用中的位置),因此需要沿 composed tree 查找:
|
|
7021
|
+
* - fixed 定位:包含块为视口;
|
|
7022
|
+
* - absolute 定位:最近的 positioned 祖先元素(跨 shadowRoot 边界查找);
|
|
7023
|
+
* - 无 positioned 祖先:初始包含块,其视口原点为真实 window 滚动量的负值。
|
|
7024
|
+
* @function
|
|
7025
|
+
* @ignore
|
|
7026
|
+
* @argument {Element} element - popper element
|
|
7027
|
+
* @argument {Boolean} fixed - whether the popper is fixed positioned
|
|
7028
|
+
* @returns {Object} rect
|
|
7029
|
+
*/
|
|
7030
|
+
function getContainingBlockRect(element, fixed) {
|
|
7031
|
+
if (fixed) {
|
|
7032
|
+
return { top: 0, left: 0, right: 0, bottom: 0 };
|
|
7033
|
+
}
|
|
7034
|
+
|
|
7035
|
+
var node = element.parentNode;
|
|
7036
|
+
while (node) {
|
|
7037
|
+
if (node.nodeType === 1) {
|
|
7038
|
+
if (getStyleComputedProperty(node, 'position') !== 'static') {
|
|
7039
|
+
return getBoundingClientRect(node);
|
|
7040
|
+
}
|
|
7041
|
+
} else if (node.nodeType === 11) {
|
|
7042
|
+
// 遇到 shadowRoot,跨边界从宿主元素继续向上查找
|
|
7043
|
+
node = node.host;
|
|
7044
|
+
continue;
|
|
7045
|
+
} else {
|
|
7046
|
+
break;
|
|
7047
|
+
}
|
|
7048
|
+
node = node.parentNode;
|
|
7049
|
+
}
|
|
7050
|
+
|
|
7051
|
+
var win = getRealWindow(element);
|
|
7052
|
+
return {
|
|
7053
|
+
top: -(win.pageYOffset || 0),
|
|
7054
|
+
left: -(win.pageXOffset || 0),
|
|
7055
|
+
right: 0,
|
|
7056
|
+
bottom: 0
|
|
7057
|
+
};
|
|
7058
|
+
}
|
|
7059
|
+
|
|
7020
7060
|
/**
|
|
7021
7061
|
* Returns the scrolling parent of the given element
|
|
7022
7062
|
* @function
|
|
@@ -7026,18 +7066,20 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7026
7066
|
*/
|
|
7027
7067
|
function getScrollParent(element) {
|
|
7028
7068
|
var parent = element.parentNode;
|
|
7029
|
-
if (!parent
|
|
7069
|
+
if (!parent) {
|
|
7030
7070
|
return element;
|
|
7031
7071
|
}
|
|
7032
7072
|
|
|
7033
|
-
if (parent ===
|
|
7034
|
-
//
|
|
7035
|
-
//
|
|
7036
|
-
|
|
7037
|
-
|
|
7038
|
-
|
|
7039
|
-
|
|
7040
|
-
|
|
7073
|
+
if (parent.nodeType === 11) {
|
|
7074
|
+
// 无界等微前端场景 DOM 位于 shadowRoot 内,需跨边界从宿主元素继续向上查找,
|
|
7075
|
+
// 否则查找到 shadowRoot 即终止,滚动事件无法被监听
|
|
7076
|
+
return getScrollParent(parent.host);
|
|
7077
|
+
}
|
|
7078
|
+
|
|
7079
|
+
if (parent.nodeType !== 1) {
|
|
7080
|
+
// 到达 document,返回元素实际渲染所在的真实 window,
|
|
7081
|
+
// 保证 window 滚动时能触发位置更新
|
|
7082
|
+
return getRealWindow(element);
|
|
7041
7083
|
}
|
|
7042
7084
|
|
|
7043
7085
|
// Firefox want us to check `-x` and `-y` variations as well
|
|
@@ -7057,7 +7099,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7057
7099
|
// fixes issue #65
|
|
7058
7100
|
return parent;
|
|
7059
7101
|
}
|
|
7060
|
-
return getScrollParent(
|
|
7102
|
+
return getScrollParent(parent);
|
|
7061
7103
|
}
|
|
7062
7104
|
|
|
7063
7105
|
/**
|
|
@@ -7075,9 +7117,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7075
7117
|
if (getStyleComputedProperty(element, 'position') === 'fixed') {
|
|
7076
7118
|
return true;
|
|
7077
7119
|
}
|
|
7078
|
-
|
|
7079
|
-
|
|
7080
|
-
|
|
7120
|
+
var parent = element.parentNode;
|
|
7121
|
+
if (parent && parent.nodeType === 11) {
|
|
7122
|
+
// 跨 shadowRoot 边界,从宿主元素继续向上判断
|
|
7123
|
+
parent = parent.host;
|
|
7124
|
+
}
|
|
7125
|
+
return parent && parent.nodeType === 1 ? isFixed(parent) : false;
|
|
7081
7126
|
}
|
|
7082
7127
|
|
|
7083
7128
|
/**
|
|
@@ -7193,15 +7238,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7193
7238
|
*/
|
|
7194
7239
|
function getOffsetRectRelativeToCustomParent(element, parent, fixed) {
|
|
7195
7240
|
var elementRect = getBoundingClientRect(element);
|
|
7196
|
-
|
|
7197
|
-
|
|
7198
|
-
|
|
7199
|
-
var scrollParent = getScrollParent(parent);
|
|
7200
|
-
parentRect.top += scrollParent.scrollTop;
|
|
7201
|
-
parentRect.bottom += scrollParent.scrollTop;
|
|
7202
|
-
parentRect.left += scrollParent.scrollLeft;
|
|
7203
|
-
parentRect.right += scrollParent.scrollLeft;
|
|
7204
|
-
}
|
|
7241
|
+
// parent 为 popper 元素:取其真实包含块的视口 rect,
|
|
7242
|
+
// 避免无界 shadowRoot 等场景下包含块假设错误导致的整体偏移
|
|
7243
|
+
var parentRect = getContainingBlockRect(parent, fixed);
|
|
7205
7244
|
|
|
7206
7245
|
var rect = {
|
|
7207
7246
|
top: elementRect.top - parentRect.top,
|
package/lib/cascader.js
CHANGED
|
@@ -7191,7 +7191,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7191
7191
|
//
|
|
7192
7192
|
var referenceOffsets = getOffsetRectRelativeToCustomParent(
|
|
7193
7193
|
reference,
|
|
7194
|
-
|
|
7194
|
+
popper,
|
|
7195
7195
|
isParentFixed
|
|
7196
7196
|
);
|
|
7197
7197
|
|
|
@@ -7246,17 +7246,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7246
7246
|
Popper.prototype._setupEventListeners = function () {
|
|
7247
7247
|
// NOTE: 1 DOM access here
|
|
7248
7248
|
this.state.updateBound = this.update.bind(this);
|
|
7249
|
-
|
|
7249
|
+
// 无界等微前端场景下沙箱 window 不会触发 resize,需监听真实 window
|
|
7250
|
+
this.state.realWindow = getRealWindow(this._popper);
|
|
7251
|
+
this.state.realWindow.addEventListener('resize', this.state.updateBound);
|
|
7250
7252
|
// if the boundariesElement is window we don't need to listen for the scroll event
|
|
7251
7253
|
if (this._options.boundariesElement !== 'window') {
|
|
7252
7254
|
var target = getScrollParent(this._reference);
|
|
7253
|
-
// here it could be both `body` or `documentElement` thanks to Firefox, we then check both
|
|
7254
|
-
if (
|
|
7255
|
-
target === root.document.body ||
|
|
7256
|
-
target === root.document.documentElement
|
|
7257
|
-
) {
|
|
7258
|
-
target = root;
|
|
7259
|
-
}
|
|
7260
7255
|
target.addEventListener('scroll', this.state.updateBound);
|
|
7261
7256
|
this.state.scrollTarget = target;
|
|
7262
7257
|
}
|
|
@@ -7270,7 +7265,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7270
7265
|
*/
|
|
7271
7266
|
Popper.prototype._removeEventListeners = function () {
|
|
7272
7267
|
// NOTE: 1 DOM access here
|
|
7273
|
-
|
|
7268
|
+
(this.state.realWindow || root).removeEventListener(
|
|
7269
|
+
'resize',
|
|
7270
|
+
this.state.updateBound
|
|
7271
|
+
);
|
|
7274
7272
|
if (
|
|
7275
7273
|
this._options.boundariesElement !== 'window' &&
|
|
7276
7274
|
this.state.scrollTarget
|
|
@@ -7324,47 +7322,24 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7324
7322
|
left: 0
|
|
7325
7323
|
};
|
|
7326
7324
|
} else if (boundariesElement === 'viewport') {
|
|
7327
|
-
|
|
7328
|
-
|
|
7329
|
-
|
|
7330
|
-
|
|
7331
|
-
|
|
7332
|
-
|
|
7333
|
-
return element == document.body
|
|
7334
|
-
? Math.max(
|
|
7335
|
-
document.documentElement.scrollTop,
|
|
7336
|
-
document.body.scrollTop
|
|
7337
|
-
)
|
|
7338
|
-
: element.scrollTop;
|
|
7339
|
-
};
|
|
7340
|
-
var getScrollLeftValue = function (element) {
|
|
7341
|
-
return element == document.body
|
|
7342
|
-
? Math.max(
|
|
7343
|
-
document.documentElement.scrollLeft,
|
|
7344
|
-
document.body.scrollLeft
|
|
7345
|
-
)
|
|
7346
|
-
: element.scrollLeft;
|
|
7347
|
-
};
|
|
7348
|
-
|
|
7349
|
-
// if the popper is fixed we don't have to substract scrolling from the boundaries
|
|
7350
|
-
var scrollTop =
|
|
7351
|
-
data.offsets.popper.position === 'fixed'
|
|
7352
|
-
? 0
|
|
7353
|
-
: getScrollTopValue(scrollParent);
|
|
7354
|
-
var scrollLeft =
|
|
7325
|
+
// 将真实 window 的视口换算到 popper 所在包含块的坐标系。
|
|
7326
|
+
// 无界等场景下沙箱 window 的尺寸、shadowRoot 内元素的 scrollTop 均不可靠,
|
|
7327
|
+
// 统一从元素自身的 view 与真实包含块获取
|
|
7328
|
+
var realWindow = getRealWindow(this._popper);
|
|
7329
|
+
var containingBlockRect = getContainingBlockRect(
|
|
7330
|
+
this._popper,
|
|
7355
7331
|
data.offsets.popper.position === 'fixed'
|
|
7356
|
-
|
|
7357
|
-
: getScrollLeftValue(scrollParent);
|
|
7332
|
+
);
|
|
7358
7333
|
|
|
7359
7334
|
boundaries = {
|
|
7360
|
-
top: 0 -
|
|
7335
|
+
top: 0 - containingBlockRect.top,
|
|
7361
7336
|
right:
|
|
7362
|
-
|
|
7363
|
-
|
|
7337
|
+
realWindow.document.documentElement.clientWidth -
|
|
7338
|
+
containingBlockRect.left,
|
|
7364
7339
|
bottom:
|
|
7365
|
-
|
|
7366
|
-
|
|
7367
|
-
left: 0 -
|
|
7340
|
+
realWindow.document.documentElement.clientHeight -
|
|
7341
|
+
containingBlockRect.top,
|
|
7342
|
+
left: 0 - containingBlockRect.left
|
|
7368
7343
|
};
|
|
7369
7344
|
} else {
|
|
7370
7345
|
if (getOffsetParent(this._popper) === boundariesElement) {
|
|
@@ -7832,7 +7807,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7832
7807
|
element.style.visibility = 'hidden';
|
|
7833
7808
|
var calcWidthToForceRepaint = element.offsetWidth;
|
|
7834
7809
|
// original method
|
|
7835
|
-
var styles =
|
|
7810
|
+
var styles = getRealWindow(element).getComputedStyle(element);
|
|
7836
7811
|
var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);
|
|
7837
7812
|
var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);
|
|
7838
7813
|
var result = {
|
|
@@ -7903,9 +7878,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7903
7878
|
*/
|
|
7904
7879
|
function getStyleComputedProperty(element, property) {
|
|
7905
7880
|
// NOTE: 1 DOM access here
|
|
7906
|
-
|
|
7881
|
+
// 无界等微前端场景下沙箱 window 与元素实际渲染所在 window 可能不一致,
|
|
7882
|
+
// 需使用元素自身的 view 读取计算样式,避免跨 document 读取到空值
|
|
7883
|
+
var css = getRealWindow(element).getComputedStyle(element, null);
|
|
7907
7884
|
return css[property];
|
|
7908
7885
|
}
|
|
7886
|
+
|
|
7909
7887
|
/**
|
|
7910
7888
|
* Returns the offset parent of the given element
|
|
7911
7889
|
* @function
|
|
@@ -7920,6 +7898,68 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7920
7898
|
: offsetParent;
|
|
7921
7899
|
}
|
|
7922
7900
|
|
|
7901
|
+
/**
|
|
7902
|
+
* Returns the window the given element actually renders in.
|
|
7903
|
+
* 无界等微前端场景下组件代码运行在沙箱 window 中,而 DOM 实际渲染在
|
|
7904
|
+
* 主应用的 window(shadowRoot 内),滚动量、视口尺寸等必须取自元素自身的 view
|
|
7905
|
+
* @function
|
|
7906
|
+
* @ignore
|
|
7907
|
+
* @argument {Element} element
|
|
7908
|
+
* @returns {Window} window
|
|
7909
|
+
*/
|
|
7910
|
+
function getRealWindow(element) {
|
|
7911
|
+
return (
|
|
7912
|
+
(element &&
|
|
7913
|
+
element.ownerDocument &&
|
|
7914
|
+
element.ownerDocument.defaultView) ||
|
|
7915
|
+
root
|
|
7916
|
+
);
|
|
7917
|
+
}
|
|
7918
|
+
|
|
7919
|
+
/**
|
|
7920
|
+
* Returns the viewport rect of the containing block actually used to position the popper.
|
|
7921
|
+
* 无界微前端等场景下 popper 被挂载进子应用的 shadowRoot,offsetParent 的兜底值
|
|
7922
|
+
* (documentElement)与浏览器真实的包含块不再重合,导致下拉框/提示框整体偏移
|
|
7923
|
+
* (偏移量恰为子应用容器在主应用中的位置),因此需要沿 composed tree 查找:
|
|
7924
|
+
* - fixed 定位:包含块为视口;
|
|
7925
|
+
* - absolute 定位:最近的 positioned 祖先元素(跨 shadowRoot 边界查找);
|
|
7926
|
+
* - 无 positioned 祖先:初始包含块,其视口原点为真实 window 滚动量的负值。
|
|
7927
|
+
* @function
|
|
7928
|
+
* @ignore
|
|
7929
|
+
* @argument {Element} element - popper element
|
|
7930
|
+
* @argument {Boolean} fixed - whether the popper is fixed positioned
|
|
7931
|
+
* @returns {Object} rect
|
|
7932
|
+
*/
|
|
7933
|
+
function getContainingBlockRect(element, fixed) {
|
|
7934
|
+
if (fixed) {
|
|
7935
|
+
return { top: 0, left: 0, right: 0, bottom: 0 };
|
|
7936
|
+
}
|
|
7937
|
+
|
|
7938
|
+
var node = element.parentNode;
|
|
7939
|
+
while (node) {
|
|
7940
|
+
if (node.nodeType === 1) {
|
|
7941
|
+
if (getStyleComputedProperty(node, 'position') !== 'static') {
|
|
7942
|
+
return getBoundingClientRect(node);
|
|
7943
|
+
}
|
|
7944
|
+
} else if (node.nodeType === 11) {
|
|
7945
|
+
// 遇到 shadowRoot,跨边界从宿主元素继续向上查找
|
|
7946
|
+
node = node.host;
|
|
7947
|
+
continue;
|
|
7948
|
+
} else {
|
|
7949
|
+
break;
|
|
7950
|
+
}
|
|
7951
|
+
node = node.parentNode;
|
|
7952
|
+
}
|
|
7953
|
+
|
|
7954
|
+
var win = getRealWindow(element);
|
|
7955
|
+
return {
|
|
7956
|
+
top: -(win.pageYOffset || 0),
|
|
7957
|
+
left: -(win.pageXOffset || 0),
|
|
7958
|
+
right: 0,
|
|
7959
|
+
bottom: 0
|
|
7960
|
+
};
|
|
7961
|
+
}
|
|
7962
|
+
|
|
7923
7963
|
/**
|
|
7924
7964
|
* Returns the scrolling parent of the given element
|
|
7925
7965
|
* @function
|
|
@@ -7929,18 +7969,20 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7929
7969
|
*/
|
|
7930
7970
|
function getScrollParent(element) {
|
|
7931
7971
|
var parent = element.parentNode;
|
|
7932
|
-
if (!parent
|
|
7972
|
+
if (!parent) {
|
|
7933
7973
|
return element;
|
|
7934
7974
|
}
|
|
7935
7975
|
|
|
7936
|
-
if (parent ===
|
|
7937
|
-
//
|
|
7938
|
-
//
|
|
7939
|
-
|
|
7940
|
-
|
|
7941
|
-
|
|
7942
|
-
|
|
7943
|
-
|
|
7976
|
+
if (parent.nodeType === 11) {
|
|
7977
|
+
// 无界等微前端场景 DOM 位于 shadowRoot 内,需跨边界从宿主元素继续向上查找,
|
|
7978
|
+
// 否则查找到 shadowRoot 即终止,滚动事件无法被监听
|
|
7979
|
+
return getScrollParent(parent.host);
|
|
7980
|
+
}
|
|
7981
|
+
|
|
7982
|
+
if (parent.nodeType !== 1) {
|
|
7983
|
+
// 到达 document,返回元素实际渲染所在的真实 window,
|
|
7984
|
+
// 保证 window 滚动时能触发位置更新
|
|
7985
|
+
return getRealWindow(element);
|
|
7944
7986
|
}
|
|
7945
7987
|
|
|
7946
7988
|
// Firefox want us to check `-x` and `-y` variations as well
|
|
@@ -7960,7 +8002,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7960
8002
|
// fixes issue #65
|
|
7961
8003
|
return parent;
|
|
7962
8004
|
}
|
|
7963
|
-
return getScrollParent(
|
|
8005
|
+
return getScrollParent(parent);
|
|
7964
8006
|
}
|
|
7965
8007
|
|
|
7966
8008
|
/**
|
|
@@ -7978,9 +8020,12 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
7978
8020
|
if (getStyleComputedProperty(element, 'position') === 'fixed') {
|
|
7979
8021
|
return true;
|
|
7980
8022
|
}
|
|
7981
|
-
|
|
7982
|
-
|
|
7983
|
-
|
|
8023
|
+
var parent = element.parentNode;
|
|
8024
|
+
if (parent && parent.nodeType === 11) {
|
|
8025
|
+
// 跨 shadowRoot 边界,从宿主元素继续向上判断
|
|
8026
|
+
parent = parent.host;
|
|
8027
|
+
}
|
|
8028
|
+
return parent && parent.nodeType === 1 ? isFixed(parent) : false;
|
|
7984
8029
|
}
|
|
7985
8030
|
|
|
7986
8031
|
/**
|
|
@@ -8096,15 +8141,9 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/**
|
|
|
8096
8141
|
*/
|
|
8097
8142
|
function getOffsetRectRelativeToCustomParent(element, parent, fixed) {
|
|
8098
8143
|
var elementRect = getBoundingClientRect(element);
|
|
8099
|
-
|
|
8100
|
-
|
|
8101
|
-
|
|
8102
|
-
var scrollParent = getScrollParent(parent);
|
|
8103
|
-
parentRect.top += scrollParent.scrollTop;
|
|
8104
|
-
parentRect.bottom += scrollParent.scrollTop;
|
|
8105
|
-
parentRect.left += scrollParent.scrollLeft;
|
|
8106
|
-
parentRect.right += scrollParent.scrollLeft;
|
|
8107
|
-
}
|
|
8144
|
+
// parent 为 popper 元素:取其真实包含块的视口 rect,
|
|
8145
|
+
// 避免无界 shadowRoot 等场景下包含块假设错误导致的整体偏移
|
|
8146
|
+
var parentRect = getContainingBlockRect(parent, fixed);
|
|
8108
8147
|
|
|
8109
8148
|
var rect = {
|
|
8110
8149
|
top: elementRect.top - parentRect.top,
|
package/lib/checkbox-group.js
CHANGED
|
@@ -4764,7 +4764,7 @@ var publishedLists = '/main2/pageComponentConfig/listPublished';
|
|
|
4764
4764
|
// 获取自定义配置详情
|
|
4765
4765
|
var pageInfo = '/main2/pageComponentConfig/info';
|
|
4766
4766
|
// 获取自定义配置授权列表
|
|
4767
|
-
var pageGroup = 'main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
4767
|
+
var pageGroup = '/main2/pageComponentTarget/listByConfigIdAndTypeGroup';
|
|
4768
4768
|
|
|
4769
4769
|
// 保存自定义配置,发布也调这个接口但要加上字段status=1
|
|
4770
4770
|
var pageSave = '/main2/pageComponentConfig/save';
|