Device Config form can be saved with required fields missing
### Describe The Bug

I have the following defined in my config schema, where both the `name` and `hasCellular` fields are required :
```
    ....
    "name": {
        "title": "My iPad",
        "type": "string",
        "required": true
    },
    "hasCellular": {
        "title": "Has Cellular Capabilities",
        "type": "boolean",
        "required": true,
        "condition": {
            "functionBody": "return ['switch'].includes(model.devices[arrayIndices].accessoryType);"
        }
    },
    ...
```
In Config UI, I go ahead and configure in the Plugin Config window my iPad. Without entering a name for my iPad, I can click the `Save` button, which results in a valid json structure-wise, but not a valid iPad device, as I expect the field `name` to be present in the config.
I can check in the code to see if the name is present or not, then either fail to allow Homebridge to startup, or fail to load the malformed device and display an error in the log.

1. I fail to allow Homebridge to startup. My plugin is not being a "good citizen" and I is holding the entire Homebridge hostage until the plugin json is fixed or deleted.
2. I fail to load the plugin and display an error message in the log. The log scrolls by very quickly in the `Homebridge Logs` widget on the `Status` screen, so the user may not realize that there was an error until they try to use the device and it doesn't show up.

While option 2 works and I can check in code if the configuration is valid, it is not a good user experience. It would be reasonable for the user to expect that config ui would not save an invalid configuration.

My expectation is that

1. **Required && visible** fields would be actually required, not just marked as required
2. The `Save` button would be disabled until all **required && visible** fields are populated

Note: if a field is required, but **not** visible, it wouldn't affect the status of the `Save` button and [wouldn't be saved in the configuration json](https://github.com/homebridge/homebridge-config-ui-x/issues/2208)

Note:
If I go to the `Status` screen right after I press the `Save button, then I see the logs scroll by, albeit very quickly, so I might still miss an error message displayed.
But iIf I wait for the spinner to stop after I press the `Save` button before I go to the `Status` screen, this is what my `Homebridge Logs` widget looks like. It looks like Homebridge started up fine and everything is good.
<img width="854" alt="Screenshot 2024-10-21 at 1 54 39 PM" src="https://github.com/user-attachments/assets/4c587a84-bf0c-4e10-bcca-4edc8b4c5f7d">


### Logs

_No response_

### Config

_No response_

### Homebridge UI Version

4.62.0

### Homebridge Version

1.8.4

### Node.js Version

22.9.0

### Operating System

macOS

### Environment Info

Using hb-service

### Raspberry Pi Model

None