@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Rework Mobile Header and Mobile Home.

Summary: Mostly finished, wanted to get it into your hands to play with. I need to remove some more dead CSS and figure out where we want to put profile/logout, but overall feels pretty good. Tested a bunch in iOS and other layouts.

Test Plan: Test Home, Maniphest, search bars, app menus.

Reviewers: epriestley, btrahan

Reviewed By: epriestley

CC: aran, Korvin, AnhNhan

Maniphest Tasks: T2809

Differential Revision: https://secure.phabricator.com/D5407

+207 -251
+12 -12
resources/sprite/manifest/menu.json
··· 4 4 "app" : { 5 5 "name" : "app", 6 6 "rule" : ".menu-icon-app", 7 - "hash" : "fc525b5b3e3ecaeda3baccc18ace5a0a" 7 + "hash" : "14cd042732abba487dc9c4135d65f2c5" 8 8 }, 9 9 "app_blue" : { 10 10 "name" : "app_blue", 11 11 "rule" : ".menu-icon-app-blue", 12 - "hash" : "b92f3961cf38ba4d95fa26d7a54031c0" 12 + "hash" : "5f9926e52a4e6fd43fc5fdd0cc5c8053" 13 13 }, 14 14 "arrow-right" : { 15 15 "name" : "arrow-right", ··· 31 31 "rule" : ".alert-notifications.message-unread .phabricator-main-menu-message-icon", 32 32 "hash" : "85d603ae4a9b8004944c6cf59da98b7d" 33 33 }, 34 - "eye" : { 35 - "name" : "eye", 36 - "rule" : ".menu-icon-eye", 37 - "hash" : "553eb617c19b74b428558e606ff9b066" 38 - }, 39 - "eye_blue" : { 40 - "name" : "eye_blue", 41 - "rule" : ".menu-icon-eye-blue", 42 - "hash" : "3ae3de9e694152bd6dbba58aebc46a45" 43 - }, 44 34 "logo" : { 45 35 "name" : "logo", 46 36 "rule" : ".phabricator-main-menu-logo-image", 47 37 "hash" : "6eadea2c3dd2ada989eba22b6769b3eb" 38 + }, 39 + "search" : { 40 + "name" : "search", 41 + "rule" : ".menu-icon-search", 42 + "hash" : "26fa1f6646d20e159bb5ed5bd125a3b9" 43 + }, 44 + "search_blue" : { 45 + "name" : "search_blue", 46 + "rule" : ".menu-icon-search-blue", 47 + "hash" : "8ddecd3b988a3ec69c2116bfd65959cb" 48 48 }, 49 49 "seen_have_unread" : { 50 50 "name" : "seen_have_unread",
resources/sprite/menu_1x/app.png

This is a binary file and will not be displayed.

resources/sprite/menu_1x/app_blue.png

This is a binary file and will not be displayed.

resources/sprite/menu_1x/search.png

This is a binary file and will not be displayed.

resources/sprite/menu_1x/search_blue.png

This is a binary file and will not be displayed.

resources/sprite/menu_2x/app.png

This is a binary file and will not be displayed.

resources/sprite/menu_2x/app_blue.png

This is a binary file and will not be displayed.

resources/sprite/menu_2x/search.png

This is a binary file and will not be displayed.

resources/sprite/menu_2x/search_blue.png

This is a binary file and will not be displayed.

+46 -46
src/__celerity_resource_map__.php
··· 534 534 ), 535 535 '/rsrc/image/sprite-menu-X2.png' => 536 536 array( 537 - 'hash' => '9f5cae08146fbe3b7e865b60c64121d1', 538 - 'uri' => '/res/9f5cae08/rsrc/image/sprite-menu-X2.png', 537 + 'hash' => '867092041ce0a62b7e50136213ca7be1', 538 + 'uri' => '/res/86709204/rsrc/image/sprite-menu-X2.png', 539 539 'disk' => '/rsrc/image/sprite-menu-X2.png', 540 540 'type' => 'png', 541 541 ), 542 542 '/rsrc/image/sprite-menu.png' => 543 543 array( 544 - 'hash' => 'cc82b64d031dafa2b2a62cc8effa62f6', 545 - 'uri' => '/res/cc82b64d/rsrc/image/sprite-menu.png', 544 + 'hash' => '21508eebdf582d7251d62bb2cd09f66d', 545 + 'uri' => '/res/21508eeb/rsrc/image/sprite-menu.png', 546 546 'disk' => '/rsrc/image/sprite-menu.png', 547 547 'type' => 'png', 548 548 ), ··· 2713 2713 ), 2714 2714 'phabricator-application-launch-view-css' => 2715 2715 array( 2716 - 'uri' => '/res/13c3d7f3/rsrc/css/application/base/phabricator-application-launch-view.css', 2716 + 'uri' => '/res/b04e66e6/rsrc/css/application/base/phabricator-application-launch-view.css', 2717 2717 'type' => 'css', 2718 2718 'requires' => 2719 2719 array( ··· 2927 2927 ), 2928 2928 'phabricator-main-menu-view' => 2929 2929 array( 2930 - 'uri' => '/res/c1a73bc2/rsrc/css/application/base/main-menu-view.css', 2930 + 'uri' => '/res/401e9389/rsrc/css/application/base/main-menu-view.css', 2931 2931 'type' => 'css', 2932 2932 'requires' => 2933 2933 array( ··· 2947 2947 ), 2948 2948 'phabricator-nav-view-css' => 2949 2949 array( 2950 - 'uri' => '/res/f3c78a53/rsrc/css/aphront/phabricator-nav-view.css', 2950 + 'uri' => '/res/0af35d12/rsrc/css/aphront/phabricator-nav-view.css', 2951 2951 'type' => 'css', 2952 2952 'requires' => 2953 2953 array( ··· 3631 3631 ), 3632 3632 'sprite-menu-css' => 3633 3633 array( 3634 - 'uri' => '/res/50bb9cc5/rsrc/css/sprite-menu.css', 3634 + 'uri' => '/res/e4e428f9/rsrc/css/sprite-menu.css', 3635 3635 'type' => 'css', 3636 3636 'requires' => 3637 3637 array( ··· 3686 3686 ), array( 3687 3687 'packages' => 3688 3688 array( 3689 - '2fc6daef' => 3689 + '8de9d42a' => 3690 3690 array( 3691 3691 'name' => 'core.pkg.css', 3692 3692 'symbols' => ··· 3728 3728 34 => 'phabricator-object-item-list-view-css', 3729 3729 35 => 'global-drag-and-drop-css', 3730 3730 ), 3731 - 'uri' => '/res/pkg/2fc6daef/core.pkg.css', 3731 + 'uri' => '/res/pkg/8de9d42a/core.pkg.css', 3732 3732 'type' => 'css', 3733 3733 ), 3734 3734 '95ceba95' => ··· 3919 3919 'reverse' => 3920 3920 array( 3921 3921 'aphront-attached-file-view-css' => 'c41b4907', 3922 - 'aphront-dialog-view-css' => '2fc6daef', 3923 - 'aphront-error-view-css' => '2fc6daef', 3924 - 'aphront-form-view-css' => '2fc6daef', 3925 - 'aphront-list-filter-view-css' => '2fc6daef', 3926 - 'aphront-pager-view-css' => '2fc6daef', 3927 - 'aphront-panel-view-css' => '2fc6daef', 3928 - 'aphront-table-view-css' => '2fc6daef', 3929 - 'aphront-tokenizer-control-css' => '2fc6daef', 3930 - 'aphront-tooltip-css' => '2fc6daef', 3931 - 'aphront-typeahead-control-css' => '2fc6daef', 3922 + 'aphront-dialog-view-css' => '8de9d42a', 3923 + 'aphront-error-view-css' => '8de9d42a', 3924 + 'aphront-form-view-css' => '8de9d42a', 3925 + 'aphront-list-filter-view-css' => '8de9d42a', 3926 + 'aphront-pager-view-css' => '8de9d42a', 3927 + 'aphront-panel-view-css' => '8de9d42a', 3928 + 'aphront-table-view-css' => '8de9d42a', 3929 + 'aphront-tokenizer-control-css' => '8de9d42a', 3930 + 'aphront-tooltip-css' => '8de9d42a', 3931 + 'aphront-typeahead-control-css' => '8de9d42a', 3932 3932 'differential-changeset-view-css' => '8aaacd1b', 3933 3933 'differential-core-view-css' => '8aaacd1b', 3934 3934 'differential-inline-comment-editor' => '322728f3', ··· 3942 3942 'differential-table-of-contents-css' => '8aaacd1b', 3943 3943 'diffusion-commit-view-css' => 'c8ce2d88', 3944 3944 'diffusion-icons-css' => 'c8ce2d88', 3945 - 'global-drag-and-drop-css' => '2fc6daef', 3945 + 'global-drag-and-drop-css' => '8de9d42a', 3946 3946 'inline-comment-summary-css' => '8aaacd1b', 3947 3947 'javelin-aphlict' => '95ceba95', 3948 3948 'javelin-behavior' => 'fe22443b', ··· 4014 4014 'javelin-util' => 'fe22443b', 4015 4015 'javelin-vector' => 'fe22443b', 4016 4016 'javelin-workflow' => 'fe22443b', 4017 - 'lightbox-attachment-css' => '2fc6daef', 4017 + 'lightbox-attachment-css' => '8de9d42a', 4018 4018 'maniphest-task-summary-css' => 'c41b4907', 4019 4019 'maniphest-transaction-detail-css' => 'c41b4907', 4020 4020 'phabricator-busy' => '95ceba95', 4021 4021 'phabricator-content-source-view-css' => '8aaacd1b', 4022 - 'phabricator-core-buttons-css' => '2fc6daef', 4023 - 'phabricator-core-css' => '2fc6daef', 4024 - 'phabricator-crumbs-view-css' => '2fc6daef', 4025 - 'phabricator-directory-css' => '2fc6daef', 4022 + 'phabricator-core-buttons-css' => '8de9d42a', 4023 + 'phabricator-core-css' => '8de9d42a', 4024 + 'phabricator-crumbs-view-css' => '8de9d42a', 4025 + 'phabricator-directory-css' => '8de9d42a', 4026 4026 'phabricator-drag-and-drop-file-upload' => '322728f3', 4027 4027 'phabricator-dropdown-menu' => '95ceba95', 4028 4028 'phabricator-file-upload' => '95ceba95', 4029 - 'phabricator-filetree-view-css' => '2fc6daef', 4030 - 'phabricator-flag-css' => '2fc6daef', 4031 - 'phabricator-form-view-css' => '2fc6daef', 4032 - 'phabricator-header-view-css' => '2fc6daef', 4033 - 'phabricator-jump-nav' => '2fc6daef', 4029 + 'phabricator-filetree-view-css' => '8de9d42a', 4030 + 'phabricator-flag-css' => '8de9d42a', 4031 + 'phabricator-form-view-css' => '8de9d42a', 4032 + 'phabricator-header-view-css' => '8de9d42a', 4033 + 'phabricator-jump-nav' => '8de9d42a', 4034 4034 'phabricator-keyboard-shortcut' => '95ceba95', 4035 4035 'phabricator-keyboard-shortcut-manager' => '95ceba95', 4036 - 'phabricator-main-menu-view' => '2fc6daef', 4036 + 'phabricator-main-menu-view' => '8de9d42a', 4037 4037 'phabricator-menu-item' => '95ceba95', 4038 - 'phabricator-nav-view-css' => '2fc6daef', 4038 + 'phabricator-nav-view-css' => '8de9d42a', 4039 4039 'phabricator-notification' => '95ceba95', 4040 - 'phabricator-notification-css' => '2fc6daef', 4041 - 'phabricator-notification-menu-css' => '2fc6daef', 4042 - 'phabricator-object-item-list-view-css' => '2fc6daef', 4040 + 'phabricator-notification-css' => '8de9d42a', 4041 + 'phabricator-notification-menu-css' => '8de9d42a', 4042 + 'phabricator-object-item-list-view-css' => '8de9d42a', 4043 4043 'phabricator-object-selector-css' => '8aaacd1b', 4044 4044 'phabricator-paste-file-upload' => '95ceba95', 4045 4045 'phabricator-prefab' => '95ceba95', 4046 4046 'phabricator-project-tag-css' => 'c41b4907', 4047 - 'phabricator-remarkup-css' => '2fc6daef', 4047 + 'phabricator-remarkup-css' => '8de9d42a', 4048 4048 'phabricator-shaped-request' => '322728f3', 4049 - 'phabricator-side-menu-view-css' => '2fc6daef', 4050 - 'phabricator-standard-page-view' => '2fc6daef', 4049 + 'phabricator-side-menu-view-css' => '8de9d42a', 4050 + 'phabricator-standard-page-view' => '8de9d42a', 4051 4051 'phabricator-textareautils' => '95ceba95', 4052 4052 'phabricator-tooltip' => '95ceba95', 4053 - 'phabricator-transaction-view-css' => '2fc6daef', 4054 - 'phabricator-zindex-css' => '2fc6daef', 4055 - 'sprite-apps-large-css' => '2fc6daef', 4056 - 'sprite-gradient-css' => '2fc6daef', 4057 - 'sprite-icon-css' => '2fc6daef', 4058 - 'sprite-menu-css' => '2fc6daef', 4059 - 'syntax-highlighting-css' => '2fc6daef', 4053 + 'phabricator-transaction-view-css' => '8de9d42a', 4054 + 'phabricator-zindex-css' => '8de9d42a', 4055 + 'sprite-apps-large-css' => '8de9d42a', 4056 + 'sprite-gradient-css' => '8de9d42a', 4057 + 'sprite-icon-css' => '8de9d42a', 4058 + 'sprite-menu-css' => '8de9d42a', 4059 + 'syntax-highlighting-css' => '8de9d42a', 4060 4060 ), 4061 4061 ));
+2 -1
src/applications/directory/controller/PhabricatorDirectoryMainController.php
··· 65 65 $nav->appendChild($content); 66 66 $nav->appendChild(new PhabricatorGlobalUploadTargetView()); 67 67 68 - return $this->buildStandardPageResponse( 68 + return $this->buildApplicationPage( 69 69 $nav, 70 70 array( 71 71 'title' => 'Phabricator', 72 + 'device' => true, 72 73 )); 73 74 } 74 75
+8 -8
src/infrastructure/celerity/CeleritySpriteGenerator.php
··· 110 110 'y' => 31, 111 111 'css' => '.phabricator-crumb-divider', 112 112 ), 113 - 'eye' => array( 113 + 'search' => array( 114 114 'x' => 24, 115 - 'y' => 20, 116 - 'css' => '.menu-icon-eye', 115 + 'y' => 24, 116 + 'css' => '.menu-icon-search', 117 117 ), 118 - 'eye_blue' => array( 118 + 'search_blue' => array( 119 119 'x' => 24, 120 - 'y' => 20, 121 - 'css' => '.menu-icon-eye-blue', 120 + 'y' => 24, 121 + 'css' => '.menu-icon-search-blue', 122 122 ), 123 123 'app' => array( 124 124 'x' => 24, 125 - 'y' => 20, 125 + 'y' => 24, 126 126 'css' => '.menu-icon-app', 127 127 ), 128 128 'app_blue' => array( 129 129 'x' => 24, 130 - 'y' => 20, 130 + 'y' => 24, 131 131 'css' => '.menu-icon-app-blue', 132 132 ), 133 133 'logo' => array(
+61 -105
src/view/page/menu/PhabricatorMainMenuView.php
··· 41 41 $header_id = celerity_generate_unique_node_id(); 42 42 $menus = array(); 43 43 $alerts = array(); 44 + $search_button = ''; 45 + $app_button = ''; 44 46 45 47 if ($user->isLoggedIn()) { 46 48 list($menu, $dropdown) = $this->renderNotificationMenu(); 47 49 $alerts[] = $menu; 48 50 $menus[] = $dropdown; 51 + $app_button = $this->renderApplicationMenuButton($header_id); 52 + $search_button = $this->renderSearchMenuButton($header_id); 49 53 } 50 54 51 - $phabricator_menu = $this->renderPhabricatorMenu(); 55 + $search_menu = $this->renderPhabricatorSearchMenu(); 52 56 53 57 if ($alerts) { 54 58 $alerts = phutil_tag( ··· 59 63 $alerts); 60 64 } 61 65 62 - $application_menu = $this->getApplicationMenu(); 63 - if ($application_menu) { 64 - $application_menu->addClass('phabricator-dark-menu'); 65 - $application_menu->addClass('phabricator-application-menu'); 66 - } 66 + $application_menu = $this->renderApplicationMenu(); 67 67 68 68 return phutil_tag( 69 69 'div', ··· 72 72 'id' => $header_id, 73 73 ), 74 74 array( 75 - $this->renderPhabricatorMenuButton($header_id), 76 - $application_menu 77 - ? $this->renderApplicationMenuButton($header_id) 78 - : null, 75 + $app_button, 76 + $search_button, 79 77 $this->renderPhabricatorLogo(), 80 78 $alerts, 81 - $phabricator_menu, 82 79 $application_menu, 80 + $search_menu, 83 81 $menus, 84 82 )); 85 83 } ··· 116 114 return $result; 117 115 } 118 116 119 - private function renderPhabricatorMenuButton($header_id) { 120 - $button_id = celerity_generate_unique_node_id(); 121 - return javelin_tag( 122 - 'a', 123 - array( 124 - 'class' => 'phabricator-main-menu-expand-button '. 125 - 'phabricator-expand-core-menu', 126 - 'sigil' => 'jx-toggle-class', 127 - 'meta' => array( 128 - 'map' => array( 129 - $header_id => 'phabricator-core-menu-expanded', 130 - $button_id => 'menu-icon-eye-blue', 131 - ), 132 - ), 133 - ), 134 - phutil_tag( 135 - 'span', 136 - array( 137 - 'class' => 'phabricator-menu-button-icon sprite-menu menu-icon-eye', 138 - 'id' => $button_id, 139 - ), 140 - '')); 141 - } 142 - 143 117 public function renderApplicationMenuButton($header_id) { 144 118 $button_id = celerity_generate_unique_node_id(); 145 119 return javelin_tag( 146 120 'a', 147 121 array( 148 122 'class' => 'phabricator-main-menu-expand-button '. 149 - 'phabricator-expand-application-menu', 123 + 'phabricator-expand-search-menu', 150 124 'sigil' => 'jx-toggle-class', 151 125 'meta' => array( 152 126 'map' => array( ··· 164 138 '')); 165 139 } 166 140 167 - private function renderPhabricatorMenu() { 141 + public function renderApplicationMenu() { 168 142 $user = $this->getUser(); 169 143 $controller = $this->getController(); 170 144 171 145 $applications = PhabricatorApplication::getAllInstalledApplications(); 172 146 173 - $core = array(); 174 - $more = array(); 175 147 $actions = array(); 176 - 177 - require_celerity_resource('sprite-apps-large-css'); 178 - 179 - $group_core = PhabricatorApplication::GROUP_CORE; 180 148 foreach ($applications as $application) { 181 149 if ($application->shouldAppearInLaunchView()) { 182 - $icon = $application->getIconName().'-light-large'; 183 - 184 - $item = id(new PhabricatorMenuItemView()) 185 - ->setName($application->getName()) 186 - ->setHref($application->getBaseURI()) 187 - ->appendChild($this->renderMenuIcon($icon)); 188 - if ($application->getApplicationGroup() == $group_core) { 189 - $core[] = $item; 190 - } else { 191 - $more[$application->getName()] = $item; 150 + $app_actions = $application->buildMainMenuItems($user, $controller); 151 + foreach ($app_actions as $action) { 152 + $actions[] = $action; 192 153 } 193 154 } 194 - 195 - $app_actions = $application->buildMainMenuItems($user, $controller); 196 - foreach ($app_actions as $action) { 197 - $actions[] = $action; 198 - } 199 155 } 200 156 201 - 202 - $view = new PhabricatorMenuView(); 203 - $view->addClass('phabricator-dark-menu'); 204 - $view->addClass('phabricator-core-menu'); 205 - 206 - $search = $this->renderSearch(); 207 - if ($search) { 208 - $view->addMenuItem($search); 209 - } 157 + $view = $this->getApplicationMenu(); 210 158 211 - $view 212 - ->newLabel(pht('Home')) 213 - ->addClass('phabricator-core-item-device'); 214 - $view->addMenuItem( 215 - id(new PhabricatorMenuItemView()) 216 - ->addClass('phabricator-core-item-device') 217 - ->setName(pht('Phabricator Home')) 218 - ->setHref('/') 219 - ->appendChild($this->renderMenuIcon('logo-light-large'))); 220 - if ($controller && $controller->getCurrentApplication()) { 221 - $application = $controller->getCurrentApplication(); 222 - $icon = $application->getIconName().'-light-large'; 223 - $view->addMenuItem( 224 - id(new PhabricatorMenuItemView()) 225 - ->addClass('phabricator-core-item-device') 226 - ->setName(pht('%s Home', $application->getName())) 227 - ->appendChild($this->renderMenuIcon($icon)) 228 - ->setHref($controller->getApplicationURI())); 159 + if (!$view) { 160 + $view = new PhabricatorMenuView(); 229 161 } 230 162 231 - if ($core) { 232 - $view->addMenuItem( 233 - id(new PhabricatorMenuItemView()) 234 - ->addClass('phabricator-core-item-device') 235 - ->setType(PhabricatorMenuItemView::TYPE_LABEL) 236 - ->setName(pht('Core Applications'))); 237 - foreach ($core as $item) { 238 - $item->addClass('phabricator-core-item-device'); 239 - $view->addMenuItem($item); 240 - } 241 - } 163 + $view->addClass('phabricator-dark-menu'); 164 + $view->addClass('phabricator-application-menu'); 242 165 243 166 if ($actions) { 244 167 $view->addMenuItem( ··· 259 182 } 260 183 } 261 184 262 - if ($more) { 185 + if ($user->isLoggedIn()) { 263 186 $view->addMenuItem( 264 187 id(new PhabricatorMenuItemView()) 265 - ->addClass('phabricator-core-item-device') 266 - ->setType(PhabricatorMenuItemView::TYPE_LABEL) 267 - ->setName(pht('More Applications'))); 268 - ksort($more); 269 - foreach ($more as $item) { 270 - $item->addClass('phabricator-core-item-device'); 271 - $view->addMenuItem($item); 272 - } 188 + ->addClass('phabricator-menu-item-type-link') 189 + ->setName(pht('Log Out')) 190 + ->setHref('/logout/') 191 + ->appendChild($this->renderMenuIcon('power-light-large'))); 273 192 } 274 193 194 + return $view; 195 + } 196 + 197 + public function renderSearchMenuButton($header_id) { 198 + $button_id = celerity_generate_unique_node_id(); 199 + return javelin_tag( 200 + 'a', 201 + array( 202 + 'class' => 'phabricator-main-menu-search-button '. 203 + 'phabricator-expand-application-menu', 204 + 'sigil' => 'jx-toggle-class', 205 + 'meta' => array( 206 + 'map' => array( 207 + $header_id => 'phabricator-search-menu-expanded', 208 + $button_id => 'menu-icon-search-blue', 209 + ), 210 + ), 211 + ), 212 + phutil_tag( 213 + 'span', 214 + array( 215 + 'class' => 'phabricator-menu-button-icon sprite-menu menu-icon-search', 216 + 'id' => $button_id, 217 + ), 218 + '')); 219 + } 220 + 221 + private function renderPhabricatorSearchMenu() { 222 + 223 + $view = new PhabricatorMenuView(); 224 + $view->addClass('phabricator-dark-menu'); 225 + $view->addClass('phabricator-search-menu'); 226 + 227 + $search = $this->renderSearch(); 228 + if ($search) { 229 + $view->addMenuItem($search); 230 + } 275 231 276 232 return $view; 277 233 }
+17 -1
webroot/rsrc/css/aphront/phabricator-nav-view.css
··· 37 37 display: block; 38 38 } 39 39 40 + .device .phabricator-side-menu-home .phabricator-nav-column-background, 41 + .device .phabricator-side-menu-home .phabricator-nav-local { 42 + display: block; 43 + } 44 + 40 45 .phabricator-nav-local { 41 46 width: 205px; 42 47 position: absolute; ··· 80 85 width: 240px; 81 86 } 82 87 83 - .device-desktop .phabricator-side-menu-home .phabricator-nav-content { 88 + .device-desktop .phabricator-side-menu-home .phabricator-nav-content, 89 + .device-tablet .phabricator-side-menu-home .phabricator-nav-content { 84 90 margin-left: 240px; 85 91 } 92 + 93 + .device-phone .phabricator-side-menu-home .phabricator-nav-content { 94 + display: none; 95 + } 96 + 97 + .device-phone .phabricator-side-menu-home .phabricator-nav-column-background, 98 + .device-phone .phabricator-side-menu-home .phabricator-nav-local { 99 + width: 100%; 100 + } 101 +
+35 -54
webroot/rsrc/css/application/base/main-menu-view.css
··· 60 60 top: 9px; 61 61 } 62 62 63 - .device .phabricator-main-menu-logo { 64 - display: none; 63 + .device-phone .phabricator-main-menu-logo { 64 + margin-left: -45px; 65 + } 66 + 67 + .device .phabricator-main-menu-logo:hover { 68 + background-color: transparent; 65 69 } 66 70 67 71 /* - Expand/Collapse Button ---------------------------------------------------- ··· 71 75 72 76 */ 73 77 74 - .phabricator-main-menu-expand-button { 75 - position: absolute; 76 - top: 7px; 77 - display: block; 78 - width: 40px; 79 - height: 28px; 80 - } 81 - 82 78 .phabricator-menu-button-icon { 83 - position: absolute; 84 79 width: 24px; 85 - height: 20px; 86 - top: 5px; 87 - left: 8px; 80 + height: 24px; 81 + float: left; 82 + margin: 10px 10px 0 5px; 88 83 } 89 84 90 - .phabricator-expand-core-menu { 91 - left: 5px; 85 + .phabricator-expand-application-menu, 86 + .phabricator-expand-search-menu { 87 + float: right; 92 88 } 93 89 94 - .phabricator-expand-application-menu { 95 - right: 5px; 96 - } 97 - 90 + .device-desktop .phabricator-main-menu-search-button, 98 91 .device-desktop .phabricator-main-menu-expand-button { 99 92 display: none; 100 93 } 101 94 102 - .device .phabricator-main-menu-expand-button { 103 - display: block; 104 - } 105 - 106 95 107 96 /* - Search -------------------------------------------------------------------- 108 97 ··· 196 185 top: 3px; 197 186 } 198 187 199 - 200 188 .phabricator-main-menu-search-target div.jx-typeahead-results { 201 189 border-radius: 4px; 202 190 box-shadow: 1px 1px 4px rgba(0, 0, 0, 0.35); ··· 247 235 248 236 */ 249 237 250 - .device .phabricator-main-menu-alerts { 251 - margin-left: 60px; 252 - } 253 - 254 238 .phabricator-main-menu-alerts { 255 239 display: inline-block; 256 240 border-radius: 15px; ··· 335 319 336 320 */ 337 321 338 - .phabricator-core-menu-icon { 339 - position: absolute; 340 - display: block; 341 - width: 28px; 342 - height: 28px; 343 - } 344 - 345 322 .phabricator-core-menu-profile-image { 346 323 background-size: 28px 28px; 347 324 } 348 325 349 - .device .phabricator-core-menu { 326 + .device .phabricator-search-menu { 350 327 display: none; 351 328 } 352 329 353 - .device .phabricator-core-menu-expanded .phabricator-core-menu { 330 + .device-desktop .phabricator-search-menu { 331 + float: right; 332 + margin-right: 110px; 333 + } 334 + 335 + .device .phabricator-search-menu-expanded .phabricator-search-menu { 354 336 display: block; 355 337 padding-top: 44px; 356 338 } ··· 361 343 line-height: 28px; 362 344 } 363 345 364 - .device .phabricator-core-menu 365 - .phabricator-menu-item-type-link .phabricator-menu-item-name { 366 - margin-left: 40px; 346 + .device .phabricator-menu-item-type-link 347 + .phabricator-core-menu-icon + .phabricator-menu-item-name { 348 + margin-left: 36px; 367 349 } 368 350 369 - .device-desktop .phabricator-core-menu { 351 + .device-desktop .phabricator-application-menu { 370 352 position: absolute; 371 353 right: 0; 372 354 top: 0; 373 355 vertical-align: top; 374 356 } 375 357 376 - .device-desktop .phabricator-core-menu .phabricator-menu-item-name { 358 + .device-desktop .phabricator-application-menu .phabricator-menu-item-name { 377 359 display: none; 378 360 } 379 361 380 - .device-desktop .phabricator-core-menu .phabricator-menu-item-view { 362 + .device-desktop .phabricator-application-menu .phabricator-menu-item-view { 381 363 display: block; 382 364 float: left; 383 365 position: relative; ··· 385 367 height: 44px; 386 368 } 387 369 388 - .device-desktop .phabricator-core-menu .phabricator-core-item-device { 370 + .device-desktop .phabricator-application-menu .phabricator-core-item-device { 389 371 display: none; 390 372 } 391 373 ··· 398 380 left: 6px; 399 381 } 400 382 401 - .device-desktop .phabricator-core-menu .phabricator-core-menu-item-profile { 402 - border-width: 0 1px; 403 - border-style: solid; 404 - border-color: #44494d; 405 - margin: 0 8px; 383 + .phabricator-core-menu-icon { 384 + position: absolute; 385 + display: block; 386 + width: 28px; 387 + height: 28px; 406 388 } 407 - 408 389 409 390 /* - Application Menu ---------------------------------------------------------- 410 391 ··· 417 398 padding-top: 44px; 418 399 } 419 400 420 - .phabricator-application-menu { 401 + .device .phabricator-application-menu, 402 + .device-desktop .phabricator-dark-menu .phabricator-menu-item-type-label { 421 403 display: none; 422 404 } 423 405 424 - .phabricator-application-menu .phabricator-menu-item-type-link 425 - .phabricator-menu-item-name { 406 + .phabricator-application-menu .phabricator-menu-item-name { 426 407 padding-left: 12px; 427 408 }
+19 -17
webroot/rsrc/css/application/base/phabricator-application-launch-view.css
··· 29 29 height: 66px; 30 30 overflow: hidden; 31 31 position: relative; 32 - 32 + border: 1px solid #000; 33 33 text-decoration: none; 34 - 35 - border: 1px solid #080909; 36 - 37 34 } 38 35 39 36 a.application-tile-full { 40 - width: 240px; 37 + width: 100%; 41 38 height: 52px; 39 + border-bottom: 1px solid #404040; 40 + border-left: none; 41 + border-right: none; 42 + } 43 + 44 + .device-phone div.phabricator-application-launch-container { 45 + display: none; 42 46 } 43 47 44 48 a.application-tile-full.application-tile-create { 45 - width: 210px; 49 + width: 88%; 46 50 height: 52px; 47 51 border-right: none; 48 52 } 49 53 50 54 .application-tile-full + .phabricator-application-launch-create { 51 - display: block; 52 55 float: right; 53 - width: 28px; 54 - border-top: 1px solid #080909; 55 - border-bottom: 1px solid #080909; 56 - border-left: 1px solid #080909; 56 + width: 12%; 57 57 height: 52px; 58 58 position: relative; 59 + border-top: 1px solid #000; 60 + border-bottom: 1px solid #404040; 61 + display: inline-block; 62 + text-align: center; 59 63 } 60 64 61 65 a.phabricator-application-launch-create:hover { 62 - background-image: url('/rsrc/image/texture/dark-menu-hover.png'); 66 + background-image: url(/res/a214a732/rsrc/image/texture/dark-menu-hover.png); 63 67 color: #fff; 64 68 text-decoration: none; 65 69 } ··· 70 74 71 75 /* The hover effect looks awful on phones/tablets when scrolling. */ 72 76 .device-desktop a.phabricator-application-launch-container:hover { 73 - background-image: url('/rsrc/image/texture/dark-menu-hover.png'); 77 + background-image: url(/res/a214a732/rsrc/image/texture/dark-menu-hover.png); 74 78 color: #fff; 75 79 } 76 80 ··· 84 88 } 85 89 86 90 .phabricator-application-create-icon { 87 - display: block; 88 - position: absolute; 89 - right: 7px; 90 - top: 20px; 91 + display: inline-block; 92 + margin: 20px auto; 91 93 width: 14px; 92 94 height: 14px; 93 95 }
+7 -7
webroot/rsrc/css/sprite-menu.css
··· 13 13 only screen and (-webkit-min-device-pixel-ratio: 1.5) { 14 14 .sprite-menu { 15 15 background-image: url(/rsrc/image/sprite-menu-X2.png); 16 - background-size: 140px 117px; 16 + background-size: 140px 121px; 17 17 } 18 18 } 19 19 ··· 31 31 } 32 32 33 33 .phabricator-crumb-divider { 34 - background-position: 0px -85px; 34 + background-position: 0px -89px; 35 35 } 36 36 37 - .menu-icon-eye { 37 + .menu-icon-search { 38 38 background-position: 0px -38px; 39 39 } 40 40 41 - .menu-icon-eye-blue { 41 + .menu-icon-search-blue { 42 42 background-position: -25px -38px; 43 43 } 44 44 45 45 .menu-icon-app { 46 - background-position: -10px -85px; 46 + background-position: -10px -89px; 47 47 } 48 48 49 49 .menu-icon-app-blue { 50 - background-position: -35px -85px; 50 + background-position: -35px -89px; 51 51 } 52 52 53 53 .phabricator-main-menu-logo-image { 54 - background-position: 0px -59px; 54 + background-position: 0px -63px; 55 55 } 56 56 57 57 .alert-notifications .phabricator-main-menu-message-icon {
webroot/rsrc/image/sprite-menu-X2.png

This is a binary file and will not be displayed.

webroot/rsrc/image/sprite-menu.png

This is a binary file and will not be displayed.