@blueking/bk-user-selector 0.1.0 → 0.1.1-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.
@@ -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-4f251ce1] {\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-4f251ce1]:hover {\n color: #3a84ff;\n background-color: #cddffe;\n}\n.me-tag.disabled[data-v-4f251ce1] {\n color: #c4c6cc;\n cursor: not-allowed;\n background-color: #f0f1f5;\n}.dropdown-content[data-v-024fc663] {\n min-height: 40px;\n max-height: 300px;\n padding: 5px 0;\n overflow-y: auto;\n}\n.dropdown-content .no-data[data-v-024fc663] {\n padding: 10px;\n color: #979ba5;\n text-align: center;\n}\n.dropdown-content .user-group .group-header[data-v-024fc663] {\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-024fc663] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-024fc663] {\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-024fc663]: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}.bk-user-selector[data-v-65e61c1c] {\n position: relative;\n width: 100%;\n height: 32px;\n font-size: 12px;\n}\n.bk-user-selector.is-disabled[data-v-65e61c1c] {\n pointer-events: none;\n cursor: not-allowed;\n background-color: #dcdee5;\n}\n.bk-user-selector .tags-container[data-v-65e61c1c] {\n position: relative;\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.bk-user-selector .tags-container.focused[data-v-65e61c1c] {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.bk-user-selector .tags-container.tags-container-collapsed[data-v-65e61c1c] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.bk-user-selector .tag-list[data-v-65e61c1c] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.bk-user-selector .tag-wrapper[data-v-65e61c1c] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.bk-user-selector .search-input[data-v-65e61c1c] {\n min-width: 20px;\n height: 28px;\n outline: none;\n background: transparent;\n border: none;\n}\n.bk-user-selector .search-input[data-v-65e61c1c]::placeholder {\n color: #c4c6cc;\n}\n.bk-user-selector .search-input.input-inline[data-v-65e61c1c] {\n min-width: 20px;\n}\n.bk-user-selector .search-input.input-last[data-v-65e61c1c], .bk-user-selector .search-input.search-input-collapsed[data-v-65e61c1c] {\n flex: 1;\n}\n.hidden-users[data-v-65e61c1c] {\n padding: 6px 10px;\n}.bk-user-selector-popover {\n padding: 0 !important;\n}";
6
+ __vite_style__.textContent = ".me-tag[data-v-4f251ce1] {\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-4f251ce1]:hover {\n color: #3a84ff;\n background-color: #cddffe;\n}\n.me-tag.disabled[data-v-4f251ce1] {\n color: #c4c6cc;\n cursor: not-allowed;\n background-color: #f0f1f5;\n}.dropdown-content[data-v-d5a338f0] {\n min-height: 40px;\n max-height: 300px;\n padding: 5px 0;\n overflow-y: auto;\n}\n.dropdown-content .no-data[data-v-d5a338f0] {\n padding: 10px;\n color: #979ba5;\n text-align: center;\n}\n.dropdown-content .user-group .group-header[data-v-d5a338f0] {\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-d5a338f0] {\n margin-left: 4px;\n}\n.dropdown-content .user-option[data-v-d5a338f0] {\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-d5a338f0]:hover {\n background-color: #f5f7fa;\n}.user-tag[data-v-1f2e0737] {\n margin-right: 4px;\n margin-left: 0;\n}\n.user-tag.draggable[data-v-1f2e0737] {\n cursor: move;\n}\n.user-tag.active[data-v-1f2e0737] {\n background-color: #e1ecff;\n border-color: #3a84ff;\n}\n.user-tag.is-custom[data-v-1f2e0737] {\n color: #ea3636;\n background-color: #feebea;\n border-color: rgba(234, 53, 54, 0.3019607843);\n}\n.user-tag.is-custom[data-v-1f2e0737]:hover {\n background-color: #fedddc;\n}\n.user-tag .tag-content .user-name[data-v-1f2e0737] {\n overflow: hidden;\n text-overflow: ellipsis;\n font-size: 12px;\n white-space: nowrap;\n}.bk-user-selector[data-v-9975c7e1] {\n position: relative;\n width: 100%;\n height: 32px;\n font-size: 12px;\n}\n.bk-user-selector.is-disabled[data-v-9975c7e1] {\n pointer-events: none;\n cursor: not-allowed;\n background-color: #dcdee5;\n}\n.bk-user-selector .tags-container[data-v-9975c7e1] {\n position: relative;\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.bk-user-selector .tags-container.focused[data-v-9975c7e1] {\n border-color: #3a84ff;\n box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);\n}\n.bk-user-selector .tags-container.tags-container-collapsed[data-v-9975c7e1] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.bk-user-selector .tag-list[data-v-9975c7e1] {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n}\n.bk-user-selector .tag-wrapper[data-v-9975c7e1] {\n display: inline-flex;\n align-items: center;\n max-width: 100%;\n}\n.bk-user-selector .search-input[data-v-9975c7e1] {\n min-width: 20px;\n height: 28px;\n outline: none;\n background: transparent;\n border: none;\n}\n.bk-user-selector .search-input[data-v-9975c7e1]::placeholder {\n color: #c4c6cc;\n}\n.bk-user-selector .search-input.input-inline[data-v-9975c7e1] {\n min-width: 20px;\n}\n.bk-user-selector .search-input.input-last[data-v-9975c7e1], .bk-user-selector .search-input.search-input-collapsed[data-v-9975c7e1] {\n flex: 1;\n}\n.hidden-users[data-v-9975c7e1] {\n padding: 6px 10px;\n}.bk-user-selector-popover {\n padding: 0 !important;\n}";
7
7
  document.head.appendChild(__vite_style__);
8
8
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
9
9
  function getDefaultExportFromCjs(x) {
@@ -2913,7 +2913,7 @@
2913
2913
  };
2914
2914
  const lookupUsers = async (params) => {
2915
2915
  const { apiBaseUrl, tenantId, exactSearchKey = "bk_username", usersList = [], enableMultiTenantMode = true } = params;
2916
- const users = usersList.filter(Boolean).map((user) => user.trim());
2916
+ const users = usersList.filter(Boolean).map((user) => typeof user === "string" ? user.trim() : String(user).trim());
2917
2917
  if (!enableMultiTenantMode) {
2918
2918
  try {
2919
2919
  const userList = await getUserList(apiBaseUrl, { userIds: users });
@@ -2951,12 +2951,14 @@
2951
2951
  ...user,
2952
2952
  id: user.username,
2953
2953
  name: `${user.display_name}(${user.username})`,
2954
+ type: user.data_source_type,
2954
2955
  tenantId: user.owner_tenant_id
2955
2956
  }));
2956
2957
  }
2957
2958
  return users.map((user) => ({
2958
2959
  id: user.bk_username,
2959
2960
  name: user.display_name,
2961
+ type: user.data_source_type,
2960
2962
  tenantId: user.owner_tenant_id,
2961
2963
  ...user
2962
2964
  }));
@@ -3139,9 +3141,11 @@
3139
3141
  }
3140
3142
  if (variables) {
3141
3143
  target = target[pathStack[i]];
3142
- Object.keys(variables).forEach((key) => {
3143
- target = target.replace(`{${key}}`, variables[key]);
3144
- });
3144
+ if (typeof target === "string") {
3145
+ Object.keys(variables).forEach((key) => {
3146
+ target = target.replace(`{${key}}`, variables[key]);
3147
+ });
3148
+ }
3145
3149
  } else {
3146
3150
  target = target[pathStack[i]];
3147
3151
  }
@@ -3373,10 +3377,12 @@
3373
3377
  const performSearch = async (keyword) => {
3374
3378
  if (!(keyword == null ? void 0 : keyword.length)) {
3375
3379
  searchResults.value = [];
3380
+ loading.value = false;
3376
3381
  return;
3377
3382
  }
3378
3383
  if (enableMultiTenantMode && (!apiBaseUrl || !tenantId)) {
3379
3384
  console.warn("执行用户搜索需要提供有效的API基础URL和租户ID");
3385
+ loading.value = false;
3380
3386
  return;
3381
3387
  }
3382
3388
  loading.value = true;
@@ -3499,6 +3505,9 @@
3499
3505
  return target;
3500
3506
  };
3501
3507
  const MeTag = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-4f251ce1"]]);
3508
+ const UserGroupAvatar = "data:image/svg+xml,%3csvg%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20style='fill:%20%23A3C5FD;'%3e%3cpath%20fill-rule='evenodd'%20d='M405.7858816%20162.66256256C416.4461344%20160.6535248%20439.8986944%20159.44810208%20457.3815104%20160.25171712%20484.2453504%20161.05533248%20494.052784%20163.4661776%20516.226112%20174.7167888%20567.8217376%20200.43247136%20597.670448%20242.22045568%20606.6250624%20301.28616416%20617.711728%20374.415136%20593.4063488%20443.5260352%20535.8409792%20500.180896%20509.8299584%20525.8965792%20505.565856%20537.5489984%20514.0940608%20557.237568%20521.3430336%20572.9080608%20546.0748224%20586.5695168%20629.2248%20620.3213504%20691.054272%20645.2334208%20760.985536%20687.4232096%20767.8080992%20703.8973216%20774.6306624%20720.3714304%20784.8645056%20752.114224%20791.6870688%20777.4280992%20799.7888608%20807.1618592%20793.3927072%20818.8142784%20761.8383584%20832.4757344%20720.4765728%20850.155264%20669.3073536%20857.3878016%20546.9276416%20862.2094912%20392.9935776%20868.2366048%20227.12002944%20858.5932224%20162.30568672%20840.1100768%20134.5890272%20832.4757344%20108.15159776%20815.1980096%20100.47621504%20799.5275136%2093.6536528%20786.2678656%2094.08006304%20784.2588288%20105.59313696%20746.4889184%20116.67980096%20709.924432%20119.23826176%20705.5045504%20141.41158944%20685.4141728%20143.84821888%20683.2001312%20146.05397248%20681.2036448%20148.2232096%20679.3252416L152.13038144%20676.0501632C159.5946992%20670.0236288%20167.98497088%20664.6722176%20184.94031712%20656.0863296L191.29263904%20652.915344C215.97973152%20640.7492736%20256.51622304%20622.3959904%20329.458464%20589.3821696%20359.7335872%20575.3189056%20371.2466592%20563.6664896%20375.084352%20542.772496%20377.2164032%20530.316464%20374.6579424%20526.7001952%20345.2356416%20496.9664352%20295.34565344%20446.338688%20274.02514592%20396.9163584%20273.59873568%20331.0199232%20273.59873568%20291.24097568%20282.12693888%20265.52529312%20307.71154784%20228.15719168%20332.8697472%20191.19089792%20365.703328%20169.49329056%20405.7858816%20162.66256256ZM668.7713728%20226.60405184C756.683056%20211.50282816%20820.4190272%20263.09867616%20827.0124032%20354.9644544%20831.8475456%20416.6277856%20815.1443264%20461.931456%20770.3093664%20510.1714752%20752.287472%20529.4674848%20747.891888%20536.5986176%20748.3314464%20548.344016%20748.7710048%20555.8946272%20751.4083552%20565.123152%20754.485264%20568.8984576%20757.5621728%20572.2542848%20788.331264%20588.1944672%20823.0563776%20604.1346464%20944.3745024%20659.92528%20966.791984%20682.996592%20958.4403712%20744.6599232%20954.923904%20771.9260224%20956.6821376%20771.0870656%20890.308816%20787.0272448%20867.4517792%20792.8999456%20845.0343008%20798.3531648%20841.0782752%20799.6116%20835.3640128%20801.2895136%20833.1662208%20797.9336864%20830.5288704%20781.5740256%20824.3750528%20739.6261824%20812.0674176%20710.6821696%20790.0894976%20687.6108576%20752.287472%20647.3409248%20703.9360448%20619.6553504%20624.3759712%20593.6476864%20597.5629088%20584.4191616%20560.64%20550.8608864%20560.64%20534.920704%20560.64%20527.7895712%20569.8707264%20514.7857408%20589.6508544%20494.6507744%20620.859504%20461.931456%20639.7605152%20429.631616%20648.5516832%20394.8149056%20655.5846208%20366.7098496%20652.0681504%20283.23364096%20642.837424%20254.7091072%20635.3649312%20231.63779328%20634.4858144%20232.47675008%20668.7713728%20226.60405184Z'%3e%3c/path%3e%3c/svg%3e";
3509
+ const UserAvatar = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='32px'%20height='32px'%20viewBox='0%200%2032%2032'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eIcon/用户%3c/title%3e%3cg%20id='Icon/用户'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cg%20id='user-(1)'%20transform='translate(3,%202)'%20fill='%23A3C5FD'%20fill-rule='nonzero'%3e%3cpath%20d='M13.0077612,27.9989067%20C10.3002732,27.9989067%207.59285518,28.0018792%204.88515705,27.997455%20C3.95018807,27.9959342%203.05044678,27.8282323%202.22816433,27.3628696%20C0.998627601,26.6672451%200.29953695,25.6114692%200.0864200465,24.2387462%20C-0.0656962495,23.259079%200.0147040645,22.4675755%200.0874005263,21.4879775%20C0.187970957,20.13461%200.423078914,19.3321844%200.863249688,18.0430358%20C1.22365046,16.9873982%201.73014453,16.0067633%202.49702917,15.175719%20C3.42254341,14.1726178%204.6014447,13.7297906%205.9255989,13.6440041%20C6.33292322,13.6073668%206.66741099,13.712025%206.9979768,13.9263185%20C7.58886318,14.3094892%208.17393665,14.7060014%208.79220674,15.0421658%20C10.1097776,15.758321%2011.5447274,16.1099698%2013.0616182,16.0930337%20C14.6806203,16.0750607%2016.2142496,15.63963%2017.592821,14.8169502%20C18.0555431,14.5407189%2018.5150436,14.256538%2018.9569652,13.9491996%20C19.3610679,13.6681294%2019.7808585,13.5749462%2020.274326,13.6337733%20C21.462472,13.7340074%2022.3872158,14.1103345%2023.2340106,14.8851094%20C23.902636,15.496952%2024.3685096,16.2520257%2024.7518119,17.0611566%20C25.272453,18.1598604%2025.5462904,18.7976948%2025.7441396,19.9861253%20C25.9499728,21.2233595%2026.0256808,22.2792045%2025.9924842,23.5308171%20C25.9627193,24.6543374%2025.6405577,25.6840525%2024.8535729,26.5307194%20C24.1686994,27.2671979%2023.3129402,27.7090574%2022.3211027,27.8808379%20C21.9232331,27.9495501%2021.5154185,27.9922014%2021.1120162,27.9935148%20C18.4104811,28.0036073%2015.7090862,27.9989067%2013.0077612,27.9989067%20L13.0077612,27.9989067%20Z%20M5.91775495,6.98479749%20C5.84814002,3.25685016%209.08684454,-0.00255470186%2013.0162355,1.5025268e-06%20C16.9117994,0.00256071584%2020.1304739,3.23452217%2020.1095656,7.04113598%20C20.0884528,10.8082092%2016.8998935,14.015354%2013.0058002,14.0149393%20C9.10134181,14.0145245%205.83322254,10.7695672%205.91775495,6.98479749%20Z'%20id='形状'%3e%3c/path%3e%3c/g%3e%3c/g%3e%3c/svg%3e";
3510
+ const VirtualAvatar = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20width='32px'%20height='32px'%20viewBox='0%200%2032%2032'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%3e%3ctitle%3eIcon/虚拟icon%3c/title%3e%3cg%20id='Icon/虚拟icon'%20stroke='none'%20stroke-width='1'%20fill='none'%20fill-rule='evenodd'%3e%3cpath%20d='M27.4705882,3%20C28.315259,3%2029,3.68474098%2029,4.52941178%20L29,22.4623054%20C29,23.3069762%2028.315259,23.9917172%2027.4705882,23.9917172%20L20.5882353,23.9917172%20L20.5882353,27.0244081%20L24.0294118,27.0244081%20C24.2405794,27.0244081%2024.4117647,27.1955933%2024.4117647,27.406761%20L24.4117647,28.617647%20C24.4117647,28.8288148%2024.2405795,29%2024.0294118,29%20L7.97058824,29%20C7.75942054,29%207.58823529,28.8288148%207.58823529,28.617647%20L7.58823529,27.406761%20C7.58823531,27.1955933%207.75942055,27.0244081%207.97058824,27.0244081%20L11.4117647,27.0244081%20L11.4117647,23.9917172%20L4.52941178,23.9917172%20C3.68474098,23.9917172%203,23.3069762%203,22.4623054%20L3,4.52941178%20C3,3.68474098%203.68474098,3%204.52941178,3%20L27.4705882,3%20Z%20M19,24%20L13,24%20L13,27%20L19,27%20L19,24%20Z%20M23.4117647,7%20L8.58823529,7%20C8.03595054,7%207.58823529,7.44771525%207.58823529,8%20L7.58823529,19%20C7.58823529,19.5522847%208.03595054,20%208.58823529,20%20L23.4117647,20%20C23.9640495,20%2024.4117647,19.5522847%2024.4117647,19%20L24.4117647,8%20C24.4117647,7.44771525%2023.9640495,7%2023.4117647,7%20Z%20M12,10%20C12.5522847,10%2013,10.4477153%2013,11%20L13,13%20C13,13.5522847%2012.5522847,14%2012,14%20C11.4477153,14%2011,13.5522847%2011,13%20L11,11%20C11,10.4477153%2011.4477153,10%2012,10%20Z%20M20,10%20C20.5522847,10%2021,10.4477153%2021,11%20L21,13%20C21,13.5522847%2020.5522847,14%2020,14%20C19.4477153,14%2019,13.5522847%2019,13%20L19,11%20C19,10.4477153%2019.4477153,10%2020,10%20Z%20M26,5%20C25.4477153,5%2025,5.44771525%2025,6%20C25,6.55228475%2025.4477153,7%2026,7%20C26.5522847,7%2027,6.55228475%2027,6%20C27,5.44771525%2026.5522847,5%2026,5%20Z'%20id='蒙版'%20fill='%23A3C5FD'%20fill-rule='nonzero'%3e%3c/path%3e%3c/g%3e%3c/svg%3e";
3502
3511
  const UserRender = vue.defineComponent({
3503
3512
  name: "UserRender",
3504
3513
  props: {
@@ -3517,23 +3526,63 @@
3517
3526
  render: {
3518
3527
  type: Function,
3519
3528
  required: false
3529
+ },
3530
+ hasAvatar: {
3531
+ type: Boolean,
3532
+ default: false
3533
+ },
3534
+ avatarBaseUrl: {
3535
+ type: String,
3536
+ default: ""
3520
3537
  }
3521
3538
  },
3522
3539
  setup(props) {
3540
+ const getAvatarUrl = (user) => {
3541
+ if (user.type === "virtual") {
3542
+ return VirtualAvatar;
3543
+ }
3544
+ if (user.type === "userGroup") {
3545
+ return UserGroupAvatar;
3546
+ }
3547
+ if (!props.avatarBaseUrl) {
3548
+ return UserAvatar;
3549
+ }
3550
+ const loginName = user.login_name || user.bk_username || user.id;
3551
+ return `${props.avatarBaseUrl}${loginName}.png?default_when_absent=true`;
3552
+ };
3523
3553
  const defaultRender = (h2, props2) => {
3524
- return h2("div", [
3525
- h2("span", props2.user.name),
3526
- props2.user.tenantId !== props2.tenantId && props2.user.tenantId ? h2(
3527
- "span",
3528
- {
3554
+ return h2(
3555
+ "div",
3556
+ {
3557
+ style: {
3558
+ display: "flex",
3559
+ alignItems: "center"
3560
+ }
3561
+ },
3562
+ [
3563
+ props2.hasAvatar ? h2("img", {
3564
+ src: getAvatarUrl(props2.user),
3529
3565
  style: {
3530
- color: "#f59500",
3531
- marginLeft: "4px"
3566
+ width: "20px",
3567
+ height: "20px",
3568
+ borderRadius: "50%",
3569
+ marginRight: "6px",
3570
+ flexShrink: 0
3532
3571
  }
3533
- },
3534
- `@${props2.tenants[props2.user.tenantId] || props2.user.tenantId}`
3535
- ) : null
3536
- ]);
3572
+ }) : null,
3573
+ h2("span", props2.user.name),
3574
+ props2.user.tenantId !== props2.tenantId && props2.user.tenantId ? h2(
3575
+ "span",
3576
+ {
3577
+ style: {
3578
+ color: "#f59500",
3579
+ marginLeft: "4px"
3580
+ }
3581
+ },
3582
+ `@${props2.tenants[props2.user.tenantId] || props2.user.tenantId}`
3583
+ ) : null
3584
+ ]
3585
+ );
3537
3586
  };
3538
3587
  return () => {
3539
3588
  try {
@@ -3558,8 +3607,10 @@
3558
3607
  },
3559
3608
  __name: "selection-popover",
3560
3609
  props: {
3610
+ avatarBaseUrl: { default: "" },
3561
3611
  containerWidth: { default: "auto" },
3562
3612
  emptyText: { default: "" },
3613
+ hasAvatar: { type: Boolean, default: false },
3563
3614
  isShow: { type: Boolean, default: false },
3564
3615
  loading: { type: Boolean, default: false },
3565
3616
  options: { default: () => [] },
@@ -3685,11 +3736,13 @@
3685
3736
  }, ["prevent"]))
3686
3737
  }, [
3687
3738
  vue.createVNode(vue.unref(UserRender), {
3739
+ "avatar-base-url": _ctx.avatarBaseUrl,
3740
+ "has-avatar": _ctx.hasAvatar,
3688
3741
  render: _ctx.renderListItem,
3689
3742
  "tenant-id": _ctx.tenantId,
3690
3743
  tenants: _ctx.tenants,
3691
3744
  user
3692
- }, null, 8, ["render", "tenant-id", "tenants", "user"])
3745
+ }, null, 8, ["avatar-base-url", "has-avatar", "render", "tenant-id", "tenants", "user"])
3693
3746
  ], 40, _hoisted_4);
3694
3747
  }),
3695
3748
  128
@@ -3729,7 +3782,7 @@
3729
3782
  };
3730
3783
  }
3731
3784
  });
3732
- const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-024fc663"]]);
3785
+ const SelectionPopover = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["__scopeId", "data-v-d5a338f0"]]);
3733
3786
  const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3734
3787
  ...{
3735
3788
  name: "UserTag"
@@ -3737,8 +3790,10 @@
3737
3790
  __name: "user-tag",
3738
3791
  props: {
3739
3792
  active: { type: Boolean },
3793
+ avatarBaseUrl: {},
3740
3794
  currentTenantId: {},
3741
3795
  draggable: { type: Boolean },
3796
+ hasAvatar: { type: Boolean },
3742
3797
  renderTag: { type: Function },
3743
3798
  showTenant: { type: Boolean },
3744
3799
  tenants: {},
@@ -3763,11 +3818,13 @@
3763
3818
  }, {
3764
3819
  default: vue.withCtx(() => [
3765
3820
  vue.createVNode(vue.unref(UserRender), {
3821
+ "avatar-base-url": _ctx.avatarBaseUrl,
3822
+ "has-avatar": _ctx.hasAvatar,
3766
3823
  render: _ctx.renderTag,
3767
3824
  "tenant-id": _ctx.currentTenantId,
3768
3825
  tenants: _ctx.tenants,
3769
3826
  user: _ctx.user
3770
- }, null, 8, ["render", "tenant-id", "tenants", "user"])
3827
+ }, null, 8, ["avatar-base-url", "has-avatar", "render", "tenant-id", "tenants", "user"])
3771
3828
  ]),
3772
3829
  _: 1
3773
3830
  /* STABLE */
@@ -3775,7 +3832,7 @@
3775
3832
  };
3776
3833
  }
3777
3834
  });
3778
- const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-48ac8fc1"]]);
3835
+ const UserTag = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-1f2e0737"]]);
3779
3836
  const _hoisted_1 = ["placeholder"];
3780
3837
  const _hoisted_2 = { class: "hidden-users" };
3781
3838
  const _hoisted_3 = ["placeholder"];
@@ -3791,6 +3848,7 @@
3791
3848
  multiple: { type: Boolean, default: false },
3792
3849
  allowCreate: { type: Boolean, default: false },
3793
3850
  apiBaseUrl: { default: "" },
3851
+ avatarBaseUrl: { default: "" },
3794
3852
  currentUserId: { default: "" },
3795
3853
  disabled: { type: Boolean, default: false },
3796
3854
  emptyText: { default: "" },
@@ -3798,6 +3856,7 @@
3798
3856
  exactSearchKey: { default: DEFAULT_EXACT_SEARCH_KEY },
3799
3857
  excludeUserIds: { default: () => [] },
3800
3858
  freePaste: { type: Boolean, default: false },
3859
+ hasAvatar: { type: Boolean, default: false },
3801
3860
  placeholder: { default: "" },
3802
3861
  renderListItem: {},
3803
3862
  renderTag: {},
@@ -3860,7 +3919,9 @@
3860
3919
  () => isMaxCountReached.value || !!props.currentUserId && selectedUsers.value.some((user) => user[props.exactSearchKey] === props.currentUserId)
3861
3920
  );
3862
3921
  const userTagCommonProps = vue.computed(() => ({
3922
+ avatarBaseUrl: props.avatarBaseUrl,
3863
3923
  currentTenantId: props.tenantId,
3924
+ hasAvatar: props.hasAvatar,
3864
3925
  renderTag: props.renderTag,
3865
3926
  tenants
3866
3927
  }));
@@ -4165,8 +4226,10 @@
4165
4226
  [
4166
4227
  vue.createCommentVNode(" 下拉选项列表 "),
4167
4228
  vue.createVNode(SelectionPopover, {
4229
+ "avatar-base-url": _ctx.avatarBaseUrl,
4168
4230
  "container-width": containerRef.value ? containerRef.value.offsetWidth : "auto",
4169
4231
  "empty-text": computedEmptyText.value,
4232
+ "has-avatar": _ctx.hasAvatar,
4170
4233
  "is-show": showDropdown.value,
4171
4234
  loading: vue.unref(searchLoading),
4172
4235
  options: displayOptions.value,
@@ -4312,10 +4375,12 @@
4312
4375
  vue.renderList(selectedUsers.value.slice(visibleUsers.value.length), (user) => {
4313
4376
  return vue.openBlock(), vue.createBlock(vue.unref(UserRender), {
4314
4377
  key: user.id,
4378
+ "avatar-base-url": _ctx.avatarBaseUrl,
4379
+ "has-avatar": _ctx.hasAvatar,
4315
4380
  "tenant-id": _ctx.tenantId,
4316
4381
  tenants: vue.unref(tenants),
4317
4382
  user
4318
- }, null, 8, ["tenant-id", "tenants", "user"]);
4383
+ }, null, 8, ["avatar-base-url", "has-avatar", "tenant-id", "tenants", "user"]);
4319
4384
  }),
4320
4385
  128
4321
4386
  /* KEYED_FRAGMENT */
@@ -4362,7 +4427,7 @@
4362
4427
  ]),
4363
4428
  _: 1
4364
4429
  /* STABLE */
4365
- }, 8, ["container-width", "empty-text", "is-show", "loading", "options", "render-list-item", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
4430
+ }, 8, ["avatar-base-url", "container-width", "empty-text", "has-avatar", "is-show", "loading", "options", "render-list-item", "search-query", "tenant-id", "tenants", "user-group", "user-group-name"])
4366
4431
  ],
4367
4432
  2
4368
4433
  /* CLASS */
@@ -4370,7 +4435,7 @@
4370
4435
  };
4371
4436
  }
4372
4437
  });
4373
- const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-65e61c1c"]]);
4438
+ const BkUserSelector = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-9975c7e1"]]);
4374
4439
  exports2.BkUserSelector = BkUserSelector;
4375
4440
  exports2.default = BkUserSelector;
4376
4441
  Object.defineProperties(exports2, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
package/vue3/vue3.css CHANGED
@@ -25,71 +25,71 @@
25
25
  color: #c4c6cc;
26
26
  cursor: not-allowed;
27
27
  background-color: #f0f1f5;
28
- }.dropdown-content[data-v-024fc663] {
28
+ }.dropdown-content[data-v-d5a338f0] {
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-024fc663] {
34
+ .dropdown-content .no-data[data-v-d5a338f0] {
35
35
  padding: 10px;
36
36
  color: #979ba5;
37
37
  text-align: center;
38
38
  }
39
- .dropdown-content .user-group .group-header[data-v-024fc663] {
39
+ .dropdown-content .user-group .group-header[data-v-d5a338f0] {
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-024fc663] {
45
+ .dropdown-content .user-group .group-header .group-count[data-v-d5a338f0] {
46
46
  margin-left: 4px;
47
47
  }
48
- .dropdown-content .user-option[data-v-024fc663] {
48
+ .dropdown-content .user-option[data-v-d5a338f0] {
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-024fc663]:hover {
55
+ .dropdown-content .user-option[data-v-d5a338f0]:hover {
56
56
  background-color: #f5f7fa;
57
- }.user-tag[data-v-48ac8fc1] {
57
+ }.user-tag[data-v-1f2e0737] {
58
58
  margin-right: 4px;
59
59
  margin-left: 0;
60
60
  }
61
- .user-tag.draggable[data-v-48ac8fc1] {
61
+ .user-tag.draggable[data-v-1f2e0737] {
62
62
  cursor: move;
63
63
  }
64
- .user-tag.active[data-v-48ac8fc1] {
64
+ .user-tag.active[data-v-1f2e0737] {
65
65
  background-color: #e1ecff;
66
66
  border-color: #3a84ff;
67
67
  }
68
- .user-tag.is-custom[data-v-48ac8fc1] {
68
+ .user-tag.is-custom[data-v-1f2e0737] {
69
69
  color: #ea3636;
70
70
  background-color: #feebea;
71
71
  border-color: rgba(234, 53, 54, 0.3019607843);
72
72
  }
73
- .user-tag.is-custom[data-v-48ac8fc1]:hover {
73
+ .user-tag.is-custom[data-v-1f2e0737]:hover {
74
74
  background-color: #fedddc;
75
75
  }
76
- .user-tag .tag-content .user-name[data-v-48ac8fc1] {
76
+ .user-tag .tag-content .user-name[data-v-1f2e0737] {
77
77
  overflow: hidden;
78
78
  text-overflow: ellipsis;
79
79
  font-size: 12px;
80
80
  white-space: nowrap;
81
- }.bk-user-selector[data-v-65e61c1c] {
81
+ }.bk-user-selector[data-v-9975c7e1] {
82
82
  position: relative;
83
83
  width: 100%;
84
84
  height: 32px;
85
85
  font-size: 12px;
86
86
  }
87
- .bk-user-selector.is-disabled[data-v-65e61c1c] {
87
+ .bk-user-selector.is-disabled[data-v-9975c7e1] {
88
88
  pointer-events: none;
89
89
  cursor: not-allowed;
90
90
  background-color: #dcdee5;
91
91
  }
92
- .bk-user-selector .tags-container[data-v-65e61c1c] {
92
+ .bk-user-selector .tags-container[data-v-9975c7e1] {
93
93
  position: relative;
94
94
  min-height: 32px;
95
95
  padding: 1px 10px 1px 8px;
@@ -98,42 +98,42 @@
98
98
  border-radius: 2px;
99
99
  transition: all 0.2s ease;
100
100
  }
101
- .bk-user-selector .tags-container.focused[data-v-65e61c1c] {
101
+ .bk-user-selector .tags-container.focused[data-v-9975c7e1] {
102
102
  border-color: #3a84ff;
103
103
  box-shadow: 0 0 0 2px rgba(58, 132, 255, 0.1);
104
104
  }
105
- .bk-user-selector .tags-container.tags-container-collapsed[data-v-65e61c1c] {
105
+ .bk-user-selector .tags-container.tags-container-collapsed[data-v-9975c7e1] {
106
106
  display: flex;
107
107
  flex-wrap: wrap;
108
108
  align-items: center;
109
109
  }
110
- .bk-user-selector .tag-list[data-v-65e61c1c] {
110
+ .bk-user-selector .tag-list[data-v-9975c7e1] {
111
111
  display: flex;
112
112
  flex-wrap: wrap;
113
113
  align-items: center;
114
114
  }
115
- .bk-user-selector .tag-wrapper[data-v-65e61c1c] {
115
+ .bk-user-selector .tag-wrapper[data-v-9975c7e1] {
116
116
  display: inline-flex;
117
117
  align-items: center;
118
118
  max-width: 100%;
119
119
  }
120
- .bk-user-selector .search-input[data-v-65e61c1c] {
120
+ .bk-user-selector .search-input[data-v-9975c7e1] {
121
121
  min-width: 20px;
122
122
  height: 28px;
123
123
  outline: none;
124
124
  background: transparent;
125
125
  border: none;
126
126
  }
127
- .bk-user-selector .search-input[data-v-65e61c1c]::placeholder {
127
+ .bk-user-selector .search-input[data-v-9975c7e1]::placeholder {
128
128
  color: #c4c6cc;
129
129
  }
130
- .bk-user-selector .search-input.input-inline[data-v-65e61c1c] {
130
+ .bk-user-selector .search-input.input-inline[data-v-9975c7e1] {
131
131
  min-width: 20px;
132
132
  }
133
- .bk-user-selector .search-input.input-last[data-v-65e61c1c], .bk-user-selector .search-input.search-input-collapsed[data-v-65e61c1c] {
133
+ .bk-user-selector .search-input.input-last[data-v-9975c7e1], .bk-user-selector .search-input.search-input-collapsed[data-v-9975c7e1] {
134
134
  flex: 1;
135
135
  }
136
- .hidden-users[data-v-65e61c1c] {
136
+ .hidden-users[data-v-9975c7e1] {
137
137
  padding: 6px 10px;
138
138
  }.bk-user-selector-popover {
139
139
  padding: 0 !important;