diff --git a/src/shared/components/common/data-type-select.tsx b/src/shared/components/common/data-type-select.tsx index 6bf0666c..a0393f67 100644 --- a/src/shared/components/common/data-type-select.tsx +++ b/src/shared/components/common/data-type-select.tsx @@ -1,3 +1,5 @@ +import { randomStr } from "@utils/helpers"; +import classNames from "classnames"; import { Component, linkEvent } from "inferno"; import { DataType } from "../../interfaces"; import { I18NextService } from "../../services"; @@ -15,6 +17,8 @@ export class DataTypeSelect extends Component< DataTypeSelectProps, DataTypeSelectState > { + private id = `listing-type-input-${randomStr()}`; + state: DataTypeSelectState = { type_: this.props.type_, }; @@ -31,33 +35,41 @@ export class DataTypeSelect extends Component< render() { return ( -
+
+ + +
diff --git a/src/shared/components/common/listing-type-select.tsx b/src/shared/components/common/listing-type-select.tsx index 9d0a1b9f..1d917dcd 100644 --- a/src/shared/components/common/listing-type-select.tsx +++ b/src/shared/components/common/listing-type-select.tsx @@ -1,4 +1,5 @@ import { randomStr } from "@utils/helpers"; +import classNames from "classnames"; import { Component, linkEvent } from "inferno"; import { ListingType } from "lemmy-js-client"; import { I18NextService, UserService } from "../../services"; @@ -38,60 +39,72 @@ export class ListingTypeSelect extends Component< render() { return ( -
+
{this.props.showSubscribed && ( - + + )} {this.props.showLocal && ( - + + )} +
diff --git a/src/shared/components/person/inbox.tsx b/src/shared/components/person/inbox.tsx index 28bb0716..bf246f64 100644 --- a/src/shared/components/person/inbox.tsx +++ b/src/shared/components/person/inbox.tsx @@ -11,8 +11,9 @@ import { setIsoData, updatePersonBlock, } from "@utils/app"; -import { capitalizeFirstLetter } from "@utils/helpers"; +import { capitalizeFirstLetter, randomStr } from "@utils/helpers"; import { RouteDataResponse } from "@utils/types"; +import classNames from "classnames"; import { Component, linkEvent } from "inferno"; import { AddAdmin, @@ -283,34 +284,41 @@ export class Inbox extends Component { } unreadOrAllRadios() { + const radioId = randomStr(); + return ( -
+
+ + +
@@ -318,62 +326,75 @@ export class Inbox extends Component { } messageTypeRadios() { + const radioId = randomStr(); + return ( -
+
+ + + + + + +
diff --git a/src/shared/components/person/profile.tsx b/src/shared/components/person/profile.tsx index 96ac3da3..39979e29 100644 --- a/src/shared/components/person/profile.tsx +++ b/src/shared/components/person/profile.tsx @@ -18,6 +18,7 @@ import { getQueryParams, getQueryString, numToSI, + randomStr, } from "@utils/helpers"; import { canMod, isAdmin, isBanned } from "@utils/roles"; import type { QueryParams } from "@utils/types"; @@ -397,7 +398,7 @@ export class Profile extends Component< get viewRadios() { return ( -
+
{this.getRadio(PersonDetailsView.Overview)} {this.getRadio(PersonDetailsView.Comments)} {this.getRadio(PersonDetailsView.Posts)} @@ -409,22 +410,27 @@ export class Profile extends Component< getRadio(view: PersonDetailsView) { const { view: urlView } = getProfileQueryParams(); const active = view === urlView; + const radioId = randomStr(); return ( - + + ); } diff --git a/src/shared/components/person/registration-applications.tsx b/src/shared/components/person/registration-applications.tsx index a26dd79e..757170f8 100644 --- a/src/shared/components/person/registration-applications.tsx +++ b/src/shared/components/person/registration-applications.tsx @@ -3,7 +3,9 @@ import { myAuthRequired, setIsoData, } from "@utils/app"; +import { randomStr } from "@utils/helpers"; import { RouteDataResponse } from "@utils/types"; +import classNames from "classnames"; import { Component, linkEvent } from "inferno"; import { ApproveRegistrationApplication, @@ -125,34 +127,41 @@ export class RegistrationApplications extends Component< } unreadOrAllRadios() { + const radioId = randomStr(); + return ( -
+
+ + +
diff --git a/src/shared/components/person/reports.tsx b/src/shared/components/person/reports.tsx index c16b17ac..d298930e 100644 --- a/src/shared/components/person/reports.tsx +++ b/src/shared/components/person/reports.tsx @@ -5,8 +5,10 @@ import { myAuthRequired, setIsoData, } from "@utils/app"; +import { randomStr } from "@utils/helpers"; import { amAdmin } from "@utils/roles"; import { RouteDataResponse } from "@utils/types"; +import classNames from "classnames"; import { Component, linkEvent } from "inferno"; import { CommentReportResponse, @@ -187,34 +189,41 @@ export class Reports extends Component { } unreadOrAllRadios() { + const radioId = randomStr(); + return ( -
+
+ + +
@@ -222,70 +231,83 @@ export class Reports extends Component { } messageTypeRadios() { + const radioId = randomStr(); + return ( -
+
+ + + + + + {amAdmin() && ( - + + )}
); diff --git a/src/shared/components/post/post.tsx b/src/shared/components/post/post.tsx index 3c0015ec..f9d35127 100644 --- a/src/shared/components/post/post.tsx +++ b/src/shared/components/post/post.tsx @@ -19,10 +19,11 @@ import { restoreScrollPosition, saveScrollPosition, } from "@utils/browser"; -import { debounce } from "@utils/helpers"; +import { debounce, randomStr } from "@utils/helpers"; import { isImage } from "@utils/media"; import { RouteDataResponse } from "@utils/types"; import autosize from "autosize"; +import classNames from "classnames"; import { Component, RefObject, createRef, linkEvent } from "inferno"; import { AddAdmin, @@ -430,80 +431,98 @@ export class Post extends Component { } sortRadios() { + const radioId = + this.state.postRes.state === "success" + ? this.state.postRes.data.post_view.post.id + : randomStr(); + return ( <> -
+
+ + + +
-
+
+