diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -10,7 +10,7 @@ 'conpherence.pkg.css' => '0b64e988', 'conpherence.pkg.js' => '6249a1cf', 'core.pkg.css' => '1afa1d13', - 'core.pkg.js' => 'a2ead3fe', + 'core.pkg.js' => '892976d4', 'darkconsole.pkg.js' => 'e7393ebb', 'differential.pkg.css' => '9535a7e6', 'differential.pkg.js' => 'ddfeb49b', @@ -533,7 +533,7 @@ 'rsrc/js/core/behavior-watch-anchor.js' => '9f36c42d', 'rsrc/js/core/behavior-workflow.js' => '0a3f3021', 'rsrc/js/core/phtize.js' => 'd254d646', - 'rsrc/js/phui/behavior-phui-dropdown-menu.js' => '1aa4c968', + 'rsrc/js/phui/behavior-phui-dropdown-menu.js' => '8744dfd1', 'rsrc/js/phui/behavior-phui-file-upload.js' => 'b003d4fb', 'rsrc/js/phui/behavior-phui-submenu.js' => 'a6f7a73b', 'rsrc/js/phui/behavior-phui-tab-group.js' => '0a0b10e9', @@ -686,7 +686,7 @@ 'javelin-behavior-phabricator-watch-anchor' => '9f36c42d', 'javelin-behavior-pholio-mock-edit' => 'bee502c8', 'javelin-behavior-pholio-mock-view' => 'fbe497e7', - 'javelin-behavior-phui-dropdown-menu' => '1aa4c968', + 'javelin-behavior-phui-dropdown-menu' => '8744dfd1', 'javelin-behavior-phui-file-upload' => 'b003d4fb', 'javelin-behavior-phui-hovercards' => 'bcaccd64', 'javelin-behavior-phui-submenu' => 'a6f7a73b', @@ -1057,12 +1057,6 @@ '19f9369b' => array( 'phui-oi-list-view-css', ), - '1aa4c968' => array( - 'javelin-behavior', - 'javelin-stratcom', - 'javelin-dom', - 'phuix-dropdown-menu', - ), '1ad0a787' => array( 'javelin-install', 'javelin-reactor', @@ -1573,6 +1567,12 @@ 'phabricator-tooltip', 'changeset-view-manager', ), + '8744dfd1' => array( + 'javelin-behavior', + 'javelin-stratcom', + 'javelin-dom', + 'phuix-dropdown-menu', + ), '88236f00' => array( 'javelin-behavior', 'phabricator-keyboard-shortcut', diff --git a/src/view/layout/PhabricatorActionView.php b/src/view/layout/PhabricatorActionView.php --- a/src/view/layout/PhabricatorActionView.php +++ b/src/view/layout/PhabricatorActionView.php @@ -173,22 +173,26 @@ ->setIcon($this->icon.$color); } - if ($this->href) { + $sigils = array(); + if ($this->workflow) { + $sigils[] = 'workflow'; + } - $sigils = array(); - if ($this->workflow) { - $sigils[] = 'workflow'; - } - if ($this->download) { - $sigils[] = 'download'; - } + if ($this->download) { + $sigils[] = 'download'; + } - if ($this->sigils) { - $sigils = array_merge($sigils, $this->sigils); - } + if ($this->submenu) { + $sigils[] = 'keep-open'; + } - $sigils = $sigils ? implode(' ', $sigils) : null; + if ($this->sigils) { + $sigils = array_merge($sigils, $this->sigils); + } + $sigils = $sigils ? implode(' ', $sigils) : null; + + if ($this->href) { if ($this->renderAsForm) { if (!$this->hasViewer()) { throw new Exception( @@ -248,6 +252,7 @@ 'span', array( 'class' => 'phabricator-action-view-item', + 'sigil' => $sigils, ), array($icon, $this->name)); } diff --git a/webroot/rsrc/js/phui/behavior-phui-dropdown-menu.js b/webroot/rsrc/js/phui/behavior-phui-dropdown-menu.js --- a/webroot/rsrc/js/phui/behavior-phui-dropdown-menu.js +++ b/webroot/rsrc/js/phui/behavior-phui-dropdown-menu.js @@ -48,7 +48,9 @@ return; } - if (JX.Stratcom.pass()) { + // If this item opens a submenu, we don't want to close the current + // menu. One submenu is "Edit Related Objects..." on mobile. + if (JX.Stratcom.hasSigil(e.getTarget(), 'keep-open')) { return; }