@blueking/bk-user-selector 0.0.18 → 0.0.20

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.
@@ -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-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-7bcec2be] {\n min-height: 40px;\n max-height: 300px;\n overflow-y: auto;\n padding: 5px 0;\n}\n.dropdown-content .no-data[data-v-7bcec2be] {\n padding: 10px;\n text-align: center;\n color: #979ba5;\n}\n.dropdown-content .user-group .group-header[data-v-7bcec2be] {\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-7bcec2be] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-7bcec2be] {\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-7bcec2be]:hover {\n background-color: #f5f7fa;\n}\n.dropdown-content .user-option .tenant-name[data-v-7bcec2be] {\n color: #f59500;\n margin-left: 4px;\n padding: 0 4px;\n}.bk-user-selector-popover.bk-popover.bk-pop2-content {\n padding: 0;\n}.user-tag[data-v-87c12feb] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-87c12feb] {\n cursor: move;\n}\n.user-tag.active[data-v-87c12feb] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag .tag-content .user-name[data-v-87c12feb] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n}\n.user-tag .tag-content .tenant-name[data-v-87c12feb] {\n color: #f59500;\n margin-left: 3px;\n white-space: nowrap;\n padding: 0 3px;\n border-radius: 2px;\n}.multiple-selector[data-v-1b988eae] {\n position: relative;\n width: 100%;\n}\n.multiple-selector .tags-container[data-v-1b988eae] {\n min-height: 32px;\n border: 1px solid #dcdee5;\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-1b988eae] {\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-1b988eae] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-1b988eae] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-1b988eae] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-1b988eae] {\n outline: none;\n border: none;\n height: 28px;\n min-width: 10px;\n background: transparent;\n}\n.multiple-selector .search-input[data-v-1b988eae]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-1b988eae] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-1b988eae], .multiple-selector .search-input.collapsed[data-v-1b988eae] {\n flex: 1;\n min-width: 60px;\n}.single-selector[data-v-5040d42f] {\n position: relative;\n width: 100%;\n}\n.input-container[data-v-5040d42f] {\n position: relative;\n display: flex;\n align-items: center;\n min-height: 32px;\n border: 1px solid #dcdee5;\n border-radius: 2px;\n padding: 0 8px;\n background-color: #fff;\n}\n.input-container[data-v-5040d42f]: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-5040d42f] {\n flex: 1;\n outline: none;\n border: none;\n height: 30px;\n background: transparent;\n}\n.search-input[data-v-5040d42f]::placeholder {\n color: #c4c6cc;\n}\n.selected-user[data-v-5040d42f] {\n display: inline-flex;\n align-items: center;\n background-color: #f0f1f5;\n border-radius: 2px;\n padding: 0 8px;\n margin-right: 8px;\n height: 24px;\n max-width: calc(100% - 32px);\n}\n.selected-user .tenant-name[data-v-5040d42f] {\n color: #f59500;\n margin-left: 4px;\n}\n.selected-user .close-icon[data-v-5040d42f] {\n margin-left: 4px;\n cursor: pointer;\n font-style: normal;\n}.bk-user-selector[data-v-c23f5bc9] {\n width: 100%;\n position: relative;\n font-size: 12px;\n}/*$vite$:1*/";
6
+ __vite_style__.textContent = ".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-a24bd074] {\n min-height: 40px;\n max-height: 300px;\n overflow-y: auto;\n padding: 5px 0;\n}\n.dropdown-content .no-data[data-v-a24bd074] {\n padding: 10px;\n text-align: center;\n color: #979ba5;\n}\n.dropdown-content .user-group .group-header[data-v-a24bd074] {\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-a24bd074] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-a24bd074] {\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-a24bd074]:hover {\n background-color: #f5f7fa;\n}\n.dropdown-content .user-option .tenant-name[data-v-a24bd074] {\n color: #f59500;\n margin-left: 4px;\n padding: 0 4px;\n}.bk-user-selector-popover.bk-popover.bk-pop2-content {\n padding: 0;\n}.user-tag[data-v-7099192b] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-7099192b] {\n cursor: move;\n}\n.user-tag.active[data-v-7099192b] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag .tag-content .user-name[data-v-7099192b] {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n}\n.user-tag .tag-content .tenant-name[data-v-7099192b] {\n color: #f59500;\n margin-left: 3px;\n white-space: nowrap;\n padding: 0 3px;\n border-radius: 2px;\n}.multiple-selector[data-v-5e95d86c] {\n position: relative;\n width: 100%;\n}\n.multiple-selector .tags-container[data-v-5e95d86c] {\n min-height: 32px;\n border: 1px solid #dcdee5;\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-5e95d86c] {\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-5e95d86c] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-5e95d86c] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-5e95d86c] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-5e95d86c] {\n outline: none;\n border: none;\n height: 28px;\n min-width: 10px;\n background: transparent;\n}\n.multiple-selector .search-input[data-v-5e95d86c]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-5e95d86c] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-5e95d86c], .multiple-selector .search-input.collapsed[data-v-5e95d86c] {\n flex: 1;\n min-width: 60px;\n}.single-selector[data-v-02021e20] {\n position: relative;\n width: 100%;\n}\n.input-container[data-v-02021e20] {\n position: relative;\n display: flex;\n align-items: center;\n min-height: 32px;\n border: 1px solid #dcdee5;\n border-radius: 2px;\n padding: 0 8px;\n background-color: #fff;\n}\n.input-container[data-v-02021e20]: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-02021e20] {\n flex: 1;\n outline: none;\n border: none;\n height: 30px;\n background: transparent;\n}\n.search-input[data-v-02021e20]::placeholder {\n color: #c4c6cc;\n}.bk-user-selector[data-v-c23f5bc9] {\n width: 100%;\n position: relative;\n font-size: 12px;\n}/*$vite$:1*/";
7
7
  document.head.appendChild(__vite_style__);
8
8
  const getTenants = async (apiBaseUrl, tenantId) => {
9
9
  if (!apiBaseUrl || !tenantId) {
@@ -3018,17 +3018,40 @@
3018
3018
  return target;
3019
3019
  };
3020
3020
  const MeTag = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-887b7c44"]]);
3021
+ const UserRender = vue.defineComponent({
3022
+ name: "UserRender",
3023
+ props: {
3024
+ render: {
3025
+ type: Function,
3026
+ required: true
3027
+ },
3028
+ user: {
3029
+ type: Object,
3030
+ required: true
3031
+ }
3032
+ },
3033
+ setup(props) {
3034
+ return () => {
3035
+ try {
3036
+ return props.render(vue.h, props.user);
3037
+ } catch (error) {
3038
+ console.error("Error rendering tag:", error);
3039
+ return vue.h("div", props.user.name);
3040
+ }
3041
+ };
3042
+ }
3043
+ });
3021
3044
  const _hoisted_1$4 = {
3022
3045
  key: 0,
3023
3046
  class: "no-data"
3024
3047
  };
3025
3048
  const _hoisted_2$3 = { class: "group-name" };
3026
- const _hoisted_3$3 = { class: "group-count" };
3049
+ const _hoisted_3$2 = { class: "group-count" };
3027
3050
  const _hoisted_4$1 = ["onMousedown"];
3028
3051
  const _hoisted_5 = { key: 0 };
3029
3052
  const _hoisted_6 = { key: 1 };
3030
3053
  const _hoisted_7 = {
3031
- key: 2,
3054
+ key: 0,
3032
3055
  class: "tenant-name"
3033
3056
  };
3034
3057
  const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
@@ -3106,6 +3129,12 @@
3106
3129
  emptyText: {
3107
3130
  type: String,
3108
3131
  default: "无匹配人员"
3132
+ },
3133
+ /**
3134
+ * 渲染列表项
3135
+ */
3136
+ renderListItem: {
3137
+ type: Function
3109
3138
  }
3110
3139
  },
3111
3140
  emits: ["select-user"],
@@ -3115,7 +3144,7 @@
3115
3144
  const groupedUsers = vue.computed(() => {
3116
3145
  const groups = {};
3117
3146
  if (Array.isArray(props.userGroup) && props.userGroup.length > 0) {
3118
- groups[props.userGroupName] = props.userGroup.filter((group) => !group.hidden).map((group) => ({
3147
+ groups[props.userGroupName] = props.userGroup.map((group) => ({
3119
3148
  ...group,
3120
3149
  tenantId: "",
3121
3150
  type: "userGroup"
@@ -3185,7 +3214,7 @@
3185
3214
  ),
3186
3215
  vue.createElementVNode(
3187
3216
  "span",
3188
- _hoisted_3$3,
3217
+ _hoisted_3$2,
3189
3218
  "(" + vue.toDisplayString(group.length) + ")",
3190
3219
  1
3191
3220
  /* TEXT */
@@ -3203,20 +3232,19 @@
3203
3232
  key: user.id,
3204
3233
  onMousedown: vue.withModifiers(($event) => selectUser(user), ["prevent"])
3205
3234
  }, [
3206
- vue.createElementVNode("div", null, [
3207
- user.login_name ? (vue.openBlock(), vue.createElementBlock(
3208
- "span",
3209
- _hoisted_5,
3210
- vue.toDisplayString(user.login_name) + "(" + vue.toDisplayString(user.name) + ")",
3211
- 1
3212
- /* TEXT */
3213
- )) : (vue.openBlock(), vue.createElementBlock(
3235
+ __props.renderListItem ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, [
3236
+ vue.createVNode(vue.unref(UserRender), {
3237
+ render: __props.renderListItem,
3238
+ user
3239
+ }, null, 8, ["render", "user"])
3240
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_6, [
3241
+ vue.createElementVNode(
3214
3242
  "span",
3215
- _hoisted_6,
3243
+ null,
3216
3244
  vue.toDisplayString(user.name),
3217
3245
  1
3218
3246
  /* TEXT */
3219
- )),
3247
+ ),
3220
3248
  user.tenantId !== __props.tenantId && user.tenantId && __props.tenants[user.tenantId] ? (vue.openBlock(), vue.createElementBlock(
3221
3249
  "span",
3222
3250
  _hoisted_7,
@@ -3224,7 +3252,7 @@
3224
3252
  1
3225
3253
  /* TEXT */
3226
3254
  )) : vue.createCommentVNode("v-if", true)
3227
- ])
3255
+ ]))
3228
3256
  ], 40, _hoisted_4$1);
3229
3257
  }),
3230
3258
  128
@@ -3246,10 +3274,14 @@
3246
3274
  };
3247
3275
  }
3248
3276
  });
3249
- const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-7bcec2be"]]);
3250
- const _hoisted_1$3 = { class: "tag-content" };
3251
- const _hoisted_2$2 = { class: "user-name" };
3252
- const _hoisted_3$2 = {
3277
+ const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-a24bd074"]]);
3278
+ const _hoisted_1$3 = { key: 0 };
3279
+ const _hoisted_2$2 = {
3280
+ key: 1,
3281
+ class: "tag-content"
3282
+ };
3283
+ const _hoisted_3$1 = { class: "user-name" };
3284
+ const _hoisted_4 = {
3253
3285
  key: 0,
3254
3286
  class: "tenant-name"
3255
3287
  };
@@ -3264,7 +3296,8 @@
3264
3296
  currentTenantId: {},
3265
3297
  draggable: { type: Boolean },
3266
3298
  active: { type: Boolean },
3267
- showTenant: { type: Boolean }
3299
+ showTenant: { type: Boolean },
3300
+ renderTag: { type: Function }
3268
3301
  },
3269
3302
  emits: ["click", "close"],
3270
3303
  setup(__props, { emit: __emit }) {
@@ -3283,22 +3316,27 @@
3283
3316
  onClose: handleClose
3284
3317
  }, {
3285
3318
  default: vue.withCtx(() => [
3286
- vue.createElementVNode("div", _hoisted_1$3, [
3319
+ _ctx.renderTag ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
3320
+ vue.createVNode(vue.unref(UserRender), {
3321
+ render: _ctx.renderTag,
3322
+ user: _ctx.user
3323
+ }, null, 8, ["render", "user"])
3324
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [
3287
3325
  vue.createElementVNode(
3288
3326
  "span",
3289
- _hoisted_2$2,
3327
+ _hoisted_3$1,
3290
3328
  vue.toDisplayString(_ctx.user.name),
3291
3329
  1
3292
3330
  /* TEXT */
3293
3331
  ),
3294
3332
  _ctx.user.tenantId !== _ctx.currentTenantId && _ctx.user.tenantId ? (vue.openBlock(), vue.createElementBlock(
3295
3333
  "span",
3296
- _hoisted_3$2,
3334
+ _hoisted_4,
3297
3335
  " @" + vue.toDisplayString(_ctx.tenants[_ctx.user.tenantId]),
3298
3336
  1
3299
3337
  /* TEXT */
3300
3338
  )) : vue.createCommentVNode("v-if", true)
3301
- ])
3339
+ ]))
3302
3340
  ]),
3303
3341
  _: 1
3304
3342
  /* STABLE */
@@ -3306,10 +3344,10 @@
3306
3344
  };
3307
3345
  }
3308
3346
  });
3309
- const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-87c12feb"]]);
3347
+ const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7099192b"]]);
3310
3348
  const _hoisted_1$2 = ["onClick"];
3311
3349
  const _hoisted_2$1 = ["placeholder"];
3312
- const _hoisted_3$1 = ["placeholder"];
3350
+ const _hoisted_3 = ["placeholder"];
3313
3351
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3314
3352
  ...{
3315
3353
  name: "BkUserSelectorMultiple"
@@ -3358,6 +3396,9 @@
3358
3396
  const options = vue.computed(() => {
3359
3397
  return searchResults.value.filter((user) => !props.selectedUsers.some((selectedUser) => selectedUser.id === user.id));
3360
3398
  });
3399
+ const userGroupFilter = vue.computed(() => {
3400
+ return props.userGroup.filter((group) => !props.selectedUsers.some((user) => user.id === group.id) && !group.hidden);
3401
+ });
3361
3402
  const initSortable = () => {
3362
3403
  if (!props.draggable || !sortableContainerRef.value) return;
3363
3404
  if (sortableInstance.value) {
@@ -3616,11 +3657,12 @@
3616
3657
  active: index === activeTagIndex.value,
3617
3658
  "current-tenant-id": _ctx.tenantId,
3618
3659
  draggable: _ctx.draggable,
3660
+ "render-tag": _ctx.renderTag,
3619
3661
  tenants: _ctx.tenants,
3620
3662
  user,
3621
3663
  onClick: ($event) => handleTagClick(index),
3622
3664
  onClose: ($event) => removeUser(user)
3623
- }, null, 8, ["active", "current-tenant-id", "draggable", "tenants", "user", "onClick", "onClose"]),
3665
+ }, null, 8, ["active", "current-tenant-id", "draggable", "render-tag", "tenants", "user", "onClick", "onClose"]),
3624
3666
  vue.createCommentVNode(" 在当前激活标签后插入输入框 "),
3625
3667
  index === activeTagIndex.value && activeTagIndex.value !== _ctx.selectedUsers.length - 1 ? vue.withDirectives((vue.openBlock(), vue.createElementBlock(
3626
3668
  "input",
@@ -3696,12 +3738,13 @@
3696
3738
  return vue.openBlock(), vue.createBlock(UserTag, {
3697
3739
  "current-tenant-id": _ctx.tenantId,
3698
3740
  key: user.id,
3741
+ "render-tag": _ctx.renderTag,
3699
3742
  "show-tenant": true,
3700
3743
  tenants: _ctx.tenants,
3701
3744
  user,
3702
3745
  onClick: handleFocus,
3703
3746
  onClose: ($event) => removeUser(user)
3704
- }, null, 8, ["current-tenant-id", "tenants", "user", "onClose"]);
3747
+ }, null, 8, ["current-tenant-id", "render-tag", "tenants", "user", "onClose"]);
3705
3748
  }),
3706
3749
  128
3707
3750
  /* KEYED_FRAGMENT */
@@ -3734,7 +3777,7 @@
3734
3777
  "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => vue.isRef(searchQuery) ? searchQuery.value = $event : null),
3735
3778
  placeholder: !_ctx.selectedUsers.length ? _ctx.placeholder : "",
3736
3779
  onFocus: handleFocus
3737
- }, null, 40, _hoisted_3$1), [
3780
+ }, null, 40, _hoisted_3), [
3738
3781
  [vue.vModelText, vue.unref(searchQuery)]
3739
3782
  ]),
3740
3783
  vue.createCommentVNode(' 未聚焦状态下的"我"标签 '),
@@ -3758,14 +3801,15 @@
3758
3801
  "is-show": showDropdown.value,
3759
3802
  loading: vue.unref(searchLoading),
3760
3803
  options: options.value,
3804
+ "render-list-item": _ctx.renderListItem,
3761
3805
  "search-query": vue.unref(searchQuery),
3762
3806
  "tenant-id": _ctx.tenantId,
3763
3807
  tenants: _ctx.tenants,
3764
- "user-group": _ctx.userGroup,
3808
+ "user-group": userGroupFilter.value,
3765
3809
  "user-group-name": _ctx.userGroupName,
3766
3810
  onClickoutside: handleClickOutside,
3767
3811
  onSelectUser: addUser
3768
- }, null, 8, ["container-width", "empty-text", "is-show", "loading", "options", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
3812
+ }, null, 8, ["container-width", "empty-text", "is-show", "loading", "options", "render-list-item", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
3769
3813
  ],
3770
3814
  512
3771
3815
  /* NEED_PATCH */
@@ -3773,21 +3817,9 @@
3773
3817
  };
3774
3818
  }
3775
3819
  });
3776
- const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-1b988eae"]]);
3777
- const _withScopeId = (n) => (vue.pushScopeId("data-v-5040d42f"), n = n(), vue.popScopeId(), n);
3820
+ const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-5e95d86c"]]);
3778
3821
  const _hoisted_1$1 = { class: "input-container" };
3779
- const _hoisted_2 = {
3780
- key: 0,
3781
- class: "tenant-name"
3782
- };
3783
- const _hoisted_3 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ vue.createElementVNode(
3784
- "i",
3785
- { class: "close-icon" },
3786
- "×",
3787
- -1
3788
- /* HOISTED */
3789
- ));
3790
- const _hoisted_4 = ["placeholder"];
3822
+ const _hoisted_2 = ["placeholder"];
3791
3823
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3792
3824
  ...{
3793
3825
  name: "BkUserSelectorSingle"
@@ -3818,6 +3850,9 @@
3818
3850
  const selectedUser = vue.ref(props.modelValue || "");
3819
3851
  const searchQuery = vue.ref("");
3820
3852
  const showDropdown = vue.ref(false);
3853
+ const userGroupFilter = vue.computed(() => {
3854
+ return props.userGroup.filter((group) => group.id !== selectedUser.value && !group.hidden);
3855
+ });
3821
3856
  const selectedUserInfo = vue.computed(() => {
3822
3857
  const userGroup = (props.userGroup || []).map((group) => ({
3823
3858
  ...group,
@@ -3916,24 +3951,14 @@
3916
3951
  vue.createCommentVNode(" 用户标签显示 "),
3917
3952
  selectedUserInfo.value ? (vue.openBlock(), vue.createElementBlock("div", {
3918
3953
  key: 0,
3919
- class: "selected-user",
3920
3954
  onClick: vue.withModifiers(removeSelectedUser, ["stop"])
3921
3955
  }, [
3922
- vue.createElementVNode(
3923
- "span",
3924
- null,
3925
- vue.toDisplayString(selectedUserInfo.value.name),
3926
- 1
3927
- /* TEXT */
3928
- ),
3929
- selectedUserInfo.value.tenantId !== _ctx.tenantId && selectedUserInfo.value.tenantId && _ctx.tenants[selectedUserInfo.value.tenantId] ? (vue.openBlock(), vue.createElementBlock(
3930
- "span",
3931
- _hoisted_2,
3932
- "@" + vue.toDisplayString(_ctx.tenants[selectedUserInfo.value.tenantId]),
3933
- 1
3934
- /* TEXT */
3935
- )) : vue.createCommentVNode("v-if", true),
3936
- _hoisted_3
3956
+ vue.createVNode(UserTag, {
3957
+ "render-tag": _ctx.renderTag,
3958
+ tenants: _ctx.tenants,
3959
+ user: selectedUserInfo.value,
3960
+ onClose: removeSelectedUser
3961
+ }, null, 8, ["render-tag", "tenants", "user"])
3937
3962
  ])) : vue.createCommentVNode("v-if", true),
3938
3963
  vue.withDirectives(vue.createElementVNode("input", {
3939
3964
  ref_key: "inputRef",
@@ -3943,7 +3968,7 @@
3943
3968
  placeholder: selectedUserInfo.value ? "" : _ctx.placeholder,
3944
3969
  onFocus: handleInputFocus,
3945
3970
  onInput: handleInput
3946
- }, null, 40, _hoisted_4), [
3971
+ }, null, 40, _hoisted_2), [
3947
3972
  [vue.vModelText, searchQuery.value]
3948
3973
  ]),
3949
3974
  vue.createCommentVNode(' "我"标签 '),
@@ -3960,20 +3985,21 @@
3960
3985
  "is-show": showDropdown.value,
3961
3986
  loading: isLoading.value,
3962
3987
  options: options.value,
3988
+ "render-list-item": _ctx.renderListItem,
3963
3989
  "search-query": searchQuery.value,
3964
3990
  "tenant-id": _ctx.tenantId,
3965
3991
  tenants: _ctx.tenants,
3966
- "user-group": _ctx.userGroup,
3992
+ "user-group": userGroupFilter.value,
3967
3993
  "user-group-name": _ctx.userGroupName,
3968
3994
  onSelectUser: addUser
3969
- }, null, 8, ["container-width", "empty-text", "is-show", "loading", "options", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
3995
+ }, null, 8, ["container-width", "empty-text", "is-show", "loading", "options", "render-list-item", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
3970
3996
  ])), [
3971
3997
  [vue.unref(bkuiVue.clickoutside), handleClickOutside]
3972
3998
  ]);
3973
3999
  };
3974
4000
  }
3975
4001
  });
3976
- const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-5040d42f"]]);
4002
+ const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-02021e20"]]);
3977
4003
  const _hoisted_1 = {
3978
4004
  ref: "containerRef",
3979
4005
  class: "bk-user-selector"
package/vue3/vue3.css CHANGED
@@ -24,70 +24,70 @@
24
24
  background-color: #f0f1f5;
25
25
  color: #c4c6cc;
26
26
  cursor: not-allowed;
27
- }.dropdown-content[data-v-7bcec2be] {
27
+ }.dropdown-content[data-v-a24bd074] {
28
28
  min-height: 40px;
29
29
  max-height: 300px;
30
30
  overflow-y: auto;
31
31
  padding: 5px 0;
32
32
  }
33
- .dropdown-content .no-data[data-v-7bcec2be] {
33
+ .dropdown-content .no-data[data-v-a24bd074] {
34
34
  padding: 10px;
35
35
  text-align: center;
36
36
  color: #979ba5;
37
37
  }
38
- .dropdown-content .user-group .group-header[data-v-7bcec2be] {
38
+ .dropdown-content .user-group .group-header[data-v-a24bd074] {
39
39
  padding: 8px 12px;
40
40
  color: #979ba5;
41
41
  display: flex;
42
42
  align-items: center;
43
43
  }
44
- .dropdown-content .user-group .group-header .group-count[data-v-7bcec2be] {
44
+ .dropdown-content .user-group .group-header .group-count[data-v-a24bd074] {
45
45
  margin-left: 4px;
46
46
  }
47
- .dropdown-content .user-option[data-v-7bcec2be] {
47
+ .dropdown-content .user-option[data-v-a24bd074] {
48
48
  padding: 8px 12px;
49
49
  cursor: pointer;
50
50
  display: flex;
51
51
  align-items: center;
52
52
  height: 32px;
53
53
  }
54
- .dropdown-content .user-option[data-v-7bcec2be]:hover {
54
+ .dropdown-content .user-option[data-v-a24bd074]:hover {
55
55
  background-color: #f5f7fa;
56
56
  }
57
- .dropdown-content .user-option .tenant-name[data-v-7bcec2be] {
57
+ .dropdown-content .user-option .tenant-name[data-v-a24bd074] {
58
58
  color: #f59500;
59
59
  margin-left: 4px;
60
60
  padding: 0 4px;
61
61
  }.bk-user-selector-popover.bk-popover.bk-pop2-content {
62
62
  padding: 0;
63
- }.user-tag[data-v-87c12feb] {
63
+ }.user-tag[data-v-7099192b] {
64
64
  margin-right: 4px;
65
65
  margin-left: 0;
66
66
  }
67
- .user-tag.draggable[data-v-87c12feb] {
67
+ .user-tag.draggable[data-v-7099192b] {
68
68
  cursor: move;
69
69
  }
70
- .user-tag.active[data-v-87c12feb] {
70
+ .user-tag.active[data-v-7099192b] {
71
71
  background-color: #e1ecff;
72
72
  border-color: #3a84ff;
73
73
  }
74
- .user-tag .tag-content .user-name[data-v-87c12feb] {
74
+ .user-tag .tag-content .user-name[data-v-7099192b] {
75
75
  white-space: nowrap;
76
76
  overflow: hidden;
77
77
  text-overflow: ellipsis;
78
78
  font-size: 12px;
79
79
  }
80
- .user-tag .tag-content .tenant-name[data-v-87c12feb] {
80
+ .user-tag .tag-content .tenant-name[data-v-7099192b] {
81
81
  color: #f59500;
82
82
  margin-left: 3px;
83
83
  white-space: nowrap;
84
84
  padding: 0 3px;
85
85
  border-radius: 2px;
86
- }.multiple-selector[data-v-1b988eae] {
86
+ }.multiple-selector[data-v-5e95d86c] {
87
87
  position: relative;
88
88
  width: 100%;
89
89
  }
90
- .multiple-selector .tags-container[data-v-1b988eae] {
90
+ .multiple-selector .tags-container[data-v-5e95d86c] {
91
91
  min-height: 32px;
92
92
  border: 1px solid #dcdee5;
93
93
  border-radius: 2px;
@@ -95,46 +95,46 @@
95
95
  transition: all 0.2s ease;
96
96
  background-color: #fff;
97
97
  }
98
- .multiple-selector .tags-container.focused[data-v-1b988eae] {
98
+ .multiple-selector .tags-container.focused[data-v-5e95d86c] {
99
99
  border-color: #3a84ff;
100
100
  box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
101
101
  }
102
- .multiple-selector .tags-container.collapsed[data-v-1b988eae] {
102
+ .multiple-selector .tags-container.collapsed[data-v-5e95d86c] {
103
103
  display: flex;
104
104
  flex-wrap: wrap;
105
105
  align-items: center;
106
106
  }
107
- .multiple-selector .tag-list[data-v-1b988eae] {
107
+ .multiple-selector .tag-list[data-v-5e95d86c] {
108
108
  display: flex;
109
109
  flex-wrap: wrap;
110
110
  align-items: center;
111
111
  }
112
- .multiple-selector .tag-wrapper[data-v-1b988eae] {
112
+ .multiple-selector .tag-wrapper[data-v-5e95d86c] {
113
113
  display: inline-flex;
114
114
  align-items: center;
115
115
  max-width: 100%;
116
116
  }
117
- .multiple-selector .search-input[data-v-1b988eae] {
117
+ .multiple-selector .search-input[data-v-5e95d86c] {
118
118
  outline: none;
119
119
  border: none;
120
120
  height: 28px;
121
121
  min-width: 10px;
122
122
  background: transparent;
123
123
  }
124
- .multiple-selector .search-input[data-v-1b988eae]::placeholder {
124
+ .multiple-selector .search-input[data-v-5e95d86c]::placeholder {
125
125
  color: #c4c6cc;
126
126
  }
127
- .multiple-selector .search-input.inline[data-v-1b988eae] {
127
+ .multiple-selector .search-input.inline[data-v-5e95d86c] {
128
128
  min-width: 10px;
129
129
  }
130
- .multiple-selector .search-input.last[data-v-1b988eae], .multiple-selector .search-input.collapsed[data-v-1b988eae] {
130
+ .multiple-selector .search-input.last[data-v-5e95d86c], .multiple-selector .search-input.collapsed[data-v-5e95d86c] {
131
131
  flex: 1;
132
132
  min-width: 60px;
133
- }.single-selector[data-v-5040d42f] {
133
+ }.single-selector[data-v-02021e20] {
134
134
  position: relative;
135
135
  width: 100%;
136
136
  }
137
- .input-container[data-v-5040d42f] {
137
+ .input-container[data-v-02021e20] {
138
138
  position: relative;
139
139
  display: flex;
140
140
  align-items: center;
@@ -144,38 +144,19 @@
144
144
  padding: 0 8px;
145
145
  background-color: #fff;
146
146
  }
147
- .input-container[data-v-5040d42f]:focus-within {
147
+ .input-container[data-v-02021e20]:focus-within {
148
148
  border-color: #3a84ff;
149
149
  box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
150
150
  }
151
- .search-input[data-v-5040d42f] {
151
+ .search-input[data-v-02021e20] {
152
152
  flex: 1;
153
153
  outline: none;
154
154
  border: none;
155
155
  height: 30px;
156
156
  background: transparent;
157
157
  }
158
- .search-input[data-v-5040d42f]::placeholder {
158
+ .search-input[data-v-02021e20]::placeholder {
159
159
  color: #c4c6cc;
160
- }
161
- .selected-user[data-v-5040d42f] {
162
- display: inline-flex;
163
- align-items: center;
164
- background-color: #f0f1f5;
165
- border-radius: 2px;
166
- padding: 0 8px;
167
- margin-right: 8px;
168
- height: 24px;
169
- max-width: calc(100% - 32px);
170
- }
171
- .selected-user .tenant-name[data-v-5040d42f] {
172
- color: #f59500;
173
- margin-left: 4px;
174
- }
175
- .selected-user .close-icon[data-v-5040d42f] {
176
- margin-left: 4px;
177
- cursor: pointer;
178
- font-style: normal;
179
160
  }.bk-user-selector[data-v-c23f5bc9] {
180
161
  width: 100%;
181
162
  position: relative;