@blueking/bk-user-selector 0.0.23 → 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.
@@ -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-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-d9743f6d] {\n position: relative;\n width: 100%;\n}\n.multiple-selector .tags-container[data-v-d9743f6d] {\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-d9743f6d] {\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-d9743f6d] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-list[data-v-d9743f6d] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.multiple-selector .tag-wrapper[data-v-d9743f6d] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.multiple-selector .search-input[data-v-d9743f6d] {\n outline: none;\n border: none;\n height: 28px;\n min-width: 10px;\n background: transparent;\n}\n.multiple-selector .search-input[data-v-d9743f6d]::placeholder {\n color: #c4c6cc;\n}\n.multiple-selector .search-input.inline[data-v-d9743f6d] {\n min-width: 10px;\n}\n.multiple-selector .search-input.last[data-v-d9743f6d], .multiple-selector .search-input.collapsed[data-v-d9743f6d] {\n flex: 1;\n min-width: 60px;\n}.single-selector[data-v-75a8e031] {\n position: relative;\n width: 100%;\n}\n.input-container[data-v-75a8e031] {\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-75a8e031]: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-75a8e031] {\n flex: 1;\n outline: none;\n border: none;\n height: 30px;\n background: transparent;\n}\n.search-input[data-v-75a8e031]::placeholder {\n color: #c4c6cc;\n}.bk-user-selector[data-v-53d8b462] {\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-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}/*$vite$:1*/";
7
7
  document.head.appendChild(__vite_style__);
8
8
  const getTenants = async (apiBaseUrl, tenantId) => {
9
9
  if (!apiBaseUrl || !tenantId) {
@@ -3356,7 +3356,8 @@
3356
3356
  userGroupName: { default: "用户群组" },
3357
3357
  emptyText: { default: "无匹配人员" },
3358
3358
  renderListItem: {},
3359
- renderTag: {}
3359
+ renderTag: {},
3360
+ excludeUserIds: { default: () => [] }
3360
3361
  },
3361
3362
  emits: ["update:selectedUsers", "add-user", "remove-user"],
3362
3363
  setup(__props, { emit: __emit }) {
@@ -3383,7 +3384,7 @@
3383
3384
  const visibleUsers = vue.ref([]);
3384
3385
  const hiddenCount = vue.ref(0);
3385
3386
  const options = vue.computed(() => {
3386
- return searchResults.value.filter((user) => !props.selectedUsers.some((selectedUser) => selectedUser.id === user.id));
3387
+ return searchResults.value.filter((user) => !props.selectedUsers.some((selectedUser) => selectedUser.id === user.id)).filter((user) => !props.excludeUserIds.includes(user.id));
3387
3388
  });
3388
3389
  const userGroupFilter = vue.computed(() => {
3389
3390
  return props.userGroup.filter((group) => !props.selectedUsers.some((user) => user.id === group.id) && !group.hidden);
@@ -3825,7 +3826,7 @@
3825
3826
  };
3826
3827
  }
3827
3828
  });
3828
- const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-d9743f6d"]]);
3829
+ const MultipleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-9fc5bebf"]]);
3829
3830
  const _hoisted_1$1 = { class: "input-container" };
3830
3831
  const _hoisted_2 = ["placeholder"];
3831
3832
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
@@ -3845,7 +3846,8 @@
3845
3846
  userGroupName: { default: "用户群组" },
3846
3847
  emptyText: { default: "无匹配人员" },
3847
3848
  renderListItem: {},
3848
- renderTag: {}
3849
+ renderTag: {},
3850
+ excludeUserIds: { default: () => [] }
3849
3851
  },
3850
3852
  emits: ["update:modelValue", "change"],
3851
3853
  setup(__props, { emit: __emit }) {
@@ -3879,7 +3881,7 @@
3879
3881
  const result = await lookupUsers(props.apiBaseUrl || "", props.tenantId || "", props.exactSearchKey, [
3880
3882
  props.modelValue
3881
3883
  ]);
3882
- options.value = formatUsers(result);
3884
+ options.value = formatUsers(result).filter((user) => !props.excludeUserIds.includes(user.id));
3883
3885
  if (props.userGroup.length > 0) {
3884
3886
  const groupResult = props.userGroup.filter((group) => group.id == props.modelValue);
3885
3887
  options.value = groupResult.map((group) => ({
@@ -3906,7 +3908,7 @@
3906
3908
  const result = await lookupUsers(props.apiBaseUrl, props.tenantId, props.exactSearchKey, [props.currentUserId]);
3907
3909
  const formattedResults = formatUsers(result);
3908
3910
  if (formattedResults.length > 0) {
3909
- options.value = formattedResults;
3911
+ options.value = formattedResults.filter((user) => !props.excludeUserIds.includes(user.id));
3910
3912
  addUser(formattedResults[0]);
3911
3913
  }
3912
3914
  } catch (error) {
@@ -3921,7 +3923,7 @@
3921
3923
  isLoading.value = true;
3922
3924
  try {
3923
3925
  const result = await searchUsers(props.apiBaseUrl, props.tenantId, keyword);
3924
- options.value = formatUsers(result).filter((user) => !selectedUser.value || user.id !== selectedUser.value);
3926
+ options.value = formatUsers(result).filter((user) => !selectedUser.value || user.id !== selectedUser.value).filter((user) => !props.excludeUserIds.includes(user.id));
3925
3927
  } catch (error) {
3926
3928
  console.error("获取用户列表失败:", error);
3927
3929
  options.value = [];
@@ -4019,7 +4021,7 @@
4019
4021
  };
4020
4022
  }
4021
4023
  });
4022
- const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-75a8e031"]]);
4024
+ const SingleSelector = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1454c121"]]);
4023
4025
  const _hoisted_1 = {
4024
4026
  ref: "containerRef",
4025
4027
  class: "bk-user-selector"
@@ -4042,10 +4044,14 @@
4042
4044
  userGroupName: { default: "用户群组" },
4043
4045
  emptyText: { default: "无匹配人员" },
4044
4046
  renderListItem: {},
4045
- renderTag: {}
4047
+ renderTag: {},
4048
+ excludeUserIds: { default: () => [] }
4046
4049
  },
4047
4050
  emits: ["update:modelValue", "change"],
4048
4051
  setup(__props, { emit: __emit }) {
4052
+ bkuiVue.provideGlobalConfig({
4053
+ prefix: "bk"
4054
+ });
4049
4055
  const props = __props;
4050
4056
  const emit = __emit;
4051
4057
  const { tenants = {} } = useTenantData(props.apiBaseUrl, props.tenantId);
@@ -4125,6 +4131,7 @@
4125
4131
  "current-user-id": _ctx.currentUserId,
4126
4132
  "empty-text": _ctx.emptyText,
4127
4133
  "exact-search-key": _ctx.exactSearchKey,
4134
+ "exclude-user-ids": _ctx.excludeUserIds,
4128
4135
  placeholder: _ctx.placeholder,
4129
4136
  "render-list-item": _ctx.renderListItem,
4130
4137
  "render-tag": _ctx.renderTag,
@@ -4133,7 +4140,7 @@
4133
4140
  "user-group": _ctx.userGroup,
4134
4141
  "user-group-name": _ctx.userGroupName,
4135
4142
  onChange: handleUpdateUser
4136
- }, null, 8, ["modelValue", "api-base-url", "current-user-id", "empty-text", "exact-search-key", "placeholder", "render-list-item", "render-tag", "tenant-id", "tenants", "user-group", "user-group-name"])) : (vue.openBlock(), vue.createElementBlock(
4143
+ }, null, 8, ["modelValue", "api-base-url", "current-user-id", "empty-text", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "tenant-id", "tenants", "user-group", "user-group-name"])) : (vue.openBlock(), vue.createElementBlock(
4137
4144
  vue.Fragment,
4138
4145
  { key: 1 },
4139
4146
  [
@@ -4146,6 +4153,7 @@
4146
4153
  draggable: _ctx.draggable,
4147
4154
  "empty-text": _ctx.emptyText,
4148
4155
  "exact-search-key": _ctx.exactSearchKey,
4156
+ "exclude-user-ids": _ctx.excludeUserIds,
4149
4157
  placeholder: _ctx.placeholder,
4150
4158
  "render-list-item": _ctx.renderListItem,
4151
4159
  "render-tag": _ctx.renderTag,
@@ -4155,7 +4163,7 @@
4155
4163
  "user-group": _ctx.userGroup,
4156
4164
  "user-group-name": _ctx.userGroupName,
4157
4165
  "onUpdate:selectedUsers": handleUpdateSelectedUsers
4158
- }, null, 8, ["modelValue", "api-base-url", "current-user-id", "draggable", "empty-text", "exact-search-key", "placeholder", "render-list-item", "render-tag", "selected-users", "tenant-id", "tenants", "user-group", "user-group-name"])
4166
+ }, null, 8, ["modelValue", "api-base-url", "current-user-id", "draggable", "empty-text", "exact-search-key", "exclude-user-ids", "placeholder", "render-list-item", "render-tag", "selected-users", "tenant-id", "tenants", "user-group", "user-group-name"])
4159
4167
  ],
4160
4168
  2112
4161
4169
  /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */
@@ -4167,7 +4175,7 @@
4167
4175
  };
4168
4176
  }
4169
4177
  });
4170
- const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-53d8b462"]]);
4178
+ const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6f6d9f42"]]);
4171
4179
  exports2.BkUserSelector = BkUserSelector;
4172
4180
  exports2.default = BkUserSelector;
4173
4181
  Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
package/vue3/vue3.css CHANGED
@@ -71,11 +71,11 @@
71
71
  overflow: hidden;
72
72
  text-overflow: ellipsis;
73
73
  font-size: 12px;
74
- }.multiple-selector[data-v-d9743f6d] {
74
+ }.multiple-selector[data-v-9fc5bebf] {
75
75
  position: relative;
76
76
  width: 100%;
77
77
  }
78
- .multiple-selector .tags-container[data-v-d9743f6d] {
78
+ .multiple-selector .tags-container[data-v-9fc5bebf] {
79
79
  min-height: 32px;
80
80
  border: 1px solid #c4c6cc;
81
81
  border-radius: 2px;
@@ -83,46 +83,46 @@
83
83
  transition: all 0.2s ease;
84
84
  background-color: #fff;
85
85
  }
86
- .multiple-selector .tags-container.focused[data-v-d9743f6d] {
86
+ .multiple-selector .tags-container.focused[data-v-9fc5bebf] {
87
87
  border-color: #3a84ff;
88
88
  box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
89
89
  }
90
- .multiple-selector .tags-container.collapsed[data-v-d9743f6d] {
90
+ .multiple-selector .tags-container.collapsed[data-v-9fc5bebf] {
91
91
  display: flex;
92
92
  flex-wrap: wrap;
93
93
  align-items: center;
94
94
  }
95
- .multiple-selector .tag-list[data-v-d9743f6d] {
95
+ .multiple-selector .tag-list[data-v-9fc5bebf] {
96
96
  display: flex;
97
97
  flex-wrap: wrap;
98
98
  align-items: center;
99
99
  }
100
- .multiple-selector .tag-wrapper[data-v-d9743f6d] {
100
+ .multiple-selector .tag-wrapper[data-v-9fc5bebf] {
101
101
  display: inline-flex;
102
102
  align-items: center;
103
103
  max-width: 100%;
104
104
  }
105
- .multiple-selector .search-input[data-v-d9743f6d] {
105
+ .multiple-selector .search-input[data-v-9fc5bebf] {
106
106
  outline: none;
107
107
  border: none;
108
108
  height: 28px;
109
109
  min-width: 10px;
110
110
  background: transparent;
111
111
  }
112
- .multiple-selector .search-input[data-v-d9743f6d]::placeholder {
112
+ .multiple-selector .search-input[data-v-9fc5bebf]::placeholder {
113
113
  color: #c4c6cc;
114
114
  }
115
- .multiple-selector .search-input.inline[data-v-d9743f6d] {
115
+ .multiple-selector .search-input.inline[data-v-9fc5bebf] {
116
116
  min-width: 10px;
117
117
  }
118
- .multiple-selector .search-input.last[data-v-d9743f6d], .multiple-selector .search-input.collapsed[data-v-d9743f6d] {
118
+ .multiple-selector .search-input.last[data-v-9fc5bebf], .multiple-selector .search-input.collapsed[data-v-9fc5bebf] {
119
119
  flex: 1;
120
120
  min-width: 60px;
121
- }.single-selector[data-v-75a8e031] {
121
+ }.single-selector[data-v-1454c121] {
122
122
  position: relative;
123
123
  width: 100%;
124
124
  }
125
- .input-container[data-v-75a8e031] {
125
+ .input-container[data-v-1454c121] {
126
126
  position: relative;
127
127
  display: flex;
128
128
  align-items: center;
@@ -132,20 +132,20 @@
132
132
  padding: 0 8px;
133
133
  background-color: #fff;
134
134
  }
135
- .input-container[data-v-75a8e031]:focus-within {
135
+ .input-container[data-v-1454c121]:focus-within {
136
136
  border-color: #3a84ff;
137
137
  box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
138
138
  }
139
- .search-input[data-v-75a8e031] {
139
+ .search-input[data-v-1454c121] {
140
140
  flex: 1;
141
141
  outline: none;
142
142
  border: none;
143
143
  height: 30px;
144
144
  background: transparent;
145
145
  }
146
- .search-input[data-v-75a8e031]::placeholder {
146
+ .search-input[data-v-1454c121]::placeholder {
147
147
  color: #c4c6cc;
148
- }.bk-user-selector[data-v-53d8b462] {
148
+ }.bk-user-selector[data-v-6f6d9f42] {
149
149
  width: 100%;
150
150
  position: relative;
151
151
  font-size: 12px;