UX: update for new core tag separator

This commit is contained in:
awesomerobot 2025-03-07 14:29:36 -05:00
parent 6a83db6a46
commit e51ed45f25
1 changed files with 46 additions and 21 deletions

View File

@ -23,6 +23,7 @@ import BulkActionsAssignUser from "../components/bulk-actions/bulk-assign-user";
import EditTopicAssignments from "../components/modal/edit-topic-assignments"; import EditTopicAssignments from "../components/modal/edit-topic-assignments";
import TopicLevelAssignMenu from "../components/topic-level-assign-menu"; import TopicLevelAssignMenu from "../components/topic-level-assign-menu";
import { extendTopicModel } from "../models/topic"; import { extendTopicModel } from "../models/topic";
import { applyValueTransformer } from "discourse/lib/transformer";
const DEPENDENT_KEYS = [ const DEPENDENT_KEYS = [
"topic.assigned_to_user", "topic.assigned_to_user",
@ -467,28 +468,52 @@ function initialize(api) {
.filter(({ assignee }) => assignee) .filter(({ assignee }) => assignee)
.flat(); .flat();
if (assignedTo) { if (!assignedTo) {
return assignedTo return "";
.map(({ assignee, note }) => {
let assignedPath;
if (assignee.assignedToPostId) {
assignedPath = `/p/${assignee.assignedToPostId}`;
} else {
assignedPath = `/t/${topic.id}`;
}
const icon = iconHTML(assignee.username ? "user-plus" : "group-plus");
const name = assignee.username || assignee.name;
const tagName = params.tagName || "a";
const href =
tagName === "a"
? `href="${getURL(assignedPath)}" data-auto-route="true"`
: "";
return `<${tagName} class="assigned-to discourse-tag simple" ${href}>${icon}<span title="${escapeExpression(
note
)}">${name}</span></${tagName}>`;
})
.join("");
} }
const createTagHtml = ({ assignee, note }) => {
let assignedPath;
if (assignee.assignedToPostId) {
assignedPath = `/p/${assignee.assignedToPostId}`;
} else {
assignedPath = `/t/${topic.id}`;
}
const icon = iconHTML(assignee.username ? "user-plus" : "group-plus");
const name = assignee.username || assignee.name;
const tagName = params.tagName || "a";
const href =
tagName === "a"
? `href="${getURL(assignedPath)}" data-auto-route="true"`
: "";
return `<${tagName} class="assigned-to discourse-tag simple" ${href}>${icon}<span title="${escapeExpression(
note
)}">${name}</span></${tagName}>`;
};
// is there's one assignment just return the tag
if (assignedTo.length === 1) {
return createTagHtml(assignedTo[0]);
}
// join multiple assignments with a separator
let result = "";
assignedTo.forEach((assignment, index) => {
result += createTagHtml(assignment);
// add separator if not the last tag
if (index < assignedTo.length - 1) {
const separator = applyValueTransformer("tag-separator", ",", {
topic,
index,
});
result += `<span class="discourse-tags__tag-separator">${separator}</span>`;
}
});
return result;
}); });
api.createWidget("assigned-to-post", { api.createWidget("assigned-to-post", {