top of page

Adding Conditional Formatting for a List Form Header with JSON

The article Configure the list form | Microsoft Docs is instructive, but only scratches the surface of the possibilities. In fact, the example given for the header is great, but throws an error if you’re on a New Form and haven’t filled in the Title – because there isn’t a Title value yet. It doesn’t prevent the form from working, but it’s ugly, that message “Failure: Title was not found on the data object.”

ree

There are a couple of things going on here. First, the message is shown because of this line at the top of the JSON.

"debugMode": true,

That tells SharePoint to let you know if there are any issues. You should generally remove it – or never add it – unless you need to debug issues.

Second, the formula for the text in the header is always going to look a little funny on the New Form, regardless whether there’s a value for the Title.

"txtContent": "='Contact details for ' + [$Title]"

ree

Contact details for… Who?

Wouldn’t it be better if the JSON you used handled this better? Of course it would. Here’s what we came up with. We removed the "debugMode": true, so we wouldn’t see the message, ever. Then we added a condition to display a more pleasant header: "txtContent": "=if([$Title]=='','New Project Request', 'Project Request for '+[$Title])"


Here’s the full JSON. Obviously, you may not be creating a Project Request, but you can easily change that text.

{
    "elmType": "div",
    "attributes": {
        "class": "ms-borderColor-neutralTertiary"
     },
     "style": 
     {
         "width": "99%",
         "border-top-width": "0px",
         "border-bottom-width": "1px",
         "border-left-width": "0px",
         "border-right-width": "0px",
         "border-style": "solid",
         "margin-bottom": "16px"
      },
      "children": [
      {
          "elmType": "div",
          "style": 
          {
              "display": "flex",
              "box-sizing": "border-box",
              "align-items": "center"
           },
       "children": [
       {
           "elmType": "div",
           "attributes": 
           {
               "iconName": "TextDocument",
               "class": "ms-fontSize-42 ms-fontWeight-regular ms-fontColor-themePrimary",
               "title": "Details"
            },
        "style": 
        {
            "flex": "none",
            "padding": "0px",
            "padding-left": "0px",
            "height": "36px"
         }
      }
    ]
  },
  {
      "elmType": "div",
      "attributes": 
      {
          "class": "ms-fontColor-neutralSecondary ms-fontWeight-bold ms-fontSize-24"
       },
       "style": 
       {
           "box-sizing": "border-box",
           "width": "100%",
           "text-align": "left",
           "padding": "21px 12px",
           "overflow": "hidden"
        },
       "children": [
       {
           "elmType": "div",
           "txtContent": "=if([$Title] == '',
           'New Project Request', 
           'Project Request for '+[$Title])"
        }
    ]
  }
]
}

Here’s what that gives us for the New Form…


ree

And once we’ve filled in the Title and in the Edit Form…


ree




Source: Paper.li


The Tech Platform

Comments


bottom of page