mirror of
				https://github.com/zulip/zulip.git
				synced 2025-11-04 05:53:43 +00:00 
			
		
		
		
	This commit prepares the frontend code to be consumed by webpack. It is a hack: In theory, modules should be declaring and importing the modules they depend on and the globals they expose directly. However, that requires significant per-module work, which we don't really want to block moving our toolchain to webpack on. So we expose the modules by setting window.varName = varName; as needed in the js files.
		
			
				
	
	
		
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
var user_search = function (opts) {
 | 
						|
    // This is mostly view code to manage the user search widget
 | 
						|
    // above the buddy list.  We rely on other code to manage the
 | 
						|
    // details of populating the list when we change.
 | 
						|
 | 
						|
    var self = {};
 | 
						|
 | 
						|
    var $widget = $('#user-list .input-append').expectOne();
 | 
						|
    var $input = $('.user-list-filter').expectOne();
 | 
						|
 | 
						|
    self.input_field = function () {
 | 
						|
        return $input;
 | 
						|
    };
 | 
						|
 | 
						|
    self.text = function () {
 | 
						|
        return $input.val().trim();
 | 
						|
    };
 | 
						|
 | 
						|
    self.searching = function () {
 | 
						|
        return $input.is(':focus');
 | 
						|
    };
 | 
						|
 | 
						|
    self.empty = function () {
 | 
						|
        return self.text() === '';
 | 
						|
    };
 | 
						|
 | 
						|
    self.clear_search = function () {
 | 
						|
        if (self.empty()) {
 | 
						|
            self.close_widget();
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $input.val('');
 | 
						|
        $input.blur();
 | 
						|
        opts.reset_items();
 | 
						|
    };
 | 
						|
 | 
						|
    self.escape_search = function () {
 | 
						|
        if (self.empty()) {
 | 
						|
            self.close_widget();
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        $input.val('');
 | 
						|
        opts.update_list();
 | 
						|
    };
 | 
						|
 | 
						|
    self.hide_widget = function () {
 | 
						|
        $widget.addClass('notdisplayed');
 | 
						|
    };
 | 
						|
 | 
						|
    self.show_widget = function () {
 | 
						|
        $widget.removeClass('notdisplayed');
 | 
						|
    };
 | 
						|
 | 
						|
    self.widget_shown = function () {
 | 
						|
        return $widget.hasClass('notdisplayed');
 | 
						|
    };
 | 
						|
 | 
						|
    self.clear_and_hide_search = function () {
 | 
						|
        if (!self.empty()) {
 | 
						|
            $input.val('');
 | 
						|
            opts.update_list();
 | 
						|
        }
 | 
						|
        self.close_widget();
 | 
						|
    };
 | 
						|
 | 
						|
    self.close_widget = function () {
 | 
						|
        $input.blur();
 | 
						|
        self.hide_widget();
 | 
						|
        opts.reset_items();
 | 
						|
    };
 | 
						|
 | 
						|
    self.expand_column = function () {
 | 
						|
        var column = $input.closest(".app-main [class^='column-']");
 | 
						|
        if (!column.hasClass("expanded")) {
 | 
						|
            popovers.hide_all();
 | 
						|
            if (column.hasClass('column-left')) {
 | 
						|
                stream_popover.show_streamlist_sidebar();
 | 
						|
            } else if (column.hasClass('column-right')) {
 | 
						|
                popovers.show_userlist_sidebar();
 | 
						|
            }
 | 
						|
        }
 | 
						|
    };
 | 
						|
 | 
						|
    self.initiate_search = function () {
 | 
						|
        self.expand_column();
 | 
						|
        self.show_widget();
 | 
						|
        $input.focus();
 | 
						|
    };
 | 
						|
 | 
						|
    self.toggle_filter_displayed = function () {
 | 
						|
        if (self.widget_shown()) {
 | 
						|
            self.initiate_search();
 | 
						|
        } else {
 | 
						|
            self.clear_and_hide_search();
 | 
						|
        }
 | 
						|
    };
 | 
						|
 | 
						|
    function on_focus(e) {
 | 
						|
        opts.on_focus();
 | 
						|
        e.stopPropagation();
 | 
						|
    }
 | 
						|
 | 
						|
    $('#clear_search_people_button').on('click', self.clear_search);
 | 
						|
    $('#userlist-header').on('click', self.toggle_filter_displayed);
 | 
						|
 | 
						|
    $input.on('input', opts.update_list);
 | 
						|
    $input.on('focus', on_focus);
 | 
						|
 | 
						|
    return self;
 | 
						|
};
 | 
						|
 | 
						|
if (typeof module !== 'undefined') {
 | 
						|
    module.exports = user_search;
 | 
						|
}
 | 
						|
window.user_search = user_search;
 |