sp-dev-docs
sp-dev-docs copied to clipboard
List Formatting: Unable to update column containing deleted user with setValue
Target SharePoint environment
SharePoint Online
What SharePoint development model, framework, SDK or API is this about?
Declarative list formatting
Developer environment
None
What browser(s) / client(s) have you tested
- [ ] 💥 Internet Explorer
- [X] 💥 Microsoft Edge
- [X] 💥 Google Chrome
- [ ] 💥 FireFox
- [ ] 💥 Safari
- [ ] mobile (iOS/iPadOS)
- [ ] mobile (Android)
- [ ] not applicable
- [ ] other (enter in the "Additional environment details" area below)
Additional environment details
No response
Describe the bug / error
When attempting to update a multiple selectable person column using setValue, an error is displayed if the field to be updated contains a deleted user.
https://github.com/SharePoint/sp-dev-docs/assets/51254139/3943ed5a-713a-4006-9c7c-ac7da37b6b1c
The update uses the appendTo
and removeFrom
operators. (Reference: Advanced formatting concepts)
*Deleted user has not been removed from the user information list.
Steps to reproduce
-
Create a
Favorites
column (column type: Multiple Choice Person column) in the list -
Set the user to be deleted in the created column
-
Delete a user in the Microsoft 365 Admin Center
-
Set the following JSON in the
Favorites
column created
JSON
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"children": [
{
"elmType": "div",
"style": {
"font-size": "18px",
"padding": "2px 7px 2px 7px",
"cursor": "pointer",
"border-radius": "10px"
},
"attributes": {
"class": "ms-bgColor-themeTertiary--hover"
},
"customRowAction": {
"action": "setValue",
"actionInput": {
"Favorites": "=if(indexOf(@currentField.email , @me) > -1 , removeFrom(@currentField.email , @me) , appendTo(@currentField.email , @me) )"
}
},
"customCardProps": {
"openOnEvent": "hover",
"directionalHint": "rightCenter",
"isBeakVisible": true,
"formatter": {
"elmType": "div",
"style": {
"max-height": "300px",
"padding": "5px 20px 5px 20px",
"display": "flex",
"flex-direction": "column"
},
"children": [
{
"elmType": "div",
"txtContent": "= '💖 ' + length(@currentField)",
"style": {
"padding": "10px",
"font-weight": "bold",
"font-size": "20px"
}
},
{
"elmType": "div",
"children": [
{
"forEach": "personIterator in @currentField",
"elmType": "div",
"style": {
"margin-bottom": "5px",
"display": "flex",
"align-items": "center"
},
"children": [
{
"elmType": "img",
"style": {
"width": "32px",
"height": "32px",
"border-radius": "50%",
"margin-right": "5px"
},
"attributes": {
"src": "=getUserImage([$personIterator.email], 'S')",
"title": "[$personIterator.title]"
}
},
{
"elmType": "span",
"txtContent": "[$personIterator.title]"
}
]
}
]
}
]
}
},
"children": [
{
"elmType": "span",
"style": {
"margin-right": "5px"
},
"txtContent": "💖"
},
{
"elmType": "span",
"style": {
"font-weight": "=if(indexOf(@currentField.email , @me) > -1 , 'bold' ,'' )"
},
"txtContent": "=length(@currentField)"
}
]
}
]
}
- Click the button displayed by JSON
Expected behavior
Can be updated even if deleted users are included.