mirror of
https://github.com/zulip/zulip.git
synced 2025-11-02 04:53:36 +00:00
user_pills: Extract generic functions for typeahead and pill creation.
This refactoring make it easier to use our user pill typeahead logic in other parts of the app. Two commits by Yashasvhi squashed together by Tim.
This commit is contained in:
committed by
Tim Abbott
parent
8bf80f699f
commit
958040b1fc
@@ -118,7 +118,7 @@ run_test('populate_user_groups', () => {
|
||||
return noop;
|
||||
}
|
||||
assert.equal(user_id, 4);
|
||||
blueslip.set_test_data('warn', 'Unknown user ID 4 in members of user group Mobile');
|
||||
blueslip.set_test_data('warn', 'Undefined user in function append_user');
|
||||
get_person_from_user_id_called = true;
|
||||
};
|
||||
|
||||
|
||||
@@ -38,32 +38,16 @@ exports.populate_user_groups = function () {
|
||||
},
|
||||
}));
|
||||
var pill_container = $('.pill-container[data-group-pills="' + data.name + '"]');
|
||||
var pills = input_pill.create({
|
||||
container: pill_container,
|
||||
create_item_from_text: user_pill.create_item_from_email,
|
||||
get_text_from_item: user_pill.get_email_from_item,
|
||||
});
|
||||
var pills = user_pill.create_pills(pill_container);
|
||||
|
||||
function get_pill_user_ids() {
|
||||
return user_pill.get_user_ids(pills);
|
||||
}
|
||||
|
||||
function append_user(user) {
|
||||
user_pill.append_person({
|
||||
pill_widget: pills,
|
||||
person: user,
|
||||
});
|
||||
}
|
||||
|
||||
var userg = $('div.user-group[id="' + data.id + '"]');
|
||||
data.members.keys().forEach(function (user_id) {
|
||||
var user = people.get_person_from_user_id(user_id);
|
||||
|
||||
if (user) {
|
||||
append_user(user);
|
||||
} else {
|
||||
blueslip.warn('Unknown user ID ' + user_id + ' in members of user group ' + data.name);
|
||||
}
|
||||
user_pill.append_user(user, pills);
|
||||
});
|
||||
|
||||
function update_membership(group_id) {
|
||||
@@ -229,37 +213,9 @@ exports.populate_user_groups = function () {
|
||||
});
|
||||
|
||||
var input = pill_container.children('.input');
|
||||
(function set_up_typeahead() {
|
||||
if (!exports.can_edit(data.id)) {
|
||||
return;
|
||||
}
|
||||
input.typeahead({
|
||||
items: 5,
|
||||
fixed: true,
|
||||
dropup: true,
|
||||
source: function () {
|
||||
return user_pill.typeahead_source(pills);
|
||||
},
|
||||
highlighter: function (item) {
|
||||
return typeahead_helper.render_person(item);
|
||||
},
|
||||
matcher: function (item) {
|
||||
var query = this.query.toLowerCase();
|
||||
return (item.email.toLowerCase().indexOf(query) !== -1
|
||||
|| item.full_name.toLowerCase().indexOf(query) !== -1);
|
||||
},
|
||||
sorter: function (matches) {
|
||||
return typeahead_helper.sort_recipientbox_typeahead(
|
||||
this.query, matches, "");
|
||||
},
|
||||
updater: function (user) {
|
||||
append_user(user);
|
||||
input.focus();
|
||||
update_cancel_button();
|
||||
},
|
||||
stopAdvance: true,
|
||||
});
|
||||
}());
|
||||
if (exports.can_edit(data.id)) {
|
||||
user_pill.set_up_typeahead_on_pills(input, pills, update_cancel_button);
|
||||
}
|
||||
|
||||
(function pill_remove() {
|
||||
if (!exports.can_edit(data.id)) {
|
||||
|
||||
@@ -82,6 +82,55 @@ exports.typeahead_source = function (pill_widget) {
|
||||
return items;
|
||||
};
|
||||
|
||||
exports.append_user = function (user, pills) {
|
||||
if (user) {
|
||||
exports.append_person({
|
||||
pill_widget: pills,
|
||||
person: user,
|
||||
});
|
||||
} else {
|
||||
blueslip.warn('Undefined user in function append_user');
|
||||
}
|
||||
};
|
||||
|
||||
exports.create_pills = function (pill_container) {
|
||||
var pills = input_pill.create({
|
||||
container: pill_container,
|
||||
create_item_from_text: exports.create_item_from_email,
|
||||
get_text_from_item: exports.get_email_from_item,
|
||||
});
|
||||
return pills;
|
||||
};
|
||||
|
||||
exports.set_up_typeahead_on_pills = function (input, pills, update_func) {
|
||||
input.typeahead({
|
||||
items: 5,
|
||||
fixed: true,
|
||||
dropup: true,
|
||||
source: function () {
|
||||
return exports.typeahead_source(pills);
|
||||
},
|
||||
highlighter: function (item) {
|
||||
return typeahead_helper.render_person(item);
|
||||
},
|
||||
matcher: function (item) {
|
||||
var query = this.query.toLowerCase();
|
||||
return (item.email.toLowerCase().indexOf(query) !== -1
|
||||
|| item.full_name.toLowerCase().indexOf(query) !== -1);
|
||||
},
|
||||
sorter: function (matches) {
|
||||
return typeahead_helper.sort_recipientbox_typeahead(
|
||||
this.query, matches, "");
|
||||
},
|
||||
updater: function (user) {
|
||||
exports.append_user(user, pills);
|
||||
input.focus();
|
||||
update_func();
|
||||
},
|
||||
stopAdvance: true,
|
||||
});
|
||||
};
|
||||
|
||||
return exports;
|
||||
}());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user