Files
discourse-themes/themes/43_clickable_topic/javascript_discourse_api-initializers_clickable-topic-row.js

32 lines
849 B
JavaScript

import { apiInitializer } from "discourse/lib/api";
import { wantsNewWindow } from "discourse/lib/intercept-click";
export default apiInitializer((api) => {
api.registerBehaviorTransformer(
"topic-list-item-click",
({ context, next }) => {
const targetElement = context.event.target;
const topic = context.topic;
const clickTargets = [
"topic-list-data",
"link-bottom-line",
"topic-list-item",
];
if (api.container.lookup("service:site").mobileView) {
clickTargets.push("topic-item-metadata", "topic-item-stats");
}
if (clickTargets.some((t) => targetElement.classList.contains(t))) {
if (wantsNewWindow(event)) {
return true;
}
return context.navigateToTopic(topic, topic.lastUnreadUrl);
}
next();
}
);
});