From 85bb96dc5f1f164a0046f72640735a5dad8beb46 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?marker=20dao=20=C2=AE?= Date: Wed, 18 Sep 2024 16:42:28 +0400 Subject: [PATCH] Chat: Finalize initials rendering --- e2e/testcafe-devextreme/tests/chat/avatar.ts | 6 ++--- ...atar with initials (fluent-blue-light).png | Bin 12382 -> 0 bytes .../Avatar with initials (generic-light).png | Bin 11131 -> 0 bytes ...ar with initials (material-blue-light).png | Bin 12165 -> 0 bytes ... two word initials (fluent-blue-light).png | Bin 0 -> 12985 bytes ...with two word initials (generic-light).png | Bin 0 -> 11707 bytes ...wo word initials (material-blue-light).png | Bin 0 -> 12769 bytes .../js/__internal/ui/chat/avatar.ts | 23 ++++++++++++------ .../js/__internal/ui/chat/messagegroup.ts | 2 +- .../chatParts/avatar.markup.tests.js | 11 +++++++++ .../chatParts/avatar.tests.js | 23 ++++++++++-------- .../chatParts/messageGroup.markup.tests.js | 4 +-- .../DevExpress.ui/defaultOptions.tests.js | 2 +- 13 files changed, 46 insertions(+), 25 deletions(-) delete mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (fluent-blue-light).png delete mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (generic-light).png delete mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (material-blue-light).png create mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (fluent-blue-light).png create mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (generic-light).png create mode 100644 e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (material-blue-light).png diff --git a/e2e/testcafe-devextreme/tests/chat/avatar.ts b/e2e/testcafe-devextreme/tests/chat/avatar.ts index c563917c0036..a32a3132ce2c 100644 --- a/e2e/testcafe-devextreme/tests/chat/avatar.ts +++ b/e2e/testcafe-devextreme/tests/chat/avatar.ts @@ -11,7 +11,7 @@ fixture.disablePageReloads`ChatAvatar` test('Chat: avatar', async (t) => { const { takeScreenshot, compareResults } = createScreenshotsComparer(t); - await testScreenshot(t, takeScreenshot, 'Avatar with initials.png', { element: '#chat' }); + await testScreenshot(t, takeScreenshot, 'Avatar with two word initials.png', { element: '#chat' }); const chat = new Chat('#chat'); @@ -30,8 +30,8 @@ test('Chat: avatar', async (t) => { }).before(async () => { await appendElementTo('#container', 'div', 'chat'); - const userFirst = createUser(1, 'First'); - const userSecond = createUser(2, 'Second'); + const userFirst = createUser(1, 'First User'); + const userSecond = createUser(2, 'Second User'); const items = generateMessages(2, userFirst, userSecond, false, false, 2); diff --git a/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (fluent-blue-light).png b/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (fluent-blue-light).png deleted file mode 100644 index bdb914ccb36454449531268a3a70b54a026fca66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12382 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 diff --git a/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (generic-light).png b/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with initials (generic-light).png deleted file mode 100644 index 2238ef6b33adcd043f925b5c3c9483e9de8bb931..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11131 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 diff --git a/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (fluent-blue-light).png b/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (fluent-blue-light).png new file mode 100644 index 0000000000000000000000000000000000000000..91f3001c5051ce10a157126ff42c4ef302e81b8f GIT binary patch literal 12985 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 MC>>9h(fQ-w0L}cPWdHyG literal 0 HcmV?d00001 diff --git a/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (generic-light).png b/e2e/testcafe-devextreme/tests/chat/etalons/Avatar with two word initials (generic-light).png new file mode 100644 index 0000000000000000000000000000000000000000..53371c9ede405b43daae6d6261ff8f25572b14e5 GIT binary patch literal 11707 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 { _getDefaultOptions(): Properties { return { ...super._getDefaultOptions(), - name: '', + name: 'Unknown User', url: '', }; } @@ -52,12 +52,8 @@ class Avatar extends Widget { } _renderInitials(): void { - const { name } = this.option(); - - if (name) { - this._renderInitialsElement(); - this._updateInitials(); - } + this._renderInitialsElement(); + this._updateInitials(); } _renderImageElement(): void { @@ -101,12 +97,23 @@ class Avatar extends Widget { _getInitials(name: string | undefined): string { if (isDefined(name)) { - return String(name).charAt(0).toUpperCase(); + const splitValue = String(name).trim().split(/\s+/); + + const firstInitial = this._getFirstChar(splitValue[0]); + const secondInitial = this._getFirstChar(splitValue[1]); + + const result = `${firstInitial}${secondInitial}`; + + return result; } return ''; } + _getFirstChar(value: string | undefined): string { + return value?.charAt(0).toUpperCase() ?? ''; + } + _optionChanged(args: OptionChanged): void { const { name } = args; diff --git a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts index 0de404ac329f..1b65997867dc 100644 --- a/packages/devextreme/js/__internal/ui/chat/messagegroup.ts +++ b/packages/devextreme/js/__internal/ui/chat/messagegroup.ts @@ -116,7 +116,7 @@ class MessageGroup extends Widget { const $information = $('

') .addClass(CHAT_MESSAGEGROUP_INFORMATION_CLASS); - const authorName = author?.name ?? ''; + const authorName = author?.name ?? 'Unknown User'; const authorNameText = alignment === 'start' ? authorName : ''; $('
') diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.markup.tests.js index 2dbbff223e8e..356ba740d5e3 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.markup.tests.js @@ -42,4 +42,15 @@ QUnit.module('Avatar classes', moduleConfig, () => { assert.strictEqual(this.$element.children().first().hasClass(AVATAR_INITIALS_CLASS), true); }); + + QUnit.test('text element should be rendered if name is null, undefined or empty', function(assert) { + this.reinit({ name: null }); + assert.strictEqual(this.$element.children().first().length, 1); + + this.reinit({ name: undefined }); + assert.strictEqual(this.$element.children().first().length, 1); + + this.reinit({ name: '' }); + assert.strictEqual(this.$element.children().first().length, 1); + }); }); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.tests.js index 7eb8bf17683d..61cd9258139d 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/avatar.tests.js @@ -31,8 +31,8 @@ QUnit.module('ChatAvatar', moduleConfig, () => { assert.ok(this.instance instanceof ChatAvatar); }); - QUnit.test('should be rendered with empty value by default', function(assert) { - assert.strictEqual(this.$element.text(), ''); + QUnit.test('should be rendered with UU value by default', function(assert) { + assert.strictEqual(this.$element.text(), 'UU'); }); }); @@ -40,25 +40,28 @@ QUnit.module('ChatAvatar', moduleConfig, () => { QUnit.test('should be rendered with correct initials according passed name option value', function(assert) { this.reinit({ name: 'User name' }); - assert.strictEqual(this.$element.text(), 'U'); + assert.strictEqual(this.$element.text(), 'UN'); }); QUnit.test('name option should be updatable at runtime', function(assert) { this.instance.option('name', 'New Value'); - assert.strictEqual(this.$element.text(), 'N'); + assert.strictEqual(this.$element.text(), 'NV'); }); [ + { name: 'onewordname', expectedInitials: 'O' }, + { name: 'Three word name', expectedInitials: 'TW' }, + { name: ' New Value', expectedInitials: 'NV' }, + { name: ' New Value. ', expectedInitials: 'NV' }, + { name: '', expectedInitials: '' }, { name: 888, expectedInitials: '8' }, { name: undefined, expectedInitials: '' }, { name: null, expectedInitials: '' }, - // TODO: consider scenarios - // { name: ' New Name', expectedInitials: 'N' }, - // { name: NaN, expectedInitials: '' }, - // { name: Infinity, expectedInitials: '' }, - // { name: -Infinity, expectedInitials: '' }, - // { name: { firstName: 'name' }, expectedInitials: '' } + { name: NaN, expectedInitials: 'N' }, + { name: Infinity, expectedInitials: 'I' }, + { name: -Infinity, expectedInitials: '-' }, + { name: { firstName: 'name' }, expectedInitials: '[O' } ].forEach(({ name, expectedInitials }) => { QUnit.test(`name option is ${name}`, function(assert) { this.reinit({ name }); diff --git a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.markup.tests.js b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.markup.tests.js index 17d1e0e2079d..e40add44c29b 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.markup.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui.widgets/chatParts/messageGroup.markup.tests.js @@ -148,7 +148,7 @@ QUnit.module('MessageGroup', moduleConfig, () => { assert.strictEqual($information.length, 1); }); - QUnit.test('name element should not be rendered if autor.name property is not passed', function(assert) { + QUnit.test('name element should be rendered with correct text if autor.name property is not passed', function(assert) { this.reinit({ items: [{ author: {} }], }); @@ -156,7 +156,7 @@ QUnit.module('MessageGroup', moduleConfig, () => { const $name = this.$element.find(`.${CHAT_MESSAGEGROUP_AUTHOR_NAME_CLASS}`); assert.strictEqual($name.length, 1); - assert.strictEqual($name.text(), '', 'name text is empty'); + assert.strictEqual($name.text(), 'Unknown User', 'name text is Unknown User'); }); QUnit.test('time element should be rendered with empty text if timestamp property is not passed', function(assert) { diff --git a/packages/devextreme/testing/tests/DevExpress.ui/defaultOptions.tests.js b/packages/devextreme/testing/tests/DevExpress.ui/defaultOptions.tests.js index 84f1c3f2e311..70c14aae1e52 100644 --- a/packages/devextreme/testing/tests/DevExpress.ui/defaultOptions.tests.js +++ b/packages/devextreme/testing/tests/DevExpress.ui/defaultOptions.tests.js @@ -1354,7 +1354,7 @@ testComponentDefaults(Chat, testComponentDefaults(Avatar, {}, { - name: '', + name: 'Unknown User', url: '', } );