@blueking/bk-user-selector 0.0.38 → 0.0.39-beta.2
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/README.md +7 -6
- package/package.json +1 -1
- package/typings/api/user.d.ts +8 -8
- package/typings/components/multiple-selector.vue.d.ts +5 -4
- package/typings/components/selection-popover.vue.d.ts +3 -3
- package/typings/components/single-selector.vue.d.ts +3 -3
- package/typings/components/user-selector.vue.d.ts +5 -4
- package/typings/components/user-tag.vue.d.ts +20 -20
- package/typings/hooks/use-jsonp.d.ts +5 -5
- package/typings/hooks/useUserSearch.d.ts +1 -1
- package/typings/types/index.d.ts +107 -99
- package/typings/utils/common.d.ts +1 -1
- package/vue2/index.es.min.js +123 -209
- package/vue2/index.iife.min.js +123 -209
- package/vue2/index.umd.min.js +123 -209
- package/vue2/vue2.css +41 -41
- package/vue3/index.es.min.js +118 -63
- package/vue3/index.iife.min.js +123 -209
- package/vue3/index.umd.min.js +119 -64
- package/vue3/vue3.css +41 -41
package/vue3/index.umd.min.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
})(this, function(exports2, vue, bkuiVue) {
|
|
4
4
|
"use strict";
|
|
5
5
|
var __vite_style__ = document.createElement("style");
|
|
6
|
-
__vite_style__.textContent = ".me-tag[data-v-
|
|
6
|
+
__vite_style__.textContent = ".me-tag[data-v-ef4a05c4] {\n position: absolute;\n top: 50%;\n right: 8px;\n z-index: 1;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n padding: 0 8px;\n font-size: 12px;\n color: #4d4f56;\n white-space: nowrap;\n cursor: pointer;\n background-color: #e1ecff;\n border-radius: 50%;\n transform: translateY(-50%);\n}\n.me-tag[data-v-ef4a05c4]:hover {\n color: #3a84ff;\n background-color: #cddffe;\n}\n.me-tag.disabled[data-v-ef4a05c4] {\n color: #c4c6cc;\n cursor: not-allowed;\n background-color: #f0f1f5;\n}.dropdown-content[data-v-78875ea6] {\n min-height: 40px;\n max-height: 300px;\n padding: 5px 0;\n overflow-y: auto;\n}\n.dropdown-content .no-data[data-v-78875ea6] {\n padding: 10px;\n color: #979ba5;\n text-align: center;\n}\n.dropdown-content .user-group .group-header[data-v-78875ea6] {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n color: #979ba5;\n}\n.dropdown-content .user-group .group-header .group-count[data-v-78875ea6] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-78875ea6] {\n display: flex;\n align-items: center;\n height: 32px;\n padding: 8px 12px;\n cursor: pointer;\n}\n.dropdown-content .user-option[data-v-78875ea6]:hover {\n background-color: #f5f7fa;\n}.user-tag[data-v-48ac8fc1] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-48ac8fc1] {\n cursor: move;\n}\n.user-tag.active[data-v-48ac8fc1] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag.is-custom[data-v-48ac8fc1] {\n color: #ea3636;\n background-color: #feebea;\n border-color: rgba(234, 53, 54, 0.3019607843);\n}\n.user-tag.is-custom[data-v-48ac8fc1]:hover {\n background-color: #fedddc;\n}\n.user-tag .tag-content .user-name[data-v-48ac8fc1] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n white-space: nowrap;\n}.multiple-selector[data-v-2a532f24] {\n position: relative;\n width: 100%;\n}\n.multiple-selector.is-disabled[data-v-2a532f24] {\n pointer-events: none;\n}\n.multiple-selector .tags-container[data-v-2a532f24] {\n min-height: 32px;\n padding: 1px 10px 1px 8px;\n background-color: #fff;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n transition: all 0.2s ease;\n}\n.multiple-selector .tags-container.focused[data-v-2a532f24] {\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-2a532f24] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-2a532f24] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-2a532f24] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-2a532f24] {\n min-width: 10px;\n height: 28px;\n outline: none;\n background: transparent;\n border: none;\n}\n.multiple-selector .search-input[data-v-2a532f24]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-2a532f24] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-2a532f24], .multiple-selector .search-input.collapsed[data-v-2a532f24] {\n flex: 1;\n}\n.hidden-users[data-v-2a532f24] {\n padding: 6px 10px;\n}.single-selector[data-v-cbe352a6] {\n position: relative;\n width: 100%;\n}\n.single-selector.is-disabled[data-v-cbe352a6] {\n pointer-events: none;\n}\n.input-container[data-v-cbe352a6] {\n position: relative;\n display: flex;\n align-items: center;\n min-height: 32px;\n padding: 0 8px;\n background-color: #fff;\n border: 1px solid #c4c6cc;\n border-radius: 2px;\n}\n.input-container[data-v-cbe352a6]: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-cbe352a6] {\n flex: 1;\n height: 30px;\n outline: none;\n background: transparent;\n border: none;\n}\n.search-input[data-v-cbe352a6]::placeholder {\n color: #c4c6cc;\n}.bk-user-selector[data-v-f29cda5a] {\n position: relative;\n width: 100%;\n font-size: 12px;\n}\n.bk-user-selector.is-disabled[data-v-f29cda5a] {\n cursor: not-allowed;\n background-color: #dcdee5;\n}.bk-user-selector-popover.bk-user-selector-pop2-content {\n padding: 0;\n}";
|
|
7
7
|
document.head.appendChild(__vite_style__);
|
|
8
8
|
const generateCallbackName = () => {
|
|
9
9
|
const timestamp = Date.now();
|
|
@@ -13,15 +13,11 @@
|
|
|
13
13
|
const jsonpRequest = (requestUrl, options = {}) => {
|
|
14
14
|
return new Promise((resolve, reject) => {
|
|
15
15
|
const url = vue.unref(requestUrl);
|
|
16
|
-
const { timeout = 1e3 * 60 * 2, params
|
|
16
|
+
const { timeout = 1e3 * 60 * 2, params } = options;
|
|
17
17
|
const callbackName = generateCallbackName();
|
|
18
18
|
const script = document.createElement("script");
|
|
19
|
-
let timeoutId;
|
|
20
|
-
|
|
21
|
-
script.crossOrigin = "use-credentials";
|
|
22
|
-
} else {
|
|
23
|
-
script.crossOrigin = "anonymous";
|
|
24
|
-
}
|
|
19
|
+
let timeoutId = null;
|
|
20
|
+
script.setAttribute("type", "text/javascript");
|
|
25
21
|
const cleanup = () => {
|
|
26
22
|
if (timeoutId) {
|
|
27
23
|
clearTimeout(timeoutId);
|
|
@@ -3267,7 +3263,7 @@
|
|
|
3267
3263
|
}
|
|
3268
3264
|
return target;
|
|
3269
3265
|
};
|
|
3270
|
-
const MeTag = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-
|
|
3266
|
+
const MeTag = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-ef4a05c4"]]);
|
|
3271
3267
|
const UserRender = vue.defineComponent({
|
|
3272
3268
|
name: "UserRender",
|
|
3273
3269
|
props: {
|
|
@@ -3442,22 +3438,22 @@
|
|
|
3442
3438
|
};
|
|
3443
3439
|
return (_ctx, _cache) => {
|
|
3444
3440
|
return vue.openBlock(), vue.createBlock(vue.unref(bkuiVue.Popover), {
|
|
3445
|
-
"ext-cls": "bk-user-selector-popover",
|
|
3446
3441
|
arrow: false,
|
|
3442
|
+
"ext-cls": "bk-user-selector-popover",
|
|
3447
3443
|
"is-show": __props.isShow,
|
|
3448
3444
|
offset: { mainAxis: 4, crossAxis: __props.crossAxisOffset },
|
|
3449
|
-
width: __props.containerWidth,
|
|
3450
3445
|
placement: "bottom-start",
|
|
3451
3446
|
theme: "light",
|
|
3452
3447
|
trigger: "manual",
|
|
3448
|
+
width: __props.containerWidth,
|
|
3453
3449
|
onClickoutside: handleClickOutside
|
|
3454
3450
|
}, {
|
|
3455
3451
|
content: vue.withCtx(() => [
|
|
3456
3452
|
vue.createVNode(vue.unref(bkuiVue.Loading), {
|
|
3457
3453
|
class: "dropdown-content",
|
|
3458
3454
|
loading: __props.loading,
|
|
3459
|
-
|
|
3460
|
-
|
|
3455
|
+
mode: "spin",
|
|
3456
|
+
size: "mini"
|
|
3461
3457
|
}, {
|
|
3462
3458
|
default: vue.withCtx(() => [
|
|
3463
3459
|
__props.options.length === 0 && __props.userGroup.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
|
|
@@ -3473,8 +3469,8 @@
|
|
|
3473
3469
|
{ key: 1 },
|
|
3474
3470
|
vue.renderList(groupedUsers.value, (group, groupName) => {
|
|
3475
3471
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
3476
|
-
|
|
3477
|
-
|
|
3472
|
+
key: groupName,
|
|
3473
|
+
class: "user-group"
|
|
3478
3474
|
}, [
|
|
3479
3475
|
Object.keys(groupedUsers.value).length > 1 || group.some((user) => user.type === "userGroup") ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
3480
3476
|
key: 0,
|
|
@@ -3502,8 +3498,8 @@
|
|
|
3502
3498
|
null,
|
|
3503
3499
|
vue.renderList(group, (user) => {
|
|
3504
3500
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
3505
|
-
class: "user-option",
|
|
3506
3501
|
key: user.id,
|
|
3502
|
+
class: "user-option",
|
|
3507
3503
|
onClick: vue.withModifiers(($event) => selectUser(user), ["prevent"])
|
|
3508
3504
|
}, [
|
|
3509
3505
|
vue.createVNode(vue.unref(UserRender), {
|
|
@@ -3536,20 +3532,20 @@
|
|
|
3536
3532
|
};
|
|
3537
3533
|
}
|
|
3538
3534
|
});
|
|
3539
|
-
const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-
|
|
3535
|
+
const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-78875ea6"]]);
|
|
3540
3536
|
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
3541
3537
|
...{
|
|
3542
3538
|
name: "UserTag"
|
|
3543
3539
|
},
|
|
3544
3540
|
__name: "user-tag",
|
|
3545
3541
|
props: {
|
|
3546
|
-
|
|
3547
|
-
tenants: {},
|
|
3542
|
+
active: { type: Boolean },
|
|
3548
3543
|
currentTenantId: {},
|
|
3549
3544
|
draggable: { type: Boolean },
|
|
3550
|
-
|
|
3545
|
+
renderTag: { type: Function },
|
|
3551
3546
|
showTenant: { type: Boolean },
|
|
3552
|
-
|
|
3547
|
+
tenants: {},
|
|
3548
|
+
user: {}
|
|
3553
3549
|
},
|
|
3554
3550
|
emits: ["click", "close"],
|
|
3555
3551
|
setup(__props, { emit: __emit }) {
|
|
@@ -3582,7 +3578,7 @@
|
|
|
3582
3578
|
};
|
|
3583
3579
|
}
|
|
3584
3580
|
});
|
|
3585
|
-
const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-
|
|
3581
|
+
const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-48ac8fc1"]]);
|
|
3586
3582
|
const _hoisted_1$1 = ["onClick"];
|
|
3587
3583
|
const _hoisted_2$1 = ["placeholder"];
|
|
3588
3584
|
const _hoisted_3 = { class: "hidden-users" };
|
|
@@ -3593,24 +3589,25 @@
|
|
|
3593
3589
|
},
|
|
3594
3590
|
__name: "multiple-selector",
|
|
3595
3591
|
props: {
|
|
3596
|
-
modelValue: { default: () => [] },
|
|
3597
3592
|
draggable: { type: Boolean, default: false },
|
|
3593
|
+
freePaste: { type: Boolean, default: false },
|
|
3594
|
+
modelValue: { default: () => [] },
|
|
3598
3595
|
selectedUsers: { default: () => [] },
|
|
3599
3596
|
tenants: { default: () => ({}) },
|
|
3597
|
+
allowCreate: { type: Boolean, default: false },
|
|
3600
3598
|
apiBaseUrl: { default: "" },
|
|
3601
|
-
tenantId: { default: "" },
|
|
3602
|
-
placeholder: { default: "" },
|
|
3603
3599
|
currentUserId: { default: "" },
|
|
3600
|
+
disabled: { type: Boolean },
|
|
3601
|
+
emptyText: { default: "" },
|
|
3602
|
+
enableMultiTenantMode: { type: Boolean },
|
|
3604
3603
|
exactSearchKey: { default: "bk_username" },
|
|
3605
|
-
|
|
3604
|
+
excludeUserIds: { default: () => [] },
|
|
3605
|
+
placeholder: { default: "" },
|
|
3606
|
+
tenantId: { default: "" },
|
|
3606
3607
|
userGroupName: { default: "" },
|
|
3607
|
-
emptyText: { default: "" },
|
|
3608
|
-
disabled: { type: Boolean },
|
|
3609
3608
|
renderListItem: {},
|
|
3610
3609
|
renderTag: {},
|
|
3611
|
-
|
|
3612
|
-
enableMultiTenantMode: { type: Boolean },
|
|
3613
|
-
allowCreate: { type: Boolean, default: false }
|
|
3610
|
+
userGroup: { default: () => [] }
|
|
3614
3611
|
},
|
|
3615
3612
|
emits: [
|
|
3616
3613
|
"update:selectedUsers",
|
|
@@ -3711,7 +3708,6 @@
|
|
|
3711
3708
|
});
|
|
3712
3709
|
};
|
|
3713
3710
|
const handleClickOutside = (event) => {
|
|
3714
|
-
event.stopPropagation();
|
|
3715
3711
|
const target = event.target;
|
|
3716
3712
|
const container = containerRef.value;
|
|
3717
3713
|
if ((container == null ? void 0 : container.contains(target)) || container === target) {
|
|
@@ -3813,7 +3809,37 @@
|
|
|
3813
3809
|
}
|
|
3814
3810
|
});
|
|
3815
3811
|
const updatedUsers = Array.from(userMap.values());
|
|
3816
|
-
|
|
3812
|
+
if (props.freePaste) {
|
|
3813
|
+
const pastedUsers = usersList.map((user) => ({
|
|
3814
|
+
id: user,
|
|
3815
|
+
name: user,
|
|
3816
|
+
type: "custom",
|
|
3817
|
+
tenantId: "",
|
|
3818
|
+
login_name: user
|
|
3819
|
+
}));
|
|
3820
|
+
pastedUsers.forEach((user) => {
|
|
3821
|
+
if (!updatedUsers.some((item) => item.login_name === user.login_name)) {
|
|
3822
|
+
addUser(user);
|
|
3823
|
+
}
|
|
3824
|
+
});
|
|
3825
|
+
} else {
|
|
3826
|
+
emit("update:selectedUsers", updatedUsers);
|
|
3827
|
+
}
|
|
3828
|
+
} else {
|
|
3829
|
+
if (props.freePaste) {
|
|
3830
|
+
const pastedUsers = usersList.map((user) => ({
|
|
3831
|
+
id: user,
|
|
3832
|
+
name: user,
|
|
3833
|
+
type: "custom",
|
|
3834
|
+
tenantId: "",
|
|
3835
|
+
login_name: user
|
|
3836
|
+
}));
|
|
3837
|
+
pastedUsers.forEach((user) => {
|
|
3838
|
+
if (!props.selectedUsers.some((item) => item.login_name === user.login_name)) {
|
|
3839
|
+
addUser(user);
|
|
3840
|
+
}
|
|
3841
|
+
});
|
|
3842
|
+
}
|
|
3817
3843
|
}
|
|
3818
3844
|
} catch (error) {
|
|
3819
3845
|
console.error("精准查找用户失败:", error);
|
|
@@ -3835,7 +3861,13 @@
|
|
|
3835
3861
|
removeUser(lastUser);
|
|
3836
3862
|
}
|
|
3837
3863
|
} else if (event.key === "Enter" && props.allowCreate) {
|
|
3838
|
-
addUser({
|
|
3864
|
+
addUser({
|
|
3865
|
+
id: searchQuery.value,
|
|
3866
|
+
name: searchQuery.value,
|
|
3867
|
+
type: "custom",
|
|
3868
|
+
tenantId: "",
|
|
3869
|
+
login_name: searchQuery.value
|
|
3870
|
+
});
|
|
3839
3871
|
}
|
|
3840
3872
|
};
|
|
3841
3873
|
const addUser = (user) => {
|
|
@@ -3959,8 +3991,8 @@
|
|
|
3959
3991
|
null,
|
|
3960
3992
|
vue.renderList(_ctx.selectedUsers, (user, index) => {
|
|
3961
3993
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
3962
|
-
class: "tag-wrapper",
|
|
3963
3994
|
key: user.id,
|
|
3995
|
+
class: "tag-wrapper",
|
|
3964
3996
|
onClick: vue.withModifiers(($event) => handleTagClick(index), ["stop"])
|
|
3965
3997
|
}, [
|
|
3966
3998
|
vue.createVNode(UserTag, {
|
|
@@ -3981,8 +4013,8 @@
|
|
|
3981
4013
|
ref_for: true,
|
|
3982
4014
|
ref_key: "inlineInputRef",
|
|
3983
4015
|
ref: inlineInputRef,
|
|
3984
|
-
class: "search-input inline",
|
|
3985
4016
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => vue.isRef(searchQuery) ? searchQuery.value = $event : null),
|
|
4017
|
+
class: "search-input inline",
|
|
3986
4018
|
onFocus: handleInputFocus,
|
|
3987
4019
|
onInput: handleInput,
|
|
3988
4020
|
onKeydown: handleKeyDown,
|
|
@@ -4004,8 +4036,8 @@
|
|
|
4004
4036
|
key: 0,
|
|
4005
4037
|
ref_key: "lastInputRef",
|
|
4006
4038
|
ref: lastInputRef,
|
|
4007
|
-
class: "search-input last",
|
|
4008
4039
|
"onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => vue.isRef(searchQuery) ? searchQuery.value = $event : null),
|
|
4040
|
+
class: "search-input last",
|
|
4009
4041
|
placeholder: !_ctx.selectedUsers.length ? _ctx.placeholder : "",
|
|
4010
4042
|
onFocus: handleInputFocus,
|
|
4011
4043
|
onInput: handleInput,
|
|
@@ -4046,8 +4078,8 @@
|
|
|
4046
4078
|
null,
|
|
4047
4079
|
vue.renderList(visibleUsers.value, (user) => {
|
|
4048
4080
|
return vue.openBlock(), vue.createBlock(UserTag, {
|
|
4049
|
-
"current-tenant-id": _ctx.tenantId,
|
|
4050
4081
|
key: user.id,
|
|
4082
|
+
"current-tenant-id": _ctx.tenantId,
|
|
4051
4083
|
"render-tag": _ctx.renderTag,
|
|
4052
4084
|
"show-tenant": true,
|
|
4053
4085
|
tenants: _ctx.tenants,
|
|
@@ -4102,8 +4134,8 @@
|
|
|
4102
4134
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
4103
4135
|
ref_key: "collapsedInputRef",
|
|
4104
4136
|
ref: collapsedInputRef,
|
|
4105
|
-
class: "search-input collapsed",
|
|
4106
4137
|
"onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.isRef(searchQuery) ? searchQuery.value = $event : null),
|
|
4138
|
+
class: "search-input collapsed",
|
|
4107
4139
|
placeholder: !_ctx.selectedUsers.length ? _ctx.placeholder : "",
|
|
4108
4140
|
onFocus: handleFocus
|
|
4109
4141
|
}, null, 40, _hoisted_4), [
|
|
@@ -4134,7 +4166,7 @@
|
|
|
4134
4166
|
};
|
|
4135
4167
|
}
|
|
4136
4168
|
});
|
|
4137
|
-
const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-
|
|
4169
|
+
const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-2a532f24"]]);
|
|
4138
4170
|
const _hoisted_1 = { class: "input-container" };
|
|
4139
4171
|
const _hoisted_2 = ["placeholder"];
|
|
4140
4172
|
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
@@ -4145,20 +4177,21 @@
|
|
|
4145
4177
|
props: {
|
|
4146
4178
|
modelValue: { default: "" },
|
|
4147
4179
|
tenants: {},
|
|
4180
|
+
allowCreate: { type: Boolean },
|
|
4148
4181
|
apiBaseUrl: { default: "" },
|
|
4149
|
-
tenantId: { default: "" },
|
|
4150
|
-
placeholder: { default: "" },
|
|
4151
4182
|
currentUserId: { default: "" },
|
|
4183
|
+
disabled: { type: Boolean },
|
|
4184
|
+
emptyText: { default: "" },
|
|
4185
|
+
enableMultiTenantMode: { type: Boolean },
|
|
4152
4186
|
exactSearchKey: { default: "bk_username" },
|
|
4153
|
-
|
|
4187
|
+
excludeUserIds: { default: () => [] },
|
|
4188
|
+
freePaste: { type: Boolean },
|
|
4189
|
+
placeholder: { default: "" },
|
|
4190
|
+
tenantId: { default: "" },
|
|
4154
4191
|
userGroupName: { default: "" },
|
|
4155
|
-
emptyText: { default: "" },
|
|
4156
|
-
disabled: { type: Boolean },
|
|
4157
4192
|
renderListItem: {},
|
|
4158
4193
|
renderTag: {},
|
|
4159
|
-
|
|
4160
|
-
enableMultiTenantMode: { type: Boolean },
|
|
4161
|
-
allowCreate: { type: Boolean }
|
|
4194
|
+
userGroup: { default: () => [] }
|
|
4162
4195
|
},
|
|
4163
4196
|
emits: ["update:modelValue", "change", "focus", "blur"],
|
|
4164
4197
|
setup(__props, { emit: __emit }) {
|
|
@@ -4256,6 +4289,7 @@
|
|
|
4256
4289
|
const fetchUsers = async (keyword = "") => {
|
|
4257
4290
|
if (!(keyword == null ? void 0 : keyword.length)) {
|
|
4258
4291
|
options.value = [];
|
|
4292
|
+
isLoading.value = false;
|
|
4259
4293
|
return;
|
|
4260
4294
|
}
|
|
4261
4295
|
isLoading.value = true;
|
|
@@ -4288,6 +4322,18 @@
|
|
|
4288
4322
|
}
|
|
4289
4323
|
}
|
|
4290
4324
|
};
|
|
4325
|
+
const handlePaste = (event) => {
|
|
4326
|
+
var _a;
|
|
4327
|
+
event.preventDefault();
|
|
4328
|
+
const pastedText = ((_a = event.clipboardData) == null ? void 0 : _a.getData("text").trim()) || "";
|
|
4329
|
+
if (props.freePaste) {
|
|
4330
|
+
const customUser = { id: pastedText, name: pastedText, type: "custom", tenantId: "", login_name: pastedText };
|
|
4331
|
+
if (!options.value.some((item) => item.login_name === customUser.login_name)) {
|
|
4332
|
+
options.value.push(customUser);
|
|
4333
|
+
}
|
|
4334
|
+
addUser(customUser);
|
|
4335
|
+
}
|
|
4336
|
+
};
|
|
4291
4337
|
const addUser = (user) => {
|
|
4292
4338
|
selectedUser.value = user.id;
|
|
4293
4339
|
searchQuery.value = "";
|
|
@@ -4303,9 +4349,14 @@
|
|
|
4303
4349
|
}
|
|
4304
4350
|
emit("focus");
|
|
4305
4351
|
};
|
|
4352
|
+
let timer = null;
|
|
4306
4353
|
const handleInput = () => {
|
|
4307
|
-
fetchUsers(searchQuery.value);
|
|
4308
4354
|
showDropdown.value = searchQuery.value.length >= 1;
|
|
4355
|
+
isLoading.value = true;
|
|
4356
|
+
clearTimeout(timer);
|
|
4357
|
+
timer = setTimeout(() => {
|
|
4358
|
+
fetchUsers(searchQuery.value);
|
|
4359
|
+
}, 300);
|
|
4309
4360
|
};
|
|
4310
4361
|
const handleClickOutside = () => {
|
|
4311
4362
|
setTimeout(() => {
|
|
@@ -4364,13 +4415,14 @@
|
|
|
4364
4415
|
vue.withDirectives(vue.createElementVNode("input", {
|
|
4365
4416
|
ref_key: "inputRef",
|
|
4366
4417
|
ref: inputRef,
|
|
4367
|
-
class: "search-input",
|
|
4368
4418
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchQuery.value = $event),
|
|
4419
|
+
class: "search-input",
|
|
4369
4420
|
placeholder: selectedUserInfo.value ? "" : _ctx.placeholder,
|
|
4370
4421
|
onBlur: _cache[1] || (_cache[1] = ($event) => emit("blur")),
|
|
4371
4422
|
onFocus: handleInputFocus,
|
|
4372
4423
|
onInput: handleInput,
|
|
4373
|
-
onKeydown: handleKeyDown
|
|
4424
|
+
onKeydown: handleKeyDown,
|
|
4425
|
+
onPaste: handlePaste
|
|
4374
4426
|
}, null, 40, _hoisted_2), [
|
|
4375
4427
|
[vue.vModelText, searchQuery.value]
|
|
4376
4428
|
]),
|
|
@@ -4394,30 +4446,31 @@
|
|
|
4394
4446
|
};
|
|
4395
4447
|
}
|
|
4396
4448
|
});
|
|
4397
|
-
const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-
|
|
4449
|
+
const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-cbe352a6"]]);
|
|
4398
4450
|
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
4399
4451
|
...{
|
|
4400
4452
|
name: "BkUserSelector"
|
|
4401
4453
|
},
|
|
4402
4454
|
__name: "user-selector",
|
|
4403
4455
|
props: {
|
|
4404
|
-
modelValue: { default: "" },
|
|
4405
4456
|
draggable: { type: Boolean, default: false },
|
|
4457
|
+
modelValue: { default: "" },
|
|
4406
4458
|
multiple: { type: Boolean, default: false },
|
|
4459
|
+
allowCreate: { type: Boolean, default: false },
|
|
4407
4460
|
apiBaseUrl: { default: "" },
|
|
4408
|
-
tenantId: { default: "" },
|
|
4409
|
-
placeholder: { default: "" },
|
|
4410
4461
|
currentUserId: { default: "" },
|
|
4462
|
+
disabled: { type: Boolean, default: false },
|
|
4463
|
+
emptyText: { default: "" },
|
|
4464
|
+
enableMultiTenantMode: { type: Boolean, default: true },
|
|
4411
4465
|
exactSearchKey: { default: "bk_username" },
|
|
4412
|
-
|
|
4466
|
+
excludeUserIds: { default: () => [] },
|
|
4467
|
+
freePaste: { type: Boolean, default: false },
|
|
4468
|
+
placeholder: { default: "" },
|
|
4469
|
+
tenantId: { default: "" },
|
|
4413
4470
|
userGroupName: { default: "" },
|
|
4414
|
-
emptyText: { default: "" },
|
|
4415
|
-
disabled: { type: Boolean, default: false },
|
|
4416
4471
|
renderListItem: {},
|
|
4417
4472
|
renderTag: {},
|
|
4418
|
-
|
|
4419
|
-
enableMultiTenantMode: { type: Boolean, default: true },
|
|
4420
|
-
allowCreate: { type: Boolean, default: false }
|
|
4473
|
+
userGroup: { default: () => [] }
|
|
4421
4474
|
},
|
|
4422
4475
|
emits: ["update:modelValue", "change", "dragStart", "dragEnd", "focus", "blur"],
|
|
4423
4476
|
setup(__props, { emit: __emit }) {
|
|
@@ -4540,10 +4593,11 @@
|
|
|
4540
4593
|
tenants: vue.unref(tenants),
|
|
4541
4594
|
"user-group": _ctx.userGroup,
|
|
4542
4595
|
"user-group-name": userGroupName.value,
|
|
4596
|
+
"free-paste": _ctx.freePaste,
|
|
4543
4597
|
onBlur: handleBlur,
|
|
4544
4598
|
onChange: handleUpdateUser,
|
|
4545
4599
|
onFocus: handleFocus
|
|
4546
|
-
}, null, 8, ["modelValue", "allow-create", "api-base-url", "current-user-id", "disabled", "empty-text", "enable-multi-tenant-mode", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "tenant-id", "tenants", "user-group", "user-group-name"])) : (vue.openBlock(), vue.createElementBlock(
|
|
4600
|
+
}, null, 8, ["modelValue", "allow-create", "api-base-url", "current-user-id", "disabled", "empty-text", "enable-multi-tenant-mode", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "tenant-id", "tenants", "user-group", "user-group-name", "free-paste"])) : (vue.openBlock(), vue.createElementBlock(
|
|
4547
4601
|
vue.Fragment,
|
|
4548
4602
|
{ key: 1 },
|
|
4549
4603
|
[
|
|
@@ -4568,12 +4622,13 @@
|
|
|
4568
4622
|
tenants: vue.unref(tenants),
|
|
4569
4623
|
"user-group": _ctx.userGroup,
|
|
4570
4624
|
"user-group-name": userGroupName.value,
|
|
4625
|
+
"free-paste": _ctx.freePaste,
|
|
4571
4626
|
onBlur: handleBlur,
|
|
4572
4627
|
onDragEnd: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("dragEnd", $event)),
|
|
4573
4628
|
onDragStart: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("dragStart", $event)),
|
|
4574
4629
|
onFocus: handleFocus,
|
|
4575
4630
|
"onUpdate:selectedUsers": handleUpdateSelectedUsers
|
|
4576
|
-
}, null, 8, ["modelValue", "allow-create", "api-base-url", "current-user-id", "disabled", "draggable", "empty-text", "enable-multi-tenant-mode", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "selected-users", "tenant-id", "tenants", "user-group", "user-group-name"])
|
|
4631
|
+
}, null, 8, ["modelValue", "allow-create", "api-base-url", "current-user-id", "disabled", "draggable", "empty-text", "enable-multi-tenant-mode", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "selected-users", "tenant-id", "tenants", "user-group", "user-group-name", "free-paste"])
|
|
4577
4632
|
],
|
|
4578
4633
|
2112
|
|
4579
4634
|
/* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
|
|
@@ -4585,7 +4640,7 @@
|
|
|
4585
4640
|
};
|
|
4586
4641
|
}
|
|
4587
4642
|
});
|
|
4588
|
-
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-
|
|
4643
|
+
const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-f29cda5a"]]);
|
|
4589
4644
|
exports2.BkUserSelector = BkUserSelector;
|
|
4590
4645
|
exports2.default = BkUserSelector;
|
|
4591
4646
|
Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
package/vue3/vue3.css
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
.me-tag[data-v-
|
|
1
|
+
.me-tag[data-v-ef4a05c4] {
|
|
2
2
|
position: absolute;
|
|
3
3
|
top: 50%;
|
|
4
4
|
right: 8px;
|
|
@@ -11,83 +11,81 @@
|
|
|
11
11
|
padding: 0 8px;
|
|
12
12
|
font-size: 12px;
|
|
13
13
|
color: #4d4f56;
|
|
14
|
+
white-space: nowrap;
|
|
14
15
|
cursor: pointer;
|
|
15
16
|
background-color: #e1ecff;
|
|
16
17
|
border-radius: 50%;
|
|
17
18
|
transform: translateY(-50%);
|
|
18
|
-
white-space: nowrap;
|
|
19
19
|
}
|
|
20
|
-
.me-tag[data-v-
|
|
20
|
+
.me-tag[data-v-ef4a05c4]:hover {
|
|
21
21
|
color: #3a84ff;
|
|
22
22
|
background-color: #cddffe;
|
|
23
23
|
}
|
|
24
|
-
.me-tag.disabled[data-v-
|
|
24
|
+
.me-tag.disabled[data-v-ef4a05c4] {
|
|
25
25
|
color: #c4c6cc;
|
|
26
26
|
cursor: not-allowed;
|
|
27
27
|
background-color: #f0f1f5;
|
|
28
|
-
}.dropdown-content[data-v-
|
|
28
|
+
}.dropdown-content[data-v-78875ea6] {
|
|
29
29
|
min-height: 40px;
|
|
30
30
|
max-height: 300px;
|
|
31
31
|
padding: 5px 0;
|
|
32
32
|
overflow-y: auto;
|
|
33
33
|
}
|
|
34
|
-
.dropdown-content .no-data[data-v-
|
|
34
|
+
.dropdown-content .no-data[data-v-78875ea6] {
|
|
35
35
|
padding: 10px;
|
|
36
36
|
color: #979ba5;
|
|
37
37
|
text-align: center;
|
|
38
38
|
}
|
|
39
|
-
.dropdown-content .user-group .group-header[data-v-
|
|
39
|
+
.dropdown-content .user-group .group-header[data-v-78875ea6] {
|
|
40
40
|
display: flex;
|
|
41
41
|
align-items: center;
|
|
42
42
|
padding: 8px 12px;
|
|
43
43
|
color: #979ba5;
|
|
44
44
|
}
|
|
45
|
-
.dropdown-content .user-group .group-header .group-count[data-v-
|
|
45
|
+
.dropdown-content .user-group .group-header .group-count[data-v-78875ea6] {
|
|
46
46
|
margin-left: 4px;
|
|
47
47
|
}
|
|
48
|
-
.dropdown-content .user-option[data-v-
|
|
48
|
+
.dropdown-content .user-option[data-v-78875ea6] {
|
|
49
49
|
display: flex;
|
|
50
50
|
align-items: center;
|
|
51
51
|
height: 32px;
|
|
52
52
|
padding: 8px 12px;
|
|
53
53
|
cursor: pointer;
|
|
54
54
|
}
|
|
55
|
-
.dropdown-content .user-option[data-v-
|
|
55
|
+
.dropdown-content .user-option[data-v-78875ea6]:hover {
|
|
56
56
|
background-color: #f5f7fa;
|
|
57
|
-
}.
|
|
58
|
-
padding: 0;
|
|
59
|
-
}.user-tag[data-v-3ff46050] {
|
|
57
|
+
}.user-tag[data-v-48ac8fc1] {
|
|
60
58
|
margin-right: 4px;
|
|
61
59
|
margin-left: 0;
|
|
62
60
|
}
|
|
63
|
-
.user-tag.draggable[data-v-
|
|
61
|
+
.user-tag.draggable[data-v-48ac8fc1] {
|
|
64
62
|
cursor: move;
|
|
65
63
|
}
|
|
66
|
-
.user-tag.active[data-v-
|
|
64
|
+
.user-tag.active[data-v-48ac8fc1] {
|
|
67
65
|
background-color: #e1ecff;
|
|
68
66
|
border-color: #3a84ff;
|
|
69
67
|
}
|
|
70
|
-
.user-tag.is-custom[data-v-
|
|
68
|
+
.user-tag.is-custom[data-v-48ac8fc1] {
|
|
71
69
|
color: #ea3636;
|
|
72
70
|
background-color: #feebea;
|
|
73
71
|
border-color: rgba(234, 53, 54, 0.3019607843);
|
|
74
72
|
}
|
|
75
|
-
.user-tag.is-custom[data-v-
|
|
73
|
+
.user-tag.is-custom[data-v-48ac8fc1]:hover {
|
|
76
74
|
background-color: #fedddc;
|
|
77
75
|
}
|
|
78
|
-
.user-tag .tag-content .user-name[data-v-
|
|
76
|
+
.user-tag .tag-content .user-name[data-v-48ac8fc1] {
|
|
79
77
|
overflow: hidden;
|
|
80
|
-
font-size: 12px;
|
|
81
78
|
text-overflow: ellipsis;
|
|
79
|
+
font-size: 12px;
|
|
82
80
|
white-space: nowrap;
|
|
83
|
-
}.multiple-selector[data-v-
|
|
81
|
+
}.multiple-selector[data-v-2a532f24] {
|
|
84
82
|
position: relative;
|
|
85
83
|
width: 100%;
|
|
86
84
|
}
|
|
87
|
-
.multiple-selector.is-disabled[data-v-
|
|
85
|
+
.multiple-selector.is-disabled[data-v-2a532f24] {
|
|
88
86
|
pointer-events: none;
|
|
89
87
|
}
|
|
90
|
-
.multiple-selector .tags-container[data-v-
|
|
88
|
+
.multiple-selector .tags-container[data-v-2a532f24] {
|
|
91
89
|
min-height: 32px;
|
|
92
90
|
padding: 1px 10px 1px 8px;
|
|
93
91
|
background-color: #fff;
|
|
@@ -95,51 +93,51 @@
|
|
|
95
93
|
border-radius: 2px;
|
|
96
94
|
transition: all 0.2s ease;
|
|
97
95
|
}
|
|
98
|
-
.multiple-selector .tags-container.focused[data-v-
|
|
96
|
+
.multiple-selector .tags-container.focused[data-v-2a532f24] {
|
|
99
97
|
border-color: #3a84ff;
|
|
100
98
|
box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
|
|
101
99
|
}
|
|
102
|
-
.multiple-selector .tags-container.collapsed[data-v-
|
|
100
|
+
.multiple-selector .tags-container.collapsed[data-v-2a532f24] {
|
|
103
101
|
display: flex;
|
|
104
102
|
flex-wrap: wrap;
|
|
105
103
|
align-items: center;
|
|
106
104
|
}
|
|
107
|
-
.multiple-selector .tag-list[data-v-
|
|
105
|
+
.multiple-selector .tag-list[data-v-2a532f24] {
|
|
108
106
|
display: flex;
|
|
109
107
|
flex-wrap: wrap;
|
|
110
108
|
align-items: center;
|
|
111
109
|
}
|
|
112
|
-
.multiple-selector .tag-wrapper[data-v-
|
|
110
|
+
.multiple-selector .tag-wrapper[data-v-2a532f24] {
|
|
113
111
|
display: inline-flex;
|
|
114
112
|
align-items: center;
|
|
115
113
|
max-width: 100%;
|
|
116
114
|
}
|
|
117
|
-
.multiple-selector .search-input[data-v-
|
|
115
|
+
.multiple-selector .search-input[data-v-2a532f24] {
|
|
118
116
|
min-width: 10px;
|
|
119
117
|
height: 28px;
|
|
118
|
+
outline: none;
|
|
120
119
|
background: transparent;
|
|
121
120
|
border: none;
|
|
122
|
-
outline: none;
|
|
123
121
|
}
|
|
124
|
-
.multiple-selector .search-input[data-v-
|
|
122
|
+
.multiple-selector .search-input[data-v-2a532f24]::placeholder {
|
|
125
123
|
color: #c4c6cc;
|
|
126
124
|
}
|
|
127
|
-
.multiple-selector .search-input.inline[data-v-
|
|
125
|
+
.multiple-selector .search-input.inline[data-v-2a532f24] {
|
|
128
126
|
min-width: 10px;
|
|
129
127
|
}
|
|
130
|
-
.multiple-selector .search-input.last[data-v-
|
|
128
|
+
.multiple-selector .search-input.last[data-v-2a532f24], .multiple-selector .search-input.collapsed[data-v-2a532f24] {
|
|
131
129
|
flex: 1;
|
|
132
130
|
}
|
|
133
|
-
.hidden-users[data-v-
|
|
131
|
+
.hidden-users[data-v-2a532f24] {
|
|
134
132
|
padding: 6px 10px;
|
|
135
|
-
}.single-selector[data-v-
|
|
133
|
+
}.single-selector[data-v-cbe352a6] {
|
|
136
134
|
position: relative;
|
|
137
135
|
width: 100%;
|
|
138
136
|
}
|
|
139
|
-
.single-selector.is-disabled[data-v-
|
|
137
|
+
.single-selector.is-disabled[data-v-cbe352a6] {
|
|
140
138
|
pointer-events: none;
|
|
141
139
|
}
|
|
142
|
-
.input-container[data-v-
|
|
140
|
+
.input-container[data-v-cbe352a6] {
|
|
143
141
|
position: relative;
|
|
144
142
|
display: flex;
|
|
145
143
|
align-items: center;
|
|
@@ -149,25 +147,27 @@
|
|
|
149
147
|
border: 1px solid #c4c6cc;
|
|
150
148
|
border-radius: 2px;
|
|
151
149
|
}
|
|
152
|
-
.input-container[data-v-
|
|
150
|
+
.input-container[data-v-cbe352a6]:focus-within {
|
|
153
151
|
border-color: #3a84ff;
|
|
154
152
|
box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
|
|
155
153
|
}
|
|
156
|
-
.search-input[data-v-
|
|
154
|
+
.search-input[data-v-cbe352a6] {
|
|
157
155
|
flex: 1;
|
|
158
156
|
height: 30px;
|
|
157
|
+
outline: none;
|
|
159
158
|
background: transparent;
|
|
160
159
|
border: none;
|
|
161
|
-
outline: none;
|
|
162
160
|
}
|
|
163
|
-
.search-input[data-v-
|
|
161
|
+
.search-input[data-v-cbe352a6]::placeholder {
|
|
164
162
|
color: #c4c6cc;
|
|
165
|
-
}.bk-user-selector[data-v-
|
|
163
|
+
}.bk-user-selector[data-v-f29cda5a] {
|
|
166
164
|
position: relative;
|
|
167
165
|
width: 100%;
|
|
168
166
|
font-size: 12px;
|
|
169
167
|
}
|
|
170
|
-
.bk-user-selector.is-disabled[data-v-
|
|
168
|
+
.bk-user-selector.is-disabled[data-v-f29cda5a] {
|
|
171
169
|
cursor: not-allowed;
|
|
172
170
|
background-color: #dcdee5;
|
|
171
|
+
}.bk-user-selector-popover.bk-user-selector-pop2-content {
|
|
172
|
+
padding: 0;
|
|
173
173
|
}
|