@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blueking/bk-user-selector",
3
- "version": "0.0.24",
3
+ "version": "0.0.25",
4
4
  "description": "蓝鲸用户选择器",
5
5
  "license": "MIT",
6
6
  "author": "Tencent BlueKing",
@@ -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-906da21c"]]);
15585
+ const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6f6d9f42"]]);
15583
15586
  const vue2 = {
15584
15587
  model: {
15585
15588
  prop: "modelValue",
@@ -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-906da21c"]]);
21642
+ const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6f6d9f42"]]);
21640
21643
  const vue2 = {
21641
21644
  model: {
21642
21645
  prop: "modelValue",