From 501740e0ad9656c11316a35e81c348ee939c8943 Mon Sep 17 00:00:00 2001 From: Nayden Naydenov <31909318+nnaydenow@users.noreply.github.com> Date: Wed, 22 Apr 2020 12:34:33 +0300 Subject: [PATCH] feat(ui5-avatar): implement accessibility spec (#1484) --- packages/main/src/Avatar.hbs | 4 ++-- packages/main/src/Avatar.js | 34 +++++++++++++++++++++++++++++++++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/packages/main/src/Avatar.hbs b/packages/main/src/Avatar.hbs index d8196c4b6ec5..232faafab551 100644 --- a/packages/main/src/Avatar.hbs +++ b/packages/main/src/Avatar.hbs @@ -1,8 +1,8 @@
{{#if image}} - + {{else if icon}} - + {{else if initials}} {{validInitials}} {{/if}} diff --git a/packages/main/src/Avatar.js b/packages/main/src/Avatar.js index c4d1a6650cb8..5e8a44e91490 100644 --- a/packages/main/src/Avatar.js +++ b/packages/main/src/Avatar.js @@ -1,9 +1,12 @@ import UI5Element from "@ui5/webcomponents-base/dist/UI5Element.js"; import litRender from "@ui5/webcomponents-base/dist/renderer/LitRenderer.js"; +import { fetchI18nBundle, getI18nBundle } from "@ui5/webcomponents-base/dist/i18nBundle.js"; // Template import AvatarTemplate from "./generated/templates/AvatarTemplate.lit.js"; +import { AVATAR_TOOLTIP } from "./generated/i18n/i18n-defaults.js"; + // Styles import AvatarCss from "./generated/themes/Avatar.css.js"; @@ -142,6 +145,19 @@ const metadata = { type: String, defaultValue: AvatarBackgroundColor.Accent6, }, + + /** + * Defines the text alternative of the ui5-avatar. + * If not provided a default text alternative will be set, if present. + * + * @type {string} + * @defaultvalue "" + * @public + * @since 1.0.0-rc.7 + */ + accessibleName: { + type: String, + }, }, slots: /** @lends sap.ui.webcomponents.main.Avatar.prototype */ { }, @@ -173,6 +189,11 @@ const metadata = { * @public */ class Avatar extends UI5Element { + constructor() { + super(); + this.i18nBundle = getI18nBundle("@ui5/webcomponents"); + } + static get metadata() { return metadata; } @@ -190,7 +211,10 @@ class Avatar extends UI5Element { } static async onDefine() { - await Icon.define(); + await Promise.all([ + fetchI18nBundle("@ui5/webcomponents"), + Icon.define(), + ]); } get validInitials() { @@ -202,6 +226,14 @@ class Avatar extends UI5Element { return null; } + + get accessibleNameText() { + if (this.accessibleName) { + return this.accessibleName; + } + + return this.i18nBundle.getText(AVATAR_TOOLTIP) || undefined; + } } Avatar.define();