bkui-vue 2.1.0-dev-beta.13 → 2.1.0-dev-beta.14

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.
Files changed (37) hide show
  1. package/dist/index.cjs.js +54 -54
  2. package/dist/index.esm.js +11386 -11291
  3. package/dist/index.umd.js +54 -54
  4. package/lib/cascader/cascader.d.ts +12 -2
  5. package/lib/cascader/index.d.ts +21 -6
  6. package/lib/config-provider/config-provider.d.ts +13 -0
  7. package/lib/config-provider/index.d.ts +15 -0
  8. package/lib/config-provider/index.js +6 -1
  9. package/lib/config-provider/token.d.ts +1 -0
  10. package/lib/index.js +1 -1
  11. package/lib/message/messageConstructor.d.ts +1 -1
  12. package/lib/notify/notifyConstructor.d.ts +1 -1
  13. package/lib/overflow-title/components/overflow-title.d.ts +10 -0
  14. package/lib/overflow-title/index.d.ts +15 -0
  15. package/lib/overflow-title/props.d.ts +5 -0
  16. package/lib/pop-confirm/index.d.ts +15 -0
  17. package/lib/pop-confirm/pop-confirm.d.ts +10 -0
  18. package/lib/pop-confirm/props.d.ts +5 -0
  19. package/lib/popover/index.d.ts +18 -0
  20. package/lib/popover/index.js +204 -54
  21. package/lib/popover/popover.d.ts +11 -0
  22. package/lib/popover/props.d.ts +8 -0
  23. package/lib/preset.d.ts +8 -0
  24. package/lib/select/index.d.ts +39 -9
  25. package/lib/select/select.d.ts +18 -3
  26. package/lib/select/selectTagInput.d.ts +1 -1
  27. package/lib/table/components/table-column.d.ts +2 -2
  28. package/lib/table/index.d.ts +2 -2
  29. package/lib/table-column/index.d.ts +3 -3
  30. package/lib/tag-input/index.d.ts +35 -2
  31. package/lib/tag-input/tag-input.d.ts +17 -1
  32. package/lib/tag-input/tag-props.d.ts +5 -0
  33. package/lib/tree/index.d.ts +3 -3
  34. package/lib/tree/tree.d.ts +1 -1
  35. package/lib/virtual-render/index.d.ts +24 -24
  36. package/lib/virtual-render/virtual-render.d.ts +11 -11
  37. package/package.json +1 -1
@@ -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;false 时不主动追加 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 anyEvent = event;
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,21 @@ 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 isReferenceWrapperDisabled = (0,external_vue_namespaceObject.computed)(function () {
3367
+ if (renderReferenceWrapper.value !== undefined) {
3368
+ return renderReferenceWrapper.value === false;
3369
+ }
3370
+ var globalValue = globalConfig.value.popoverRenderReferenceWrapper;
3371
+ if (globalValue !== undefined) {
3372
+ return globalValue === false;
3373
+ }
3374
+ return false;
3375
+ });
3376
+ var setReferenceRef = function setReferenceRef(refValue) {
3377
+ referenceWrapperRef.value = refValue;
3378
+ };
3361
3379
  // 判断是否为虚拟元素
3362
3380
  var isVirtualElement = function isVirtualElement(el) {
3363
3381
  return el !== null && _typeof(el) === 'object' && 'getBoundingClientRect' in el && typeof el.getBoundingClientRect === 'function';
@@ -3377,6 +3395,47 @@ var EMIT_EVENTS = {
3377
3395
  }
3378
3396
  return null;
3379
3397
  };
3398
+ var _resolveElementFromVNode = function resolveElementFromVNode(node) {
3399
+ var _node$component;
3400
+ if (!node) return null;
3401
+ if (node.el instanceof HTMLElement) return node.el;
3402
+ var subTree = (_node$component = node.component) === null || _node$component === void 0 ? void 0 : _node$component.subTree;
3403
+ if (subTree) {
3404
+ var element = _resolveElementFromVNode(subTree);
3405
+ if (element) return element;
3406
+ }
3407
+ if (Array.isArray(node.children)) {
3408
+ var _iterator2 = _createForOfIteratorHelper(node.children),
3409
+ _step2;
3410
+ try {
3411
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
3412
+ var child = _step2.value;
3413
+ if (!(0,external_vue_namespaceObject.isVNode)(child)) continue;
3414
+ var _element = _resolveElementFromVNode(child);
3415
+ if (_element) return _element;
3416
+ }
3417
+ } catch (err) {
3418
+ _iterator2.e(err);
3419
+ } finally {
3420
+ _iterator2.f();
3421
+ }
3422
+ }
3423
+ return null;
3424
+ };
3425
+ var resolveReferenceRefElement = function resolveReferenceRefElement(refValue) {
3426
+ var _instance$$;
3427
+ if (refValue instanceof HTMLElement) {
3428
+ return refValue;
3429
+ }
3430
+ if (!refValue || _typeof(refValue) !== 'object') {
3431
+ return null;
3432
+ }
3433
+ var instance = refValue;
3434
+ if (instance.$el instanceof HTMLElement) {
3435
+ return instance.$el;
3436
+ }
3437
+ return _resolveElementFromVNode((_instance$$ = instance.$) === null || _instance$$ === void 0 ? void 0 : _instance$$.subTree);
3438
+ };
3380
3439
  // 是否使用自定义 reference
3381
3440
  var useCustomReference = (0,external_vue_namespaceObject.computed)(function () {
3382
3441
  return !!reference.value || !!target.value;
@@ -3431,8 +3490,11 @@ var EMIT_EVENTS = {
3431
3490
  * 策略:优先使用第一个元素子节点作为 reference;否则向下寻找第一个具有可见尺寸的 HTMLElement。
3432
3491
  */
3433
3492
  var resolveDefaultReferenceElement = function resolveDefaultReferenceElement() {
3434
- var wrapper = referenceWrapperRef.value;
3493
+ var wrapper = resolveReferenceRefElement(referenceWrapperRef.value);
3435
3494
  if (!wrapper) return null;
3495
+ if (isReferenceWrapperDisabled.value) {
3496
+ return wrapper;
3497
+ }
3436
3498
  // display: contents 的元素自身尺寸为 0,直接查找子元素
3437
3499
  var firstChild = wrapper.firstElementChild;
3438
3500
  if (firstChild instanceof HTMLElement) {
@@ -3540,7 +3602,7 @@ var EMIT_EVENTS = {
3540
3602
  }, function () {
3541
3603
  return floatingReference.value;
3542
3604
  }], function () {
3543
- return (0,external_vue_namespaceObject.nextTick)(updateFloatingReference);
3605
+ (0,external_vue_namespaceObject.nextTick)(updateFloatingReference);
3544
3606
  });
3545
3607
  (0,external_vue_namespaceObject.watch)(isOpen, function (val) {
3546
3608
  if (val) {
@@ -3576,6 +3638,42 @@ var EMIT_EVENTS = {
3576
3638
  }),
3577
3639
  referenceListeners = _useTrigger.referenceListeners,
3578
3640
  floatingListeners = _useTrigger.floatingListeners;
3641
+ var unbindNoWrapperReferenceEvents = [];
3642
+ var clearNoWrapperReferenceEvents = function clearNoWrapperReferenceEvents() {
3643
+ unbindNoWrapperReferenceEvents.forEach(function (unbind) {
3644
+ return unbind();
3645
+ });
3646
+ unbindNoWrapperReferenceEvents = [];
3647
+ };
3648
+ var resolveEventBinding = function resolveEventBinding(eventName) {
3649
+ var rawName = eventName.replace(/^on/, '');
3650
+ var capture = rawName.endsWith('Capture');
3651
+ return {
3652
+ capture: capture,
3653
+ name: rawName.replace(/Capture$/, '').toLowerCase()
3654
+ };
3655
+ };
3656
+ var bindNoWrapperReferenceEvents = function bindNoWrapperReferenceEvents() {
3657
+ clearNoWrapperReferenceEvents();
3658
+ if (!isReferenceWrapperDisabled.value) return;
3659
+ var referenceEl = resolveReferenceRefElement(referenceWrapperRef.value);
3660
+ if (!referenceEl) return;
3661
+ Object.keys(referenceListeners.value).forEach(function (eventName) {
3662
+ var listener = referenceListeners.value[eventName];
3663
+ var eventBinding = resolveEventBinding(eventName);
3664
+ referenceEl.addEventListener(eventBinding.name, listener, eventBinding.capture);
3665
+ unbindNoWrapperReferenceEvents.push(function () {
3666
+ referenceEl.removeEventListener(eventBinding.name, listener, eventBinding.capture);
3667
+ });
3668
+ });
3669
+ };
3670
+ (0,external_vue_namespaceObject.watch)([isReferenceWrapperDisabled, referenceWrapperRef, function () {
3671
+ return referenceListeners.value;
3672
+ }], function () {
3673
+ (0,external_vue_namespaceObject.nextTick)(bindNoWrapperReferenceEvents);
3674
+ }, {
3675
+ immediate: true
3676
+ });
3579
3677
  // hover 模式:把“子弹层”视为内容区的延伸(避免 PopConfirm 内 Select 下拉导致父弹层收起)
3580
3678
  var hoverTrackMoveHandler = null;
3581
3679
  var stopHoverTrack = function stopHoverTrack() {
@@ -3584,9 +3682,10 @@ var EMIT_EVENTS = {
3584
3682
  hoverTrackMoveHandler = null;
3585
3683
  };
3586
3684
  var isTargetInSelfOrChildren = function isTargetInSelfOrChildren(targetEl) {
3587
- var _referenceWrapperRef$, _floatingRef$value;
3685
+ var _floatingRef$value;
3588
3686
  var actualRef = floatingReferenceRef.value;
3589
- if (actualRef instanceof HTMLElement && actualRef.contains(targetEl) || (_referenceWrapperRef$ = referenceWrapperRef.value) !== null && _referenceWrapperRef$ !== void 0 && _referenceWrapperRef$.contains(targetEl)) {
3687
+ var referenceWrapperEl = isReferenceWrapperDisabled.value ? null : resolveReferenceRefElement(referenceWrapperRef.value);
3688
+ if (actualRef instanceof HTMLElement && actualRef.contains(targetEl) || referenceWrapperEl instanceof HTMLElement && referenceWrapperEl.contains(targetEl)) {
3590
3689
  return true;
3591
3690
  }
3592
3691
  if ((_floatingRef$value = floatingRef.value) !== null && _floatingRef$value !== void 0 && _floatingRef$value.contains(targetEl)) {
@@ -3698,9 +3797,36 @@ var EMIT_EVENTS = {
3698
3797
  var dataTheme = (0,external_vue_namespaceObject.computed)(function () {
3699
3798
  return theme.value;
3700
3799
  });
3800
+ var _filterEmptyNodes = function filterEmptyNodes() {
3801
+ var children = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
3802
+ var nodes = [];
3803
+ children.forEach(function (child) {
3804
+ if (!child) {
3805
+ return;
3806
+ }
3807
+ if (Array.isArray(child)) {
3808
+ nodes.push.apply(nodes, _toConsumableArray(_filterEmptyNodes(child)));
3809
+ return;
3810
+ }
3811
+ if (child.type === external_vue_namespaceObject.Fragment && Array.isArray(child.children)) {
3812
+ nodes.push.apply(nodes, _toConsumableArray(_filterEmptyNodes(child.children)));
3813
+ return;
3814
+ }
3815
+ nodes.push(child);
3816
+ });
3817
+ return nodes.filter(function (child) {
3818
+ var _child$children;
3819
+ 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() === ''));
3820
+ });
3821
+ };
3822
+ var hasElementNode = function hasElementNode(nodes) {
3823
+ return nodes.some(function (node) {
3824
+ return node.type !== external_vue_namespaceObject.Text && node.type !== external_vue_namespaceObject.Comment;
3825
+ });
3826
+ };
3701
3827
  // 处理 clickoutside
3702
3828
  var handleClickOutside = function handleClickOutside(event) {
3703
- var _referenceWrapperRef$2, _floatingRef$value2;
3829
+ var _floatingRef$value2;
3704
3830
  if (disabled.value || always.value) {
3705
3831
  return;
3706
3832
  }
@@ -3711,7 +3837,8 @@ var EMIT_EVENTS = {
3711
3837
  var target = event.target;
3712
3838
  // 点击在 reference 内(包括自定义 reference 和默认 reference)
3713
3839
  var actualRef = floatingReferenceRef.value;
3714
- var isInReference = actualRef instanceof HTMLElement && actualRef.contains(target) || ((_referenceWrapperRef$2 = referenceWrapperRef.value) === null || _referenceWrapperRef$2 === void 0 ? void 0 : _referenceWrapperRef$2.contains(target));
3840
+ var referenceWrapperEl = isReferenceWrapperDisabled.value ? null : resolveReferenceRefElement(referenceWrapperRef.value);
3841
+ var isInReference = actualRef instanceof HTMLElement && actualRef.contains(target) || referenceWrapperEl instanceof HTMLElement && referenceWrapperEl.contains(target);
3715
3842
  if (isInReference) {
3716
3843
  // 对于 click 和 hover 模式,点击 reference 的行为由 referenceListeners 处理
3717
3844
  if (trigger.value === 'click' || trigger.value === 'hover') {
@@ -3781,38 +3908,35 @@ var EMIT_EVENTS = {
3781
3908
  }
3782
3909
  return isOpen.value;
3783
3910
  });
3784
- // 为自定义 reference 元素添加事件监听(仅对 HTMLElement 有效,虚拟元素不绑定事件)
3785
- var bindCustomReferenceEvents = function bindCustomReferenceEvents() {
3786
- if (!useCustomReference.value || isVirtualReferenceMode.value) return;
3787
- var customRef = getActualReferenceElement();
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]);
3911
+ var unbindCustomReferenceEvents = [];
3912
+ var clearCustomReferenceEvents = function clearCustomReferenceEvents() {
3913
+ unbindCustomReferenceEvents.forEach(function (unbind) {
3914
+ return unbind();
3794
3915
  });
3916
+ unbindCustomReferenceEvents = [];
3795
3917
  };
3796
- var unbindCustomReferenceEvents = function unbindCustomReferenceEvents() {
3918
+ var bindCustomReferenceEvents = function bindCustomReferenceEvents() {
3919
+ clearCustomReferenceEvents();
3797
3920
  if (!useCustomReference.value || isVirtualReferenceMode.value) return;
3798
3921
  var customRef = getActualReferenceElement();
3799
3922
  if (!customRef) return;
3800
- var listeners = referenceListeners.value;
3801
- Object.keys(listeners).forEach(function (eventName) {
3802
- var nativeEventName = eventName.replace(/^on/, '').toLowerCase();
3803
- customRef.removeEventListener(nativeEventName, listeners[eventName]);
3923
+ Object.keys(referenceListeners.value).forEach(function (eventName) {
3924
+ var listener = referenceListeners.value[eventName];
3925
+ var eventBinding = resolveEventBinding(eventName);
3926
+ customRef.addEventListener(eventBinding.name, listener, eventBinding.capture);
3927
+ unbindCustomReferenceEvents.push(function () {
3928
+ customRef.removeEventListener(eventBinding.name, listener, eventBinding.capture);
3929
+ });
3804
3930
  });
3805
3931
  };
3806
- // 监听自定义 reference 变化
3807
3932
  (0,external_vue_namespaceObject.watch)([function () {
3808
3933
  return reference.value;
3809
3934
  }, function () {
3810
3935
  return target.value;
3936
+ }, function () {
3937
+ return referenceListeners.value;
3811
3938
  }], function () {
3812
- unbindCustomReferenceEvents();
3813
- (0,external_vue_namespaceObject.nextTick)(function () {
3814
- bindCustomReferenceEvents();
3815
- });
3939
+ (0,external_vue_namespaceObject.nextTick)(bindCustomReferenceEvents);
3816
3940
  });
3817
3941
  // 挂载时添加 clickoutside 监听
3818
3942
  (0,external_vue_namespaceObject.onMounted)(function () {
@@ -3829,7 +3953,8 @@ var EMIT_EVENTS = {
3829
3953
  // 卸载时清理
3830
3954
  (0,external_vue_namespaceObject.onBeforeUnmount)(function () {
3831
3955
  document.removeEventListener('click', handleClickOutside, true);
3832
- unbindCustomReferenceEvents();
3956
+ clearCustomReferenceEvents();
3957
+ clearNoWrapperReferenceEvents();
3833
3958
  clearTimers();
3834
3959
  if (eventDelayTimer) {
3835
3960
  clearTimeout(eventDelayTimer);
@@ -3848,7 +3973,7 @@ var EMIT_EVENTS = {
3848
3973
  id: popoverId,
3849
3974
  floatingEl: floatingRef.value,
3850
3975
  referenceEl: referenceEl,
3851
- referenceWrapperEl: referenceWrapperRef.value
3976
+ referenceWrapperEl: isReferenceWrapperDisabled.value ? null : resolveReferenceRefElement(referenceWrapperRef.value)
3852
3977
  });
3853
3978
  };
3854
3979
  (0,external_vue_namespaceObject.watch)([floatingRef, floatingReferenceRef, referenceWrapperRef], function () {
@@ -3900,7 +4025,7 @@ var EMIT_EVENTS = {
3900
4025
  return boundaryVal instanceof HTMLElement ? boundaryVal : 'body';
3901
4026
  });
3902
4027
  return function () {
3903
- var _slots$arrow, _slots$content, _slots$content2, _slots$default;
4028
+ var _slots$arrow, _slots$content, _slots$content2, _slots$default, _slots$default2;
3904
4029
  // 渲染 floating content
3905
4030
  var floatingNode = shouldRenderContent.value ? (0,external_vue_namespaceObject.createVNode)("div", (0,external_vue_namespaceObject.mergeProps)({
3906
4031
  "ref": floatingRef,
@@ -3908,9 +4033,9 @@ var EMIT_EVENTS = {
3908
4033
  pointerEvents: contentPointerEvents.value
3909
4034
  }),
3910
4035
  "class": contentClass.value,
4036
+ "data-arrow": arrowSide.value,
3911
4037
  "data-bk-popover-id": popoverId,
3912
4038
  "data-theme": dataTheme.value,
3913
- "data-arrow": arrowSide.value,
3914
4039
  "onClick": handleClickContent
3915
4040
  }, guardedFloatingListeners.value), [arrow.value && (0,external_vue_namespaceObject.createVNode)("div", {
3916
4041
  "ref": arrowRef,
@@ -3918,8 +4043,7 @@ var EMIT_EVENTS = {
3918
4043
  "class": resolveClassName('pop2-arrow'),
3919
4044
  "data-arrow": arrowSide.value
3920
4045
  }, [(_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
- // 如果使用自定义 reference(虚拟元素或外部 HTMLElement),只渲染 Teleport 内容
3922
- if (useCustomReference.value) {
4046
+ var renderTeleport = function renderTeleport() {
3923
4047
  return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Teleport, {
3924
4048
  "disabled": disableTeleport.value,
3925
4049
  "to": teleportTo.value
@@ -3928,25 +4052,51 @@ var EMIT_EVENTS = {
3928
4052
  return [floatingNode];
3929
4053
  }
3930
4054
  });
4055
+ };
4056
+ // 如果使用自定义 reference(虚拟元素或外部 HTMLElement),只渲染 Teleport 内容
4057
+ if (useCustomReference.value) {
4058
+ return renderTeleport();
3931
4059
  }
3932
- // 默认情况:渲染 reference floating content
3933
- // 使用 display: contents 避免影响内部元素布局
3934
- return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [(0,external_vue_namespaceObject.createVNode)("span", (0,external_vue_namespaceObject.mergeProps)({
3935
- "ref": referenceWrapperRef,
3936
- "style": {
3937
- display: 'contents',
3938
- width: '100%',
3939
- height: '100%'
3940
- },
3941
- "class": [referenceCls.value, attrs["class"]]
3942
- }, referenceListeners.value), [(_slots$default = slots["default"]) === null || _slots$default === void 0 ? void 0 : _slots$default.call(slots)]), (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Teleport, {
3943
- "disabled": disableTeleport.value,
3944
- "to": teleportTo.value
3945
- }, _isSlot(floatingNode) ? floatingNode : {
3946
- "default": function _default() {
3947
- return [floatingNode];
4060
+ 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 : [];
4061
+ var referenceNodes = _filterEmptyNodes(defaultSlotNodes);
4062
+ var useContentsWrapper = hasElementNode(referenceNodes);
4063
+ if (!isReferenceWrapperDisabled.value) {
4064
+ return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [(0,external_vue_namespaceObject.createVNode)("span", (0,external_vue_namespaceObject.mergeProps)({
4065
+ "ref": referenceWrapperRef,
4066
+ "style": useContentsWrapper ? {
4067
+ display: 'contents'
4068
+ } : {
4069
+ display: 'inline-block'
4070
+ },
4071
+ "class": [referenceCls.value, attrs["class"]]
4072
+ }, referenceListeners.value), [defaultSlotNodes]), renderTeleport()]);
4073
+ }
4074
+ var renderReferenceNode = function renderReferenceNode() {
4075
+ if (!referenceNodes.length) {
4076
+ return null;
3948
4077
  }
3949
- })]);
4078
+ // 无包裹模式下,只有“单个非文本 VNode”可以保持原 DOM 结构不变。
4079
+ // 文本节点或多个节点没有唯一 HTMLElement 可作为 floating reference,必须降级为 span。
4080
+ if (referenceNodes.length > 1 || referenceNodes[0].type === external_vue_namespaceObject.Text) {
4081
+ return (0,external_vue_namespaceObject.createVNode)("span", {
4082
+ "ref": setReferenceRef,
4083
+ "style": {
4084
+ display: 'inline-block'
4085
+ },
4086
+ "class": [referenceCls.value, attrs["class"]]
4087
+ }, [referenceNodes]);
4088
+ }
4089
+ var referenceNode = referenceNodes[0];
4090
+ if (!(0,external_vue_namespaceObject.isVNode)(referenceNode) || referenceNode.type === external_vue_namespaceObject.Comment) {
4091
+ return referenceNode;
4092
+ }
4093
+ return (0,external_vue_namespaceObject.cloneVNode)(referenceNode, {
4094
+ ref: setReferenceRef,
4095
+ "class": [referenceCls.value, attrs["class"]]
4096
+ }, true);
4097
+ };
4098
+ // 默认情况:渲染 reference 和 floating content
4099
+ return (0,external_vue_namespaceObject.createVNode)(external_vue_namespaceObject.Fragment, null, [renderReferenceNode(), renderTeleport()]);
3950
4100
  };
3951
4101
  }
3952
4102
  }));
@@ -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;
@@ -180,6 +180,14 @@ export declare const PopoverProps: {
180
180
  } & {
181
181
  default: string;
182
182
  };
183
+ /**
184
+ * 是否渲染默认插槽最外层 reference span;false 时不主动追加 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;
@@ -250,6 +250,11 @@ declare const BkSelect: {
250
250
  } & {
251
251
  default: string;
252
252
  };
253
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
254
+ default: boolean;
255
+ } & {
256
+ default: boolean;
257
+ };
253
258
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
254
259
  default: boolean;
255
260
  } & {
@@ -455,7 +460,7 @@ declare const BkSelect: {
455
460
  handleInput: (e: any) => void;
456
461
  handleKeydown: (e: any) => void;
457
462
  resolveClassName: (cls: string) => string;
458
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
463
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
459
464
  disabled: boolean;
460
465
  placeholder: string;
461
466
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -598,7 +603,7 @@ declare const BkSelect: {
598
603
  handleInput: (e: any) => void;
599
604
  handleKeydown: (e: any) => void;
600
605
  resolveClassName: (cls: string) => string;
601
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
606
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
602
607
  disabled: boolean;
603
608
  placeholder: string;
604
609
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -833,6 +838,11 @@ declare const BkSelect: {
833
838
  } & {
834
839
  default: string;
835
840
  };
841
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
842
+ default: boolean;
843
+ } & {
844
+ default: boolean;
845
+ };
836
846
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
837
847
  default: boolean;
838
848
  } & {
@@ -895,6 +905,7 @@ declare const BkSelect: {
895
905
  multiple: boolean;
896
906
  disabled: boolean;
897
907
  trigger: "default" | "manual";
908
+ scrollHeight: number;
898
909
  minHeight: number;
899
910
  showOnInit: boolean;
900
911
  loading: boolean;
@@ -903,7 +914,6 @@ declare const BkSelect: {
903
914
  tagTheme: "" | "danger" | "success" | "warning" | "info";
904
915
  behavior: "normal" | "simplicity";
905
916
  selectedStyle: "checkbox" | "check";
906
- scrollHeight: number;
907
917
  clearable: boolean;
908
918
  withValidate: boolean;
909
919
  noDataText: string;
@@ -1192,6 +1202,11 @@ declare const BkSelect: {
1192
1202
  } & {
1193
1203
  default: string;
1194
1204
  };
1205
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
1206
+ default: boolean;
1207
+ } & {
1208
+ default: boolean;
1209
+ };
1195
1210
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
1196
1211
  default: boolean;
1197
1212
  } & {
@@ -1397,7 +1412,7 @@ declare const BkSelect: {
1397
1412
  handleInput: (e: any) => void;
1398
1413
  handleKeydown: (e: any) => void;
1399
1414
  resolveClassName: (cls: string) => string;
1400
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
1415
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
1401
1416
  disabled: boolean;
1402
1417
  placeholder: string;
1403
1418
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -1540,7 +1555,7 @@ declare const BkSelect: {
1540
1555
  handleInput: (e: any) => void;
1541
1556
  handleKeydown: (e: any) => void;
1542
1557
  resolveClassName: (cls: string) => string;
1543
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
1558
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
1544
1559
  disabled: boolean;
1545
1560
  placeholder: string;
1546
1561
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -1775,6 +1790,11 @@ declare const BkSelect: {
1775
1790
  } & {
1776
1791
  default: string;
1777
1792
  };
1793
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
1794
+ default: boolean;
1795
+ } & {
1796
+ default: boolean;
1797
+ };
1778
1798
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
1779
1799
  default: boolean;
1780
1800
  } & {
@@ -1837,6 +1857,7 @@ declare const BkSelect: {
1837
1857
  multiple: boolean;
1838
1858
  disabled: boolean;
1839
1859
  trigger: "default" | "manual";
1860
+ scrollHeight: number;
1840
1861
  minHeight: number;
1841
1862
  showOnInit: boolean;
1842
1863
  loading: boolean;
@@ -1845,7 +1866,6 @@ declare const BkSelect: {
1845
1866
  tagTheme: "" | "danger" | "success" | "warning" | "info";
1846
1867
  behavior: "normal" | "simplicity";
1847
1868
  selectedStyle: "checkbox" | "check";
1848
- scrollHeight: number;
1849
1869
  clearable: boolean;
1850
1870
  withValidate: boolean;
1851
1871
  noDataText: string;
@@ -2129,6 +2149,11 @@ declare const BkSelect: {
2129
2149
  } & {
2130
2150
  default: string;
2131
2151
  };
2152
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
2153
+ default: boolean;
2154
+ } & {
2155
+ default: boolean;
2156
+ };
2132
2157
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
2133
2158
  default: boolean;
2134
2159
  } & {
@@ -2334,7 +2359,7 @@ declare const BkSelect: {
2334
2359
  handleInput: (e: any) => void;
2335
2360
  handleKeydown: (e: any) => void;
2336
2361
  resolveClassName: (cls: string) => string;
2337
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
2362
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
2338
2363
  disabled: boolean;
2339
2364
  placeholder: string;
2340
2365
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -2477,7 +2502,7 @@ declare const BkSelect: {
2477
2502
  handleInput: (e: any) => void;
2478
2503
  handleKeydown: (e: any) => void;
2479
2504
  resolveClassName: (cls: string) => string;
2480
- }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "enter" | "update:modelValue" | "remove")[], import("vue").PublicProps, {
2505
+ }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ("keydown" | "remove" | "enter" | "update:modelValue")[], import("vue").PublicProps, {
2481
2506
  disabled: boolean;
2482
2507
  placeholder: string;
2483
2508
  tagTheme: "" | "danger" | "success" | "warning" | "info";
@@ -2712,6 +2737,11 @@ declare const BkSelect: {
2712
2737
  } & {
2713
2738
  default: string;
2714
2739
  };
2740
+ renderReferenceWrapper: import("vue-types").VueTypeValidableDef<boolean> & {
2741
+ default: boolean;
2742
+ } & {
2743
+ default: boolean;
2744
+ };
2715
2745
  hideIgnoreReference: import("vue-types").VueTypeValidableDef<boolean> & {
2716
2746
  default: boolean;
2717
2747
  } & {
@@ -2774,6 +2804,7 @@ declare const BkSelect: {
2774
2804
  multiple: boolean;
2775
2805
  disabled: boolean;
2776
2806
  trigger: "default" | "manual";
2807
+ scrollHeight: number;
2777
2808
  minHeight: number;
2778
2809
  showOnInit: boolean;
2779
2810
  loading: boolean;
@@ -2782,7 +2813,6 @@ declare const BkSelect: {
2782
2813
  tagTheme: "" | "danger" | "success" | "warning" | "info";
2783
2814
  behavior: "normal" | "simplicity";
2784
2815
  selectedStyle: "checkbox" | "check";
2785
- scrollHeight: number;
2786
2816
  clearable: boolean;
2787
2817
  withValidate: boolean;
2788
2818
  noDataText: string;