settings: Use new pills UI for DM permission settings.

We now use pills UI for direct_message_initiator_group
and direct_message_permission_group setting.
This commit is contained in:
Sahil Batra
2024-10-29 18:59:02 +05:30
committed by Tim Abbott
parent 5fbc46f82c
commit dce229ba17
11 changed files with 96 additions and 53 deletions

View File

@@ -484,8 +484,6 @@ const dropdown_widget_map = new Map<string, DropdownWidget | null>([
["realm_can_delete_own_message_group", null],
["realm_can_move_messages_between_channels_group", null],
["realm_can_move_messages_between_topics_group", null],
["realm_direct_message_initiator_group", null],
["realm_direct_message_permission_group", null],
]);
export function get_widget_for_dropdown_list_settings(
@@ -803,15 +801,15 @@ export function check_realm_settings_property_changed(elem: HTMLElement): boolea
case "realm_can_delete_own_message_group":
case "realm_can_move_messages_between_channels_group":
case "realm_can_move_messages_between_topics_group":
case "realm_direct_message_initiator_group":
case "realm_direct_message_permission_group":
proposed_val = get_dropdown_list_widget_setting_value($elem);
break;
case "realm_can_create_groups":
case "realm_can_create_public_channel_group":
case "realm_can_create_private_channel_group":
case "realm_can_manage_all_groups":
case "realm_create_multiuse_invite_group": {
case "realm_create_multiuse_invite_group":
case "realm_direct_message_initiator_group":
case "realm_direct_message_permission_group": {
const pill_widget = get_group_setting_widget(property_name);
assert(pill_widget !== null);
proposed_val = get_group_setting_widget_value(pill_widget);
@@ -1476,6 +1474,8 @@ export const group_setting_widget_map = new Map<string, GroupSettingPillContaine
["realm_can_create_private_channel_group", null],
["realm_can_manage_all_groups", null],
["realm_create_multiuse_invite_group", null],
["realm_direct_message_initiator_group", null],
["realm_direct_message_permission_group", null],
]);
export function get_group_setting_widget(setting_name: string): GroupSettingPillContainer | null {
@@ -1581,13 +1581,17 @@ type realm_group_setting_name =
| "can_create_public_channel_group"
| "can_create_private_channel_group"
| "can_manage_all_groups"
| "create_multiuse_invite_group";
| "create_multiuse_invite_group"
| "direct_message_initiator_group"
| "direct_message_permission_group";
export function create_realm_group_setting_widget({
$pill_container,
setting_name,
pill_update_callback,
}: {
$pill_container: JQuery;
setting_name: realm_group_setting_name;
pill_update_callback?: () => void;
}): void {
const pill_widget = group_setting_pill.create_pills($pill_container, setting_name, "realm");
const opts: {
@@ -1612,9 +1616,15 @@ export function create_realm_group_setting_widget({
".settings-subsection-parent",
);
pill_widget.onPillCreate(() => {
if (pill_update_callback !== undefined) {
pill_update_callback();
}
save_discard_realm_settings_widget_status_handler($save_discard_widget_container);
});
pill_widget.onPillRemove(() => {
if (pill_update_callback !== undefined) {
pill_update_callback();
}
save_discard_realm_settings_widget_status_handler($save_discard_widget_container);
});
}