discourse/app/assets/javascripts/select-kit/addon/components/topic-chooser.js

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

49 lines
1.3 KiB
JavaScript
Raw Normal View History

import { isEmpty } from "@ember/utils";
import { classNames } from "@ember-decorators/component";
import { searchForTerm } from "discourse/lib/search";
import ComboBoxComponent from "select-kit/components/combo-box";
import {
pluginApiIdentifiers,
selectKitOptions,
} from "select-kit/components/select-kit";
@classNames("topic-chooser")
@selectKitOptions({
clearable: true,
filterable: true,
filterPlaceholder: "choose_topic.title.placeholder",
additionalFilters: "",
})
@pluginApiIdentifiers("topic-chooser")
export default class TopicChooser extends ComboBoxComponent {
nameProperty = "fancy_title";
labelProperty = "title";
titleProperty = "title";
modifyComponentForRow() {
return "topic-row";
}
search(filter) {
if (isEmpty(filter) && isEmpty(this.selectKit.options.additionalFilters)) {
return [];
}
const searchParams = {};
if (!isEmpty(filter)) {
searchParams.typeFilter = "topic";
searchParams.restrictToArchetype = "regular";
searchParams.searchForId = true;
}
return searchForTerm(
`${filter} ${this.selectKit.options.additionalFilters}`,
searchParams
).then((results) => {
if (results?.posts?.length > 0) {
return results.posts.mapBy("topic");
}
});
}
}