Skip to content

Commit 4d27065

Browse files
authored
fix(ui5-textarea): announce custom valueStateMessage (#2122)
FIXES #2106
1 parent 1971a54 commit 4d27065

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

packages/main/src/TextArea.hbs

+5
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
?required="{{required}}"
2626
aria-required="{{required}}"
2727
aria-labelledby={{ariaLabelledBy}}
28+
aria-describedby={{ariaDescribedBy}}
2829
maxlength="{{_exceededTextProps.calcedMaxLength}}"
2930
.value="{{value}}"
3031
@input="{{_oninput}}"
@@ -41,6 +42,10 @@
4142
<span id="{{_id}}-exceededText" class="ui5-textarea-exceeded-text">{{_exceededTextProps.exceededText}}</span>
4243
{{/if}}
4344

45+
{{#if hasValueState}}
46+
<span id="{{_id}}-valueStateDesc" class="ui5-hidden-text">{{ariaValueStateHiddenText}}</span>
47+
{{/if}}
48+
4449
<slot name="formSupport"></slot>
4550
</div>
4651

packages/main/src/TextArea.js

+16
Original file line numberDiff line numberDiff line change
@@ -543,6 +543,22 @@ class TextArea extends UI5Element {
543543
return this.showExceededText ? `${this._id}-exceededText` : undefined;
544544
}
545545

546+
get ariaDescribedBy() {
547+
return this.hasValueState ? `${this._id}-valueStateDesc` : undefined;
548+
}
549+
550+
get ariaValueStateHiddenText() {
551+
if (!this.hasValueState) {
552+
return;
553+
}
554+
555+
if (this.hasCustomValueState) {
556+
return this.valueStateMessageText.map(el => el.textContent).join(" ");
557+
}
558+
559+
return this.valueStateText;
560+
}
561+
546562
get ariaInvalid() {
547563
return this.valueState === "Error" ? "true" : undefined;
548564
}

packages/main/src/themes/TextArea.css

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
@import "./InvisibleTextStyles.css";
2+
13
:host(:not([hidden])) {
24
display: inline-block;
35
}

0 commit comments

Comments
 (0)