Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Cuidado
O Microsoft Graph Toolkit foi preterido. O período de aposentadoria começa em 1º de setembro de 2025, com aposentadoria total planejada para 28 de agosto de 2026. Os desenvolvedores devem migrar para o uso dos SDKs do Microsoft Graph ou outras ferramentas do Microsoft Graph com suporte para criar experiências na Web. Para obter mais informações, consulte o anúncio de substituição.
Você pode usar o mgt-people-picker componente Web para pesquisar pessoas, grupos ou ambos. Por padrão, o componente pesquisa todas as pessoas e usuários na organização, mas você pode alterar o comportamento para pesquisar também grupos ou apenas grupos. Você também pode filtrar a pesquisa para um grupo específico. Você também pode permitir que o usuário insira e selecione qualquer endereço de email.
Exemplo
O exemplo a seguir mostra o mgt-people-picker componente. Comece a pesquisar um nome para ver os resultados renderizados e use o editor de código para ver como as propriedades alteram o comportamento do componente.
Propriedades
Por padrão, o mgt-people-picker componente busca pessoas dos pontos de /me/people extremidade e /users . Use os atributos a seguir para alterar esse comportamento.
| Atributo | Propriedade | Descrição |
|---|---|---|
| Mostrar máx. | Mostrar Max | Um valor numérico para indicar o número máximo de pessoas a serem mostradas. O valor padrão é 6. |
| ID de grupo | groupId | Um valor de cadeia de caracteres que pertence a um grupo definido pelo Microsoft Graph para uma filtragem adicional dos resultados da pesquisa. |
| pesquisa transitiva | transitiveSearch | Um valor booliano para executar uma pesquisa transitiva retornando uma lista simples de todos os membros aninhados - por padrão, a pesquisa transitiva não é usada. |
| type | type | O tipo de entidades a serem pesquisadas. As opções disponíveis são: person, group, any. O valor padrão é any. Se esse atributo for definido como group e ou group-id for group-ids definido, então userFilters e peopleFilters não terá efeito. |
| tipo de usuário | userType | O tipo de usuário a ser pesquisado. As opções disponíveis são: any, user para usuários organizacionais ou contact para contatos. O valor padrão é any. |
| tipo de grupo | groupType | O tipo ou os tipos de grupo a serem pesquisados. As opções disponíveis são: unified, security, mailenabledsecurity, distribution, any. O valor padrão é any. Esse atributo não terá efeito se a type propriedade estiver definida como person. Esse atributo aceita uma lista de valores separados por vírgula; A propriedade aceita uma matriz ou valores. |
| pessoas selecionadas | selectedPeople | Uma matriz de pessoas selecionadas. Defina esse valor para selecionar pessoas programaticamente. |
| people | people | Uma matriz de pessoas encontradas e renderizadas no resultado da pesquisa |
| espaço reservado | espaço reservado | O texto padrão que aparece para explicar como usar o componente. O valor padrão é Start typing a name. |
| IDs de usuário selecionado padrão | defaultSelectedUserIds | Quando recebe uma cadeia de caracteres de IDs de usuário do Microsoft Graph separadas por vírgula, o componente renderiza os respectivos usuários conforme selecionado na inicialização. |
| IDs de grupo selecionadas por padrão | defaultSelectedGroupIds | Semelhante às IDs de usuário selecionadas por padrão, quando recebe uma cadeia de caracteres de IDs de grupo do Microsoft Graph separadas por vírgula, o componente renderiza os respectivos grupos conforme selecionado na inicialização. |
| modo de seleção | selectionMode | Usado para indicar se é possível permitir a seleção de vários itens (usuários ou grupos) ou apenas um único item. As opções disponíveis são: single, multiple. O valor padrão é multiple. |
| desabilitadas | desabilitadas | Define se o seletor de pessoas está desabilitado. Quando desabilitado, o usuário não poderá pesquisar ou selecionar pessoas. O padrão é false. |
| disable-images | disableImages | Define se a busca e a exibição de imagens de pessoa devem ser desabilitadas. Quando definido como true, as iniciais de usuário são exibidas. O padrão é false. |
| person-card | personCardInteraction | Define o comportamento para mostrar o card de pessoa de uma pessoa selecionada. Os valores permitidos são none, hover ou click. O padrão é none. |
| Permitir qualquer email | allowAnyEmail | Indica se o seletor de pessoas pode aceitar endereços de email sem selecionar uma pessoa. O valor padrão é false. Quando terminar de digitar um endereço de email, você pode pressionar vírgula (,), ponto e vírgula (;), tab ou inserir as teclas para adicioná-lo. |
| IDs de usuário | userIds | Uma sequência de IDs de usuário separadas por vírgula. Eles só aparecem no menu suspenso ou nos resultados da pesquisa quando você digita uma consulta. Por exemplo, 48d31887-5fad-4d73-a9f5-3c356e68a038,24fcbca3-c3e2-48bf-9ffc-c7f81b81483d exibe apenas os dois usuários na lista suspensa quando a entrada é focada. Quando você digita um texto de pesquisa, ela retorna resultados que correspondem aos usuários apenas nas duas IDs de usuário. |
| Filtros de usuário | userFilters | Especifica os critérios de filtro a serem usados ao consultar o ponto de extremidade dos usuários. Requer que o user-type seja definido como user ou contact. Por padrão, o user-type é any e faz com que a consulta ocorra no bloco de people ponto de extremidade. Exemplo: user-filters="startsWith(displayName,'a')". Esse atributo é opcional. Saiba mais sobre o suporte para filtro nas propriedades do usuário de objetos de diretório. Quando você usa apenas a User.ReadBasic.All permissão, a lista de propriedades disponíveis é limitada e o componente se adapta de acordo. No escopo User.ReadBasic.All, você está limitado às seguintes propriedades: id, displayName, givenName, surnamemailsecurityIdentifiere .userPrincipalName Por padrão, esse componente usa as jobTitle propriedades and department . A mail propriedade serve como um fallback para jobTitle quando User.ReadBasic.All estiver em uso e outras propriedades não forem renderizadas. Use a User.Read.All permissão para consultar mais propriedades. |
| filtros de grupo | groupFilters | Especifica os critérios de filtro a serem usados ao consultar o groups ponto de extremidade. Requer que o type seja definido como group. Exemplo: group-filters="startsWith(displayName,'a')". Esse atributo é opcional. |
| Filtros de pessoas | peopleFilters | Especifica os critérios de filtro a serem usados ao consultar o people ponto de extremidade. É usado como está. Exemplo: people-filters="jobTitle eq 'Web Marketing Manager'". Esse atributo é opcional. Saiba mais sobre filtragem e os recursos com suporte no recurso pessoas. |
| IDs de grupo | groupIds | Uma sequência de IDs de grupo separadas por vírgula. Os resultados disponíveis devem ser limitados aos grupos especificados. Os usuários que aparecem no menu suspenso e por meio da experiência de pesquisa devem vir apenas das IDs de grupo especificadas. Por exemplo, 02bd9fd6-8f93-4758-87c3-1fb73740a315,06f62f70-9827-4e6e-93ef-8e0f2d9b7b23 exibe apenas os usuários pertencentes a esses grupos. Quando você digita um texto de pesquisa, ela retorna resultados que correspondem apenas aos usuários nas duas IDs de grupo. Esta propriedade não será usada se group-id estiver definida. Se a propriedade estiver definida, o type é group por padrão e transitive-search é true por padrão. Se o group-type estiver definido com a propriedade, o type pode ser any ou group. Se for typeperson, a propriedade não será usada. |
| rótulo de aria | ariaLabel | Uma cadeia de caracteres fornecida para ajudar tecnologias assistivas a fornecer contexto para o seletor de pessoas. |
O exemplo a seguir mostra o show-max atributo.
<mgt-people-picker show-max="4"> </mgt-people-picker>
Pessoas selecionadas
A seção de pessoas selecionadas do componente renderiza cada pessoa escolhida pelo desenvolvedor ou usuário.
Você pode preencher os dados de pessoas selecionadas com as seguintes opções:
Definindo a
selectedPeoplepropriedade diretamente, conforme mostrado no exemplo a seguir.// personObject is the User or Person object from Microsoft Graph document.querySelector("mgt-people-picker").selectedPeople.push(personObject);Usando o
selectUsersById()método, que aceita uma matriz de IDs de usuário do Microsoft Graph para localizar detalhes de usuário associados para seleção.Observação: Se nenhum usuário for encontrado para um
id, nenhum dado será renderizado para esseid.// id = Microsoft graph User "id" document.querySelector("mgt-people-picker").selectUsersById(["id", "id"]);Usando o
selectGroupsById()método, que aceita uma matriz de IDs de grupo do Microsoft Graph para localizar o(s) grupo(s) com usuários associados.// groupid = Microsoft graph group "id" document .querySelector("mgt-people-picker") .selectGroupsById(["groupid", "groupid"]);
Propriedades personalizadas CSS
O mgt-people-picker componente define as seguintes propriedades personalizadas CSS.
<mgt-people-picker class="people-picker"></mgt-people-picker>
.people-picker {
--people-picker-selected-option-background-color: orange;
--people-picker-selected-option-highlight-background-color: red;
--people-picker-dropdown-background-color: blue;
--people-picker-dropdown-result-background-color: yellow;
--people-picker-dropdown-result-hover-background-color: gold;
--people-picker-dropdown-result-focus-background-color: green;
--people-picker-no-results-text-color: orange;
--people-picker-input-background: gray;
--people-picker-input-border-color: yellow;
--people-picker-input-hover-background: green;
--people-picker-input-hover-border-color: red;
--people-picker-input-focus-background: purple;
--people-picker-input-focus-border-color: orange;
--people-picker-input-placeholder-focus-text-color: yellow;
--people-picker-input-placeholder-hover-text-color: gold;
--people-picker-input-placeholder-text-color: white;
--people-picker-search-icon-color: yellow;
--people-picker-remove-selected-close-icon-color: blue;
/** Style for the avatar-size in the people-picker **/
--people-picker-result-person-avatar-size: 50px;
--people-picker-selected-person-avatar-size: 30px;
/** You can also change the person tokens **/
--person-line1-text-color: blue;
--person-line2-text-color: red;
}
Para saber mais, consulte Componentes de estilo.
Eventos
Os eventos a seguir são disparados do componente.
| Evento | Quando é emitido | Dados personalizados | Cancelável | Bolhas | Funciona com modelo personalizado |
|---|---|---|---|---|---|
selectionChanged |
O usuário adicionou ou removeu uma pessoa da lista de pessoas selecionadas/escolhidas | Matriz de pessoas selecionadas, onde uma pessoa pode ser um usuário do Graph, pessoa ou contato com outra personImage propriedade que contém a URL da foto do usuário |
Não | Não | Sim, a menos que você substitua o modelo padrão |
Para obter mais informações sobre como lidar com eventos, consulte eventos.
Modelos
mgt-people-picker Suporta vários modelos que podem ser usados para substituir determinadas partes do componente. Para especificar um modelo, inclua um <template> elemento dentro de um componente e defina como data-type um dos seguintes valores.
| Tipo de dados | Contexto de dados | Descrição |
|---|---|---|
| Padrão. | nulo: sem dados | O modelo usado para substituir a renderização de todo o componente. |
| carregando | nulo: sem dados | O modelo usado para renderizar o estado do seletor enquanto a solicitação de gráfico está sendo feita. |
| erro | nulo: sem dados | O modelo usado se a pesquisa do usuário não retornar nenhum usuário. |
| sem dados | nulo: sem dados | Um modelo alternativo usado se a pesquisa do usuário não retornar nenhum usuário. |
| pessoa selecionada | pessoa: o objeto de detalhes da pessoa | O modelo para renderizar as pessoas selecionadas. |
| pessoa | pessoa: o objeto de detalhes da pessoa | O modelo para renderizar pessoas na lista suspensa. |
Os exemplos a seguir mostram como usar o error modelo.
<mgt-people-picker>
<template data-type="error">
<p>Sorry, no people were found</p>
</template>
</mgt-people-picker>
Permissões do Microsoft Graph
Esse componente pode fazer muitas consultas, dependendo da configuração e do estado. A tabela a seguir divide as APIs e permissões do Microsoft Graph necessárias em três seções para simplificar. Para cada API chamada, o usuário deve ter pelo menos uma das permissões listadas.
Independentemente do estado de entrada do usuário
| Configuração | Permissão | API | Opções adicionais |
|---|---|---|---|
default-selected-user-ids conjunto |
User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All | /users/$({userId} | Quando user-filters é definido, isso é adicionado como o $filter parâmetro para a solicitação com $count=true e o ConsistencyLevel: 'eventual' cabeçalho é definido na solicitação |
default-selected-group-ids conjunto |
GroupMember. Read. All, Group. Read. All, Directory. Read. All, Group. ReadWrite. All, Directory. ReadWrite. All | /grupos | Quando people-filters é definido, seu valor é adicionado como o $filter parâmetro para a solicitação |
Quando uma configuração abaixo depender user-ids de ser definida, se houver uma entrada de meuser-ids |
User.Read, User.ReadWrite | /me |
Quando nenhuma entrada do usuário está presente
| Configuração | Permissão | API | Opções adicionais |
|---|---|---|---|
group-id conjunto |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/members | Quando type é person ou group um /microsoft.graph.user ou será /microsoft.graph.group anexado ao caminho da solicitação |
group-id set AND transitive-search is true |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/transitiveMembers | Quando type é person ou group um /microsoft.graph.user ou será /microsoft.graph.group anexado ao caminho da solicitação |
group-ids set AND type is group |
GroupMember. Read. All, Group. Read. All, Directory. Read. All, Group. ReadWrite. All, Directory. ReadWrite. All | /groups/${id} | |
group-ids set AND is type NOT group |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/members | Quando type é person então /microsoft.graph.user é anexado ao caminho da solicitação |
group-idsset AND type is NOT group AND is true transitive-search |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/transitiveMembers | Quando type é person então /microsoft.graph.user é anexado ao caminho da solicitação |
typeé group e nem nem group-idsgroup-id estão definidos |
GroupMember. Read. All, Group. Read. All, Directory. Read. All, Group. ReadWrite. All, Directory. ReadWrite. All | /grupos | |
type definido como person ou any e userIds está definido |
User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All | /users/$({userId} | Quando user-filters é definido, isso é adicionado como o parâmetro $filter à solicitação e $count=true o ConsistencyLevel: 'eventual' cabeçalho é definido na solicitação |
typeDefinido como OU anyperson e user-filters está definido e user-type está definido como OU usercontact |
User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All | /usuários | Quando user-filters é definido, isso é adicionado como o parâmetro $filter à solicitação e $count=true o ConsistencyLevel: 'eventual' cabeçalho é definido na solicitação |
type Defina como person OR any e user-filters não está definido ou user-type está definido como nem user nem contact |
People.Read, People.Read.All | /eu/pessoas | Quando people-filters está definido ou user-type não any é um parâmetro $filter é adicionado à solicitação. Se user-type não contact for, o X-PeopleQuery-QuerySources: 'Mailbox,Directory' cabeçalho será definido na solicitação |
Quando um usuário forneceu um termo de pesquisa
| Configuração | Permissão | API | Opções adicionais |
|---|---|---|---|
group-id está definido |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/members | Quando type é person ou group um ou /microsoft.graph.user é /microsoft.graph.group anexado ao caminho da solicitação, um $filter parâmetro é composto com o valor de entrada do usuário |
group-id está definido e transitive-search é verdadeiro |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/transitiveMembers | Quando type é person ou group um ou /microsoft.graph.user é /microsoft.graph.group anexado ao caminho da solicitação, um $filter parâmetro é composto com o valor de entrada do usuário |
group-id não está definido e type definido como person ou any e definido user-type como any e group-ids está definido |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/members | Quando type é person então /microsoft.graph.user é anexado ao caminho da solicitação, um $filter parâmetro é composto com o valor de entrada do usuário |
group-id não está definido e type definido como person ou any e definido user-type como any e group-ids está definido e transitive-search é verdadeiro |
GroupMember.Read.All, Group.Read.All, Directory.Read.All, GroupMember.ReadWrite.All, Group.ReadWrite.All | /groups/${groupId}/transitiveMembers | Quando type é person então /microsoft.graph.user é anexado ao caminho da solicitação, um $filter parâmetro é composto com o valor de entrada do usuário |
type Definido como person Ou any e user-type não definido como any e user-ids está definido |
User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All | /users/$({userId} | Quando user-filters é definido, isso é adicionado como o parâmetro $filter à solicitação e $count=true o ConsistencyLevel: 'eventual' cabeçalho é definido na solicitação |
type Defina como person ou any e user-type defina como any e group-ids não está definido e user-ids está definido |
User.ReadBasic.All, User.Read.All, Directory.Read.All, User.ReadWrite.All, Directory.ReadWrite.All | /users/$({userId} | Quando user-filters é definido, isso é adicionado como o parâmetro $filter à solicitação e $count=true o ConsistencyLevel: 'eventual' cabeçalho é definido na solicitação |
group-id não está definido e type é group ou type é any e menos resultados do que show-max os encontrados |
GroupMember. Read. All, Group. Read. All, Directory. Read. All, Group. ReadWrite. All, Directory. ReadWrite. All | /grupos | A $filter é composto usando a entrada do usuário fornecida, group-filters, e group-type os valores |
group-id não está definido e group-ids está definido e type é group ou type é e menos any resultados do que show-max os encontrados |
GroupMember. Read. All, Group. Read. All, Directory. Read. All, Group. ReadWrite. All, Directory. ReadWrite. All | /grupos | A $filter é composto usando a entrada do usuário fornecida, user-filters, e group-type os valores |
Subcomponentes
O mgt-people-picker componente consiste em um ou mais subcomponentes que podem exigir outras permissões além das listadas anteriormente. Para obter mais informações, consulte a documentação de cada subcomponente: mgt-person.
Autenticação
O controle usa o provedor de autenticação global descrito na documentação de autenticação.
Cache
| Loja de objetos | Dados armazenados em cache | Comentários |
|---|---|---|
groups |
Lista de grupos | Usado quando está definido como typePersonType.group |
people |
Lista de pessoas | Usado quando type está definido como PersonType.person ou PersonType.any |
users |
Lista de usuários | Usado quando groupId especificado |
Para obter mais informações sobre como configurar o cache, consulte Cache.
Estenda para mais controle
Para cenários mais complexos ou uma experiência de usuário verdadeiramente personalizada, esse componente expõe vários protected render* métodos de substituição em extensões de componente.
| Método | Descrição |
|---|---|
| renderInput | Renderiza a caixa de texto de entrada. |
| renderSelectedPeople | Renderiza as fichas de pessoas selecionadas. |
| renderSelectedPerson | Renderiza um token de pessoa individual. |
| renderFlyout | Renderiza o cromo do submenu. |
| renderFlyoutContent | Renderiza o estado apropriado no submenu de resultados. |
| renderLoading | Renderiza o estado de carregamento. |
| renderNoData | Renderiza o estado quando nenhum resultado é encontrado para a consulta de pesquisa. |
| renderSearchResults | Renderiza a lista de resultados da pesquisa. |
| renderPersonResult | Renderiza o resultado de uma pesquisa de pessoa individual. |
Localização
O controle expõe as variáveis a seguir que podem ser localizadas. Para obter detalhes sobre localização, consulte Localizando componentes.
| Nome da cadeia de caracteres | Valor padrão |
|---|---|
| inputPlaceholderText | Search for a name |
| maxSelectionsPlaceHolder | Max contacts added |
| maxSelectionsAriaLabel | Maximum contact selections reached |
| noResultsFound | We didn't find any matches. |
| loadingMessage | Loading... |
| selecionado | selected |
| removeSelectedUser | Remove |
| selectContact | select a contact |
| suggestionsTitle | Suggested contacts |