zulip/static/js/compose_pm_pill.js

76 lines
2.0 KiB
JavaScript
Raw Normal View History

"use strict";
2020-08-20 21:24:06 +02:00
const people = require("./people");
const user_pill = require("./user_pill");
const util = require("./util");
exports.initialize_pill = function () {
const container = $("#private_message_recipient").parent();
const pill = input_pill.create({
container,
create_item_from_text: user_pill.create_item_from_email,
get_text_from_item: user_pill.get_email_from_item,
});
return pill;
};
exports.initialize = function () {
exports.widget = exports.initialize_pill();
exports.widget.onPillCreate(() => {
compose_actions.update_placeholder_text();
});
exports.widget.onPillRemove(() => {
compose_actions.update_placeholder_text();
});
};
exports.clear = function () {
exports.widget.clear();
};
exports.set_from_typeahead = function (person) {
// We expect person to be an object returned from people.js.
user_pill.append_person({
pill_widget: exports.widget,
person,
});
};
exports.set_from_emails = function (value) {
// value is something like "alice@example.com,bob@example.com"
exports.clear();
exports.widget.appendValue(value);
};
exports.get_user_ids = function () {
return user_pill.get_user_ids(exports.widget);
};
exports.has_unconverted_data = function () {
return user_pill.has_unconverted_data(exports.widget);
};
exports.get_user_ids_string = function () {
const user_ids = exports.get_user_ids();
const sorted_user_ids = util.sorted_ids(user_ids);
const user_ids_string = sorted_user_ids.join(",");
return user_ids_string;
};
exports.get_emails = function () {
// return something like "alice@example.com,bob@example.com"
const user_ids = exports.get_user_ids();
const emails = user_ids.map((id) => people.get_by_user_id(id).email).join(",");
return emails;
};
exports.filter_taken_users = function (persons) {
return user_pill.filter_taken_users(persons, exports.widget);
};
window.compose_pm_pill = exports;