Files
zulip/static/js/user_status_ui.js
Alexandra Ciobica 8aa982f7ba user status: Add "clear message (x)" button for status message input.
This adds the same "x" button as we have in "stream search" or "people
search" to the user status modal.

The button is shown if someone types something, or if the status
message was already set (meaning there was already a value in the
input field). If the input field is empty, the button is not visible.

This fixes the follow-up comments from #12179.
2019-05-01 16:36:45 -07:00

107 lines
2.9 KiB
JavaScript

var user_status_ui = (function () {
var exports = {};
exports.input_field = function () {
return $('.user_status_overlay input.user_status');
};
exports.submit_button = function () {
return $('.user_status_overlay .set_user_status');
};
exports.open_overlay = function () {
var overlay = $(".user_status_overlay");
overlays.open_overlay({
name: 'user_status_overlay',
overlay: overlay,
on_close: function () {},
});
var user_id = people.my_current_user_id();
var old_status_text = user_status.get_status_text(user_id);
var field = exports.input_field();
field.val(old_status_text);
field.select();
field.focus();
exports.toggle_clear_message_button();
var button = exports.submit_button();
button.attr('disabled', true);
};
exports.close_overlay = function () {
overlays.close_overlay('user_status_overlay');
};
exports.submit_new_status = function () {
var user_id = people.my_current_user_id();
var old_status_text = user_status.get_status_text(user_id) || '';
old_status_text = old_status_text.trim();
var new_status_text = exports.input_field().val().trim();
if (old_status_text === new_status_text) {
exports.close_overlay();
return;
}
user_status.server_update({
status_text: new_status_text,
success: function () {
exports.close_overlay();
},
});
};
exports.update_button = function () {
var user_id = people.my_current_user_id();
var old_status_text = user_status.get_status_text(user_id) || '';
old_status_text = old_status_text.trim();
var new_status_text = exports.input_field().val().trim();
var button = exports.submit_button();
if (old_status_text === new_status_text) {
button.attr('disabled', true);
} else {
button.attr('disabled', false);
}
};
exports.toggle_clear_message_button = function () {
if (exports.input_field().val() !== '') {
$('#clear_status_message_button').prop('disabled', false);
} else {
$('#clear_status_message_button').prop('disabled', true);
}
};
exports.clear_message = function () {
var field = exports.input_field();
field.val('');
$('#clear_status_message_button').prop('disabled', true);
};
exports.initialize = function () {
$('body').on('click', '.user_status_overlay .set_user_status', function () {
exports.submit_new_status();
});
$('body').on('keyup', '.user_status_overlay input.user_status', function () {
exports.update_button();
exports.toggle_clear_message_button();
});
$('#clear_status_message_button').on('click', function () {
exports.clear_message();
exports.update_button();
});
};
return exports;
}());
if (typeof module !== 'undefined') {
module.exports = user_status_ui;
}
window.user_status_ui = user_status_ui;