Skip to content

Commit 50a6bb7

Browse files
authored
fix(aria-describer): remove unsafe !.s in aria-describer (#7011)
1 parent dfe01f2 commit 50a6bb7

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/cdk/a11y/aria-describer.ts

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export class AriaDescriber {
5353
* message element.
5454
*/
5555
describe(hostElement: Element, message: string) {
56-
if (!this._platform.isBrowser || !`${message}`.trim()) { return; }
56+
if (!this._platform.isBrowser || !message.trim()) { return; }
5757

5858
if (!messageRegistry.has(message)) {
5959
createMessageElement(message);
@@ -66,19 +66,20 @@ export class AriaDescriber {
6666

6767
/** Removes the host element's aria-describedby reference to the message element. */
6868
removeDescription(hostElement: Element, message: string) {
69-
if (!this._platform.isBrowser || !`${message}`.trim()) {
69+
if (!this._platform.isBrowser || !message.trim()) {
7070
return;
7171
}
7272

7373
if (isElementDescribedByMessage(hostElement, message)) {
7474
removeMessageReference(hostElement, message);
7575
}
7676

77-
if (messageRegistry.get(message)!.referenceCount === 0) {
77+
const registeredMessage = messageRegistry.get(message);
78+
if (registeredMessage && registeredMessage.referenceCount === 0) {
7879
deleteMessageElement(message);
7980
}
8081

81-
if (messagesContainer!.childNodes.length === 0) {
82+
if (messagesContainer && messagesContainer.childNodes.length === 0) {
8283
deleteMessagesContainer();
8384
}
8485
}
@@ -118,8 +119,11 @@ function createMessageElement(message: string) {
118119

119120
/** Deletes the message element from the global messages container. */
120121
function deleteMessageElement(message: string) {
121-
const messageElement = messageRegistry.get(message)!.messageElement;
122-
messagesContainer!.removeChild(messageElement);
122+
const registeredMessage = messageRegistry.get(message);
123+
const messageElement = registeredMessage && registeredMessage.messageElement;
124+
if (messagesContainer && messageElement) {
125+
messagesContainer.removeChild(messageElement);
126+
}
123127
messageRegistry.delete(message);
124128
}
125129

@@ -174,11 +178,12 @@ function removeMessageReference(element: Element, message: string) {
174178
}
175179

176180
/** Returns true if the element has been described by the provided message ID. */
177-
function isElementDescribedByMessage(element: Element, message: string) {
181+
function isElementDescribedByMessage(element: Element, message: string): boolean {
178182
const referenceIds = getAriaReferenceIds(element, 'aria-describedby');
179-
const messageId = messageRegistry.get(message)!.messageElement.id;
183+
const registeredMessage = messageRegistry.get(message);
184+
const messageId = registeredMessage && registeredMessage.messageElement.id;
180185

181-
return referenceIds.indexOf(messageId) != -1;
186+
return !!messageId && referenceIds.indexOf(messageId) != -1;
182187
}
183188

184189
/** @docs-private */

0 commit comments

Comments
 (0)