UX: organize topic admin menu into groups (#16489)

This commit is contained in:
Kris 2022-04-25 16:02:41 -04:00 committed by GitHub
parent 2a96bca7a1
commit 4157403308
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 65 additions and 8 deletions

View File

@ -150,6 +150,7 @@ export default createWidget("topic-admin-menu", {
action: "toggleMultiSelect",
icon: "tasks",
label: "actions.multi_select",
button_group: "topic",
});
}
@ -164,6 +165,7 @@ export default createWidget("topic-admin-menu", {
action: "deleteTopic",
icon: "far-trash-alt",
label: "actions.delete",
button_group: "topic",
});
}
@ -174,6 +176,7 @@ export default createWidget("topic-admin-menu", {
action: "recoverTopic",
icon: "undo",
label: "actions.recover",
button_group: "topic",
});
}
}
@ -186,6 +189,7 @@ export default createWidget("topic-admin-menu", {
action: "toggleClosed",
icon: "unlock",
label: "actions.open",
button_group: "topic",
});
} else {
this.addActionButton({
@ -194,6 +198,7 @@ export default createWidget("topic-admin-menu", {
action: "toggleClosed",
icon: "lock",
label: "actions.close",
button_group: "topic",
});
}
}
@ -205,6 +210,7 @@ export default createWidget("topic-admin-menu", {
action: "showTopicTimerModal",
icon: "far-clock",
label: "actions.timed_update",
button_group: "time",
});
}
@ -219,6 +225,7 @@ export default createWidget("topic-admin-menu", {
action: "showFeatureTopic",
icon: "thumbtack",
label: featured ? "actions.unpin" : "actions.pin",
button_group: "topic",
});
}
@ -230,6 +237,7 @@ export default createWidget("topic-admin-menu", {
action: "showChangeTimestamp",
icon: "calendar-alt",
label: "change_timestamp.title",
button_group: "time",
});
}
@ -239,6 +247,7 @@ export default createWidget("topic-admin-menu", {
action: "resetBumpDate",
icon: "anchor",
label: "actions.reset_bump_date",
button_group: "time",
});
}
@ -252,6 +261,7 @@ export default createWidget("topic-admin-menu", {
label: topic.get("archived")
? "actions.unarchive"
: "actions.archive",
button_group: "topic",
});
}
}
@ -263,6 +273,7 @@ export default createWidget("topic-admin-menu", {
action: "toggleVisibility",
icon: visible ? "far-eye-slash" : "far-eye",
label: visible ? "actions.invisible" : "actions.visible",
button_group: "topic",
});
}
@ -278,6 +289,7 @@ export default createWidget("topic-admin-menu", {
label: isPrivateMessage
? "actions.make_public"
: "actions.make_private",
button_group: "topic",
});
}
@ -287,6 +299,7 @@ export default createWidget("topic-admin-menu", {
action: "showTopicSlowModeUpdate",
icon: "hourglass-start",
label: "actions.slow_mode",
button_group: "time",
});
if (this.currentUser.get("staff")) {
@ -343,13 +356,31 @@ export default createWidget("topic-admin-menu", {
this.attrs,
this.state
);
return h(
"ul",
attrs.actionButtons
const actionButtons = attrs.actionButtons
.concat(extraButtons)
.filter(Boolean)
.map((b) => this.attach("admin-menu-button", b))
.filter(Boolean);
const buttonMap = actionButtons.reduce(
(prev, current) =>
prev.set(current.button_group, [
...(prev.get(current.button_group) || []),
current,
]),
new Map()
);
let combinedButtonLists = [];
for (const [group, buttons] of buttonMap.entries()) {
let buttonList = [];
buttons.forEach((button) => {
buttonList.push(this.attach("admin-menu-button", button));
});
combinedButtonLists.push(h(`ul.topic-admin-menu-${group}`, buttonList));
}
return h("ul", combinedButtonLists);
},
clickOutside() {

View File

@ -22,6 +22,32 @@
.mobile-view & {
z-index: z("modal", "popover");
}
.btn {
padding-top: 0.5em;
padding-bottom: 0.5em;
.d-icon {
font-size: var(--font-down-1);
margin-top: 1px; // vertical alignment
}
}
ul {
li {
border: none;
&:not(:last-of-type) {
// so buttons don't appear "stuck" together when multiple are highlighted
margin-bottom: 2px;
}
}
ul {
padding: 0.5em;
&:not(:last-of-type) {
border-bottom: 1px solid var(--primary-low);
}
}
}
}
.modal-body.feature-topic {

View File

@ -2835,8 +2835,8 @@ en:
unpin: "Un-Pin Topic…"
unarchive: "Unarchive Topic"
archive: "Archive Topic"
invisible: "Make Unlisted"
visible: "Make Listed"
invisible: "Unlist Topic"
visible: "List Topic"
reset_read: "Reset Read Data"
make_public: "Make Public Topic..."
make_private: "Make Personal Message"