LibWeb: Implement HTMLOptionElement.label more correctly

This shouldn't just be a simple reflection of the label attribute.
It also needs fallback to the HTMLOptionElement.text property if the
label attribute is absent.
This commit is contained in:
Andreas Kling 2024-11-15 11:14:28 +01:00 committed by Andreas Kling
commit 4c2d4cdf50
Notes: github-actions[bot] 2024-11-15 11:55:47 +00:00
4 changed files with 25 additions and 5 deletions

View file

@ -99,6 +99,23 @@ static void concatenate_descendants_text_content(DOM::Node const* node, StringBu
});
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-option-label
String HTMLOptionElement::label() const
{
// The label IDL attribute, on getting, if there is a label content attribute,
// must return that attribute's value; otherwise, it must return the element's label.
if (auto label = attribute(HTML::AttributeNames::label); label.has_value())
return label.release_value();
return text();
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-option-label
void HTMLOptionElement::set_label(String const& label)
{
MUST(set_attribute(HTML::AttributeNames::label, label));
}
// https://html.spec.whatwg.org/multipage/form-elements.html#dom-option-text
String HTMLOptionElement::text() const
{

View file

@ -29,6 +29,9 @@ public:
String text() const;
void set_text(String const&);
[[nodiscard]] String label() const;
void set_label(String const&);
int index() const;
bool disabled() const;

View file

@ -7,7 +7,7 @@ interface HTMLOptionElement : HTMLElement {
[CEReactions, Reflect] attribute boolean disabled;
readonly attribute HTMLFormElement? form;
[CEReactions, Reflect] attribute DOMString label;
[CEReactions] attribute DOMString label;
[CEReactions, Reflect=selected] attribute boolean defaultSelected;
attribute boolean selected;
[CEReactions] attribute DOMString value;