@blueking/bk-user-selector 0.0.24 → 0.0.25
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/package.json +1 -1
- package/vue2/index.es.min.js +120 -117
- package/vue2/index.iife.min.js +121 -118
- package/vue2/index.umd.min.js +121 -118
- package/vue2/vue2.css +132 -132
- package/vue3/index.es.min.js +5 -2
- package/vue3/index.iife.min.js +121 -118
- package/vue3/index.umd.min.js +5 -2
- package/vue3/vue3.css +1 -1
package/package.json
CHANGED
package/vue2/index.es.min.js
CHANGED
|
@@ -1,120 +1,5 @@
|
|
|
1
1
|
import * as __WEBPACK_EXTERNAL_MODULE_vue__ from "@blueking/bkui-library";
|
|
2
2
|
import { ref, onBeforeMount, defineComponent, createElementBlock, createCommentVNode, openBlock, withModifiers, normalizeClass, h as h$1, computed, createBlock, unref, withCtx, createVNode, createElementVNode, toDisplayString, Fragment, renderList, watch, nextTick, onMounted, withDirectives, isRef, vModelText, createTextVNode, createApp } from "@blueking/bkui-library";
|
|
3
|
-
const getTenants = async (apiBaseUrl, tenantId) => {
|
|
4
|
-
if (!apiBaseUrl || !tenantId) {
|
|
5
|
-
console.warn("获取租户信息需要提供有效的apiBaseUrl和租户ID");
|
|
6
|
-
return [];
|
|
7
|
-
}
|
|
8
|
-
try {
|
|
9
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/data-source-owner-tenants/`;
|
|
10
|
-
const response = await fetch(url, {
|
|
11
|
-
method: "GET",
|
|
12
|
-
headers: {
|
|
13
|
-
"x-bk-tenant-id": tenantId
|
|
14
|
-
},
|
|
15
|
-
credentials: "include"
|
|
16
|
-
});
|
|
17
|
-
if (!response.ok) {
|
|
18
|
-
throw new Error(`获取租户信息失败: ${response.status} ${response.statusText}`);
|
|
19
|
-
}
|
|
20
|
-
const data2 = await response.json();
|
|
21
|
-
return data2.data || [];
|
|
22
|
-
} catch (error3) {
|
|
23
|
-
console.error("获取租户信息失败:", error3);
|
|
24
|
-
return [];
|
|
25
|
-
}
|
|
26
|
-
};
|
|
27
|
-
const searchUsers = async (apiBaseUrl = "", tenantId = "", keyword = "") => {
|
|
28
|
-
if (!keyword || !apiBaseUrl || !tenantId) {
|
|
29
|
-
console.warn("搜索用户需要提供有效的apiBaseUrl、租户ID和关键词");
|
|
30
|
-
return [];
|
|
31
|
-
}
|
|
32
|
-
try {
|
|
33
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/search/?keyword=${encodeURIComponent(keyword)}`;
|
|
34
|
-
const response = await fetch(url, {
|
|
35
|
-
method: "GET",
|
|
36
|
-
headers: {
|
|
37
|
-
"x-bk-tenant-id": tenantId
|
|
38
|
-
},
|
|
39
|
-
credentials: "include"
|
|
40
|
-
});
|
|
41
|
-
if (!response.ok) {
|
|
42
|
-
throw new Error(`搜索用户失败: ${response.status} ${response.statusText}`);
|
|
43
|
-
}
|
|
44
|
-
const data2 = await response.json();
|
|
45
|
-
return data2.data || [];
|
|
46
|
-
} catch (error3) {
|
|
47
|
-
console.error("搜索用户失败:", error3);
|
|
48
|
-
return [];
|
|
49
|
-
}
|
|
50
|
-
};
|
|
51
|
-
const lookupUsers = async (apiBaseUrl = "", tenantId = "", exactSearchKey = "bk_username", usersList = []) => {
|
|
52
|
-
const users = usersList.filter((user) => user).map((user) => user.trim());
|
|
53
|
-
if (users.length === 0 || !apiBaseUrl || !tenantId) {
|
|
54
|
-
console.warn("批量查找用户需要提供有效的apiBaseUrl、租户ID和至少一个用户名");
|
|
55
|
-
return [];
|
|
56
|
-
}
|
|
57
|
-
try {
|
|
58
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/lookup/?lookups=${users.join(",")}&lookup_fields=${exactSearchKey}`;
|
|
59
|
-
const response = await fetch(url, {
|
|
60
|
-
method: "GET",
|
|
61
|
-
headers: {
|
|
62
|
-
"x-bk-tenant-id": tenantId
|
|
63
|
-
},
|
|
64
|
-
credentials: "include"
|
|
65
|
-
});
|
|
66
|
-
if (!response.ok) {
|
|
67
|
-
throw new Error(`批量查找用户失败: ${response.status} ${response.statusText}`);
|
|
68
|
-
}
|
|
69
|
-
const data2 = await response.json();
|
|
70
|
-
return data2.data || [];
|
|
71
|
-
} catch (error3) {
|
|
72
|
-
console.error("批量查找用户失败:", error3);
|
|
73
|
-
return [];
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
const formatUsers = (users) => {
|
|
77
|
-
if (!users || !Array.isArray(users)) return [];
|
|
78
|
-
return users.map((user) => ({
|
|
79
|
-
id: user.bk_username,
|
|
80
|
-
name: user.display_name,
|
|
81
|
-
tenantId: user.owner_tenant_id,
|
|
82
|
-
...user
|
|
83
|
-
}));
|
|
84
|
-
};
|
|
85
|
-
const useTenantData = (apiBaseUrl, tenantId) => {
|
|
86
|
-
const tenants = ref({});
|
|
87
|
-
const loading2 = ref(false);
|
|
88
|
-
const fetchTenants = async () => {
|
|
89
|
-
if (!apiBaseUrl || !tenantId) {
|
|
90
|
-
console.warn("获取租户需要提供有效的API基础URL和租户ID");
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
loading2.value = true;
|
|
94
|
-
try {
|
|
95
|
-
const result = await getTenants(apiBaseUrl, tenantId);
|
|
96
|
-
const tenantMap = {};
|
|
97
|
-
result.forEach((item) => {
|
|
98
|
-
if (item.id && item.name) {
|
|
99
|
-
tenantMap[item.id] = item.name;
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
tenants.value = tenantMap;
|
|
103
|
-
} catch (error3) {
|
|
104
|
-
console.error("获取租户数据失败:", error3);
|
|
105
|
-
} finally {
|
|
106
|
-
loading2.value = false;
|
|
107
|
-
}
|
|
108
|
-
};
|
|
109
|
-
onBeforeMount(() => {
|
|
110
|
-
fetchTenants();
|
|
111
|
-
});
|
|
112
|
-
return {
|
|
113
|
-
tenants,
|
|
114
|
-
loading: loading2,
|
|
115
|
-
fetchTenants
|
|
116
|
-
};
|
|
117
|
-
};
|
|
118
3
|
var top = "top";
|
|
119
4
|
var bottom = "bottom";
|
|
120
5
|
var right = "right";
|
|
@@ -5955,7 +5840,7 @@ var BkConfigProvider = (0, shared_namespaceObject$3.withInstall)(config_provider
|
|
|
5955
5840
|
const src$3 = BkConfigProvider;
|
|
5956
5841
|
__webpack_exports__$6["default"];
|
|
5957
5842
|
__webpack_exports__$6.defaultRootConfig;
|
|
5958
|
-
__webpack_exports__$6.provideGlobalConfig;
|
|
5843
|
+
var __webpack_exports__provideGlobalConfig = __webpack_exports__$6.provideGlobalConfig;
|
|
5959
5844
|
__webpack_exports__$6.rootProviderKey;
|
|
5960
5845
|
__webpack_exports__$6.setPrefixVariable;
|
|
5961
5846
|
__webpack_exports__$6.useGlobalConfig;
|
|
@@ -11530,6 +11415,121 @@ __webpack_exports__.bkTooltips;
|
|
|
11530
11415
|
var __webpack_exports__clickoutside = __webpack_exports__.clickoutside;
|
|
11531
11416
|
__webpack_exports__.mousewheel;
|
|
11532
11417
|
__webpack_exports__.overflowTitle;
|
|
11418
|
+
const getTenants = async (apiBaseUrl, tenantId) => {
|
|
11419
|
+
if (!apiBaseUrl || !tenantId) {
|
|
11420
|
+
console.warn("获取租户信息需要提供有效的apiBaseUrl和租户ID");
|
|
11421
|
+
return [];
|
|
11422
|
+
}
|
|
11423
|
+
try {
|
|
11424
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/data-source-owner-tenants/`;
|
|
11425
|
+
const response = await fetch(url, {
|
|
11426
|
+
method: "GET",
|
|
11427
|
+
headers: {
|
|
11428
|
+
"x-bk-tenant-id": tenantId
|
|
11429
|
+
},
|
|
11430
|
+
credentials: "include"
|
|
11431
|
+
});
|
|
11432
|
+
if (!response.ok) {
|
|
11433
|
+
throw new Error(`获取租户信息失败: ${response.status} ${response.statusText}`);
|
|
11434
|
+
}
|
|
11435
|
+
const data2 = await response.json();
|
|
11436
|
+
return data2.data || [];
|
|
11437
|
+
} catch (error3) {
|
|
11438
|
+
console.error("获取租户信息失败:", error3);
|
|
11439
|
+
return [];
|
|
11440
|
+
}
|
|
11441
|
+
};
|
|
11442
|
+
const searchUsers = async (apiBaseUrl = "", tenantId = "", keyword = "") => {
|
|
11443
|
+
if (!keyword || !apiBaseUrl || !tenantId) {
|
|
11444
|
+
console.warn("搜索用户需要提供有效的apiBaseUrl、租户ID和关键词");
|
|
11445
|
+
return [];
|
|
11446
|
+
}
|
|
11447
|
+
try {
|
|
11448
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/search/?keyword=${encodeURIComponent(keyword)}`;
|
|
11449
|
+
const response = await fetch(url, {
|
|
11450
|
+
method: "GET",
|
|
11451
|
+
headers: {
|
|
11452
|
+
"x-bk-tenant-id": tenantId
|
|
11453
|
+
},
|
|
11454
|
+
credentials: "include"
|
|
11455
|
+
});
|
|
11456
|
+
if (!response.ok) {
|
|
11457
|
+
throw new Error(`搜索用户失败: ${response.status} ${response.statusText}`);
|
|
11458
|
+
}
|
|
11459
|
+
const data2 = await response.json();
|
|
11460
|
+
return data2.data || [];
|
|
11461
|
+
} catch (error3) {
|
|
11462
|
+
console.error("搜索用户失败:", error3);
|
|
11463
|
+
return [];
|
|
11464
|
+
}
|
|
11465
|
+
};
|
|
11466
|
+
const lookupUsers = async (apiBaseUrl = "", tenantId = "", exactSearchKey = "bk_username", usersList = []) => {
|
|
11467
|
+
const users = usersList.filter((user) => user).map((user) => user.trim());
|
|
11468
|
+
if (users.length === 0 || !apiBaseUrl || !tenantId) {
|
|
11469
|
+
console.warn("批量查找用户需要提供有效的apiBaseUrl、租户ID和至少一个用户名");
|
|
11470
|
+
return [];
|
|
11471
|
+
}
|
|
11472
|
+
try {
|
|
11473
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/lookup/?lookups=${users.join(",")}&lookup_fields=${exactSearchKey}`;
|
|
11474
|
+
const response = await fetch(url, {
|
|
11475
|
+
method: "GET",
|
|
11476
|
+
headers: {
|
|
11477
|
+
"x-bk-tenant-id": tenantId
|
|
11478
|
+
},
|
|
11479
|
+
credentials: "include"
|
|
11480
|
+
});
|
|
11481
|
+
if (!response.ok) {
|
|
11482
|
+
throw new Error(`批量查找用户失败: ${response.status} ${response.statusText}`);
|
|
11483
|
+
}
|
|
11484
|
+
const data2 = await response.json();
|
|
11485
|
+
return data2.data || [];
|
|
11486
|
+
} catch (error3) {
|
|
11487
|
+
console.error("批量查找用户失败:", error3);
|
|
11488
|
+
return [];
|
|
11489
|
+
}
|
|
11490
|
+
};
|
|
11491
|
+
const formatUsers = (users) => {
|
|
11492
|
+
if (!users || !Array.isArray(users)) return [];
|
|
11493
|
+
return users.map((user) => ({
|
|
11494
|
+
id: user.bk_username,
|
|
11495
|
+
name: user.display_name,
|
|
11496
|
+
tenantId: user.owner_tenant_id,
|
|
11497
|
+
...user
|
|
11498
|
+
}));
|
|
11499
|
+
};
|
|
11500
|
+
const useTenantData = (apiBaseUrl, tenantId) => {
|
|
11501
|
+
const tenants = ref({});
|
|
11502
|
+
const loading2 = ref(false);
|
|
11503
|
+
const fetchTenants = async () => {
|
|
11504
|
+
if (!apiBaseUrl || !tenantId) {
|
|
11505
|
+
console.warn("获取租户需要提供有效的API基础URL和租户ID");
|
|
11506
|
+
return;
|
|
11507
|
+
}
|
|
11508
|
+
loading2.value = true;
|
|
11509
|
+
try {
|
|
11510
|
+
const result = await getTenants(apiBaseUrl, tenantId);
|
|
11511
|
+
const tenantMap = {};
|
|
11512
|
+
result.forEach((item) => {
|
|
11513
|
+
if (item.id && item.name) {
|
|
11514
|
+
tenantMap[item.id] = item.name;
|
|
11515
|
+
}
|
|
11516
|
+
});
|
|
11517
|
+
tenants.value = tenantMap;
|
|
11518
|
+
} catch (error3) {
|
|
11519
|
+
console.error("获取租户数据失败:", error3);
|
|
11520
|
+
} finally {
|
|
11521
|
+
loading2.value = false;
|
|
11522
|
+
}
|
|
11523
|
+
};
|
|
11524
|
+
onBeforeMount(() => {
|
|
11525
|
+
fetchTenants();
|
|
11526
|
+
});
|
|
11527
|
+
return {
|
|
11528
|
+
tenants,
|
|
11529
|
+
loading: loading2,
|
|
11530
|
+
fetchTenants
|
|
11531
|
+
};
|
|
11532
|
+
};
|
|
11533
11533
|
var Sortable$2 = { exports: {} };
|
|
11534
11534
|
/**!
|
|
11535
11535
|
* Sortable 1.15.6
|
|
@@ -15456,6 +15456,9 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15456
15456
|
},
|
|
15457
15457
|
emits: ["update:modelValue", "change"],
|
|
15458
15458
|
setup(__props, { emit: __emit }) {
|
|
15459
|
+
__webpack_exports__provideGlobalConfig({
|
|
15460
|
+
prefix: "bk-user-selector"
|
|
15461
|
+
});
|
|
15459
15462
|
const props2 = __props;
|
|
15460
15463
|
const emit = __emit;
|
|
15461
15464
|
const { tenants = {} } = useTenantData(props2.apiBaseUrl, props2.tenantId);
|
|
@@ -15579,7 +15582,7 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
|
15579
15582
|
};
|
|
15580
15583
|
}
|
|
15581
15584
|
});
|
|
15582
|
-
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
15585
|
+
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6f6d9f42"]]);
|
|
15583
15586
|
const vue2 = {
|
|
15584
15587
|
model: {
|
|
15585
15588
|
prop: "modelValue",
|
package/vue2/index.iife.min.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
try {
|
|
4
4
|
if (typeof document != "undefined") {
|
|
5
5
|
var elementStyle = document.createElement("style");
|
|
6
|
-
elementStyle.appendChild(document.createTextNode(".scroll-bar-style::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.scroll-bar-style::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\nhtml,\nbody {\n padding: 0;\n margin: 0;\n}\n* {\n box-sizing: border-box;\n}\n/**\n * HTML5 display definitions\n * ==========================================================================\n *\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n /* 1 */\n display: inline-block;\n /* 2 */\n vertical-align: baseline;\n}\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none;\n}\n/**\n * Links\n * ==========================================================================\n *\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent;\n}\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0;\n}\n/**\n * Text-level semantics\n * ==========================================================================\n *\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted;\n}\n/**\n * Embedded content\n * ==========================================================================\n *\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0;\n}\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden;\n}\n/**\n * Grouping content\n * ==========================================================================\n *\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px;\n}\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n height: 0;\n box-sizing: content-box;\n}\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n *\n * Forms\n * ==========================================================================\n *\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n *\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n /* 3 */\n margin: 0;\n /* 2 */\n font: inherit;\n /* 1 */\n color: inherit;\n}\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible;\n}\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type `input` and others.\n */\nbutton,\nhtml input[type='button'],\ninput[type='reset'],\ninput[type='submit'] {\n /* 3 */\n cursor: pointer;\n /* 2 */\n appearance: button;\n}\n/* Re-set default cursor for disabled elements. */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n/* Remove inner padding and border in Firefox 4+. */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet.\n */\ninput {\n line-height: normal;\n}\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type='checkbox'],\ninput[type='radio'] {\n /* 2 */\n padding: 0;\n /* 1 */\n box-sizing: border-box;\n}\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n height: auto;\n}\n::-ms-clear,\n::-ms-reveal {\n display: none;\n}\ninput[type='text']::-ms-clear {\n display: none;\n}\ninput[type='text']::-ms-reveal {\n display: none;\n}\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type='search'] {\n /* 2 */\n box-sizing: content-box;\n /* 1 */\n appearance: textfield;\n}\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type='search']::-webkit-search-cancel-button,\ninput[type='search']::-webkit-search-decoration {\n appearance: none;\n}\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n /* 2 */\n padding: 0;\n /* 1 */\n border: 0;\n}\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto;\n}\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold;\n}\n/**\n* BK-Scroll-Style\n*/\n.bk-scroll-y {\n overflow-y: auto;\n}\n.bk-scroll-y::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.bk-scroll-y::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\n.bk-scroll-x {\n overflow-x: auto;\n}\n.bk-scroll-x::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.bk-scroll-x::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\n@keyframes loading-scale-animate {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0.6);\n }\n}\n@keyframes fade {\n 100% {\n background-color: transparent;\n }\n}\n.bk-transition .bk-fade-enter-active,\n.bk-transition .bk-fade-leave-active {\n transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);\n}\n.bk-transition .bk-fade-enter,\n.bk-transition .bk-fade-leave-to {\n opacity: 0;\n}\n.clearfix-style::after {\n display: block;\n height: 0;\n clear: both;\n font-size: 0;\n content: '';\n visibility: hidden;\n}\n.bk-popper {\n display: none;\n padding: 7px 14px;\n font-size: 12px;\n color: #fff;\n background: #333;\n border-radius: 4px;\n}\n.bk-popper.light {\n color: #63656e;\n background: #fff;\n box-shadow: #dcdee5 0 0 6px 0;\n}\n.bk-popper .bk-popper-arrow,\n.bk-popper .bk-popper-arrow::before {\n position: absolute;\n width: 8px;\n height: 8px;\n background: inherit;\n}\n.bk-popper .bk-popper-arrow {\n visibility: hidden;\n}\n.bk-popper .bk-popper-arrow::before {\n content: '';\n visibility: visible;\n transform: rotate(45deg);\n}\n.bk-popper[data-show] {\n display: block;\n}\n.bk-popper[data-popper-placement^='top'] > .bk-popper-arrow {\n bottom: -4px;\n}\n.bk-popper[data-popper-placement^='bottom'] > .bk-popper-arrow {\n top: -4px;\n}\n.bk-popper[data-popper-placement^='left'] > .bk-popper-arrow {\n right: -4px;\n}\n.bk-popper[data-popper-placement^='right'] > .bk-popper-arrow {\n left: -4px;\n}\n.bk-loading-wrapper {\n position: static;\n vertical-align: middle;\n}\n.bk-loading-wrapper:not(.bk-nested-loading):not(.bk-directive-loading) {\n display: inline-flex;\n}\n.bk-loading-wrapper.bk-directive-loading {\n width: 100%;\n height: 100%;\n}\n.bk-loading-wrapper.bk-directive-loading,\n.bk-loading-wrapper.bk-nested-loading {\n position: relative;\n}\n.bk-loading-wrapper.bk-directive-loading.is-block,\n.bk-loading-wrapper.bk-nested-loading.is-block {\n display: block;\n}\n.bk-loading-wrapper.bk-directive-loading .bk-loading-indicator,\n.bk-loading-wrapper.bk-nested-loading .bk-loading-indicator {\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: 11;\n text-align: center;\n transform: translate(-50%, -50%);\n}\n.bk-loading-wrapper .dot {\n display: inline-flex;\n width: 14px;\n height: 14px;\n margin-right: 10px;\n border-radius: 50%;\n transform: scale(0.6);\n animation-duration: 0.8s;\n animation-iteration-count: infinite;\n animation-name: loading-scale-animate;\n animation-direction: normal;\n}\n.bk-loading-wrapper .oval {\n position: absolute;\n width: 6px;\n height: 8px;\n background-color: #63656e;\n border-radius: 8px;\n animation-duration: 1.2s;\n animation-iteration-count: infinite;\n animation-name: fade;\n transform-origin: center 24px;\n}\n.bk-loading-wrapper .bk-loading-mask {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.bk-loading-wrapper .bk-loading-indicator {\n display: flex;\n line-height: 1;\n text-align: center;\n flex-direction: column;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-success .dot-4 {\n background-color: #2dcb56;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-danger .dot-4 {\n background-color: #ea3636;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-warning .dot-4 {\n background-color: #ff9c01;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-primary .dot-4 {\n background-color: #3a84ff;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-white .dot-4 {\n background-color: white;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .oval,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .dot,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .dot-1,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .dot-2,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .dot-3,\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-default .dot-4 {\n background-color: #c4c6cc;\n}\n.bk-loading-wrapper .bk-loading-indicator .dot-1 {\n background-color: #ea3636;\n animation-delay: 0.1s;\n}\n.bk-loading-wrapper .bk-loading-indicator .dot-2 {\n background-color: #ff9c01;\n animation-delay: 0.25s;\n}\n.bk-loading-wrapper .bk-loading-indicator .dot-3 {\n background-color: #2dcb56;\n animation-delay: 0.4s;\n}\n.bk-loading-wrapper .bk-loading-indicator .dot-4 {\n background-color: #3a84ff;\n animation-delay: 0.55s;\n margin-right: 0px;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-1 {\n transform: rotate(135deg);\n animation-delay: -0.45s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-2 {\n transform: rotate(90deg);\n animation-delay: -0.6s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-3 {\n transform: rotate(45deg);\n animation-delay: -0.75s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-4 {\n transform: rotate(0deg);\n animation-delay: -0.9s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-5 {\n transform: rotate(-45deg);\n animation-delay: -1.05s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-6 {\n transform: rotate(-90deg);\n animation-delay: -1.2s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-7 {\n transform: rotate(-135deg);\n animation-delay: -1.35s;\n}\n.bk-loading-wrapper .bk-loading-indicator .oval-8 {\n transform: rotate(-180deg);\n animation-delay: -1.5s;\n}\n.bk-loading-wrapper .bk-loading-indicator .bk-normal-indicator {\n display: inline-flex;\n justify-content: center;\n}\n.bk-loading-wrapper .bk-loading-indicator .bk-spin-indicator {\n position: relative;\n display: inline-flex;\n justify-content: center;\n width: 48px;\n height: 48px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-mini .bk-spin-indicator {\n height: 16px;\n width: 16px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-mini .dot {\n width: 3px;\n height: 3px;\n margin-right: 3px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-mini .dot.dot-4 {\n margin-right: 0;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-mini .oval {\n width: 2px;\n height: 3px;\n border-radius: 3px;\n transform-origin: center 8px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-mini .bk-loading-title {\n font-size: 14px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-small .bk-spin-indicator {\n height: 32px;\n width: 32px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-small .dot {\n width: 6px;\n height: 6px;\n margin-right: 6px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-small .dot.dot-4 {\n margin-right: 0;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-small .oval {\n width: 4px;\n height: 5px;\n border-radius: 5px;\n transform-origin: center 16px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-small .bk-loading-title {\n font-size: 12px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-large .bk-spin-indicator {\n height: 68px;\n width: 68px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-large .dot {\n width: 20px;\n height: 20px;\n margin-right: 12px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-large .dot.dot-4 {\n margin-right: 0;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-large .oval {\n width: 8px;\n height: 12px;\n border-radius: 12px;\n transform-origin: center 34px;\n}\n.bk-loading-wrapper .bk-loading-indicator.bk-loading-size-large .bk-loading-title {\n font-size: 14px;\n}\n.bk-loading-wrapper .bk-loading-indicator .bk-loading-title {\n margin-top: 8px;\n font-size: 14px;\n line-height: normal;\n color: #63656e;\n text-align: center;\n}\n.bk-popover.bk-pop2-content {\n position: absolute;\n padding: 12px;\n font-size: 12px;\n color: #fff;\n background: #26323d;\n border-radius: 4px;\n box-sizing: border-box;\n}\n.bk-popover.bk-pop2-content.hidden {\n display: none;\n}\n.bk-popover.bk-pop2-content .bk-pop2-arrow {\n position: absolute;\n z-index: -1;\n width: 8px;\n height: 8px;\n background: #333;\n transform: rotate(45deg);\n}\n.bk-popover.bk-pop2-content[data-theme^='light'] {\n color: #26323d;\n background-color: #fff;\n box-shadow: 0 0 6px 0 #dcdee5;\n}\n.bk-popover.bk-pop2-content[data-theme^='light'] .bk-pop2-arrow {\n background-color: #fff;\n}\n.text-ov {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.position-relative {\n position: relative;\n}\n.position-absolute {\n position: absolute;\n}\n.overflow-popover-reference {\n width: 100%;\n}\n.bk-tag {\n display: inline-flex;\n align-items: center;\n height: 22px;\n padding: 0 10px;\n font-size: 12px;\n line-height: 22px;\n color: #63656e;\n cursor: default;\n background-color: #f0f1f5;\n border-color: rgba(151, 155, 165, 0.3);\n box-sizing: border-box;\n}\n.bk-tag.bk-tag-success {\n color: #14a568;\n border-color: rgba(20, 165, 104, 0.3);\n background-color: #E4FAF0;\n}\n.bk-tag.bk-tag-success.bk-tag-filled {\n background-color: #14A568;\n}\n.bk-tag.bk-tag-success.bk-tag-filled:hover {\n background-color: #42B685;\n}\n.bk-tag.bk-tag-success:hover:not(.bk-tag-filled) {\n background-color: #C9F5E2;\n}\n.bk-tag.bk-tag-info {\n color: #3a84ff;\n border-color: rgba(58, 132, 255, 0.3);\n background-color: #EDF4FF;\n}\n.bk-tag.bk-tag-info.bk-tag-filled {\n background-color: #3A84FF;\n}\n.bk-tag.bk-tag-info.bk-tag-filled:hover {\n background-color: #609CFE;\n}\n.bk-tag.bk-tag-info:hover:not(.bk-tag-filled) {\n background-color: #E1ECFF;\n}\n.bk-tag.bk-tag-warning {\n color: #fe9c00;\n border-color: rgba(254, 165, 0, 0.3);\n background-color: #FFF1DB;\n}\n.bk-tag.bk-tag-warning.bk-tag-filled {\n background-color: #FE9C00;\n}\n.bk-tag.bk-tag-warning.bk-tag-filled:hover {\n background-color: #FDAF32;\n}\n.bk-tag.bk-tag-warning:hover:not(.bk-tag-filled) {\n background-color: #FFE8C3;\n}\n.bk-tag.bk-tag-danger {\n color: #ea3636;\n border-color: rgba(234, 53, 54, 0.3);\n background-color: #FEEBEA;\n}\n.bk-tag.bk-tag-danger.bk-tag-filled {\n background-color: #EA3536;\n}\n.bk-tag.bk-tag-danger.bk-tag-filled:hover {\n background-color: #ED5C5D;\n}\n.bk-tag.bk-tag-danger:hover:not(.bk-tag-filled) {\n background-color: #FEDDDC;\n}\n.bk-tag:hover {\n background-color: #dcdee5;\n}\n.bk-tag.bk-tag-filled {\n color: #fff;\n background-color: #979BA5;\n}\n.bk-tag.bk-tag-filled:hover {\n background-color: #ACAFB6;\n}\n.bk-tag.bk-tag-stroke {\n padding: 0 9px;\n line-height: 20px;\n border-style: solid;\n border-width: 1px;\n}\n.bk-tag.bk-tag-closable {\n padding: 0 4px 0 10px;\n}\n.bk-tag.bk-tag-checkable {\n cursor: pointer;\n background: none;\n}\n.bk-tag.bk-tag-checkable:hover {\n background: #F0F1F5;\n}\n.bk-tag.bk-tag-check {\n color: #fff;\n background: #3a84ff;\n}\n.bk-tag.bk-tag-check:hover {\n color: #fff;\n background: #3a84ff;\n opacity: 1;\n}\n.bk-tag--default {\n padding: 0 8px;\n}\n.bk-tag--small {\n height: 16px;\n padding: 0 4px;\n line-height: 16px;\n}\n.bk-tag--small .bk-tag-text {\n font-size: 10px;\n}\n.bk-tag-text {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.bk-tag-icon {\n flex-shrink: 0;\n margin-right: 4px;\n font-size: 14px;\n line-height: 0;\n}\n.bk-tag-close {\n flex-shrink: 0;\n margin-left: 4px;\n font-size: 12px;\n line-height: 0;\n cursor: pointer;\n}\n.me-tag[data-v-887b7c44] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #e1ecff;\n color: #4d4f56;\n border-radius: 50%;\n padding: 0 8px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n font-size: 12px;\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n}\n.me-tag[data-v-887b7c44]:hover {\n background-color: #cddffe;\n color: #3a84ff;\n}\n.me-tag.disabled[data-v-887b7c44] {\n background-color: #f0f1f5;\n color: #c4c6cc;\n cursor: not-allowed;\n}.dropdown-content[data-v-54b68f9a] {\n min-height: 40px;\n max-height: 300px;\n overflow-y: auto;\n padding: 5px 0;\n}\n.dropdown-content .no-data[data-v-54b68f9a] {\n padding: 10px;\n text-align: center;\n color: #979ba5;\n}\n.dropdown-content .user-group .group-header[data-v-54b68f9a] {\n padding: 8px 12px;\n color: #979ba5;\n display: flex;\n align-items: center;\n}\n.dropdown-content .user-group .group-header .group-count[data-v-54b68f9a] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-54b68f9a] {\n padding: 8px 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n height: 32px;\n}\n.dropdown-content .user-option[data-v-54b68f9a]:hover {\n background-color: #f5f7fa;\n}.bk-user-selector-popover.bk-popover.bk-pop2-content {\n padding: 0;\n}.user-tag[data-v-655f7a5a] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-655f7a5a] {\n cursor: move;\n}\n.user-tag.active[data-v-655f7a5a] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag .tag-content .user-name[data-v-655f7a5a] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n}.multiple-selector[data-v-9fc5bebf] {\n position: relative;\n width: 100%;\n}\n.multiple-selector .tags-container[data-v-9fc5bebf] {\n min-height: 32px;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n padding: 1px 10px 1px 8px;\n transition: all 0.2s ease;\n background-color: #fff;\n}\n.multiple-selector .tags-container.focused[data-v-9fc5bebf] {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.multiple-selector .tags-container.collapsed[data-v-9fc5bebf] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-9fc5bebf] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-9fc5bebf] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-9fc5bebf] {\n outline: none;\n border: none;\n height: 28px;\n min-width: 10px;\n background: transparent;\n}\n.multiple-selector .search-input[data-v-9fc5bebf]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-9fc5bebf] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-9fc5bebf], .multiple-selector .search-input.collapsed[data-v-9fc5bebf] {\n flex: 1;\n min-width: 60px;\n}.single-selector[data-v-1454c121] {\n position: relative;\n width: 100%;\n}\n.input-container[data-v-1454c121] {\n position: relative;\n display: flex;\n align-items: center;\n min-height: 32px;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n padding: 0 8px;\n background-color: #fff;\n}\n.input-container[data-v-1454c121]:focus-within {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.search-input[data-v-1454c121] {\n flex: 1;\n outline: none;\n border: none;\n height: 30px;\n background: transparent;\n}\n.search-input[data-v-1454c121]::placeholder {\n color: #c4c6cc;\n}.bk-user-selector[data-v-906da21c] {\n width: 100%;\n position: relative;\n font-size: 12px;\n}"));
|
|
6
|
+
elementStyle.appendChild(document.createTextNode(".scroll-bar-style::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.scroll-bar-style::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\nhtml,\nbody {\n padding: 0;\n margin: 0;\n}\n* {\n box-sizing: border-box;\n}\n/**\n * HTML5 display definitions\n * ==========================================================================\n *\n * Correct `block` display not defined for any HTML5 element in IE 8/9.\n * Correct `block` display not defined for `details` or `summary` in IE 10/11 and Firefox.\n * Correct `block` display not defined for `main` in IE 11.\n */\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\n/**\n * 1. Correct `inline-block` display not defined in IE 8/9.\n * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.\n */\naudio,\ncanvas,\nprogress,\nvideo {\n /* 1 */\n display: inline-block;\n /* 2 */\n vertical-align: baseline;\n}\n/**\n * Prevent modern browsers from displaying `audio` without controls.\n * Remove excess height in iOS 5 devices.\n */\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n/**\n * Address `[hidden]` styling not present in IE 8/9/10.\n * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.\n */\n[hidden],\ntemplate {\n display: none;\n}\n/**\n * Links\n * ==========================================================================\n *\n * Remove the gray background color from active links in IE 10.\n */\na {\n background-color: transparent;\n}\n/**\n * Improve readability of focused elements when they are also in an\n * active/hover state.\n */\na:active,\na:hover {\n outline: 0;\n}\n/**\n * Text-level semantics\n * ==========================================================================\n *\n * Address styling not present in IE 8/9/10/11, Safari, and Chrome.\n */\nabbr[title] {\n border-bottom: 1px dotted;\n}\n/**\n * Embedded content\n * ==========================================================================\n *\n * Remove border when inside `a` element in IE 8/9/10.\n */\nimg {\n border: 0;\n}\n/**\n * Correct overflow not hidden in IE 9/10/11.\n */\nsvg:not(:root) {\n overflow: hidden;\n}\n/**\n * Grouping content\n * ==========================================================================\n *\n * Address margin not present in IE 8/9 and Safari.\n */\nfigure {\n margin: 1em 40px;\n}\n/**\n * Address differences between Firefox and other browsers.\n */\nhr {\n height: 0;\n box-sizing: content-box;\n}\n/**\n * Address odd `em`-unit font size rendering in all browsers.\n *\n * Forms\n * ==========================================================================\n *\n * Known limitation: by default, Chrome and Safari on OS X allow very limited\n * styling of `select`, unless a `border` property is set.\n *\n * 1. Correct color not being inherited.\n * Known issue: affects color of disabled elements.\n * 2. Correct font properties not being inherited.\n * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.\n */\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n /* 3 */\n margin: 0;\n /* 2 */\n font: inherit;\n /* 1 */\n color: inherit;\n}\n/**\n * Address `overflow` set to `hidden` in IE 8/9/10/11.\n */\nbutton {\n overflow: visible;\n}\n/**\n * Address inconsistent `text-transform` inheritance for `button` and `select`.\n * All other form control elements do not inherit `text-transform` values.\n * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.\n * Correct `select` style inheritance in Firefox.\n */\nbutton,\nselect {\n text-transform: none;\n}\n/**\n * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` and `video` controls.\n * 2. Correct inability to style clickable `input` types in iOS.\n * 3. Improve usability and consistency of cursor style between image-type `input` and others.\n */\nbutton,\nhtml input[type='button'],\ninput[type='reset'],\ninput[type='submit'] {\n /* 3 */\n cursor: pointer;\n /* 2 */\n appearance: button;\n}\n/* Re-set default cursor for disabled elements. */\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\n/* Remove inner padding and border in Firefox 4+. */\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n padding: 0;\n border: 0;\n}\n/**\n * Address Firefox 4+ setting `line-height` on `input` using `!important` in the UA stylesheet.\n */\ninput {\n line-height: normal;\n}\n/**\n * It's recommended that you don't attempt to style these elements.\n * Firefox's implementation doesn't respect box-sizing, padding, or width.\n *\n * 1. Address box sizing set to `content-box` in IE 8/9/10.\n * 2. Remove excess padding in IE 8/9/10.\n */\ninput[type='checkbox'],\ninput[type='radio'] {\n /* 2 */\n padding: 0;\n /* 1 */\n box-sizing: border-box;\n}\n/**\n * Fix the cursor style for Chrome's increment/decrement buttons. For certain\n * `font-size` values of the `input`, it causes the cursor style of the\n * decrement button to change from `default` to `text`.\n */\ninput[type='number']::-webkit-inner-spin-button,\ninput[type='number']::-webkit-outer-spin-button {\n height: auto;\n}\n::-ms-clear,\n::-ms-reveal {\n display: none;\n}\ninput[type='text']::-ms-clear {\n display: none;\n}\ninput[type='text']::-ms-reveal {\n display: none;\n}\n/**\n * 1. Address `appearance` set to `searchfield` in Safari and Chrome.\n * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.\n */\ninput[type='search'] {\n /* 2 */\n box-sizing: content-box;\n /* 1 */\n appearance: textfield;\n}\n/**\n * Remove inner padding and search cancel button in Safari and Chrome on OS X.\n * Safari (but not Chrome) clips the cancel button when the search input has\n * padding (and `textfield` appearance).\n */\ninput[type='search']::-webkit-search-cancel-button,\ninput[type='search']::-webkit-search-decoration {\n appearance: none;\n}\n/**\n * Define consistent border, margin, and padding.\n */\nfieldset {\n padding: 0.35em 0.625em 0.75em;\n margin: 0 2px;\n border: 1px solid #c0c0c0;\n}\n/**\n * 1. Correct `color` not being inherited in IE 8/9/10/11.\n * 2. Remove padding so people aren't caught out if they zero out fieldsets.\n */\nlegend {\n /* 2 */\n padding: 0;\n /* 1 */\n border: 0;\n}\n/**\n * Remove default vertical scrollbar in IE 8/9/10/11.\n */\ntextarea {\n overflow: auto;\n}\n/**\n * Don't inherit the `font-weight` (applied by a rule above).\n * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.\n */\noptgroup {\n font-weight: bold;\n}\n/**\n* BK-Scroll-Style\n*/\n.bk-scroll-y {\n overflow-y: auto;\n}\n.bk-scroll-y::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.bk-scroll-y::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\n.bk-scroll-x {\n overflow-x: auto;\n}\n.bk-scroll-x::-webkit-scrollbar {\n width: 4px;\n height: 4px;\n}\n.bk-scroll-x::-webkit-scrollbar-thumb {\n background: #ddd;\n border-radius: 20px;\n box-shadow: inset 0 0 6px rgba(204, 204, 204, 0.3);\n}\n@keyframes loading-scale-animate {\n 0% {\n transform: scale(1);\n }\n 100% {\n transform: scale(0.6);\n }\n}\n@keyframes fade {\n 100% {\n background-color: transparent;\n }\n}\n.bk-user-selector-transition .bk-user-selector-fade-enter-active,\n.bk-user-selector-transition .bk-user-selector-fade-leave-active {\n transition: all 0.3s cubic-bezier(0.55, 0, 0.1, 1);\n}\n.bk-user-selector-transition .bk-user-selector-fade-enter,\n.bk-user-selector-transition .bk-user-selector-fade-leave-to {\n opacity: 0;\n}\n.clearfix-style::after {\n display: block;\n height: 0;\n clear: both;\n font-size: 0;\n content: '';\n visibility: hidden;\n}\n.bk-user-selector-popper {\n display: none;\n padding: 7px 14px;\n font-size: 12px;\n color: #fff;\n background: #333;\n border-radius: 4px;\n}\n.bk-user-selector-popper.light {\n color: #63656e;\n background: #fff;\n box-shadow: #dcdee5 0 0 6px 0;\n}\n.bk-user-selector-popper .bk-user-selector-popper-arrow,\n.bk-user-selector-popper .bk-user-selector-popper-arrow::before {\n position: absolute;\n width: 8px;\n height: 8px;\n background: inherit;\n}\n.bk-user-selector-popper .bk-user-selector-popper-arrow {\n visibility: hidden;\n}\n.bk-user-selector-popper .bk-user-selector-popper-arrow::before {\n content: '';\n visibility: visible;\n transform: rotate(45deg);\n}\n.bk-user-selector-popper[data-show] {\n display: block;\n}\n.bk-user-selector-popper[data-popper-placement^='top'] > .bk-user-selector-popper-arrow {\n bottom: -4px;\n}\n.bk-user-selector-popper[data-popper-placement^='bottom'] > .bk-user-selector-popper-arrow {\n top: -4px;\n}\n.bk-user-selector-popper[data-popper-placement^='left'] > .bk-user-selector-popper-arrow {\n right: -4px;\n}\n.bk-user-selector-popper[data-popper-placement^='right'] > .bk-user-selector-popper-arrow {\n left: -4px;\n}\n.bk-user-selector-loading-wrapper {\n position: static;\n vertical-align: middle;\n}\n.bk-user-selector-loading-wrapper:not(.bk-user-selector-nested-loading):not(.bk-user-selector-directive-loading) {\n display: inline-flex;\n}\n.bk-user-selector-loading-wrapper.bk-user-selector-directive-loading {\n width: 100%;\n height: 100%;\n}\n.bk-user-selector-loading-wrapper.bk-user-selector-directive-loading,\n.bk-user-selector-loading-wrapper.bk-user-selector-nested-loading {\n position: relative;\n}\n.bk-user-selector-loading-wrapper.bk-user-selector-directive-loading.is-block,\n.bk-user-selector-loading-wrapper.bk-user-selector-nested-loading.is-block {\n display: block;\n}\n.bk-user-selector-loading-wrapper.bk-user-selector-directive-loading .bk-user-selector-loading-indicator,\n.bk-user-selector-loading-wrapper.bk-user-selector-nested-loading .bk-user-selector-loading-indicator {\n position: absolute;\n top: 50%;\n left: 50%;\n z-index: 11;\n text-align: center;\n transform: translate(-50%, -50%);\n}\n.bk-user-selector-loading-wrapper .dot {\n display: inline-flex;\n width: 14px;\n height: 14px;\n margin-right: 10px;\n border-radius: 50%;\n transform: scale(0.6);\n animation-duration: 0.8s;\n animation-iteration-count: infinite;\n animation-name: loading-scale-animate;\n animation-direction: normal;\n}\n.bk-user-selector-loading-wrapper .oval {\n position: absolute;\n width: 6px;\n height: 8px;\n background-color: #63656e;\n border-radius: 8px;\n animation-duration: 1.2s;\n animation-iteration-count: infinite;\n animation-name: fade;\n transform-origin: center 24px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-mask {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator {\n display: flex;\n line-height: 1;\n text-align: center;\n flex-direction: column;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-success .dot-4 {\n background-color: #2dcb56;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-danger .dot-4 {\n background-color: #ea3636;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-warning .dot-4 {\n background-color: #ff9c01;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-primary .dot-4 {\n background-color: #3a84ff;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-white .dot-4 {\n background-color: white;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .oval,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .dot,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .dot-1,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .dot-2,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .dot-3,\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-default .dot-4 {\n background-color: #c4c6cc;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .dot-1 {\n background-color: #ea3636;\n animation-delay: 0.1s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .dot-2 {\n background-color: #ff9c01;\n animation-delay: 0.25s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .dot-3 {\n background-color: #2dcb56;\n animation-delay: 0.4s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .dot-4 {\n background-color: #3a84ff;\n animation-delay: 0.55s;\n margin-right: 0px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-1 {\n transform: rotate(135deg);\n animation-delay: -0.45s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-2 {\n transform: rotate(90deg);\n animation-delay: -0.6s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-3 {\n transform: rotate(45deg);\n animation-delay: -0.75s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-4 {\n transform: rotate(0deg);\n animation-delay: -0.9s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-5 {\n transform: rotate(-45deg);\n animation-delay: -1.05s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-6 {\n transform: rotate(-90deg);\n animation-delay: -1.2s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-7 {\n transform: rotate(-135deg);\n animation-delay: -1.35s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .oval-8 {\n transform: rotate(-180deg);\n animation-delay: -1.5s;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .bk-user-selector-normal-indicator {\n display: inline-flex;\n justify-content: center;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .bk-user-selector-spin-indicator {\n position: relative;\n display: inline-flex;\n justify-content: center;\n width: 48px;\n height: 48px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-mini .bk-user-selector-spin-indicator {\n height: 16px;\n width: 16px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-mini .dot {\n width: 3px;\n height: 3px;\n margin-right: 3px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-mini .dot.dot-4 {\n margin-right: 0;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-mini .oval {\n width: 2px;\n height: 3px;\n border-radius: 3px;\n transform-origin: center 8px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-mini .bk-user-selector-loading-title {\n font-size: 14px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-small .bk-user-selector-spin-indicator {\n height: 32px;\n width: 32px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-small .dot {\n width: 6px;\n height: 6px;\n margin-right: 6px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-small .dot.dot-4 {\n margin-right: 0;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-small .oval {\n width: 4px;\n height: 5px;\n border-radius: 5px;\n transform-origin: center 16px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-small .bk-user-selector-loading-title {\n font-size: 12px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-large .bk-user-selector-spin-indicator {\n height: 68px;\n width: 68px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-large .dot {\n width: 20px;\n height: 20px;\n margin-right: 12px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-large .dot.dot-4 {\n margin-right: 0;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-large .oval {\n width: 8px;\n height: 12px;\n border-radius: 12px;\n transform-origin: center 34px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator.bk-user-selector-loading-size-large .bk-user-selector-loading-title {\n font-size: 14px;\n}\n.bk-user-selector-loading-wrapper .bk-user-selector-loading-indicator .bk-user-selector-loading-title {\n margin-top: 8px;\n font-size: 14px;\n line-height: normal;\n color: #63656e;\n text-align: center;\n}\n.bk-user-selector-popover.bk-user-selector-pop2-content {\n position: absolute;\n padding: 12px;\n font-size: 12px;\n color: #fff;\n background: #26323d;\n border-radius: 4px;\n box-sizing: border-box;\n}\n.bk-user-selector-popover.bk-user-selector-pop2-content.hidden {\n display: none;\n}\n.bk-user-selector-popover.bk-user-selector-pop2-content .bk-user-selector-pop2-arrow {\n position: absolute;\n z-index: -1;\n width: 8px;\n height: 8px;\n background: #333;\n transform: rotate(45deg);\n}\n.bk-user-selector-popover.bk-user-selector-pop2-content[data-theme^='light'] {\n color: #26323d;\n background-color: #fff;\n box-shadow: 0 0 6px 0 #dcdee5;\n}\n.bk-user-selector-popover.bk-user-selector-pop2-content[data-theme^='light'] .bk-user-selector-pop2-arrow {\n background-color: #fff;\n}\n.text-ov {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.position-relative {\n position: relative;\n}\n.position-absolute {\n position: absolute;\n}\n.overflow-popover-reference {\n width: 100%;\n}\n.bk-user-selector-tag {\n display: inline-flex;\n align-items: center;\n height: 22px;\n padding: 0 10px;\n font-size: 12px;\n line-height: 22px;\n color: #63656e;\n cursor: default;\n background-color: #f0f1f5;\n border-color: rgba(151, 155, 165, 0.3);\n box-sizing: border-box;\n}\n.bk-user-selector-tag.bk-user-selector-tag-success {\n color: #14a568;\n border-color: rgba(20, 165, 104, 0.3);\n background-color: #E4FAF0;\n}\n.bk-user-selector-tag.bk-user-selector-tag-success.bk-user-selector-tag-filled {\n background-color: #14A568;\n}\n.bk-user-selector-tag.bk-user-selector-tag-success.bk-user-selector-tag-filled:hover {\n background-color: #42B685;\n}\n.bk-user-selector-tag.bk-user-selector-tag-success:hover:not(.bk-user-selector-tag-filled) {\n background-color: #C9F5E2;\n}\n.bk-user-selector-tag.bk-user-selector-tag-info {\n color: #3a84ff;\n border-color: rgba(58, 132, 255, 0.3);\n background-color: #EDF4FF;\n}\n.bk-user-selector-tag.bk-user-selector-tag-info.bk-user-selector-tag-filled {\n background-color: #3A84FF;\n}\n.bk-user-selector-tag.bk-user-selector-tag-info.bk-user-selector-tag-filled:hover {\n background-color: #609CFE;\n}\n.bk-user-selector-tag.bk-user-selector-tag-info:hover:not(.bk-user-selector-tag-filled) {\n background-color: #E1ECFF;\n}\n.bk-user-selector-tag.bk-user-selector-tag-warning {\n color: #fe9c00;\n border-color: rgba(254, 165, 0, 0.3);\n background-color: #FFF1DB;\n}\n.bk-user-selector-tag.bk-user-selector-tag-warning.bk-user-selector-tag-filled {\n background-color: #FE9C00;\n}\n.bk-user-selector-tag.bk-user-selector-tag-warning.bk-user-selector-tag-filled:hover {\n background-color: #FDAF32;\n}\n.bk-user-selector-tag.bk-user-selector-tag-warning:hover:not(.bk-user-selector-tag-filled) {\n background-color: #FFE8C3;\n}\n.bk-user-selector-tag.bk-user-selector-tag-danger {\n color: #ea3636;\n border-color: rgba(234, 53, 54, 0.3);\n background-color: #FEEBEA;\n}\n.bk-user-selector-tag.bk-user-selector-tag-danger.bk-user-selector-tag-filled {\n background-color: #EA3536;\n}\n.bk-user-selector-tag.bk-user-selector-tag-danger.bk-user-selector-tag-filled:hover {\n background-color: #ED5C5D;\n}\n.bk-user-selector-tag.bk-user-selector-tag-danger:hover:not(.bk-user-selector-tag-filled) {\n background-color: #FEDDDC;\n}\n.bk-user-selector-tag:hover {\n background-color: #dcdee5;\n}\n.bk-user-selector-tag.bk-user-selector-tag-filled {\n color: #fff;\n background-color: #979BA5;\n}\n.bk-user-selector-tag.bk-user-selector-tag-filled:hover {\n background-color: #ACAFB6;\n}\n.bk-user-selector-tag.bk-user-selector-tag-stroke {\n padding: 0 9px;\n line-height: 20px;\n border-style: solid;\n border-width: 1px;\n}\n.bk-user-selector-tag.bk-user-selector-tag-closable {\n padding: 0 4px 0 10px;\n}\n.bk-user-selector-tag.bk-user-selector-tag-checkable {\n cursor: pointer;\n background: none;\n}\n.bk-user-selector-tag.bk-user-selector-tag-checkable:hover {\n background: #F0F1F5;\n}\n.bk-user-selector-tag.bk-user-selector-tag-check {\n color: #fff;\n background: #3a84ff;\n}\n.bk-user-selector-tag.bk-user-selector-tag-check:hover {\n color: #fff;\n background: #3a84ff;\n opacity: 1;\n}\n.bk-user-selector-tag--default {\n padding: 0 8px;\n}\n.bk-user-selector-tag--small {\n height: 16px;\n padding: 0 4px;\n line-height: 16px;\n}\n.bk-user-selector-tag--small .bk-user-selector-tag-text {\n font-size: 10px;\n}\n.bk-user-selector-tag-text {\n flex: 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.bk-user-selector-tag-icon {\n flex-shrink: 0;\n margin-right: 4px;\n font-size: 14px;\n line-height: 0;\n}\n.bk-user-selector-tag-close {\n flex-shrink: 0;\n margin-left: 4px;\n font-size: 12px;\n line-height: 0;\n cursor: pointer;\n}\n.me-tag[data-v-887b7c44] {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background-color: #e1ecff;\n color: #4d4f56;\n border-radius: 50%;\n padding: 0 8px;\n height: 24px;\n width: 24px;\n cursor: pointer;\n font-size: 12px;\n position: absolute;\n right: 8px;\n top: 50%;\n transform: translateY(-50%);\n z-index: 1;\n}\n.me-tag[data-v-887b7c44]:hover {\n background-color: #cddffe;\n color: #3a84ff;\n}\n.me-tag.disabled[data-v-887b7c44] {\n background-color: #f0f1f5;\n color: #c4c6cc;\n cursor: not-allowed;\n}.dropdown-content[data-v-54b68f9a] {\n min-height: 40px;\n max-height: 300px;\n overflow-y: auto;\n padding: 5px 0;\n}\n.dropdown-content .no-data[data-v-54b68f9a] {\n padding: 10px;\n text-align: center;\n color: #979ba5;\n}\n.dropdown-content .user-group .group-header[data-v-54b68f9a] {\n padding: 8px 12px;\n color: #979ba5;\n display: flex;\n align-items: center;\n}\n.dropdown-content .user-group .group-header .group-count[data-v-54b68f9a] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-54b68f9a] {\n padding: 8px 12px;\n cursor: pointer;\n display: flex;\n align-items: center;\n height: 32px;\n}\n.dropdown-content .user-option[data-v-54b68f9a]:hover {\n background-color: #f5f7fa;\n}.bk-user-selector-popover.bk-popover.bk-pop2-content {\n padding: 0;\n}.user-tag[data-v-655f7a5a] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-655f7a5a] {\n cursor: move;\n}\n.user-tag.active[data-v-655f7a5a] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag .tag-content .user-name[data-v-655f7a5a] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n}.multiple-selector[data-v-9fc5bebf] {\n position: relative;\n width: 100%;\n}\n.multiple-selector .tags-container[data-v-9fc5bebf] {\n min-height: 32px;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n padding: 1px 10px 1px 8px;\n transition: all 0.2s ease;\n background-color: #fff;\n}\n.multiple-selector .tags-container.focused[data-v-9fc5bebf] {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.multiple-selector .tags-container.collapsed[data-v-9fc5bebf] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-9fc5bebf] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-9fc5bebf] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-9fc5bebf] {\n outline: none;\n border: none;\n height: 28px;\n min-width: 10px;\n background: transparent;\n}\n.multiple-selector .search-input[data-v-9fc5bebf]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-9fc5bebf] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-9fc5bebf], .multiple-selector .search-input.collapsed[data-v-9fc5bebf] {\n flex: 1;\n min-width: 60px;\n}.single-selector[data-v-1454c121] {\n position: relative;\n width: 100%;\n}\n.input-container[data-v-1454c121] {\n position: relative;\n display: flex;\n align-items: center;\n min-height: 32px;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n padding: 0 8px;\n background-color: #fff;\n}\n.input-container[data-v-1454c121]:focus-within {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.search-input[data-v-1454c121] {\n flex: 1;\n outline: none;\n border: none;\n height: 30px;\n background: transparent;\n}\n.search-input[data-v-1454c121]::placeholder {\n color: #c4c6cc;\n}.bk-user-selector[data-v-6f6d9f42] {\n width: 100%;\n position: relative;\n font-size: 12px;\n}"));
|
|
7
7
|
document.head.appendChild(elementStyle);
|
|
8
8
|
}
|
|
9
9
|
} catch (e) {
|
|
@@ -6057,121 +6057,6 @@ var lesscodeCustomComponentLibrary = function(exports) {
|
|
|
6057
6057
|
}
|
|
6058
6058
|
return container;
|
|
6059
6059
|
}
|
|
6060
|
-
const getTenants = async (apiBaseUrl, tenantId) => {
|
|
6061
|
-
if (!apiBaseUrl || !tenantId) {
|
|
6062
|
-
console.warn("获取租户信息需要提供有效的apiBaseUrl和租户ID");
|
|
6063
|
-
return [];
|
|
6064
|
-
}
|
|
6065
|
-
try {
|
|
6066
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/data-source-owner-tenants/`;
|
|
6067
|
-
const response = await fetch(url, {
|
|
6068
|
-
method: "GET",
|
|
6069
|
-
headers: {
|
|
6070
|
-
"x-bk-tenant-id": tenantId
|
|
6071
|
-
},
|
|
6072
|
-
credentials: "include"
|
|
6073
|
-
});
|
|
6074
|
-
if (!response.ok) {
|
|
6075
|
-
throw new Error(`获取租户信息失败: ${response.status} ${response.statusText}`);
|
|
6076
|
-
}
|
|
6077
|
-
const data2 = await response.json();
|
|
6078
|
-
return data2.data || [];
|
|
6079
|
-
} catch (error2) {
|
|
6080
|
-
console.error("获取租户信息失败:", error2);
|
|
6081
|
-
return [];
|
|
6082
|
-
}
|
|
6083
|
-
};
|
|
6084
|
-
const searchUsers = async (apiBaseUrl = "", tenantId = "", keyword = "") => {
|
|
6085
|
-
if (!keyword || !apiBaseUrl || !tenantId) {
|
|
6086
|
-
console.warn("搜索用户需要提供有效的apiBaseUrl、租户ID和关键词");
|
|
6087
|
-
return [];
|
|
6088
|
-
}
|
|
6089
|
-
try {
|
|
6090
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/search/?keyword=${encodeURIComponent(keyword)}`;
|
|
6091
|
-
const response = await fetch(url, {
|
|
6092
|
-
method: "GET",
|
|
6093
|
-
headers: {
|
|
6094
|
-
"x-bk-tenant-id": tenantId
|
|
6095
|
-
},
|
|
6096
|
-
credentials: "include"
|
|
6097
|
-
});
|
|
6098
|
-
if (!response.ok) {
|
|
6099
|
-
throw new Error(`搜索用户失败: ${response.status} ${response.statusText}`);
|
|
6100
|
-
}
|
|
6101
|
-
const data2 = await response.json();
|
|
6102
|
-
return data2.data || [];
|
|
6103
|
-
} catch (error2) {
|
|
6104
|
-
console.error("搜索用户失败:", error2);
|
|
6105
|
-
return [];
|
|
6106
|
-
}
|
|
6107
|
-
};
|
|
6108
|
-
const lookupUsers = async (apiBaseUrl = "", tenantId = "", exactSearchKey = "bk_username", usersList = []) => {
|
|
6109
|
-
const users = usersList.filter((user) => user).map((user) => user.trim());
|
|
6110
|
-
if (users.length === 0 || !apiBaseUrl || !tenantId) {
|
|
6111
|
-
console.warn("批量查找用户需要提供有效的apiBaseUrl、租户ID和至少一个用户名");
|
|
6112
|
-
return [];
|
|
6113
|
-
}
|
|
6114
|
-
try {
|
|
6115
|
-
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/lookup/?lookups=${users.join(",")}&lookup_fields=${exactSearchKey}`;
|
|
6116
|
-
const response = await fetch(url, {
|
|
6117
|
-
method: "GET",
|
|
6118
|
-
headers: {
|
|
6119
|
-
"x-bk-tenant-id": tenantId
|
|
6120
|
-
},
|
|
6121
|
-
credentials: "include"
|
|
6122
|
-
});
|
|
6123
|
-
if (!response.ok) {
|
|
6124
|
-
throw new Error(`批量查找用户失败: ${response.status} ${response.statusText}`);
|
|
6125
|
-
}
|
|
6126
|
-
const data2 = await response.json();
|
|
6127
|
-
return data2.data || [];
|
|
6128
|
-
} catch (error2) {
|
|
6129
|
-
console.error("批量查找用户失败:", error2);
|
|
6130
|
-
return [];
|
|
6131
|
-
}
|
|
6132
|
-
};
|
|
6133
|
-
const formatUsers = (users) => {
|
|
6134
|
-
if (!users || !Array.isArray(users)) return [];
|
|
6135
|
-
return users.map((user) => ({
|
|
6136
|
-
id: user.bk_username,
|
|
6137
|
-
name: user.display_name,
|
|
6138
|
-
tenantId: user.owner_tenant_id,
|
|
6139
|
-
...user
|
|
6140
|
-
}));
|
|
6141
|
-
};
|
|
6142
|
-
const useTenantData = (apiBaseUrl, tenantId) => {
|
|
6143
|
-
const tenants = ref({});
|
|
6144
|
-
const loading2 = ref(false);
|
|
6145
|
-
const fetchTenants = async () => {
|
|
6146
|
-
if (!apiBaseUrl || !tenantId) {
|
|
6147
|
-
console.warn("获取租户需要提供有效的API基础URL和租户ID");
|
|
6148
|
-
return;
|
|
6149
|
-
}
|
|
6150
|
-
loading2.value = true;
|
|
6151
|
-
try {
|
|
6152
|
-
const result = await getTenants(apiBaseUrl, tenantId);
|
|
6153
|
-
const tenantMap = {};
|
|
6154
|
-
result.forEach((item) => {
|
|
6155
|
-
if (item.id && item.name) {
|
|
6156
|
-
tenantMap[item.id] = item.name;
|
|
6157
|
-
}
|
|
6158
|
-
});
|
|
6159
|
-
tenants.value = tenantMap;
|
|
6160
|
-
} catch (error2) {
|
|
6161
|
-
console.error("获取租户数据失败:", error2);
|
|
6162
|
-
} finally {
|
|
6163
|
-
loading2.value = false;
|
|
6164
|
-
}
|
|
6165
|
-
};
|
|
6166
|
-
onBeforeMount(() => {
|
|
6167
|
-
fetchTenants();
|
|
6168
|
-
});
|
|
6169
|
-
return {
|
|
6170
|
-
tenants,
|
|
6171
|
-
loading: loading2,
|
|
6172
|
-
fetchTenants
|
|
6173
|
-
};
|
|
6174
|
-
};
|
|
6175
6060
|
var top = "top";
|
|
6176
6061
|
var bottom = "bottom";
|
|
6177
6062
|
var right = "right";
|
|
@@ -12012,7 +11897,7 @@ ${$(r2)}`), n2;
|
|
|
12012
11897
|
const src$3 = BkConfigProvider;
|
|
12013
11898
|
__webpack_exports__$6["default"];
|
|
12014
11899
|
__webpack_exports__$6.defaultRootConfig;
|
|
12015
|
-
__webpack_exports__$6.provideGlobalConfig;
|
|
11900
|
+
var __webpack_exports__provideGlobalConfig = __webpack_exports__$6.provideGlobalConfig;
|
|
12016
11901
|
__webpack_exports__$6.rootProviderKey;
|
|
12017
11902
|
__webpack_exports__$6.setPrefixVariable;
|
|
12018
11903
|
__webpack_exports__$6.useGlobalConfig;
|
|
@@ -17587,6 +17472,121 @@ ${$(r2)}`), n2;
|
|
|
17587
17472
|
var __webpack_exports__clickoutside = __webpack_exports__.clickoutside;
|
|
17588
17473
|
__webpack_exports__.mousewheel;
|
|
17589
17474
|
__webpack_exports__.overflowTitle;
|
|
17475
|
+
const getTenants = async (apiBaseUrl, tenantId) => {
|
|
17476
|
+
if (!apiBaseUrl || !tenantId) {
|
|
17477
|
+
console.warn("获取租户信息需要提供有效的apiBaseUrl和租户ID");
|
|
17478
|
+
return [];
|
|
17479
|
+
}
|
|
17480
|
+
try {
|
|
17481
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/data-source-owner-tenants/`;
|
|
17482
|
+
const response = await fetch(url, {
|
|
17483
|
+
method: "GET",
|
|
17484
|
+
headers: {
|
|
17485
|
+
"x-bk-tenant-id": tenantId
|
|
17486
|
+
},
|
|
17487
|
+
credentials: "include"
|
|
17488
|
+
});
|
|
17489
|
+
if (!response.ok) {
|
|
17490
|
+
throw new Error(`获取租户信息失败: ${response.status} ${response.statusText}`);
|
|
17491
|
+
}
|
|
17492
|
+
const data2 = await response.json();
|
|
17493
|
+
return data2.data || [];
|
|
17494
|
+
} catch (error2) {
|
|
17495
|
+
console.error("获取租户信息失败:", error2);
|
|
17496
|
+
return [];
|
|
17497
|
+
}
|
|
17498
|
+
};
|
|
17499
|
+
const searchUsers = async (apiBaseUrl = "", tenantId = "", keyword = "") => {
|
|
17500
|
+
if (!keyword || !apiBaseUrl || !tenantId) {
|
|
17501
|
+
console.warn("搜索用户需要提供有效的apiBaseUrl、租户ID和关键词");
|
|
17502
|
+
return [];
|
|
17503
|
+
}
|
|
17504
|
+
try {
|
|
17505
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/search/?keyword=${encodeURIComponent(keyword)}`;
|
|
17506
|
+
const response = await fetch(url, {
|
|
17507
|
+
method: "GET",
|
|
17508
|
+
headers: {
|
|
17509
|
+
"x-bk-tenant-id": tenantId
|
|
17510
|
+
},
|
|
17511
|
+
credentials: "include"
|
|
17512
|
+
});
|
|
17513
|
+
if (!response.ok) {
|
|
17514
|
+
throw new Error(`搜索用户失败: ${response.status} ${response.statusText}`);
|
|
17515
|
+
}
|
|
17516
|
+
const data2 = await response.json();
|
|
17517
|
+
return data2.data || [];
|
|
17518
|
+
} catch (error2) {
|
|
17519
|
+
console.error("搜索用户失败:", error2);
|
|
17520
|
+
return [];
|
|
17521
|
+
}
|
|
17522
|
+
};
|
|
17523
|
+
const lookupUsers = async (apiBaseUrl = "", tenantId = "", exactSearchKey = "bk_username", usersList = []) => {
|
|
17524
|
+
const users = usersList.filter((user) => user).map((user) => user.trim());
|
|
17525
|
+
if (users.length === 0 || !apiBaseUrl || !tenantId) {
|
|
17526
|
+
console.warn("批量查找用户需要提供有效的apiBaseUrl、租户ID和至少一个用户名");
|
|
17527
|
+
return [];
|
|
17528
|
+
}
|
|
17529
|
+
try {
|
|
17530
|
+
const url = `${apiBaseUrl}/api/v3/open-web/tenant/users/-/lookup/?lookups=${users.join(",")}&lookup_fields=${exactSearchKey}`;
|
|
17531
|
+
const response = await fetch(url, {
|
|
17532
|
+
method: "GET",
|
|
17533
|
+
headers: {
|
|
17534
|
+
"x-bk-tenant-id": tenantId
|
|
17535
|
+
},
|
|
17536
|
+
credentials: "include"
|
|
17537
|
+
});
|
|
17538
|
+
if (!response.ok) {
|
|
17539
|
+
throw new Error(`批量查找用户失败: ${response.status} ${response.statusText}`);
|
|
17540
|
+
}
|
|
17541
|
+
const data2 = await response.json();
|
|
17542
|
+
return data2.data || [];
|
|
17543
|
+
} catch (error2) {
|
|
17544
|
+
console.error("批量查找用户失败:", error2);
|
|
17545
|
+
return [];
|
|
17546
|
+
}
|
|
17547
|
+
};
|
|
17548
|
+
const formatUsers = (users) => {
|
|
17549
|
+
if (!users || !Array.isArray(users)) return [];
|
|
17550
|
+
return users.map((user) => ({
|
|
17551
|
+
id: user.bk_username,
|
|
17552
|
+
name: user.display_name,
|
|
17553
|
+
tenantId: user.owner_tenant_id,
|
|
17554
|
+
...user
|
|
17555
|
+
}));
|
|
17556
|
+
};
|
|
17557
|
+
const useTenantData = (apiBaseUrl, tenantId) => {
|
|
17558
|
+
const tenants = ref({});
|
|
17559
|
+
const loading2 = ref(false);
|
|
17560
|
+
const fetchTenants = async () => {
|
|
17561
|
+
if (!apiBaseUrl || !tenantId) {
|
|
17562
|
+
console.warn("获取租户需要提供有效的API基础URL和租户ID");
|
|
17563
|
+
return;
|
|
17564
|
+
}
|
|
17565
|
+
loading2.value = true;
|
|
17566
|
+
try {
|
|
17567
|
+
const result = await getTenants(apiBaseUrl, tenantId);
|
|
17568
|
+
const tenantMap = {};
|
|
17569
|
+
result.forEach((item) => {
|
|
17570
|
+
if (item.id && item.name) {
|
|
17571
|
+
tenantMap[item.id] = item.name;
|
|
17572
|
+
}
|
|
17573
|
+
});
|
|
17574
|
+
tenants.value = tenantMap;
|
|
17575
|
+
} catch (error2) {
|
|
17576
|
+
console.error("获取租户数据失败:", error2);
|
|
17577
|
+
} finally {
|
|
17578
|
+
loading2.value = false;
|
|
17579
|
+
}
|
|
17580
|
+
};
|
|
17581
|
+
onBeforeMount(() => {
|
|
17582
|
+
fetchTenants();
|
|
17583
|
+
});
|
|
17584
|
+
return {
|
|
17585
|
+
tenants,
|
|
17586
|
+
loading: loading2,
|
|
17587
|
+
fetchTenants
|
|
17588
|
+
};
|
|
17589
|
+
};
|
|
17590
17590
|
var Sortable$2 = { exports: {} };
|
|
17591
17591
|
/**!
|
|
17592
17592
|
* Sortable 1.15.6
|
|
@@ -21513,6 +21513,9 @@ ${$(r2)}`), n2;
|
|
|
21513
21513
|
},
|
|
21514
21514
|
emits: ["update:modelValue", "change"],
|
|
21515
21515
|
setup(__props, { emit: __emit }) {
|
|
21516
|
+
__webpack_exports__provideGlobalConfig({
|
|
21517
|
+
prefix: "bk-user-selector"
|
|
21518
|
+
});
|
|
21516
21519
|
const props2 = __props;
|
|
21517
21520
|
const emit2 = __emit;
|
|
21518
21521
|
const { tenants = {} } = useTenantData(props2.apiBaseUrl, props2.tenantId);
|
|
@@ -21636,7 +21639,7 @@ ${$(r2)}`), n2;
|
|
|
21636
21639
|
};
|
|
21637
21640
|
}
|
|
21638
21641
|
});
|
|
21639
|
-
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
21642
|
+
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6f6d9f42"]]);
|
|
21640
21643
|
const vue2 = {
|
|
21641
21644
|
model: {
|
|
21642
21645
|
prop: "modelValue",
|