fix: Fix some more private message form stuff

This commit is contained in:
Jay Sitter 2023-06-23 23:38:39 -04:00
parent b231fd1e5b
commit 7145e0be27
3 changed files with 33 additions and 17 deletions

View file

@ -23,15 +23,27 @@ import NavigationPrompt from "./navigation-prompt";
import ProgressBar from "./progress-bar"; import ProgressBar from "./progress-bar";
interface MarkdownTextAreaProps { interface MarkdownTextAreaProps {
/**
* Initial content inside the textarea
*/
initialContent?: string; initialContent?: string;
/**
* Numerical ID of the language to select in dropdown
*/
initialLanguageId?: number; initialLanguageId?: number;
placeholder?: string; placeholder?: string;
buttonTitle?: string; buttonTitle?: string;
maxLength?: number; maxLength?: number;
/**
* Whether this form is for a reply to a Private Message
*/
replyType?: boolean; replyType?: boolean;
focus?: boolean; focus?: boolean;
disabled?: boolean; disabled?: boolean;
finished?: boolean; finished?: boolean;
/**
* Whether to show the language selector
*/
showLanguage?: boolean; showLanguage?: boolean;
hideNavigationWarnings?: boolean; hideNavigationWarnings?: boolean;
onContentChange?(val: string): void; onContentChange?(val: string): void;

View file

@ -1,6 +1,6 @@
import { myAuthRequired } from "@utils/app"; import { myAuthRequired } from "@utils/app";
import { capitalizeFirstLetter } from "@utils/helpers"; import { capitalizeFirstLetter } from "@utils/helpers";
import { Component, InfernoNode, linkEvent } from "inferno"; import { Component, InfernoNode } from "inferno";
import { T } from "inferno-i18next-dess"; import { T } from "inferno-i18next-dess";
import { import {
CreatePrivateMessage, CreatePrivateMessage,
@ -19,6 +19,7 @@ import { PersonListing } from "../person/person-listing";
interface PrivateMessageFormProps { interface PrivateMessageFormProps {
recipient: Person; recipient: Person;
privateMessageView?: PrivateMessageView; // If a pm is given, that means this is an edit privateMessageView?: PrivateMessageView; // If a pm is given, that means this is an edit
replyType?: boolean;
onCancel?(): any; onCancel?(): any;
onCreate?(form: CreatePrivateMessage): void; onCreate?(form: CreatePrivateMessage): void;
onEdit?(form: EditPrivateMessage): void; onEdit?(form: EditPrivateMessage): void;
@ -113,6 +114,8 @@ export class PrivateMessageForm extends Component<
allLanguages={[]} allLanguages={[]}
siteLanguages={[]} siteLanguages={[]}
hideNavigationWarnings hideNavigationWarnings
onReplyCancel={() => handleCancel()}
replyType={this.props.replyType}
buttonTitle={ buttonTitle={
this.props.privateMessageView this.props.privateMessageView
? capitalizeFirstLetter(I18NextService.i18n.t("save")) ? capitalizeFirstLetter(I18NextService.i18n.t("save"))
@ -121,18 +124,6 @@ export class PrivateMessageForm extends Component<
/> />
</div> </div>
</div> </div>
<div className="mb-3 d-flex justify-content-end">
{this.props.privateMessageView && (
<button
type="button"
className="btn btn-secondary w-auto"
onClick={linkEvent(this, this.handleCancel)}
>
{I18NextService.i18n.t("cancel")}
</button>
)}
</div>
</form> </form>
); );
} }

View file

@ -145,6 +145,7 @@ export class PrivateMessage extends Component<
<> <>
<li className="list-inline-item"> <li className="list-inline-item">
<button <button
type="button"
className="btn btn-link btn-animate text-muted" className="btn btn-link btn-animate text-muted"
onClick={linkEvent(this, this.handleMarkRead)} onClick={linkEvent(this, this.handleMarkRead)}
data-tippy-content={ data-tippy-content={
@ -174,6 +175,7 @@ export class PrivateMessage extends Component<
<li className="list-inline-item">{this.reportButton}</li> <li className="list-inline-item">{this.reportButton}</li>
<li className="list-inline-item"> <li className="list-inline-item">
<button <button
type="button"
className="btn btn-link btn-animate text-muted" className="btn btn-link btn-animate text-muted"
onClick={linkEvent(this, this.handleReplyClick)} onClick={linkEvent(this, this.handleReplyClick)}
data-tippy-content={I18NextService.i18n.t("reply")} data-tippy-content={I18NextService.i18n.t("reply")}
@ -188,6 +190,7 @@ export class PrivateMessage extends Component<
<> <>
<li className="list-inline-item"> <li className="list-inline-item">
<button <button
type="button"
className="btn btn-link btn-animate text-muted" className="btn btn-link btn-animate text-muted"
onClick={linkEvent(this, this.handleEditClick)} onClick={linkEvent(this, this.handleEditClick)}
data-tippy-content={I18NextService.i18n.t("edit")} data-tippy-content={I18NextService.i18n.t("edit")}
@ -198,6 +201,7 @@ export class PrivateMessage extends Component<
</li> </li>
<li className="list-inline-item"> <li className="list-inline-item">
<button <button
type="button"
className="btn btn-link btn-animate text-muted" className="btn btn-link btn-animate text-muted"
onClick={linkEvent(this, this.handleDeleteClick)} onClick={linkEvent(this, this.handleDeleteClick)}
data-tippy-content={ data-tippy-content={
@ -228,6 +232,7 @@ export class PrivateMessage extends Component<
)} )}
<li className="list-inline-item"> <li className="list-inline-item">
<button <button
type="button"
className="btn btn-link btn-animate text-muted" className="btn btn-link btn-animate text-muted"
onClick={linkEvent(this, this.handleViewSource)} onClick={linkEvent(this, this.handleViewSource)}
data-tippy-content={I18NextService.i18n.t("view_source")} data-tippy-content={I18NextService.i18n.t("view_source")}
@ -276,10 +281,17 @@ export class PrivateMessage extends Component<
</form> </form>
)} )}
{this.state.showReply && ( {this.state.showReply && (
<div className="row">
<div className="col-sm-6">
<PrivateMessageForm <PrivateMessageForm
privateMessageView={message_view}
replyType={true}
recipient={otherPerson} recipient={otherPerson}
onCreate={this.props.onCreate} onCreate={this.props.onCreate}
onCancel={this.handleReplyCancel}
/> />
</div>
</div>
)} )}
{/* A collapsed clearfix */} {/* A collapsed clearfix */}
{this.state.collapsed && <div className="row col-12"></div>} {this.state.collapsed && <div className="row col-12"></div>}
@ -290,6 +302,7 @@ export class PrivateMessage extends Component<
get reportButton() { get reportButton() {
return ( return (
<button <button
type="button"
className="btn btn-link btn-animate text-muted py-0" className="btn btn-link btn-animate text-muted py-0"
onClick={linkEvent(this, this.handleShowReportDialog)} onClick={linkEvent(this, this.handleShowReportDialog)}
data-tippy-content={I18NextService.i18n.t("show_report_dialog")} data-tippy-content={I18NextService.i18n.t("show_report_dialog")}