mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
8b19d66fc6
Summary === Prior to this commit, calls passing `aria: { labelledby: [...] }` serialized the `aria-labelledby` Array value as JSON. This commit introduces special case logic to serialize `aria-` prefixed `TrueClass`, `FalseClass`, `Hash`, and `Array` values more appropriately. An element's [`aria-labelledby` attribute][aria-labelledby] and [`aria-describedby` attribute][aria-describedby] can accept a space-delimited list of identifier values (much like the [`class` attribute][class] accepts a space delimited [`DOMTokenList` value][DOMTokenList]). Similarly, there are [no boolean `aria-` attributes][aria-attributes] (only `true`, `false`, or undefined), so this commit serializes `true` to `"true"` and `false` to `"false"`. Testing --- This change moves an assertion _outside_ of a loop over `["aria", :aria]`. Prior to this change, the second assertion within the loop wasn't utilizing the iterated value as a Hash key. That is to say: `aria:` (where an `aria` local variable is declared) is not equivalent an equivalent syntax to `aria =>`. Since the migration to `**options` in response to Ruby 2.7 deprecations, invoking `tag.a("aria" => {...})` incorrectly coerces the `"aria" => {...}` has to be the `TagBuilder#a` method `content = nil` ordered argument, instead of its `options` keyword arguments. This commit does not modify that behavior, but it _does_ move the assertion outside the block so that it isn't run unnecessarily. [aria-labelledby]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-labelledby_attribute [aria-describedby]: https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Techniques/Using_the_aria-describedby_attribute [aria-attributes]: https://www.w3.org/TR/wai-aria-1.1/#propcharacteristic_value [class]: https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/class [DOMTokenList]: https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList [class_names]: https://edgeapi.rubyonrails.org/classes/ActionView/Helpers/TagHelper.html#method-i-class_names |
||
---|---|---|
.. | ||
action_view | ||
action_view.rb |