mirror of
https://github.com/zulip/zulip.git
synced 2025-11-05 06:23:38 +00:00
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.
107 lines
2.9 KiB
JavaScript
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;
|