1 import { randomStr } from "@utils/helpers";
2 import { Component, linkEvent } from "inferno";
3 import { CommentSortType } from "lemmy-js-client";
4 import { relTags, sortingHelpUrl } from "../../config";
5 import { I18NextService } from "../../services";
6 import { Icon } from "./icon";
8 interface CommentSortSelectProps {
10 onChange?(val: CommentSortType): any;
13 interface CommentSortSelectState {
14 sort: CommentSortType;
17 export class CommentSortSelect extends Component<
18 CommentSortSelectProps,
19 CommentSortSelectState
21 private id = `sort-select-${randomStr()}`;
22 state: CommentSortSelectState = {
23 sort: this.props.sort,
26 constructor(props: any, context: any) {
27 super(props, context);
30 static getDerivedStateFromProps(props: any): CommentSortSelectState {
42 value={this.state.sort}
43 onChange={linkEvent(this, this.handleSortChange)}
44 className="sort-select form-select d-inline-block w-auto me-2 mb-2"
45 aria-label={I18NextService.i18n.t("sort_type")}
47 <option disabled aria-hidden="true">
48 {I18NextService.i18n.t("sort_type")}
50 <option value={"Hot"}>{I18NextService.i18n.t("hot")}</option>,
51 <option value={"Controversial"}>
52 {I18NextService.i18n.t("controversial")}
54 <option value={"Top"}>{I18NextService.i18n.t("top")}</option>,
55 <option value={"New"}>{I18NextService.i18n.t("new")}</option>
56 <option value={"Old"}>{I18NextService.i18n.t("old")}</option>
59 className="sort-select-help text-muted"
62 title={I18NextService.i18n.t("sorting_help")}
64 <Icon icon="help-circle" classes="icon-inline" />
70 handleSortChange(i: CommentSortSelect, event: any) {
71 i.props.onChange?.(event.target.value);