From 34f1eb60f4f3dc3edfa8f871bee73d308b7c4f75 Mon Sep 17 00:00:00 2001 From: AHMAD KADRI <52747422+ahmadkadri@users.noreply.github.com> Date: Mon, 6 Nov 2023 09:59:51 +0100 Subject: [PATCH] Accessibility: add validation warning on room name (#14009) feat(accessibility): add validation warning on room name --- css/_welcome_page.scss | 29 ++++++++++ .../welcome/components/WelcomePage.web.tsx | 58 +++++++++++++------ 2 files changed, 70 insertions(+), 17 deletions(-) diff --git a/css/_welcome_page.scss b/css/_welcome_page.scss index ba8334a6e0..e5ca272180 100644 --- a/css/_welcome_page.scss +++ b/css/_welcome_page.scss @@ -61,6 +61,35 @@ body.welcome-page { } + .not-allow-title-character-div { + color: #f03e3e; + background-color: #fff; + font-size: 12px; + font-weight: 600; + margin: 10px 0px 5px 0px; + text-align: $welcomePageHeaderTextAlign; + border-radius: 5px; + padding: 5px; + .not-allow-title-character-text { + float: right; + line-height: 1.9; + }; + .jitsi-icon { + margin-right: 9px; + float: left; + + + svg { + fill:#f03e3e; + + & > *:first-child { + fill: none !important; + } + } + } + + } + .insecure-room-name-warning { align-items: center; color: rgb(215, 121, 118); diff --git a/react/features/welcome/components/WelcomePage.web.tsx b/react/features/welcome/components/WelcomePage.web.tsx index 810e6758f4..4aab5dad49 100644 --- a/react/features/welcome/components/WelcomePage.web.tsx +++ b/react/features/welcome/components/WelcomePage.web.tsx @@ -35,6 +35,7 @@ class WelcomePage extends AbstractWelcomePage { _additionalCardTemplate: HTMLTemplateElement | null; _additionalContentTemplate: HTMLTemplateElement | null; _additionalToolbarContentTemplate: HTMLTemplateElement | null; + _titleHasNotAllowCharacter: boolean; /** * Default values for {@code WelcomePage} component's properties. @@ -61,6 +62,14 @@ class WelcomePage extends AbstractWelcomePage { interfaceConfig.GENERATE_ROOMNAMES_ON_WELCOME_PAGE }; + /** + * Used To display a warning massage if the title input has no allow character. + * + * @private + * @type {boolean} + */ + this._titleHasNotAllowCharacter = false; + /** * The HTML Element used as the container for additional content. Used * for directly appending the additional content template to the dom. @@ -205,7 +214,7 @@ class WelcomePage extends AbstractWelcomePage { - { showAdditionalToolbarContent + {showAdditionalToolbarContent ?
@@ -213,10 +222,10 @@ class WelcomePage extends AbstractWelcomePage { }

- { t('welcomepage.headerTitle') } + {t('welcomepage.headerTitle')}

- { t('welcomepage.headerSubtitle')} + {t('welcomepage.headerSubtitle')}
@@ -232,11 +241,11 @@ class WelcomePage extends AbstractWelcomePage { pattern = { ROOM_NAME_VALIDATE_PATTERN_STR } placeholder = { this.state.roomPlaceholder } ref = { this._setRoomInputRef } - title = { t('welcomepage.roomNameAllowedChars') } type = 'text' value = { this.state.room } />
+
- { this._renderInsecureRoomNameWarning() } + {this._titleHasNotAllowCharacter && ( +
+ + + {t('welcomepage.roomNameAllowedChars')} + +
+ )} + {this._renderInsecureRoomNameWarning()} - { _moderatedRoomServiceUrl && ( + {_moderatedRoomServiceUrl && (
{ translateToHTML( - t, 'welcomepage.moderatedMessage', { url: _moderatedRoomServiceUrl }) + t, 'welcomepage.moderatedMessage', { url: _moderatedRoomServiceUrl }) }
)} @@ -264,22 +283,22 @@ class WelcomePage extends AbstractWelcomePage {
- { this._renderTabs() } + {this._renderTabs()}
- { showAdditionalCard + {showAdditionalCard ?
- : null } + : null}
- { showAdditionalContent + {showAdditionalContent ?
- : null } + : null}
- { DISPLAY_WELCOME_FOOTER && this._renderFooter()} + {DISPLAY_WELCOME_FOOTER && this._renderFooter()}
); @@ -295,7 +314,7 @@ class WelcomePage extends AbstractWelcomePage {
- { getUnsafeRoomText(this.props.t, 'welcome') } + {getUnsafeRoomText(this.props.t, 'welcome')}
); @@ -329,6 +348,9 @@ class WelcomePage extends AbstractWelcomePage { // @ts-ignore // eslint-disable-next-line require-jsdoc _onRoomChange(event: React.ChangeEvent) { + const specialCharacters = [ '?', '&', ':', '\'', '"', '%', '#', '.' ]; + + this._titleHasNotAllowCharacter = specialCharacters.some(char => event.target.value.includes(char)); super._onRoomChange(event.target.value); } @@ -342,8 +364,10 @@ class WelcomePage extends AbstractWelcomePage { t, _deeplinkingCfg: { ios = { downloadLink: undefined }, - android = { fDroidUrl: undefined, - downloadLink: undefined } + android = { + fDroidUrl: undefined, + downloadLink: undefined + } } } = this.props;