Currently we have an arcade expression that conditionally hides fields if the record is 'Archived' we jsut include all the information in the pop-up for the field user to see. Works okay. But... if the layer is still editable then technically the user can hit submit on the record, even if not changes are made, and this clears out the values that are hidden in the form by the arcade expression. This is causing data loss issues.
I have the same issue. I want staff to be able to edit until a certain condition is met, and then I want to lock the record, but still allow new records and the ability to update incomplete records.
I solved this by duplicating the layer and splitting the data based on my criteria, one layer that can be editable and one that is read only. It works OK and we use symbology to denote an incomplete record that still needs to be fixed. But, it is still a bit confusing for staff, since the data is split between two layers.
I was thinking about trying to create a series of attribute rules and/or calculated fields with a combination of if/then blocks, editcontext.editType (if needed) and using the $originalfeature property to force it back to the original value if the record was supposed to be locked. But you would have to create a pretty elaborate arcade expression and you would need to address every field you want to have locked.
I also vote to add the ability to build conditional edits in the forms would be wonderful.