diff --git a/stylesheets/_modules.scss b/stylesheets/_modules.scss index ac76bff19..1f8c2bd20 100644 --- a/stylesheets/_modules.scss +++ b/stylesheets/_modules.scss @@ -2614,21 +2614,19 @@ button.module-conversation-details__action-button { .module-conversation-details { &-header { - &__root, - &__root--editable { + &__root { align-items: center; - background: none; - border: none; - color: inherit; display: flex; flex-direction: column; - margin: 0; - outline: inherit; - padding: 0 0 24px 0; + margin: 0 0 24px 0; text-align: center; width: 100%; } + &__root--editable { + @include button-reset(); + } + &__root--editable { cursor: pointer; } diff --git a/ts/components/conversation/conversation-details/ConversationDetails.tsx b/ts/components/conversation/conversation-details/ConversationDetails.tsx index c1b6014ad..9c9037aa6 100644 --- a/ts/components/conversation/conversation-details/ConversationDetails.tsx +++ b/ts/components/conversation/conversation-details/ConversationDetails.tsx @@ -36,7 +36,8 @@ import { getCustomColorStyle } from '../../../util/getCustomColorStyle'; enum ModalState { NothingOpen, - EditingGroupAttributes, + EditingGroupDescription, + EditingGroupTitle, AddingGroupMembers, CustomDisappearingTimeout, } @@ -142,10 +143,12 @@ export const ConversationDetails: React.ComponentType = ({ case ModalState.NothingOpen: modalNode = undefined; break; - case ModalState.EditingGroupAttributes: + case ModalState.EditingGroupDescription: + case ModalState.EditingGroupTitle: modalNode = ( = ({ conversation={conversation} i18n={i18n} memberships={memberships} - startEditing={() => { - setModalState(ModalState.EditingGroupAttributes); + startEditing={(isGroupTitle: boolean) => { + setModalState( + isGroupTitle + ? ModalState.EditingGroupTitle + : ModalState.EditingGroupDescription + ); }} /> diff --git a/ts/components/conversation/conversation-details/ConversationDetailsHeader.tsx b/ts/components/conversation/conversation-details/ConversationDetailsHeader.tsx index e8231289d..7d8533a3b 100644 --- a/ts/components/conversation/conversation-details/ConversationDetailsHeader.tsx +++ b/ts/components/conversation/conversation-details/ConversationDetailsHeader.tsx @@ -16,7 +16,7 @@ export type Props = { conversation: ConversationType; i18n: LocalizerType; memberships: Array; - startEditing: () => void; + startEditing: (isGroupTitle: boolean) => void; }; const bem = bemGenerator('module-conversation-details-header'); @@ -58,24 +58,36 @@ export const ConversationDetailsHeader: React.ComponentType = ({
-
{subtitle}
); if (canEdit) { return ( - +
+ + +
); } diff --git a/ts/components/conversation/conversation-details/EditConversationAttributesModal.tsx b/ts/components/conversation/conversation-details/EditConversationAttributesModal.tsx index 7a754e411..c13237ac3 100644 --- a/ts/components/conversation/conversation-details/EditConversationAttributesModal.tsx +++ b/ts/components/conversation/conversation-details/EditConversationAttributesModal.tsx @@ -25,6 +25,7 @@ const TEMPORARY_AVATAR_VALUE = new ArrayBuffer(0); type PropsType = { avatarPath?: string; + focusDescription?: boolean; groupDescription?: string; i18n: LocalizerType; makeRequest: ( @@ -39,8 +40,15 @@ type PropsType = { title: string; }; +function focusRef(el: HTMLElement | null) { + if (el) { + el.focus(); + } +} + export const EditConversationAttributesModal: FunctionComponent = ({ avatarPath: externalAvatarPath, + focusDescription = false, groupDescription: externalGroupDescription = '', i18n, makeRequest, @@ -156,6 +164,7 @@ export const EditConversationAttributesModal: FunctionComponent = ({ disabled={isRequestActive} i18n={i18n} onChangeValue={setRawTitle} + ref={!focusDescription ? focusRef : undefined} value={rawTitle} /> @@ -163,6 +172,7 @@ export const EditConversationAttributesModal: FunctionComponent = ({ disabled={isRequestActive} i18n={i18n} onChangeValue={setRawGroupDescription} + ref={focusDescription ? focusRef : undefined} value={rawGroupDescription} />