bkui-vue 3.0.2 → 3.0.3
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 +2 -2
- package/dist/index.esm.js +723 -683
- package/dist/index.umd.js +2 -2
- package/lib/index.js +1 -1
- package/lib/packages/tab/props.d.ts +4 -11
- package/lib/packages/tab/tab-panel.d.ts +8 -23
- package/lib/tab/index.js +146 -51
- package/lib/volar.components.d.ts +1 -0
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ExtractPropTypes, PropType, VNode } from 'vue';
|
|
1
|
+
import { ComputedRef, ExtractPropTypes, InjectionKey, PropType, VNode } from 'vue';
|
|
2
|
+
export declare const tabActiveInjectionKey: InjectionKey<ComputedRef<number | string>>;
|
|
2
3
|
export declare enum TabTypeEnum {
|
|
3
4
|
BORDER_CARD = "border-card",
|
|
4
5
|
CARD = "card",
|
|
@@ -69,11 +70,7 @@ export declare const tabPanelProps: {
|
|
|
69
70
|
name: import("vue-types").VueTypeDef<string | number> & {
|
|
70
71
|
default: string | number;
|
|
71
72
|
};
|
|
72
|
-
label:
|
|
73
|
-
default: string;
|
|
74
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
75
|
-
default: (...args: any[]) => any;
|
|
76
|
-
});
|
|
73
|
+
label: import("vue-types").VueTypeDef<any>;
|
|
77
74
|
tips: import("vue-types").VueTypeValidableDef<string, import("vue-types/dist/shared/vue-types.d8e57a80").b<string>> & {
|
|
78
75
|
default: string;
|
|
79
76
|
};
|
|
@@ -86,11 +83,7 @@ export declare const tabPanelProps: {
|
|
|
86
83
|
renderDirective: import("vue-types").VueTypeValidableDef<"if" | "show", import("vue-types/dist/shared/vue-types.d8e57a80").b<"if" | "show">> & {
|
|
87
84
|
default: "if" | "show";
|
|
88
85
|
};
|
|
89
|
-
panel:
|
|
90
|
-
default: string;
|
|
91
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
92
|
-
default: (...args: any[]) => any;
|
|
93
|
-
});
|
|
86
|
+
panel: import("vue-types").VueTypeDef<any>;
|
|
94
87
|
num: import("vue-types").VueTypeValidableDef<number, import("vue-types/dist/shared/vue-types.d8e57a80").b<number>> & {
|
|
95
88
|
default: number;
|
|
96
89
|
} & {
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { ComputedRef } from 'vue';
|
|
1
2
|
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
3
|
name: import("vue-types").VueTypeDef<string | number> & {
|
|
3
4
|
default: string | number;
|
|
4
5
|
};
|
|
5
|
-
label:
|
|
6
|
-
default: string;
|
|
7
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
8
|
-
default: (...args: any[]) => any;
|
|
9
|
-
});
|
|
6
|
+
label: import("vue-types").VueTypeDef<any>;
|
|
10
7
|
tips: import("vue-types").VueTypeValidableDef<string, import("vue-types/dist/shared/vue-types.d8e57a80").b<string>> & {
|
|
11
8
|
default: string;
|
|
12
9
|
};
|
|
@@ -19,11 +16,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
19
16
|
renderDirective: import("vue-types").VueTypeValidableDef<"if" | "show", import("vue-types/dist/shared/vue-types.d8e57a80").b<"if" | "show">> & {
|
|
20
17
|
default: "if" | "show";
|
|
21
18
|
};
|
|
22
|
-
panel:
|
|
23
|
-
default: string;
|
|
24
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
25
|
-
default: (...args: any[]) => any;
|
|
26
|
-
});
|
|
19
|
+
panel: import("vue-types").VueTypeDef<any>;
|
|
27
20
|
num: import("vue-types").VueTypeValidableDef<number, import("vue-types/dist/shared/vue-types.d8e57a80").b<number>> & {
|
|
28
21
|
default: number;
|
|
29
22
|
} & {
|
|
@@ -34,15 +27,13 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
34
27
|
} & {
|
|
35
28
|
default: string;
|
|
36
29
|
};
|
|
37
|
-
}>, {
|
|
30
|
+
}>, {
|
|
31
|
+
tabActive: ComputedRef<string | number>;
|
|
32
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
38
33
|
name: import("vue-types").VueTypeDef<string | number> & {
|
|
39
34
|
default: string | number;
|
|
40
35
|
};
|
|
41
|
-
label:
|
|
42
|
-
default: string;
|
|
43
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
44
|
-
default: (...args: any[]) => any;
|
|
45
|
-
});
|
|
36
|
+
label: import("vue-types").VueTypeDef<any>;
|
|
46
37
|
tips: import("vue-types").VueTypeValidableDef<string, import("vue-types/dist/shared/vue-types.d8e57a80").b<string>> & {
|
|
47
38
|
default: string;
|
|
48
39
|
};
|
|
@@ -55,11 +46,7 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
55
46
|
renderDirective: import("vue-types").VueTypeValidableDef<"if" | "show", import("vue-types/dist/shared/vue-types.d8e57a80").b<"if" | "show">> & {
|
|
56
47
|
default: "if" | "show";
|
|
57
48
|
};
|
|
58
|
-
panel:
|
|
59
|
-
default: string;
|
|
60
|
-
}) | (import("vue-types").VueTypeValidableDef<(...args: any[]) => any, import("vue-types/dist/shared/vue-types.d8e57a80").b<(...args: any[]) => any>> & {
|
|
61
|
-
default: (...args: any[]) => any;
|
|
62
|
-
});
|
|
49
|
+
panel: import("vue-types").VueTypeDef<any>;
|
|
63
50
|
num: import("vue-types").VueTypeValidableDef<number, import("vue-types/dist/shared/vue-types.d8e57a80").b<number>> & {
|
|
64
51
|
default: number;
|
|
65
52
|
} & {
|
|
@@ -72,11 +59,9 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
|
|
|
72
59
|
};
|
|
73
60
|
}>> & Readonly<{}>, {
|
|
74
61
|
name: string | number;
|
|
75
|
-
label: string | ((...args: any[]) => any);
|
|
76
62
|
visible: boolean;
|
|
77
63
|
renderDirective: "if" | "show";
|
|
78
64
|
tips: string;
|
|
79
|
-
panel: string | ((...args: any[]) => any);
|
|
80
65
|
num: number;
|
|
81
66
|
numDisplayType: string;
|
|
82
67
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
package/lib/tab/index.js
CHANGED
|
@@ -2,7 +2,7 @@ import "../styles/reset.css";
|
|
|
2
2
|
import "./tab.less";
|
|
3
3
|
import { PropTypes as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__, bkZIndexManager as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_bkZIndexManager__, renderDirectiveType as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_renderDirectiveType__, resolveClassName as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_resolveClassName__, withInstallProps as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_withInstallProps__ } from "../shared";
|
|
4
4
|
import { toType as __WEBPACK_EXTERNAL_MODULE_vue_types_22de060a_toType__ } from "vue-types";
|
|
5
|
-
import { Fragment as __WEBPACK_EXTERNAL_MODULE_vue_Fragment__, computed as __WEBPACK_EXTERNAL_MODULE_vue_computed__, createVNode as __WEBPACK_EXTERNAL_MODULE_vue_createVNode__, defineComponent as __WEBPACK_EXTERNAL_MODULE_vue_defineComponent__, getCurrentInstance as __WEBPACK_EXTERNAL_MODULE_vue_getCurrentInstance__, h as __WEBPACK_EXTERNAL_MODULE_vue_h__, nextTick as __WEBPACK_EXTERNAL_MODULE_vue_nextTick__, onMounted as __WEBPACK_EXTERNAL_MODULE_vue_onMounted__, onUpdated as __WEBPACK_EXTERNAL_MODULE_vue_onUpdated__, ref as __WEBPACK_EXTERNAL_MODULE_vue_ref__, render as __WEBPACK_EXTERNAL_MODULE_vue_render__, resolveDirective as __WEBPACK_EXTERNAL_MODULE_vue_resolveDirective__, vShow as __WEBPACK_EXTERNAL_MODULE_vue_vShow__, withDirectives as __WEBPACK_EXTERNAL_MODULE_vue_withDirectives__ } from "vue";
|
|
5
|
+
import { Fragment as __WEBPACK_EXTERNAL_MODULE_vue_Fragment__, computed as __WEBPACK_EXTERNAL_MODULE_vue_computed__, createVNode as __WEBPACK_EXTERNAL_MODULE_vue_createVNode__, defineComponent as __WEBPACK_EXTERNAL_MODULE_vue_defineComponent__, getCurrentInstance as __WEBPACK_EXTERNAL_MODULE_vue_getCurrentInstance__, h as __WEBPACK_EXTERNAL_MODULE_vue_h__, inject as __WEBPACK_EXTERNAL_MODULE_vue_inject__, nextTick as __WEBPACK_EXTERNAL_MODULE_vue_nextTick__, onBeforeUnmount as __WEBPACK_EXTERNAL_MODULE_vue_onBeforeUnmount__, onMounted as __WEBPACK_EXTERNAL_MODULE_vue_onMounted__, onUpdated as __WEBPACK_EXTERNAL_MODULE_vue_onUpdated__, provide as __WEBPACK_EXTERNAL_MODULE_vue_provide__, ref as __WEBPACK_EXTERNAL_MODULE_vue_ref__, render as __WEBPACK_EXTERNAL_MODULE_vue_render__, resolveDirective as __WEBPACK_EXTERNAL_MODULE_vue_resolveDirective__, vShow as __WEBPACK_EXTERNAL_MODULE_vue_vShow__, watch as __WEBPACK_EXTERNAL_MODULE_vue_watch__, withDirectives as __WEBPACK_EXTERNAL_MODULE_vue_withDirectives__ } from "vue";
|
|
6
6
|
import { usePrefix as __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_config_provider_fe8577a3_usePrefix__ } from "../config-provider";
|
|
7
7
|
import "../popover";
|
|
8
8
|
import { createPopper as __WEBPACK_EXTERNAL_MODULE__popperjs_core_a5c7319c_createPopper__ } from "@popperjs/core";
|
|
@@ -714,7 +714,9 @@ function _defineProperty(e, r, t) {
|
|
|
714
714
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
715
715
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
716
716
|
|
|
717
|
-
|
|
717
|
+
// Tab 通过 provide 向下注入当前激活面板的 name,TabPanel 通过 inject 获取,
|
|
718
|
+
// 避免依赖 this.$parent 这种与组件层级强耦合的写法。
|
|
719
|
+
var tabActiveInjectionKey = Symbol('tabActive');
|
|
718
720
|
var TabTypeEnum;
|
|
719
721
|
(function (TabTypeEnum) {
|
|
720
722
|
TabTypeEnum["BORDER_CARD"] = "border-card";
|
|
@@ -805,14 +807,14 @@ var tabEventProps = (/* unused pure expression or super */ null && ({
|
|
|
805
807
|
}));
|
|
806
808
|
var tabPanelProps = {
|
|
807
809
|
name: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.oneOfType([__WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.number, __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string]).def(''),
|
|
808
|
-
label: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string
|
|
810
|
+
label: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.oneOfType([__WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string, __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.func]),
|
|
809
811
|
tips: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string,
|
|
810
812
|
closable: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool,
|
|
811
813
|
visible: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool.def(true),
|
|
812
814
|
disabled: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool,
|
|
813
815
|
sortable: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.bool,
|
|
814
816
|
renderDirective: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_renderDirectiveType__(),
|
|
815
|
-
panel: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string
|
|
817
|
+
panel: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.oneOfType([__WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string, __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.func]),
|
|
816
818
|
num: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.number.def(undefined),
|
|
817
819
|
numDisplayType: __WEBPACK_EXTERNAL_MODULE_bkui_vue_lib_shared_edbdfb03_PropTypes__.string.def('default')
|
|
818
820
|
};
|
|
@@ -1557,15 +1559,19 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1557
1559
|
props: tabNavProps,
|
|
1558
1560
|
setup: function setup(props) {
|
|
1559
1561
|
var activeRef = __WEBPACK_EXTERNAL_MODULE_vue_ref__(null);
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1562
|
+
// 激活条位置依赖 DOM 的 clientWidth/offsetLeft 等非响应式量,computed 无法在
|
|
1563
|
+
// label 内容(宽度)变化但激活项不变时重算。改为 ref + 主动测量,并在 DOM
|
|
1564
|
+
// 更新后/激活项尺寸变化时刷新。
|
|
1565
|
+
var initBarStyle = {
|
|
1566
|
+
width: 0,
|
|
1567
|
+
height: 0,
|
|
1568
|
+
bottom: 0,
|
|
1569
|
+
left: 0
|
|
1570
|
+
};
|
|
1571
|
+
var activeBarStyle = __WEBPACK_EXTERNAL_MODULE_vue_ref__(tab_nav_objectSpread({}, initBarStyle));
|
|
1572
|
+
var calcActiveBarStyle = function calcActiveBarStyle() {
|
|
1567
1573
|
if (!activeRef.value) {
|
|
1568
|
-
return
|
|
1574
|
+
return tab_nav_objectSpread({}, initBarStyle);
|
|
1569
1575
|
}
|
|
1570
1576
|
var positionArr = [PositionEnum.LEFT, PositionEnum.RIGHT];
|
|
1571
1577
|
if (positionArr.includes(props.tabPosition)) {
|
|
@@ -1597,18 +1603,45 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1597
1603
|
background: props.activeBarColor
|
|
1598
1604
|
};
|
|
1599
1605
|
}
|
|
1600
|
-
return
|
|
1606
|
+
return tab_nav_objectSpread({}, initBarStyle);
|
|
1607
|
+
};
|
|
1608
|
+
var updateActiveBarStyle = function updateActiveBarStyle() {
|
|
1609
|
+
var next = calcActiveBarStyle();
|
|
1610
|
+
// 仅在确有变化时赋值,避免无意义的重渲染
|
|
1611
|
+
if (JSON.stringify(next) !== JSON.stringify(activeBarStyle.value)) {
|
|
1612
|
+
activeBarStyle.value = next;
|
|
1613
|
+
}
|
|
1614
|
+
};
|
|
1615
|
+
// 观察激活项自身尺寸变化(label 长度变化、字体异步加载、容器缩放等)
|
|
1616
|
+
var barResizeObserver = null;
|
|
1617
|
+
var observeActiveBar = function observeActiveBar() {
|
|
1618
|
+
var _barResizeObserver;
|
|
1619
|
+
(_barResizeObserver = barResizeObserver) === null || _barResizeObserver === void 0 || _barResizeObserver.disconnect();
|
|
1620
|
+
if (typeof ResizeObserver !== 'undefined' && activeRef.value) {
|
|
1621
|
+
barResizeObserver = new ResizeObserver(function () {
|
|
1622
|
+
return updateActiveBarStyle();
|
|
1623
|
+
});
|
|
1624
|
+
barResizeObserver.observe(activeRef.value);
|
|
1625
|
+
}
|
|
1626
|
+
};
|
|
1627
|
+
__WEBPACK_EXTERNAL_MODULE_vue_onMounted__(function () {
|
|
1628
|
+
observeActiveBar();
|
|
1629
|
+
updateActiveBarStyle();
|
|
1630
|
+
});
|
|
1631
|
+
__WEBPACK_EXTERNAL_MODULE_vue_onBeforeUnmount__(function () {
|
|
1632
|
+
var _barResizeObserver2;
|
|
1633
|
+
(_barResizeObserver2 = barResizeObserver) === null || _barResizeObserver2 === void 0 || _barResizeObserver2.disconnect();
|
|
1634
|
+
barResizeObserver = null;
|
|
1601
1635
|
});
|
|
1602
1636
|
var tableNavList = __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
1603
1637
|
if (!Array.isArray(props.panels) || !props.panels.length) {
|
|
1604
1638
|
return [];
|
|
1605
1639
|
}
|
|
1606
1640
|
var list = [];
|
|
1607
|
-
var hasFindActive = false;
|
|
1608
1641
|
var panels = props.panels;
|
|
1609
|
-
panels.
|
|
1642
|
+
panels.forEach(function (item, index) {
|
|
1610
1643
|
if (!item.props) {
|
|
1611
|
-
return
|
|
1644
|
+
return;
|
|
1612
1645
|
}
|
|
1613
1646
|
var _item$props = item.props,
|
|
1614
1647
|
name = _item$props.name,
|
|
@@ -1621,10 +1654,7 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1621
1654
|
tips = _item$props.tips,
|
|
1622
1655
|
numDisplayType = _item$props.numDisplayType;
|
|
1623
1656
|
if (!visible) {
|
|
1624
|
-
return
|
|
1625
|
-
}
|
|
1626
|
-
if (props.active === name) {
|
|
1627
|
-
hasFindActive = true;
|
|
1657
|
+
return;
|
|
1628
1658
|
}
|
|
1629
1659
|
var renderLabel = function renderLabel(label) {
|
|
1630
1660
|
if (item.slots.label) {
|
|
@@ -1652,17 +1682,50 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1652
1682
|
tabLabel: renderLabel(label),
|
|
1653
1683
|
tabNum: num
|
|
1654
1684
|
});
|
|
1655
|
-
return true;
|
|
1656
1685
|
});
|
|
1657
|
-
if (!hasFindActive && props.validateActive) {
|
|
1658
|
-
props.panels[0].props && props.tabChange(props.panels[0].props.name);
|
|
1659
|
-
}
|
|
1660
1686
|
return list;
|
|
1661
1687
|
});
|
|
1688
|
+
// 激活项、页签内容(label/数量)、位置或激活条尺寸/颜色变化后,等 DOM 更新完成再重新测量;
|
|
1689
|
+
// 同时把 ResizeObserver 重新挂到新的激活元素上。
|
|
1690
|
+
__WEBPACK_EXTERNAL_MODULE_vue_watch__([function () {
|
|
1691
|
+
return props.active;
|
|
1692
|
+
}, function () {
|
|
1693
|
+
return props.tabPosition;
|
|
1694
|
+
}, function () {
|
|
1695
|
+
return props.type;
|
|
1696
|
+
}, function () {
|
|
1697
|
+
return props.activeBarSize;
|
|
1698
|
+
}, function () {
|
|
1699
|
+
return props.activeBarColor;
|
|
1700
|
+
}, tableNavList], function () {
|
|
1701
|
+
__WEBPACK_EXTERNAL_MODULE_vue_nextTick__(function () {
|
|
1702
|
+
observeActiveBar();
|
|
1703
|
+
updateActiveBarStyle();
|
|
1704
|
+
});
|
|
1705
|
+
});
|
|
1706
|
+
// 当没有匹配到激活项且开启校验时,默认激活第一个面板。
|
|
1707
|
+
// 该逻辑必须放在副作用(watch)中,computed 需保持纯函数。
|
|
1708
|
+
__WEBPACK_EXTERNAL_MODULE_vue_watch__([tableNavList, function () {
|
|
1709
|
+
return props.active;
|
|
1710
|
+
}], function () {
|
|
1711
|
+
var _props$panels;
|
|
1712
|
+
if (!props.validateActive) {
|
|
1713
|
+
return;
|
|
1714
|
+
}
|
|
1715
|
+
var hasFindActive = tableNavList.value.some(function (item) {
|
|
1716
|
+
return (item === null || item === void 0 ? void 0 : item.name) === props.active;
|
|
1717
|
+
});
|
|
1718
|
+
var firstPanel = (_props$panels = props.panels) === null || _props$panels === void 0 ? void 0 : _props$panels[0];
|
|
1719
|
+
if (!hasFindActive && firstPanel !== null && firstPanel !== void 0 && firstPanel.props) {
|
|
1720
|
+
props.tabChange(firstPanel.props.name);
|
|
1721
|
+
}
|
|
1722
|
+
}, {
|
|
1723
|
+
immediate: true
|
|
1724
|
+
});
|
|
1662
1725
|
var dragenterIndex = __WEBPACK_EXTERNAL_MODULE_vue_ref__(-1);
|
|
1663
1726
|
var dragStartIndex = __WEBPACK_EXTERNAL_MODULE_vue_ref__(-1);
|
|
1664
1727
|
var draggingEle = __WEBPACK_EXTERNAL_MODULE_vue_ref__('');
|
|
1665
|
-
var
|
|
1728
|
+
var isSameRoot = function isSameRoot(el1, el2) {
|
|
1666
1729
|
return el1 === el2;
|
|
1667
1730
|
};
|
|
1668
1731
|
var methods = {
|
|
@@ -1687,18 +1750,18 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1687
1750
|
},
|
|
1688
1751
|
dragenter: function dragenter(index) {
|
|
1689
1752
|
// 缓存目标元素索引,方便添加样式
|
|
1690
|
-
if (
|
|
1753
|
+
if (isSameRoot(draggingEle.value, props.guid)) {
|
|
1691
1754
|
dragenterIndex.value = index;
|
|
1692
1755
|
}
|
|
1693
1756
|
},
|
|
1694
1757
|
dragend: function dragend() {
|
|
1695
1758
|
dragenterIndex.value = -1;
|
|
1696
1759
|
dragStartIndex.value = -1;
|
|
1697
|
-
draggingEle.value =
|
|
1760
|
+
draggingEle.value = '';
|
|
1698
1761
|
},
|
|
1699
1762
|
drop: function drop(index, sortType) {
|
|
1700
1763
|
// 不是同一个tab,返回——暂时不支持跨tab拖动
|
|
1701
|
-
if (!
|
|
1764
|
+
if (!isSameRoot(draggingEle.value, props.guid)) {
|
|
1702
1765
|
return false;
|
|
1703
1766
|
}
|
|
1704
1767
|
props.tabSort(dragStartIndex.value, index, sortType);
|
|
@@ -1719,7 +1782,7 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1719
1782
|
dragenterIndex: dragenterIndex,
|
|
1720
1783
|
dragStartIndex: dragStartIndex,
|
|
1721
1784
|
draggingEle: draggingEle,
|
|
1722
|
-
guid:
|
|
1785
|
+
guid: "".concat(Date.now().toString(16), "-").concat(Math.random().toString(16).slice(2, 10)),
|
|
1723
1786
|
resolveClassName: resolveClassName
|
|
1724
1787
|
});
|
|
1725
1788
|
},
|
|
@@ -1772,11 +1835,21 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1772
1835
|
return __WEBPACK_EXTERNAL_MODULE_vue_withDirectives__(__WEBPACK_EXTERNAL_MODULE_vue_createVNode__("div", {
|
|
1773
1836
|
"key": name,
|
|
1774
1837
|
"ref": active === name ? 'activeRef' : 'tabLabelRef',
|
|
1838
|
+
"role": "tab",
|
|
1839
|
+
"aria-selected": active === name,
|
|
1840
|
+
"aria-disabled": disabled || undefined,
|
|
1841
|
+
"tabindex": disabled ? -1 : 0,
|
|
1775
1842
|
"class": getNavItemClass(),
|
|
1776
1843
|
"draggable": getValue(item.sortable, sortable),
|
|
1777
1844
|
"onClick": function onClick() {
|
|
1778
1845
|
return !disabled && _this.handleTabChange(name);
|
|
1779
1846
|
},
|
|
1847
|
+
"onKeydown": function onKeydown(e) {
|
|
1848
|
+
if (!disabled && (e.key === 'Enter' || e.key === ' ')) {
|
|
1849
|
+
e.preventDefault();
|
|
1850
|
+
_this.handleTabChange(name);
|
|
1851
|
+
}
|
|
1852
|
+
},
|
|
1780
1853
|
"onDragend": function onDragend(e) {
|
|
1781
1854
|
e.preventDefault();
|
|
1782
1855
|
dragend();
|
|
@@ -1857,6 +1930,7 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1857
1930
|
},
|
|
1858
1931
|
"class": this.resolveClassName('tab-header')
|
|
1859
1932
|
}, [__WEBPACK_EXTERNAL_MODULE_vue_createVNode__("div", {
|
|
1933
|
+
"role": "tablist",
|
|
1860
1934
|
"class": [this.resolveClassName('tab-header-nav'), operations || setting ? 'tab-header-auto' : '']
|
|
1861
1935
|
}, [renderActiveBar(), renderNavs()]), operations, setting]);
|
|
1862
1936
|
}
|
|
@@ -1865,6 +1939,7 @@ function tab_nav_objectSpread(e) { for (var r = 1; r < arguments.length; r++) {
|
|
|
1865
1939
|
|
|
1866
1940
|
|
|
1867
1941
|
|
|
1942
|
+
|
|
1868
1943
|
function tab_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
1869
1944
|
function tab_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? tab_ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : tab_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
1870
1945
|
/*
|
|
@@ -1913,31 +1988,41 @@ function tab_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
|
1913
1988
|
var isMounted = __WEBPACK_EXTERNAL_MODULE_vue_ref__(false);
|
|
1914
1989
|
var panels = __WEBPACK_EXTERNAL_MODULE_vue_ref__([]);
|
|
1915
1990
|
var instance = __WEBPACK_EXTERNAL_MODULE_vue_getCurrentInstance__();
|
|
1916
|
-
//
|
|
1991
|
+
// 向下注入当前激活面板,供 TabPanel 通过 inject 读取,替代 this.$parent.active。
|
|
1992
|
+
__WEBPACK_EXTERNAL_MODULE_vue_provide__(tabActiveInjectionKey, __WEBPACK_EXTERNAL_MODULE_vue_computed__(function () {
|
|
1993
|
+
return _props.active;
|
|
1994
|
+
}));
|
|
1995
|
+
// 递归收集已挂载的 TabPanel 实例。
|
|
1996
|
+
// 仅向下穿透 Tab 自身的包裹元素(原生标签、Fragment、template),
|
|
1997
|
+
// 不进入用户自定义组件,避免误收集嵌套 Tab 的面板。
|
|
1917
1998
|
var _getPaneInstanceFromSlot = function getPaneInstanceFromSlot(vnode) {
|
|
1918
1999
|
var panelInstanceList = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
1919
|
-
var children = vnode.children;
|
|
1920
|
-
(
|
|
1921
|
-
|
|
1922
|
-
|
|
2000
|
+
var children = vnode === null || vnode === void 0 ? void 0 : vnode.children;
|
|
2001
|
+
if (!Array.isArray(children)) {
|
|
2002
|
+
return panelInstanceList;
|
|
2003
|
+
}
|
|
2004
|
+
children.forEach(function (node) {
|
|
2005
|
+
if (!node || _typeof(node) !== 'object') {
|
|
2006
|
+
return;
|
|
2007
|
+
}
|
|
2008
|
+
var rawType = node.type;
|
|
2009
|
+
var type = (rawType === null || rawType === void 0 ? void 0 : rawType.name) || rawType;
|
|
1923
2010
|
if (type === 'TabPanel' && node.component) {
|
|
1924
2011
|
panelInstanceList.push(node.component);
|
|
1925
|
-
} else if (
|
|
2012
|
+
} else if (rawType === __WEBPACK_EXTERNAL_MODULE_vue_Fragment__ || rawType === 'template' || typeof rawType === 'string') {
|
|
1926
2013
|
_getPaneInstanceFromSlot(node, panelInstanceList);
|
|
1927
2014
|
}
|
|
1928
2015
|
});
|
|
1929
2016
|
return panelInstanceList;
|
|
1930
2017
|
};
|
|
1931
2018
|
var setPanelInstances = function setPanelInstances() {
|
|
1932
|
-
if (slots["default"]) {
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
panels.value = panelInstanceList;
|
|
1940
|
-
}
|
|
2019
|
+
if (!slots["default"] || !(instance !== null && instance !== void 0 && instance.subTree)) {
|
|
2020
|
+
return;
|
|
2021
|
+
}
|
|
2022
|
+
var panelInstanceList = _getPaneInstanceFromSlot(instance.subTree);
|
|
2023
|
+
var isChanged = panelInstanceList.length !== panels.value.length;
|
|
2024
|
+
if (isChanged) {
|
|
2025
|
+
panels.value = panelInstanceList;
|
|
1941
2026
|
}
|
|
1942
2027
|
};
|
|
1943
2028
|
__WEBPACK_EXTERNAL_MODULE_vue_onMounted__(function () {
|
|
@@ -1949,9 +2034,9 @@ function tab_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
|
1949
2034
|
*/
|
|
1950
2035
|
setPanelInstances();
|
|
1951
2036
|
isMounted.value = true;
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
2037
|
+
});
|
|
2038
|
+
__WEBPACK_EXTERNAL_MODULE_vue_onUpdated__(function () {
|
|
2039
|
+
setPanelInstances();
|
|
1955
2040
|
});
|
|
1956
2041
|
var methods = {
|
|
1957
2042
|
tabAdd: function tabAdd(e) {
|
|
@@ -1981,10 +2066,10 @@ function tab_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
|
1981
2066
|
// 如果是插队模式
|
|
1982
2067
|
if (sortType === SortTypeEnum.INSERT) {
|
|
1983
2068
|
if (dragTabIndex < dropTabIndex) {
|
|
1984
|
-
list.splice(dropTabIndex + 1, 0,
|
|
2069
|
+
list.splice(dropTabIndex + 1, 0, list[dragTabIndex]);
|
|
1985
2070
|
list.splice(dragTabIndex, 1);
|
|
1986
2071
|
} else if (dragTabIndex > dropTabIndex) {
|
|
1987
|
-
list.splice(dropTabIndex, 0,
|
|
2072
|
+
list.splice(dropTabIndex, 0, list[dragTabIndex]);
|
|
1988
2073
|
list.splice(dragTabIndex + 1, 1);
|
|
1989
2074
|
} else {
|
|
1990
2075
|
return false;
|
|
@@ -2111,9 +2196,19 @@ function tab_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
|
2111
2196
|
/* harmony default export */ const tab_panel = (__WEBPACK_EXTERNAL_MODULE_vue_defineComponent__({
|
|
2112
2197
|
name: 'TabPanel',
|
|
2113
2198
|
props: tabPanelProps,
|
|
2199
|
+
setup: function setup() {
|
|
2200
|
+
// 优先通过 inject 获取激活态;单独使用 TabPanel(无父级 Tab)时回退到 $parent。
|
|
2201
|
+
var tabActive = __WEBPACK_EXTERNAL_MODULE_vue_inject__(tabActiveInjectionKey, null);
|
|
2202
|
+
return {
|
|
2203
|
+
tabActive: tabActive
|
|
2204
|
+
};
|
|
2205
|
+
},
|
|
2114
2206
|
render: function render() {
|
|
2115
|
-
var _this
|
|
2116
|
-
|
|
2207
|
+
var _this$tabActive,
|
|
2208
|
+
_this$$parent,
|
|
2209
|
+
_this = this;
|
|
2210
|
+
var parentActive = (_this$tabActive = this.tabActive) !== null && _this$tabActive !== void 0 ? _this$tabActive : (_this$$parent = this.$parent) === null || _this$$parent === void 0 ? void 0 : _this$$parent.active;
|
|
2211
|
+
var active = this.name === parentActive;
|
|
2117
2212
|
var getContent = function getContent() {
|
|
2118
2213
|
// 不渲染
|
|
2119
2214
|
if (!_this.visible || _this.renderDirective === 'if' && !active) {
|
|
@@ -100,6 +100,7 @@ declare module '@vue/runtime-core' {
|
|
|
100
100
|
BkSearchSelect: typeof import('./search-select/search-select').default;
|
|
101
101
|
BkConfigProvider: typeof import('./config-provider/config-provider').default;
|
|
102
102
|
BkPopConfirm: typeof import('./pop-confirm/pop-confirm').default;
|
|
103
|
+
BkCollapsePanel: typeof import('./collapse/collapse-panel').default;
|
|
103
104
|
}
|
|
104
105
|
}
|
|
105
106
|
export {};
|