bkui-vue 2.1.0-dev-beta.13 → 2.1.0-dev-beta.15
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/dist/index.cjs.js +52 -52
- package/dist/index.esm.js +11315 -11237
- package/dist/index.umd.js +52 -52
- package/lib/cascader/cascader.d.ts +12 -2
- package/lib/cascader/index.d.ts +21 -6
- package/lib/config-provider/config-provider.d.ts +13 -0
- package/lib/config-provider/index.d.ts +15 -0
- package/lib/config-provider/index.js +6 -1
- package/lib/config-provider/token.d.ts +1 -0
- package/lib/index.js +1 -1
- package/lib/message/messageConstructor.d.ts +1 -1
- package/lib/notify/notifyConstructor.d.ts +1 -1
- package/lib/overflow-title/components/overflow-title.d.ts +10 -0
- package/lib/overflow-title/index.d.ts +15 -0
- package/lib/overflow-title/props.d.ts +5 -0
- package/lib/pop-confirm/index.d.ts +15 -0
- package/lib/pop-confirm/pop-confirm.d.ts +10 -0
- package/lib/pop-confirm/props.d.ts +5 -0
- package/lib/popover/index.d.ts +18 -0
- package/lib/popover/index.js +214 -77
- package/lib/popover/popover.d.ts +11 -0
- package/lib/popover/props.d.ts +8 -0
- package/lib/preset.d.ts +8 -0
- package/lib/select/index.d.ts +39 -9
- package/lib/select/select.d.ts +18 -3
- package/lib/select/selectTagInput.d.ts +1 -1
- package/lib/table/components/table-column.d.ts +2 -2
- package/lib/table/index.d.ts +2 -2
- package/lib/table-column/index.d.ts +3 -3
- package/lib/tag-input/index.d.ts +35 -2
- package/lib/tag-input/tag-input.d.ts +17 -1
- package/lib/tag-input/tag-props.d.ts +5 -0
- package/lib/tree/index.d.ts +3 -3
- package/lib/tree/tree.d.ts +1 -1
- package/lib/virtual-render/index.d.ts +24 -24
- package/lib/virtual-render/virtual-render.d.ts +11 -11
- package/package.json +1 -1
package/lib/popover/index.js
CHANGED
|
@@ -45,7 +45,7 @@ const shared_namespaceObject = x({ ["PlacementEnum"]: () => __WEBPACK_EXTERNAL_M
|
|
|
45
45
|
;// CONCATENATED MODULE: external "vue"
|
|
46
46
|
var external_vue_x = y => { var x = {}; __webpack_require__.d(x, y); return x; }
|
|
47
47
|
var external_vue_y = x => () => x
|
|
48
|
-
const external_vue_namespaceObject = external_vue_x({ ["Fragment"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Fragment, ["Teleport"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Teleport, ["computed"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.computed, ["createApp"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.createApp, ["createVNode"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.createVNode, ["defineComponent"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.defineComponent, ["getCurrentScope"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.getCurrentScope, ["h"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.h, ["isVNode"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.isVNode, ["mergeProps"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.mergeProps, ["nextTick"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.nextTick, ["onBeforeUnmount"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onBeforeUnmount, ["onMounted"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onMounted, ["onScopeDispose"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onScopeDispose, ["reactive"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.reactive, ["ref"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.ref, ["shallowReadonly"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.shallowReadonly, ["shallowRef"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.shallowRef, ["toRefs"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.toRefs, ["unref"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.unref, ["useAttrs"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.useAttrs, ["watch"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.watch });
|
|
48
|
+
const external_vue_namespaceObject = external_vue_x({ ["Comment"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Comment, ["Fragment"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Fragment, ["Teleport"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Teleport, ["Text"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.Text, ["cloneVNode"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.cloneVNode, ["computed"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.computed, ["createApp"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.createApp, ["createVNode"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.createVNode, ["defineComponent"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.defineComponent, ["getCurrentScope"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.getCurrentScope, ["h"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.h, ["isVNode"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.isVNode, ["mergeProps"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.mergeProps, ["nextTick"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.nextTick, ["onBeforeUnmount"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onBeforeUnmount, ["onMounted"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onMounted, ["onScopeDispose"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.onScopeDispose, ["reactive"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.reactive, ["ref"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.ref, ["shallowReadonly"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.shallowReadonly, ["shallowRef"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.shallowRef, ["toRefs"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.toRefs, ["unref"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.unref, ["useAttrs"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.useAttrs, ["watch"]: () => __WEBPACK_EXTERNAL_MODULE_vue__.watch });
|
|
49
49
|
;// CONCATENATED MODULE: ../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js
|
|
50
50
|
function _arrayLikeToArray(r, a) {
|
|
51
51
|
(null == a || a > r.length) && (a = r.length);
|
|
@@ -134,7 +134,7 @@ function _defineProperty(e, r, t) {
|
|
|
134
134
|
;// CONCATENATED MODULE: external "../config-provider"
|
|
135
135
|
var config_provider_x = y => { var x = {}; __webpack_require__.d(x, y); return x; }
|
|
136
136
|
var config_provider_y = x => () => x
|
|
137
|
-
const config_provider_namespaceObject = config_provider_x({ ["usePrefix"]: () => __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3__.usePrefix });
|
|
137
|
+
const config_provider_namespaceObject = config_provider_x({ ["useGlobalConfig"]: () => __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3__.useGlobalConfig, ["usePrefix"]: () => __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3__.usePrefix });
|
|
138
138
|
;// CONCATENATED MODULE: ../../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
|
|
139
139
|
function _arrayWithHoles(r) {
|
|
140
140
|
if (Array.isArray(r)) return r;
|
|
@@ -3190,6 +3190,10 @@ var PopoverProps = {
|
|
|
3190
3190
|
* 配置自定义样式类名,传入的类会被加在 Reference 外部的 div 上
|
|
3191
3191
|
*/
|
|
3192
3192
|
referenceCls: shared_namespaceObject.PropTypes.string.def(''),
|
|
3193
|
+
/**
|
|
3194
|
+
* 是否渲染默认插槽最外层 reference span;仅 true 时主动追加 span
|
|
3195
|
+
*/
|
|
3196
|
+
renderReferenceWrapper: shared_namespaceObject.PropTypes.bool.def(undefined),
|
|
3193
3197
|
/**
|
|
3194
3198
|
* 点击 Reference 占位区是否忽略收起 popover
|
|
3195
3199
|
*/
|
|
@@ -3251,8 +3255,7 @@ function _isSlot(s) {
|
|
|
3251
3255
|
var __bkPopoverIdSeed = 0;
|
|
3252
3256
|
var __bkPopoverRegistry = new Map();
|
|
3253
3257
|
var findPopoverIdInEventPath = function findPopoverIdInEventPath(event) {
|
|
3254
|
-
var
|
|
3255
|
-
var path = typeof anyEvent.composedPath === 'function' ? anyEvent.composedPath() : [];
|
|
3258
|
+
var path = typeof event.composedPath === 'function' ? event.composedPath() : [];
|
|
3256
3259
|
var _iterator = _createForOfIteratorHelper(path),
|
|
3257
3260
|
_step;
|
|
3258
3261
|
try {
|
|
@@ -3313,6 +3316,7 @@ var EMIT_EVENTS = {
|
|
|
3313
3316
|
var attrs = (0,external_vue_namespaceObject.useAttrs)();
|
|
3314
3317
|
var _usePrefix = (0,config_provider_namespaceObject.usePrefix)(),
|
|
3315
3318
|
resolveClassName = _usePrefix.resolveClassName;
|
|
3319
|
+
var globalConfig = (0,config_provider_namespaceObject.useGlobalConfig)();
|
|
3316
3320
|
// 当前实例 id(用于注册表与事件路径识别)
|
|
3317
3321
|
var popoverId = "bk-popover-".concat(++__bkPopoverIdSeed);
|
|
3318
3322
|
// 元素引用
|
|
@@ -3357,7 +3361,15 @@ var EMIT_EVENTS = {
|
|
|
3357
3361
|
componentEventDelay = _toRefs.componentEventDelay,
|
|
3358
3362
|
reference = _toRefs.reference,
|
|
3359
3363
|
target = _toRefs.target,
|
|
3360
|
-
floatingReference = _toRefs.floatingReference
|
|
3364
|
+
floatingReference = _toRefs.floatingReference,
|
|
3365
|
+
renderReferenceWrapper = _toRefs.renderReferenceWrapper;
|
|
3366
|
+
var shouldRenderReferenceWrapper = (0,external_vue_namespaceObject.computed)(function () {
|
|
3367
|
+
var _renderReferenceWrapp;
|
|
3368
|
+
return ((_renderReferenceWrapp = renderReferenceWrapper.value) !== null && _renderReferenceWrapp !== void 0 ? _renderReferenceWrapp : globalConfig.value.popoverRenderReferenceWrapper) === true;
|
|
3369
|
+
});
|
|
3370
|
+
var setReferenceRef = function setReferenceRef(refValue) {
|
|
3371
|
+
referenceWrapperRef.value = refValue;
|
|
3372
|
+
};
|
|
3361
3373
|
// 判断是否为虚拟元素
|
|
3362
3374
|
var isVirtualElement = function isVirtualElement(el) {
|
|
3363
3375
|
return el !== null && _typeof(el) === 'object' && 'getBoundingClientRect' in el && typeof el.getBoundingClientRect === 'function';
|
|
@@ -3377,6 +3389,47 @@ var EMIT_EVENTS = {
|
|
|
3377
3389
|
}
|
|
3378
3390
|
return null;
|
|
3379
3391
|
};
|
|
3392
|
+
var _resolveElementFromVNode = function resolveElementFromVNode(node) {
|
|
3393
|
+
var _node$component;
|
|
3394
|
+
if (!node) return null;
|
|
3395
|
+
if (node.el instanceof HTMLElement) return node.el;
|
|
3396
|
+
var subTree = (_node$component = node.component) === null || _node$component === void 0 ? void 0 : _node$component.subTree;
|
|
3397
|
+
if (subTree) {
|
|
3398
|
+
var element = _resolveElementFromVNode(subTree);
|
|
3399
|
+
if (element) return element;
|
|
3400
|
+
}
|
|
3401
|
+
if (Array.isArray(node.children)) {
|
|
3402
|
+
var _iterator2 = _createForOfIteratorHelper(node.children),
|
|
3403
|
+
_step2;
|
|
3404
|
+
try {
|
|
3405
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
3406
|
+
var child = _step2.value;
|
|
3407
|
+
if (!(0,external_vue_namespaceObject.isVNode)(child)) continue;
|
|
3408
|
+
var _element = _resolveElementFromVNode(child);
|
|
3409
|
+
if (_element) return _element;
|
|
3410
|
+
}
|
|
3411
|
+
} catch (err) {
|
|
3412
|
+
_iterator2.e(err);
|
|
3413
|
+
} finally {
|
|
3414
|
+
_iterator2.f();
|
|
3415
|
+
}
|
|
3416
|
+
}
|
|
3417
|
+
return null;
|
|
3418
|
+
};
|
|
3419
|
+
var resolveReferenceRefElement = function resolveReferenceRefElement(refValue) {
|
|
3420
|
+
var _instance$$;
|
|
3421
|
+
if (refValue instanceof HTMLElement) {
|
|
3422
|
+
return refValue;
|
|
3423
|
+
}
|
|
3424
|
+
if (!refValue || _typeof(refValue) !== 'object') {
|
|
3425
|
+
return null;
|
|
3426
|
+
}
|
|
3427
|
+
var instance = refValue;
|
|
3428
|
+
if (instance.$el instanceof HTMLElement) {
|
|
3429
|
+
return instance.$el;
|
|
3430
|
+
}
|
|
3431
|
+
return _resolveElementFromVNode((_instance$$ = instance.$) === null || _instance$$ === void 0 ? void 0 : _instance$$.subTree);
|
|
3432
|
+
};
|
|
3380
3433
|
// 是否使用自定义 reference
|
|
3381
3434
|
var useCustomReference = (0,external_vue_namespaceObject.computed)(function () {
|
|
3382
3435
|
return !!reference.value || !!target.value;
|
|
@@ -3425,30 +3478,11 @@ var EMIT_EVENTS = {
|
|
|
3425
3478
|
/**
|
|
3426
3479
|
* 解析默认 slot reference 元素
|
|
3427
3480
|
*
|
|
3428
|
-
* referenceWrapperRef
|
|
3429
|
-
*
|
|
3430
|
-
*
|
|
3431
|
-
* 策略:优先使用第一个元素子节点作为 reference;否则向下寻找第一个具有可见尺寸的 HTMLElement。
|
|
3481
|
+
* referenceWrapperRef 在 wrapper 开启时指向外层 span,
|
|
3482
|
+
* wrapper 关闭时指向默认 slot 的实际元素。
|
|
3432
3483
|
*/
|
|
3433
3484
|
var resolveDefaultReferenceElement = function resolveDefaultReferenceElement() {
|
|
3434
|
-
|
|
3435
|
-
if (!wrapper) return null;
|
|
3436
|
-
// display: contents 的元素自身尺寸为 0,直接查找子元素
|
|
3437
|
-
var firstChild = wrapper.firstElementChild;
|
|
3438
|
-
if (firstChild instanceof HTMLElement) {
|
|
3439
|
-
return firstChild;
|
|
3440
|
-
}
|
|
3441
|
-
var descendants = wrapper.querySelectorAll('*');
|
|
3442
|
-
for (var _i = 0, _Array$from = Array.from(descendants); _i < _Array$from.length; _i++) {
|
|
3443
|
-
var node = _Array$from[_i];
|
|
3444
|
-
if (!(node instanceof HTMLElement)) continue;
|
|
3445
|
-
var rect = node.getBoundingClientRect();
|
|
3446
|
-
if (rect.width > 0 || rect.height > 0) {
|
|
3447
|
-
return node;
|
|
3448
|
-
}
|
|
3449
|
-
}
|
|
3450
|
-
// 兜底仍返回 wrapper,保证类型与行为一致
|
|
3451
|
-
return wrapper;
|
|
3485
|
+
return resolveReferenceRefElement(referenceWrapperRef.value);
|
|
3452
3486
|
};
|
|
3453
3487
|
// 延迟控制
|
|
3454
3488
|
var delayOptions = (0,external_vue_namespaceObject.computed)(function () {
|
|
@@ -3539,8 +3573,8 @@ var EMIT_EVENTS = {
|
|
|
3539
3573
|
return target.value;
|
|
3540
3574
|
}, function () {
|
|
3541
3575
|
return floatingReference.value;
|
|
3542
|
-
}], function () {
|
|
3543
|
-
|
|
3576
|
+
}, shouldRenderReferenceWrapper], function () {
|
|
3577
|
+
(0,external_vue_namespaceObject.nextTick)(updateFloatingReference);
|
|
3544
3578
|
});
|
|
3545
3579
|
(0,external_vue_namespaceObject.watch)(isOpen, function (val) {
|
|
3546
3580
|
if (val) {
|
|
@@ -3576,6 +3610,42 @@ var EMIT_EVENTS = {
|
|
|
3576
3610
|
}),
|
|
3577
3611
|
referenceListeners = _useTrigger.referenceListeners,
|
|
3578
3612
|
floatingListeners = _useTrigger.floatingListeners;
|
|
3613
|
+
var unbindNoWrapperReferenceEvents = [];
|
|
3614
|
+
var clearNoWrapperReferenceEvents = function clearNoWrapperReferenceEvents() {
|
|
3615
|
+
unbindNoWrapperReferenceEvents.forEach(function (unbind) {
|
|
3616
|
+
return unbind();
|
|
3617
|
+
});
|
|
3618
|
+
unbindNoWrapperReferenceEvents = [];
|
|
3619
|
+
};
|
|
3620
|
+
var resolveEventBinding = function resolveEventBinding(eventName) {
|
|
3621
|
+
var rawName = eventName.replace(/^on/, '');
|
|
3622
|
+
var capture = rawName.endsWith('Capture');
|
|
3623
|
+
return {
|
|
3624
|
+
capture: capture,
|
|
3625
|
+
name: rawName.replace(/Capture$/, '').toLowerCase()
|
|
3626
|
+
};
|
|
3627
|
+
};
|
|
3628
|
+
var bindNoWrapperReferenceEvents = function bindNoWrapperReferenceEvents() {
|
|
3629
|
+
clearNoWrapperReferenceEvents();
|
|
3630
|
+
if (shouldRenderReferenceWrapper.value) return;
|
|
3631
|
+
var referenceEl = resolveReferenceRefElement(referenceWrapperRef.value);
|
|
3632
|
+
if (!referenceEl) return;
|
|
3633
|
+
Object.keys(referenceListeners.value).forEach(function (eventName) {
|
|
3634
|
+
var listener = referenceListeners.value[eventName];
|
|
3635
|
+
var eventBinding = resolveEventBinding(eventName);
|
|
3636
|
+
referenceEl.addEventListener(eventBinding.name, listener, eventBinding.capture);
|
|
3637
|
+
unbindNoWrapperReferenceEvents.push(function () {
|
|
3638
|
+
referenceEl.removeEventListener(eventBinding.name, listener, eventBinding.capture);
|
|
3639
|
+
});
|
|
3640
|
+
});
|
|
3641
|
+
};
|
|
3642
|
+
(0,external_vue_namespaceObject.watch)([shouldRenderReferenceWrapper, referenceWrapperRef, function () {
|
|
3643
|
+
return referenceListeners.value;
|
|
3644
|
+
}], function () {
|
|
3645
|
+
(0,external_vue_namespaceObject.nextTick)(bindNoWrapperReferenceEvents);
|
|
3646
|
+
}, {
|
|
3647
|
+
immediate: true
|
|
3648
|
+
});
|
|
3579
3649
|
// hover 模式:把“子弹层”视为内容区的延伸(避免 PopConfirm 内 Select 下拉导致父弹层收起)
|
|
3580
3650
|
var hoverTrackMoveHandler = null;
|
|
3581
3651
|
var stopHoverTrack = function stopHoverTrack() {
|
|
@@ -3584,9 +3654,10 @@ var EMIT_EVENTS = {
|
|
|
3584
3654
|
hoverTrackMoveHandler = null;
|
|
3585
3655
|
};
|
|
3586
3656
|
var isTargetInSelfOrChildren = function isTargetInSelfOrChildren(targetEl) {
|
|
3587
|
-
var
|
|
3657
|
+
var _floatingRef$value;
|
|
3588
3658
|
var actualRef = floatingReferenceRef.value;
|
|
3589
|
-
|
|
3659
|
+
var referenceWrapperEl = shouldRenderReferenceWrapper.value ? resolveReferenceRefElement(referenceWrapperRef.value) : null;
|
|
3660
|
+
if (actualRef instanceof HTMLElement && actualRef.contains(targetEl) || referenceWrapperEl instanceof HTMLElement && referenceWrapperEl.contains(targetEl)) {
|
|
3590
3661
|
return true;
|
|
3591
3662
|
}
|
|
3592
3663
|
if ((_floatingRef$value = floatingRef.value) !== null && _floatingRef$value !== void 0 && _floatingRef$value.contains(targetEl)) {
|
|
@@ -3698,9 +3769,42 @@ var EMIT_EVENTS = {
|
|
|
3698
3769
|
var dataTheme = (0,external_vue_namespaceObject.computed)(function () {
|
|
3699
3770
|
return theme.value;
|
|
3700
3771
|
});
|
|
3772
|
+
// 兼容旧版自定义 theme 标记:theme="light bk-table-settings"
|
|
3773
|
+
// 除了追加 bk-table-settings class 外,还需要生成 data-bk-table-settings-theme="true",
|
|
3774
|
+
// table settings 等组件的弹层样式依赖该属性选择器。
|
|
3775
|
+
var extraThemeAttrs = (0,external_vue_namespaceObject.computed)(function () {
|
|
3776
|
+
var _parseTheme2 = parseTheme(theme.value),
|
|
3777
|
+
extraClasses = _parseTheme2.extraClasses;
|
|
3778
|
+
return extraClasses.reduce(function (attrs, className) {
|
|
3779
|
+
attrs["data-".concat(className, "-theme")] = 'true';
|
|
3780
|
+
return attrs;
|
|
3781
|
+
}, {});
|
|
3782
|
+
});
|
|
3783
|
+
var _filterEmptyNodes = function filterEmptyNodes() {
|
|
3784
|
+
var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
3785
|
+
var nodes = [];
|
|
3786
|
+
children.forEach(function (child) {
|
|
3787
|
+
if (!child) {
|
|
3788
|
+
return;
|
|
3789
|
+
}
|
|
3790
|
+
if (Array.isArray(child)) {
|
|
3791
|
+
nodes.push.apply(nodes, _toConsumableArray(_filterEmptyNodes(child)));
|
|
3792
|
+
return;
|
|
3793
|
+
}
|
|
3794
|
+
if (child.type === external_vue_namespaceObject.Fragment && Array.isArray(child.children)) {
|
|
3795
|
+
nodes.push.apply(nodes, _toConsumableArray(_filterEmptyNodes(child.children)));
|
|
3796
|
+
return;
|
|
3797
|
+
}
|
|
3798
|
+
nodes.push(child);
|
|
3799
|
+
});
|
|
3800
|
+
return nodes.filter(function (child) {
|
|
3801
|
+
var _child$children;
|
|
3802
|
+
return !(child && (child.type === external_vue_namespaceObject.Comment || child.type === external_vue_namespaceObject.Fragment && Array.isArray(child.children) && child.children.length === 0 || child.type === external_vue_namespaceObject.Text && "".concat((_child$children = child.children) !== null && _child$children !== void 0 ? _child$children : '').trim() === ''));
|
|
3803
|
+
});
|
|
3804
|
+
};
|
|
3701
3805
|
// 处理 clickoutside
|
|
3702
3806
|
var handleClickOutside = function handleClickOutside(event) {
|
|
3703
|
-
var
|
|
3807
|
+
var _floatingRef$value2;
|
|
3704
3808
|
if (disabled.value || always.value) {
|
|
3705
3809
|
return;
|
|
3706
3810
|
}
|
|
@@ -3711,7 +3815,8 @@ var EMIT_EVENTS = {
|
|
|
3711
3815
|
var target = event.target;
|
|
3712
3816
|
// 点击在 reference 内(包括自定义 reference 和默认 reference)
|
|
3713
3817
|
var actualRef = floatingReferenceRef.value;
|
|
3714
|
-
var
|
|
3818
|
+
var referenceWrapperEl = shouldRenderReferenceWrapper.value ? resolveReferenceRefElement(referenceWrapperRef.value) : null;
|
|
3819
|
+
var isInReference = actualRef instanceof HTMLElement && actualRef.contains(target) || referenceWrapperEl instanceof HTMLElement && referenceWrapperEl.contains(target);
|
|
3715
3820
|
if (isInReference) {
|
|
3716
3821
|
// 对于 click 和 hover 模式,点击 reference 的行为由 referenceListeners 处理
|
|
3717
3822
|
if (trigger.value === 'click' || trigger.value === 'hover') {
|
|
@@ -3781,38 +3886,35 @@ var EMIT_EVENTS = {
|
|
|
3781
3886
|
}
|
|
3782
3887
|
return isOpen.value;
|
|
3783
3888
|
});
|
|
3784
|
-
|
|
3785
|
-
var
|
|
3786
|
-
|
|
3787
|
-
|
|
3788
|
-
if (!customRef) return;
|
|
3789
|
-
var listeners = referenceListeners.value;
|
|
3790
|
-
Object.keys(listeners).forEach(function (eventName) {
|
|
3791
|
-
// 将 onMouseenter 转换为 mouseenter
|
|
3792
|
-
var nativeEventName = eventName.replace(/^on/, '').toLowerCase();
|
|
3793
|
-
customRef.addEventListener(nativeEventName, listeners[eventName]);
|
|
3889
|
+
var unbindCustomReferenceEvents = [];
|
|
3890
|
+
var clearCustomReferenceEvents = function clearCustomReferenceEvents() {
|
|
3891
|
+
unbindCustomReferenceEvents.forEach(function (unbind) {
|
|
3892
|
+
return unbind();
|
|
3794
3893
|
});
|
|
3894
|
+
unbindCustomReferenceEvents = [];
|
|
3795
3895
|
};
|
|
3796
|
-
var
|
|
3896
|
+
var bindCustomReferenceEvents = function bindCustomReferenceEvents() {
|
|
3897
|
+
clearCustomReferenceEvents();
|
|
3797
3898
|
if (!useCustomReference.value || isVirtualReferenceMode.value) return;
|
|
3798
3899
|
var customRef = getActualReferenceElement();
|
|
3799
3900
|
if (!customRef) return;
|
|
3800
|
-
|
|
3801
|
-
|
|
3802
|
-
var
|
|
3803
|
-
customRef.
|
|
3901
|
+
Object.keys(referenceListeners.value).forEach(function (eventName) {
|
|
3902
|
+
var listener = referenceListeners.value[eventName];
|
|
3903
|
+
var eventBinding = resolveEventBinding(eventName);
|
|
3904
|
+
customRef.addEventListener(eventBinding.name, listener, eventBinding.capture);
|
|
3905
|
+
unbindCustomReferenceEvents.push(function () {
|
|
3906
|
+
customRef.removeEventListener(eventBinding.name, listener, eventBinding.capture);
|
|
3907
|
+
});
|
|
3804
3908
|
});
|
|
3805
3909
|
};
|
|
3806
|
-
// 监听自定义 reference 变化
|
|
3807
3910
|
(0,external_vue_namespaceObject.watch)([function () {
|
|
3808
3911
|
return reference.value;
|
|
3809
3912
|
}, function () {
|
|
3810
3913
|
return target.value;
|
|
3914
|
+
}, function () {
|
|
3915
|
+
return referenceListeners.value;
|
|
3811
3916
|
}], function () {
|
|
3812
|
-
|
|
3813
|
-
(0,external_vue_namespaceObject.nextTick)(function () {
|
|
3814
|
-
bindCustomReferenceEvents();
|
|
3815
|
-
});
|
|
3917
|
+
(0,external_vue_namespaceObject.nextTick)(bindCustomReferenceEvents);
|
|
3816
3918
|
});
|
|
3817
3919
|
// 挂载时添加 clickoutside 监听
|
|
3818
3920
|
(0,external_vue_namespaceObject.onMounted)(function () {
|
|
@@ -3829,7 +3931,8 @@ var EMIT_EVENTS = {
|
|
|
3829
3931
|
// 卸载时清理
|
|
3830
3932
|
(0,external_vue_namespaceObject.onBeforeUnmount)(function () {
|
|
3831
3933
|
document.removeEventListener('click', handleClickOutside, true);
|
|
3832
|
-
|
|
3934
|
+
clearCustomReferenceEvents();
|
|
3935
|
+
clearNoWrapperReferenceEvents();
|
|
3833
3936
|
clearTimers();
|
|
3834
3937
|
if (eventDelayTimer) {
|
|
3835
3938
|
clearTimeout(eventDelayTimer);
|
|
@@ -3848,7 +3951,7 @@ var EMIT_EVENTS = {
|
|
|
3848
3951
|
id: popoverId,
|
|
3849
3952
|
floatingEl: floatingRef.value,
|
|
3850
3953
|
referenceEl: referenceEl,
|
|
3851
|
-
referenceWrapperEl: referenceWrapperRef.value
|
|
3954
|
+
referenceWrapperEl: shouldRenderReferenceWrapper.value ? resolveReferenceRefElement(referenceWrapperRef.value) : null
|
|
3852
3955
|
});
|
|
3853
3956
|
};
|
|
3854
3957
|
(0,external_vue_namespaceObject.watch)([floatingRef, floatingReferenceRef, referenceWrapperRef], function () {
|
|
@@ -3900,7 +4003,7 @@ var EMIT_EVENTS = {
|
|
|
3900
4003
|
return boundaryVal instanceof HTMLElement ? boundaryVal : 'body';
|
|
3901
4004
|
});
|
|
3902
4005
|
return function () {
|
|
3903
|
-
var _slots$arrow, _slots$content, _slots$content2, _slots$default;
|
|
4006
|
+
var _slots$arrow, _slots$content, _slots$content2, _slots$default, _slots$default2;
|
|
3904
4007
|
// 渲染 floating content
|
|
3905
4008
|
var floatingNode = shouldRenderContent.value ? (0,external_vue_namespaceObject.createVNode)("div", (0,external_vue_namespaceObject.mergeProps)({
|
|
3906
4009
|
"ref": floatingRef,
|
|
@@ -3908,9 +4011,10 @@ var EMIT_EVENTS = {
|
|
|
3908
4011
|
pointerEvents: contentPointerEvents.value
|
|
3909
4012
|
}),
|
|
3910
4013
|
"class": contentClass.value,
|
|
3911
|
-
"data-bk-popover-id": popoverId,
|
|
3912
|
-
"data-theme": dataTheme.value,
|
|
3913
4014
|
"data-arrow": arrowSide.value,
|
|
4015
|
+
"data-bk-popover-id": popoverId,
|
|
4016
|
+
"data-theme": dataTheme.value
|
|
4017
|
+
}, extraThemeAttrs.value, {
|
|
3914
4018
|
"onClick": handleClickContent
|
|
3915
4019
|
}, guardedFloatingListeners.value), [arrow.value && (0,external_vue_namespaceObject.createVNode)("div", {
|
|
3916
4020
|
"ref": arrowRef,
|
|
@@ -3918,8 +4022,7 @@ var EMIT_EVENTS = {
|
|
|
3918
4022
|
"class": resolveClassName('pop2-arrow'),
|
|
3919
4023
|
"data-arrow": arrowSide.value
|
|
3920
4024
|
}, [(_slots$arrow = slots.arrow) === null || _slots$arrow === void 0 ? void 0 : _slots$arrow.call(slots)]), (_slots$content = (_slots$content2 = slots.content) === null || _slots$content2 === void 0 ? void 0 : _slots$content2.call(slots)) !== null && _slots$content !== void 0 ? _slots$content : renderContent()]) : null;
|
|
3921
|
-
|
|
3922
|
-
if (useCustomReference.value) {
|
|
4025
|
+
var renderTeleport = function renderTeleport() {
|
|
3923
4026
|
return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Teleport, {
|
|
3924
4027
|
"disabled": disableTeleport.value,
|
|
3925
4028
|
"to": teleportTo.value
|
|
@@ -3928,25 +4031,59 @@ var EMIT_EVENTS = {
|
|
|
3928
4031
|
return [floatingNode];
|
|
3929
4032
|
}
|
|
3930
4033
|
});
|
|
4034
|
+
};
|
|
4035
|
+
// 如果使用自定义 reference(虚拟元素或外部 HTMLElement),只渲染 Teleport 内容
|
|
4036
|
+
if (useCustomReference.value) {
|
|
4037
|
+
return renderTeleport();
|
|
3931
4038
|
}
|
|
3932
|
-
|
|
3933
|
-
|
|
3934
|
-
|
|
3935
|
-
"
|
|
3936
|
-
|
|
3937
|
-
|
|
3938
|
-
|
|
3939
|
-
|
|
3940
|
-
|
|
3941
|
-
|
|
3942
|
-
}
|
|
3943
|
-
|
|
3944
|
-
|
|
3945
|
-
|
|
3946
|
-
|
|
3947
|
-
|
|
4039
|
+
var defaultSlotNodes = (_slots$default = (_slots$default2 = slots["default"]) === null || _slots$default2 === void 0 ? void 0 : _slots$default2.call(slots)) !== null && _slots$default !== void 0 ? _slots$default : [];
|
|
4040
|
+
var referenceNodes = _filterEmptyNodes(defaultSlotNodes);
|
|
4041
|
+
if (shouldRenderReferenceWrapper.value) {
|
|
4042
|
+
return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [(0,external_vue_namespaceObject.createVNode)("span", (0,external_vue_namespaceObject.mergeProps)({
|
|
4043
|
+
"ref": referenceWrapperRef,
|
|
4044
|
+
"style": {
|
|
4045
|
+
display: 'inline-block'
|
|
4046
|
+
},
|
|
4047
|
+
"class": [referenceCls.value, attrs["class"]]
|
|
4048
|
+
}, referenceListeners.value), [defaultSlotNodes]), renderTeleport()]);
|
|
4049
|
+
}
|
|
4050
|
+
var renderReferenceNode = function renderReferenceNode() {
|
|
4051
|
+
if (!referenceNodes.length) {
|
|
4052
|
+
return null;
|
|
4053
|
+
}
|
|
4054
|
+
// 默认无包裹模式:保持 Fragment 根结构,不主动追加任何具体 DOM。
|
|
4055
|
+
// 为了兼容定位与触发事件,尽可能把 ref/class 透传到第一个非文本 reference 节点。
|
|
4056
|
+
// 但纯文本 slot 没有可承载 ref 和监听器的 DOM 节点,需要生成一个 span 作为触发元素。
|
|
4057
|
+
var isTextReference = referenceNodes.every(function (node) {
|
|
4058
|
+
return (0,external_vue_namespaceObject.isVNode)(node) && node.type === external_vue_namespaceObject.Text;
|
|
4059
|
+
});
|
|
4060
|
+
if (isTextReference) {
|
|
4061
|
+
return (0,external_vue_namespaceObject.createVNode)("span", {
|
|
4062
|
+
"ref": referenceWrapperRef,
|
|
4063
|
+
"style": {
|
|
4064
|
+
display: 'inline-block'
|
|
4065
|
+
},
|
|
4066
|
+
"class": [referenceCls.value, attrs["class"]]
|
|
4067
|
+
}, [referenceNodes]);
|
|
4068
|
+
}
|
|
4069
|
+
var referenceNodeIndex = referenceNodes.findIndex(function (node) {
|
|
4070
|
+
return (0,external_vue_namespaceObject.isVNode)(node) && node.type !== external_vue_namespaceObject.Text && node.type !== external_vue_namespaceObject.Comment;
|
|
4071
|
+
});
|
|
4072
|
+
if (referenceNodeIndex < 0) {
|
|
4073
|
+
return referenceNodes;
|
|
3948
4074
|
}
|
|
3949
|
-
|
|
4075
|
+
return referenceNodes.map(function (node, index) {
|
|
4076
|
+
if (index !== referenceNodeIndex || !(0,external_vue_namespaceObject.isVNode)(node)) {
|
|
4077
|
+
return node;
|
|
4078
|
+
}
|
|
4079
|
+
return (0,external_vue_namespaceObject.cloneVNode)(node, {
|
|
4080
|
+
ref: setReferenceRef,
|
|
4081
|
+
"class": [referenceCls.value, attrs["class"]]
|
|
4082
|
+
}, true);
|
|
4083
|
+
});
|
|
4084
|
+
};
|
|
4085
|
+
// 默认情况:渲染 reference 和 floating content
|
|
4086
|
+
return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [renderReferenceNode(), renderTeleport()]);
|
|
3950
4087
|
};
|
|
3951
4088
|
}
|
|
3952
4089
|
}));
|
package/lib/popover/popover.d.ts
CHANGED
|
@@ -131,6 +131,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
131
131
|
} & {
|
|
132
132
|
default: string;
|
|
133
133
|
};
|
|
134
|
+
renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
|
|
135
|
+
default: boolean;
|
|
136
|
+
} & {
|
|
137
|
+
default: boolean;
|
|
138
|
+
};
|
|
134
139
|
hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
|
|
135
140
|
default: boolean;
|
|
136
141
|
} & {
|
|
@@ -279,6 +284,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
279
284
|
} & {
|
|
280
285
|
default: string;
|
|
281
286
|
};
|
|
287
|
+
renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
|
|
288
|
+
default: boolean;
|
|
289
|
+
} & {
|
|
290
|
+
default: boolean;
|
|
291
|
+
};
|
|
282
292
|
hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
|
|
283
293
|
default: boolean;
|
|
284
294
|
} & {
|
|
@@ -335,6 +345,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
335
345
|
popoverDelay: number | number[];
|
|
336
346
|
extCls: string;
|
|
337
347
|
referenceCls: string;
|
|
348
|
+
renderReferenceWrapper: boolean;
|
|
338
349
|
hideIgnoreReference: boolean;
|
|
339
350
|
componentEventDelay: number;
|
|
340
351
|
forceClickoutside: boolean;
|
package/lib/popover/props.d.ts
CHANGED
|
@@ -180,6 +180,14 @@ export declare const PopoverProps: {
|
|
|
180
180
|
} & {
|
|
181
181
|
default: string;
|
|
182
182
|
};
|
|
183
|
+
/**
|
|
184
|
+
* 是否渲染默认插槽最外层 reference span;仅 true 时主动追加 span
|
|
185
|
+
*/
|
|
186
|
+
renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
|
|
187
|
+
default: boolean;
|
|
188
|
+
} & {
|
|
189
|
+
default: boolean;
|
|
190
|
+
};
|
|
183
191
|
/**
|
|
184
192
|
* 点击 Reference 占位区是否忽略收起 popover
|
|
185
193
|
*/
|
package/lib/preset.d.ts
CHANGED
|
@@ -139,6 +139,10 @@ declare const _default: {
|
|
|
139
139
|
};
|
|
140
140
|
}>;
|
|
141
141
|
};
|
|
142
|
+
popoverRenderReferenceWrapper: {
|
|
143
|
+
type: import("vue").PropType<boolean>;
|
|
144
|
+
default: any;
|
|
145
|
+
};
|
|
142
146
|
prefix: {
|
|
143
147
|
type: StringConstructor;
|
|
144
148
|
default: string;
|
|
@@ -283,6 +287,10 @@ declare const _default: {
|
|
|
283
287
|
};
|
|
284
288
|
}>;
|
|
285
289
|
};
|
|
290
|
+
popoverRenderReferenceWrapper: {
|
|
291
|
+
type: import("vue").PropType<boolean>;
|
|
292
|
+
default: any;
|
|
293
|
+
};
|
|
286
294
|
prefix: {
|
|
287
295
|
type: StringConstructor;
|
|
288
296
|
default: string;
|