diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -353,8 +353,8 @@ 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de', 'rsrc/js/application/conpherence/behavior-durable-column.js' => '0c404426', - 'rsrc/js/application/conpherence/behavior-menu.js' => 'f0a41b9f', - 'rsrc/js/application/conpherence/behavior-pontificate.js' => '2f6efe18', + 'rsrc/js/application/conpherence/behavior-menu.js' => 'b255d93b', + 'rsrc/js/application/conpherence/behavior-pontificate.js' => '86df5915', 'rsrc/js/application/conpherence/behavior-widget-pane.js' => '40b1ff90', 'rsrc/js/application/countdown/timer.js' => 'e4cc26b3', 'rsrc/js/application/dashboard/behavior-dashboard-async-panel.js' => '469c0d9e', @@ -557,8 +557,8 @@ 'javelin-behavior-boards-dropdown' => '0ec56e1d', 'javelin-behavior-choose-control' => '6153c708', 'javelin-behavior-config-reorder-fields' => '14a827de', - 'javelin-behavior-conpherence-menu' => 'f0a41b9f', - 'javelin-behavior-conpherence-pontificate' => '2f6efe18', + 'javelin-behavior-conpherence-menu' => 'b255d93b', + 'javelin-behavior-conpherence-pontificate' => '86df5915', 'javelin-behavior-conpherence-widget-pane' => '40b1ff90', 'javelin-behavior-countdown-timer' => 'e4cc26b3', 'javelin-behavior-dark-console' => '08883e8b', @@ -1013,13 +1013,6 @@ 'javelin-uri', 'javelin-util', ), - '2f6efe18' => array( - 'javelin-behavior', - 'javelin-dom', - 'javelin-util', - 'javelin-workflow', - 'javelin-stratcom', - ), '316b8fa1' => array( 'javelin-install', 'javelin-typeahead-source', @@ -1464,6 +1457,13 @@ '85ea0626' => array( 'javelin-install', ), + '86df5915' => array( + 'javelin-behavior', + 'javelin-dom', + 'javelin-util', + 'javelin-workflow', + 'javelin-stratcom', + ), '87cb6b51' => array( 'javelin-behavior', 'javelin-dom', @@ -1648,6 +1648,17 @@ 'javelin-dom', 'javelin-reactor-dom', ), + 'b255d93b' => array( + 'javelin-behavior', + 'javelin-dom', + 'javelin-util', + 'javelin-stratcom', + 'javelin-workflow', + 'javelin-behavior-device', + 'javelin-history', + 'javelin-vector', + 'phabricator-shaped-request', + ), 'b2b4fbaf' => array( 'javelin-behavior', 'javelin-dom', @@ -1882,17 +1893,6 @@ 'javelin-install', 'javelin-util', ), - 'f0a41b9f' => array( - 'javelin-behavior', - 'javelin-dom', - 'javelin-util', - 'javelin-stratcom', - 'javelin-workflow', - 'javelin-behavior-device', - 'javelin-history', - 'javelin-vector', - 'phabricator-shaped-request', - ), 'f2441746' => array( 'javelin-dom', 'javelin-util', diff --git a/webroot/rsrc/js/application/conpherence/behavior-menu.js b/webroot/rsrc/js/application/conpherence/behavior-menu.js --- a/webroot/rsrc/js/application/conpherence/behavior-menu.js +++ b/webroot/rsrc/js/application/conpherence/behavior-menu.js @@ -57,14 +57,6 @@ /** * Selecting threads */ - JX.Stratcom.listen( - 'conpherence-selectthread', - null, - function (e) { - selectThreadByID(e.getData().id); - } - ); - function selectThreadByID(id, update_page_data) { var thread = JX.$(id); selectThread(thread, update_page_data); @@ -134,6 +126,7 @@ .start(); } else if (config.hasThread) { _scrollMessageWindow(); + _focusTextarea(); } else { didRedrawThread(); } @@ -269,22 +262,34 @@ * - notably when the widget selector is used to invoke the message pane. * The following three functions get 'er done. */ - function didRedrawThread(build_device_widget_selector) { - _scrollMessageWindow(); - JX.Stratcom.invoke( - 'conpherence-did-redraw-thread', - null, - { - widget : getDefaultWidget(), - threadID : _thread.selected, - buildDeviceWidgetSelector : build_device_widget_selector - }); + function didRedrawThread(build_device_widget_selector) { + _scrollMessageWindow(); + _focusTextarea(); + JX.Stratcom.invoke( + 'conpherence-did-redraw-thread', + null, + { + widget : getDefaultWidget(), + threadID : _thread.selected, + buildDeviceWidgetSelector : build_device_widget_selector + }); } function _scrollMessageWindow() { var root = JX.DOM.find(document, 'div', 'conpherence-layout'); var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages'); messages_root.scrollTop = messages_root.scrollHeight; } + function _focusTextarea() { + var root = JX.DOM.find(document, 'div', 'conpherence-layout'); + var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); + var textarea = JX.DOM.find(form_root, 'textarea'); + // We may have a draft so do this JS trick so we end up focused at the + // end of the draft. + var textarea_value = textarea.value; + textarea.value = ''; + JX.DOM.focus(textarea); + textarea.value = textarea_value; + } JX.Stratcom.listen( 'conpherence-redraw-thread', null, @@ -334,11 +339,7 @@ JX.$(r.conpherence_phid + '-nav-item'), JX.$H(r.nav_item) ); - JX.Stratcom.invoke( - 'conpherence-selectthread', - null, - { id : r.conpherence_phid + '-nav-item' } - ); + selectThreadByID(r.conpherence_phid + '-nav-item'); } catch (ex) { // Ignore; this view may not have a menu. } @@ -514,11 +515,7 @@ menu_root.scrollTop += scroll_y; if (reselect_id) { - JX.Stratcom.invoke( - 'conpherence-selectthread', - null, - { id : reselect_id } - ); + selectThreadByID(reselect_id); } }; diff --git a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js --- a/webroot/rsrc/js/application/conpherence/behavior-pontificate.js +++ b/webroot/rsrc/js/application/conpherence/behavior-pontificate.js @@ -142,13 +142,9 @@ var textarea = JX.DOM.find(form, 'textarea'); textarea.value = ''; - JX.Stratcom.invoke( - 'conpherence-selectthread', - null, - { id : r.conpherence_phid + '-nav-item' } - ); - JX.DOM.alterClass(form_root, 'loading', false); + + setTimeout(function() { JX.DOM.focus(textarea); }, 100); })); sync_workflow(workflow, get_thread_data());