From d8efc5dc5e5898228f7a6003f2cf9ce5adc8e6f4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Levert?= Date: Thu, 7 Apr 2022 13:00:04 -0400 Subject: [PATCH] Adding the people picker specs (#1618) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Adding the people picker specs * Update specs/mgt-people-picker.md Co-authored-by: Sébastien Levert Co-authored-by: Musale Martin --- specs/images/mgt-people-picker.png | Bin 0 -> 30381 bytes specs/mgt-people-picker.md | 84 +++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) create mode 100644 specs/images/mgt-people-picker.png create mode 100644 specs/mgt-people-picker.md diff --git a/specs/images/mgt-people-picker.png b/specs/images/mgt-people-picker.png new file mode 100644 index 0000000000000000000000000000000000000000..03d7d0eb9357cd0884d8a935d4f200e1880f6a10 GIT binary patch literal 30381 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 NDaxtJmdcpE{~ys$6;1#E literal 0 HcmV?d00001 diff --git a/specs/mgt-people-picker.md b/specs/mgt-people-picker.md new file mode 100644 index 0000000000..c3e4e23871 --- /dev/null +++ b/specs/mgt-people-picker.md @@ -0,0 +1,84 @@ +# mgt-people-picker + +The people picker components provides a way for developers to select users, groups or contacts from Microsoft Graph. It offers a simple text area with a typeahead functionality and allows single or multiple selection of entities. + + + +## Attributes and Properties + +| Attribute | Property | Description | +| -------------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| show-max | showMax | A number value to indicate the maximum number of people to show. the default value is 6. | +| group-id | groupId | A string value that belongs to a Microsoft Graph defined group for further filtering of the search results. | +| transitive-search | transitiveSearch | A Boolean value to perform a transitive search returning a flat list of all nested members - by default transitive search is not used. | +| type | type | The type of entities to search for. Available options are: `person`, `group`, `any`. Default value is `person`. This attribute has no effect if `group-id` property is set. | +| user-type | userType | The type of user to search for. Available options are: `any`, `user` for organizational users, or `contact` for contacts. Default value is `any`. | +| group-type | groupType | The group type to search for. Available options are: `unified`, `security`, `mailenabledsecurity`, `distribution`, `any`. Default value is `any`. This attribute has no effect if the `type` property is set to `person`. | +| selected-people | selectedPeople | An array of selected people. Set this value to select people programmatically. | +| people | people | An array of people found and rendered in the search result | +| placeholder | placeholder | The default text that appears to explain how to use the component. Default value is `Start typing a name`. | +| default-selected-user-ids | defaultSelectedUserIds | When provided a string of comma-separated Microsoft Graph user IDs, the component renders the respective users as selected upon initialization. | +| default-selected-group-ids | defaultSelectedGroupIds | Similar to default-selected-user-ids, when provided a string of comma-separated Microsoft Graph group IDs, the component renders the respective groups as selected upon initialization. | +| selection-mode | selectionMode | Used to indicate whether to allow selecting multiple items (users or groups) or just a single item. Available options are: `single`, `multiple`. Default value is `multiple`. | +| disabled | disabled | Sets whether the people picker is disabled. When disabled, the user is not able to search or select people. | +| disable-images | disableImages | Sets whether to disable fetching and display of person images. When set to `true`, user initials are displayed instead. | +| allow-any-email | allowAnyEmail | Indicates whether the people picker can accept email addresses without selecting a person. Default value is `false`. When you finish typing an email address, you can press comma (`,`), semicolon (`;`), tab or enter keys to add it. | +| user-ids | userIds | A string of comma-separated user IDs. They will only appear on the dropdown menu or your search results when you type a query. For example `48d31887-5fad-4d73-a9f5-3c356e68a038,24fcbca3-c3e2-48bf-9ffc-c7f81b81483d` will only display the two users in the dropdown when the input is focused. When you type a search text, it will return results that match the users in the two user IDs only. | +| group-ids | groupIds | A string of comma-separated group IDs. The available results should be limited to the specified groups. Users that will appear on the dropdown menu and via the search experience should only come from the specified group IDs. For example `02bd9fd6-8f93-4758-87c3-1fb73740a315,06f62f70-9827-4e6e-93ef-8e0f2d9b7b23` will only display users belonging to these groups. When you type a search text, it will return results that match the users in the two group IDs only. Property is not used if `group-id` is defined. If the property is set, then the `type` is `group` by default. If `group-type` is set with the property, then the `type` can be `any` or `group`. If the `type` is `person` then the property is not used. | +| user-filters | userFilters | Specifies the filter criteria to use when querying the users endpoint. It requires the `user-type` to be set to `user` or `contact`. By default, the `user-type` is `any` and this leads the querying to take place in the `people` endpoint block. Example: `user-filters="startsWith(displayName,'a')"`. This attribute is optional. Learn more about [the support for filter on user properties of Azure AD directory objects](/graph/aad-advanced-queries?tabs=http#user-properties). | +| group-filters | groupFilters | Specifies the filter criteria to use when querying the `groups` endpoint. It requires the `type` to be set to `group`. Example: `group-filters="startsWith(displayName,'a')"`. This attribute is optional. | +| people-filters | peopleFilters | Specifies the filter criteria to use when querying the `people` endpoint. It is used as it is. Example: `people-filters="jobTitle eq 'Web Marketing Manager'"`. This attribute is optional. Learn more about [filtering and the supported capabilities on the people resource](/graph/people-example). | + +## Usage + +### Default +```html + +``` + +### Show a maximum of 5 people in the selection area +```html + +``` + +### Show users only from specified groups +```html + +``` + +## Events + +The following events are fired from the component. + +| Event | When is it emitted | Custom data | Cancelable | Bubbles | Works with custom template | +| ------------------ | -------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------: | :-----: | :-------------------------------------------: | +| `selectionChanged` | The user added or removed a person from the list of selected/picked people | Array of selected people, where a person can be a Graph [user](/graph/api/resources/user), [person](/graph/api/resources/person) or [contact](/graph/api/resources/contact) with an additional `personImage` property that contains the URL of the user's photo | No | No | Yes, unless you override the default template | + +## APIs and Permission + +| Query | Use if | Permission Scopes | +| -------------------------------- | ------------------------------------------------------------------------------- | ------------------------------------------------ | +| `GET /groups/{group-id}/members` | `group-id` or `group-ids` are set | People.Read, User.Read.All, GroupMember.Read.All | +| `GET /me/people` | `type` set to `Person` or `any` | People.Read | +| `GET /groups` | `type` set to `Group` or searching for users and `type` set to `Group` or `any` | Group.Read.All | +| `GET /users` | `default-selected-user-ids` is set | User.ReadBasic.All | +| `GET /me/people` | searching for users and `type` set to `Person` or `any` | People.Read, User.ReadBasic.All | + +## Templates + +| Data type | Data context | Description | +| --------------- | --------------------------------- | ------------------------------------------------------------------------------------- | +| default | null: no data | The template used to override the rendering of the entire component. | +| loading | null: no data | The template used to render the state of picker while request to graph is being made. | +| error | null: no data | The template used if user search returns no users. | +| no-data | null: no data | An alternative template used if user search returns no users. | +| selected-person | person: The person details object | The template to render selected people. | +| person | person: The person details object | The template to render people in the dropdown. | + +## Cache + +| Object store | Cached data | Remarks | +| ------------ | -------------- | ------------------------------------------------------------------ | +| `groups` | List of groups | Used when `type` is set to `PersonType.group` | +| `people` | List of people | Used when `type` is set to `PersonType.person` or `PersonType.any` | +| `users` | List of users | Used when `groupId` specified | \ No newline at end of file