fix: set strings as attributes, non-strings as properties if property exists #13327
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.
Alternative to #12734. Closes #12664. This feels like a more principled approach to the problem: if something is a non-string and exists as a property on the element, set it as a property, otherwise set it as an attribute.
This allows us to handle some of the platform's oddities gracefully, without needing to ship a lookup to the browser: if a component contains
<div translate="no">, then we disable translation on that element (withdiv.setAttribute('translate', 'no')). If it containstranslate={false}, we achieve the same outcome withdiv.translate = false.Draft because I just realised that we still need a lookup for SSRBefore submitting the PR, please make sure you do the following
feat:,fix:,chore:, ordocs:.Tests and linting
pnpm testand lint the project withpnpm lint