Add ability to show component in alert #1118
Draft
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Right now, alerts can only show text. However, I've long wanted to lift that restriction in order to make it possible to show other content. I think lifting that restriction would make it easier to solve issues like getodk/central#775.
What got me thinking about this again was #1075. There, the alert lists one or more entity properties. It would've been nice if we could have shown a
<ul>
, but because the alert had to be text, that wasn't possible. Instead, we added bullet points to the text. With the change in this PR, it's now possible to show a<ul>
in the alert in that case. That's done by passing a component to the alert.What has been done to verify that this works as intended?
I've updated existing tests. If this approach looks good, I'll add some new tests as well.
Why is this the best possible solution? Were any other approaches considered?
The approach in this PR is to pass a component to the alert. I also thought about passing HTML or Markdown. However, a component gives us the most flexibility. It also gives us an easy way to escape user content and not render user content as HTML.
Before submitting this PR, please make sure you have:
npm run test
andnpm run lint
and confirmed all checks still pass OR confirm CircleCI build passes