diff --git a/src/__celerity_resource_map__.php b/src/__celerity_resource_map__.php index 7ce8dad85a..1b9c89f712 100644 --- a/src/__celerity_resource_map__.php +++ b/src/__celerity_resource_map__.php @@ -434,6 +434,20 @@ celerity_register_resource_map(array( 'disk' => '/rsrc/image/loading.gif', 'type' => 'gif', ), + '/rsrc/image/loading/boating_24.gif' => + array( + 'hash' => '2cd349ded48d698ebe886ba97b2db0f7', + 'uri' => '/res/2cd349de/rsrc/image/loading/boating_24.gif', + 'disk' => '/rsrc/image/loading/boating_24.gif', + 'type' => 'gif', + ), + '/rsrc/image/loading/compass_24.gif' => + array( + 'hash' => '726c1ed4bf23446e044d6b9d28250a07', + 'uri' => '/res/726c1ed4/rsrc/image/loading/compass_24.gif', + 'disk' => '/rsrc/image/loading/compass_24.gif', + 'type' => 'gif', + ), '/rsrc/image/loading/loading_24.gif' => array( 'hash' => 'd6dcc5e6111a44fb9a160fc27b19d85c', @@ -448,6 +462,20 @@ celerity_register_resource_map(array( 'disk' => '/rsrc/image/loading/loading_48.gif', 'type' => 'gif', ), + '/rsrc/image/loading/loading_d48.gif' => + array( + 'hash' => 'c5181f5e0ac8125ad9beda73fdf18e91', + 'uri' => '/res/c5181f5e/rsrc/image/loading/loading_d48.gif', + 'disk' => '/rsrc/image/loading/loading_d48.gif', + 'type' => 'gif', + ), + '/rsrc/image/loading/loading_w24.gif' => + array( + 'hash' => '231857d68736e9bdda6bdbaaf924b8da', + 'uri' => '/res/231857d6/rsrc/image/loading/loading_w24.gif', + 'disk' => '/rsrc/image/loading/loading_w24.gif', + 'type' => 'gif', + ), '/rsrc/image/main_texture.png' => array( 'hash' => 'e34d8143384721be73ec9b7532a977ab', @@ -814,7 +842,7 @@ celerity_register_resource_map(array( ), 'aphront-form-view-css' => array( - 'uri' => '/res/98a89726/rsrc/css/aphront/form-view.css', + 'uri' => '/res/7793ddd1/rsrc/css/aphront/form-view.css', 'type' => 'css', 'requires' => array( @@ -1922,6 +1950,17 @@ celerity_register_resource_map(array( ), 'disk' => '/rsrc/js/core/behavior-autofocus.js', ), + 'javelin-behavior-phabricator-busy-example' => + array( + 'uri' => '/res/dbe12f2f/rsrc/js/application/uiexample/busy-example.js', + 'type' => 'js', + 'requires' => + array( + 0 => 'phabricator-busy', + 1 => 'javelin-behavior', + ), + 'disk' => '/rsrc/js/application/uiexample/busy-example.js', + ), 'javelin-behavior-phabricator-file-tree' => array( 'uri' => '/res/e5bf93df/rsrc/js/core/behavior-file-tree.js', @@ -2972,12 +3011,13 @@ celerity_register_resource_map(array( ), 'phabricator-busy' => array( - 'uri' => '/res/8e3f036d/rsrc/js/core/Busy.js', + 'uri' => '/res/083c11d2/rsrc/js/core/Busy.js', 'type' => 'js', 'requires' => array( 0 => 'javelin-install', 1 => 'javelin-dom', + 2 => 'javelin-fx', ), 'disk' => '/rsrc/js/core/Busy.js', ), @@ -3001,7 +3041,7 @@ celerity_register_resource_map(array( ), 'phabricator-core-css' => array( - 'uri' => '/res/dc204369/rsrc/css/core/core.css', + 'uri' => '/res/7736096e/rsrc/css/core/core.css', 'type' => 'css', 'requires' => array( @@ -4082,7 +4122,7 @@ celerity_register_resource_map(array( ), array( 'packages' => array( - 'e1a1ccff' => + '178f5351' => array( 'name' => 'core.pkg.css', 'symbols' => @@ -4130,10 +4170,10 @@ celerity_register_resource_map(array( 40 => 'phabricator-property-list-view-css', 41 => 'phabricator-tag-view-css', ), - 'uri' => '/res/pkg/e1a1ccff/core.pkg.css', + 'uri' => '/res/pkg/178f5351/core.pkg.css', 'type' => 'css', ), - 'f2ad0683' => + '0b587556' => array( 'name' => 'core.pkg.js', 'symbols' => @@ -4176,7 +4216,7 @@ celerity_register_resource_map(array( 35 => 'phabricator-hovercard', 36 => 'javelin-behavior-phabricator-hovercards', ), - 'uri' => '/res/pkg/f2ad0683/core.pkg.js', + 'uri' => '/res/pkg/0b587556/core.pkg.js', 'type' => 'js', ), '4ccfeb47' => @@ -4324,16 +4364,16 @@ celerity_register_resource_map(array( 'reverse' => array( 'aphront-attached-file-view-css' => 'adc3c36d', - 'aphront-dialog-view-css' => 'e1a1ccff', - 'aphront-error-view-css' => 'e1a1ccff', - 'aphront-form-view-css' => 'e1a1ccff', - 'aphront-list-filter-view-css' => 'e1a1ccff', - 'aphront-pager-view-css' => 'e1a1ccff', - 'aphront-panel-view-css' => 'e1a1ccff', - 'aphront-table-view-css' => 'e1a1ccff', - 'aphront-tokenizer-control-css' => 'e1a1ccff', - 'aphront-tooltip-css' => 'e1a1ccff', - 'aphront-typeahead-control-css' => 'e1a1ccff', + 'aphront-dialog-view-css' => '178f5351', + 'aphront-error-view-css' => '178f5351', + 'aphront-form-view-css' => '178f5351', + 'aphront-list-filter-view-css' => '178f5351', + 'aphront-pager-view-css' => '178f5351', + 'aphront-panel-view-css' => '178f5351', + 'aphront-table-view-css' => '178f5351', + 'aphront-tokenizer-control-css' => '178f5351', + 'aphront-tooltip-css' => '178f5351', + 'aphront-typeahead-control-css' => '178f5351', 'differential-changeset-view-css' => 'dd27a69b', 'differential-core-view-css' => 'dd27a69b', 'differential-inline-comment-editor' => '9488bb69', @@ -4347,19 +4387,19 @@ celerity_register_resource_map(array( 'differential-table-of-contents-css' => 'dd27a69b', 'diffusion-commit-view-css' => 'c8ce2d88', 'diffusion-icons-css' => 'c8ce2d88', - 'global-drag-and-drop-css' => 'e1a1ccff', + 'global-drag-and-drop-css' => '178f5351', 'inline-comment-summary-css' => 'dd27a69b', - 'javelin-aphlict' => 'f2ad0683', + 'javelin-aphlict' => '0b587556', 'javelin-behavior' => 'a9f14d76', - 'javelin-behavior-aphlict-dropdown' => 'f2ad0683', - 'javelin-behavior-aphlict-listen' => 'f2ad0683', - 'javelin-behavior-aphront-basic-tokenizer' => 'f2ad0683', + 'javelin-behavior-aphlict-dropdown' => '0b587556', + 'javelin-behavior-aphlict-listen' => '0b587556', + 'javelin-behavior-aphront-basic-tokenizer' => '0b587556', 'javelin-behavior-aphront-drag-and-drop' => '9488bb69', 'javelin-behavior-aphront-drag-and-drop-textarea' => '9488bb69', - 'javelin-behavior-aphront-form-disable-on-submit' => 'f2ad0683', + 'javelin-behavior-aphront-form-disable-on-submit' => '0b587556', 'javelin-behavior-audit-preview' => '96909266', 'javelin-behavior-dark-console' => '4ccfeb47', - 'javelin-behavior-device' => 'f2ad0683', + 'javelin-behavior-device' => '0b587556', 'javelin-behavior-differential-accept-with-errors' => '9488bb69', 'javelin-behavior-differential-add-reviewers-and-ccs' => '9488bb69', 'javelin-behavior-differential-comment-jump' => '9488bb69', @@ -4375,33 +4415,33 @@ celerity_register_resource_map(array( 'javelin-behavior-diffusion-commit-graph' => '96909266', 'javelin-behavior-diffusion-pull-lastmodified' => '96909266', 'javelin-behavior-error-log' => '4ccfeb47', - 'javelin-behavior-global-drag-and-drop' => 'f2ad0683', - 'javelin-behavior-history-install' => 'f2ad0683', - 'javelin-behavior-konami' => 'f2ad0683', - 'javelin-behavior-lightbox-attachments' => 'f2ad0683', + 'javelin-behavior-global-drag-and-drop' => '0b587556', + 'javelin-behavior-history-install' => '0b587556', + 'javelin-behavior-konami' => '0b587556', + 'javelin-behavior-lightbox-attachments' => '0b587556', 'javelin-behavior-load-blame' => '9488bb69', 'javelin-behavior-maniphest-batch-selector' => '98f64f07', 'javelin-behavior-maniphest-subpriority-editor' => '98f64f07', 'javelin-behavior-maniphest-transaction-controls' => '98f64f07', 'javelin-behavior-maniphest-transaction-expand' => '98f64f07', 'javelin-behavior-maniphest-transaction-preview' => '98f64f07', - 'javelin-behavior-phabricator-active-nav' => 'f2ad0683', - 'javelin-behavior-phabricator-autofocus' => 'f2ad0683', - 'javelin-behavior-phabricator-gesture' => 'f2ad0683', - 'javelin-behavior-phabricator-hovercards' => 'f2ad0683', - 'javelin-behavior-phabricator-keyboard-shortcuts' => 'f2ad0683', - 'javelin-behavior-phabricator-nav' => 'f2ad0683', + 'javelin-behavior-phabricator-active-nav' => '0b587556', + 'javelin-behavior-phabricator-autofocus' => '0b587556', + 'javelin-behavior-phabricator-gesture' => '0b587556', + 'javelin-behavior-phabricator-hovercards' => '0b587556', + 'javelin-behavior-phabricator-keyboard-shortcuts' => '0b587556', + 'javelin-behavior-phabricator-nav' => '0b587556', 'javelin-behavior-phabricator-object-selector' => '9488bb69', - 'javelin-behavior-phabricator-oncopy' => 'f2ad0683', - 'javelin-behavior-phabricator-remarkup-assist' => 'f2ad0683', - 'javelin-behavior-phabricator-reveal-content' => 'f2ad0683', - 'javelin-behavior-phabricator-search-typeahead' => 'f2ad0683', - 'javelin-behavior-phabricator-tooltips' => 'f2ad0683', - 'javelin-behavior-phabricator-watch-anchor' => 'f2ad0683', - 'javelin-behavior-refresh-csrf' => 'f2ad0683', + 'javelin-behavior-phabricator-oncopy' => '0b587556', + 'javelin-behavior-phabricator-remarkup-assist' => '0b587556', + 'javelin-behavior-phabricator-reveal-content' => '0b587556', + 'javelin-behavior-phabricator-search-typeahead' => '0b587556', + 'javelin-behavior-phabricator-tooltips' => '0b587556', + 'javelin-behavior-phabricator-watch-anchor' => '0b587556', + 'javelin-behavior-refresh-csrf' => '0b587556', 'javelin-behavior-repository-crossreference' => '9488bb69', - 'javelin-behavior-toggle-class' => 'f2ad0683', - 'javelin-behavior-workflow' => 'f2ad0683', + 'javelin-behavior-toggle-class' => '0b587556', + 'javelin-behavior-workflow' => '0b587556', 'javelin-dom' => 'a9f14d76', 'javelin-event' => 'a9f14d76', 'javelin-history' => 'a9f14d76', @@ -4421,55 +4461,55 @@ celerity_register_resource_map(array( 'javelin-util' => 'a9f14d76', 'javelin-vector' => 'a9f14d76', 'javelin-workflow' => 'a9f14d76', - 'lightbox-attachment-css' => 'e1a1ccff', + 'lightbox-attachment-css' => '178f5351', 'maniphest-task-summary-css' => 'adc3c36d', 'maniphest-transaction-detail-css' => 'adc3c36d', - 'phabricator-action-list-view-css' => 'e1a1ccff', - 'phabricator-application-launch-view-css' => 'e1a1ccff', - 'phabricator-busy' => 'f2ad0683', + 'phabricator-action-list-view-css' => '178f5351', + 'phabricator-application-launch-view-css' => '178f5351', + 'phabricator-busy' => '0b587556', 'phabricator-content-source-view-css' => 'dd27a69b', - 'phabricator-core-css' => 'e1a1ccff', - 'phabricator-crumbs-view-css' => 'e1a1ccff', + 'phabricator-core-css' => '178f5351', + 'phabricator-crumbs-view-css' => '178f5351', 'phabricator-drag-and-drop-file-upload' => '9488bb69', - 'phabricator-dropdown-menu' => 'f2ad0683', - 'phabricator-file-upload' => 'f2ad0683', - 'phabricator-filetree-view-css' => 'e1a1ccff', - 'phabricator-flag-css' => 'e1a1ccff', - 'phabricator-form-view-css' => 'e1a1ccff', - 'phabricator-header-view-css' => 'e1a1ccff', - 'phabricator-hovercard' => 'f2ad0683', - 'phabricator-jump-nav' => 'e1a1ccff', - 'phabricator-keyboard-shortcut' => 'f2ad0683', - 'phabricator-keyboard-shortcut-manager' => 'f2ad0683', - 'phabricator-main-menu-view' => 'e1a1ccff', - 'phabricator-menu-item' => 'f2ad0683', - 'phabricator-nav-view-css' => 'e1a1ccff', - 'phabricator-notification' => 'f2ad0683', - 'phabricator-notification-css' => 'e1a1ccff', - 'phabricator-notification-menu-css' => 'e1a1ccff', - 'phabricator-object-item-list-view-css' => 'e1a1ccff', + 'phabricator-dropdown-menu' => '0b587556', + 'phabricator-file-upload' => '0b587556', + 'phabricator-filetree-view-css' => '178f5351', + 'phabricator-flag-css' => '178f5351', + 'phabricator-form-view-css' => '178f5351', + 'phabricator-header-view-css' => '178f5351', + 'phabricator-hovercard' => '0b587556', + 'phabricator-jump-nav' => '178f5351', + 'phabricator-keyboard-shortcut' => '0b587556', + 'phabricator-keyboard-shortcut-manager' => '0b587556', + 'phabricator-main-menu-view' => '178f5351', + 'phabricator-menu-item' => '0b587556', + 'phabricator-nav-view-css' => '178f5351', + 'phabricator-notification' => '0b587556', + 'phabricator-notification-css' => '178f5351', + 'phabricator-notification-menu-css' => '178f5351', + 'phabricator-object-item-list-view-css' => '178f5351', 'phabricator-object-selector-css' => 'dd27a69b', - 'phabricator-phtize' => 'f2ad0683', - 'phabricator-prefab' => 'f2ad0683', + 'phabricator-phtize' => '0b587556', + 'phabricator-prefab' => '0b587556', 'phabricator-project-tag-css' => 'adc3c36d', - 'phabricator-property-list-view-css' => 'e1a1ccff', - 'phabricator-remarkup-css' => 'e1a1ccff', + 'phabricator-property-list-view-css' => '178f5351', + 'phabricator-remarkup-css' => '178f5351', 'phabricator-shaped-request' => '9488bb69', - 'phabricator-side-menu-view-css' => 'e1a1ccff', - 'phabricator-standard-page-view' => 'e1a1ccff', - 'phabricator-tag-view-css' => 'e1a1ccff', - 'phabricator-textareautils' => 'f2ad0683', - 'phabricator-tooltip' => 'f2ad0683', - 'phabricator-transaction-view-css' => 'e1a1ccff', - 'phabricator-zindex-css' => 'e1a1ccff', - 'phui-button-css' => 'e1a1ccff', - 'phui-form-css' => 'e1a1ccff', - 'phui-icon-view-css' => 'e1a1ccff', - 'phui-spacing-css' => 'e1a1ccff', - 'sprite-apps-large-css' => 'e1a1ccff', - 'sprite-gradient-css' => 'e1a1ccff', - 'sprite-icons-css' => 'e1a1ccff', - 'sprite-menu-css' => 'e1a1ccff', - 'syntax-highlighting-css' => 'e1a1ccff', + 'phabricator-side-menu-view-css' => '178f5351', + 'phabricator-standard-page-view' => '178f5351', + 'phabricator-tag-view-css' => '178f5351', + 'phabricator-textareautils' => '0b587556', + 'phabricator-tooltip' => '0b587556', + 'phabricator-transaction-view-css' => '178f5351', + 'phabricator-zindex-css' => '178f5351', + 'phui-button-css' => '178f5351', + 'phui-form-css' => '178f5351', + 'phui-icon-view-css' => '178f5351', + 'phui-spacing-css' => '178f5351', + 'sprite-apps-large-css' => '178f5351', + 'sprite-gradient-css' => '178f5351', + 'sprite-icons-css' => '178f5351', + 'sprite-menu-css' => '178f5351', + 'syntax-highlighting-css' => '178f5351', ), )); diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 3baf4ec98e..46188d9c83 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -911,6 +911,7 @@ phutil_register_library_map(array( 'PhabricatorBotUser' => 'infrastructure/daemon/bot/target/PhabricatorBotUser.php', 'PhabricatorBotWhatsNewHandler' => 'infrastructure/daemon/bot/handler/PhabricatorBotWhatsNewHandler.php', 'PhabricatorBuiltinPatchList' => 'infrastructure/storage/patch/PhabricatorBuiltinPatchList.php', + 'PhabricatorBusyExample' => 'applications/uiexample/examples/PhabricatorBusyExample.php', 'PhabricatorCacheDAO' => 'applications/cache/storage/PhabricatorCacheDAO.php', 'PhabricatorCacheManagementPurgeWorkflow' => 'applications/cache/management/PhabricatorCacheManagementPurgeWorkflow.php', 'PhabricatorCacheManagementWorkflow' => 'applications/cache/management/PhabricatorCacheManagementWorkflow.php', @@ -2851,6 +2852,7 @@ phutil_register_library_map(array( 'PhabricatorBotUser' => 'PhabricatorBotTarget', 'PhabricatorBotWhatsNewHandler' => 'PhabricatorBotHandler', 'PhabricatorBuiltinPatchList' => 'PhabricatorSQLPatchList', + 'PhabricatorBusyExample' => 'PhabricatorUIExample', 'PhabricatorCacheDAO' => 'PhabricatorLiskDAO', 'PhabricatorCacheManagementPurgeWorkflow' => 'PhabricatorSearchManagementWorkflow', 'PhabricatorCacheManagementWorkflow' => 'PhutilArgumentWorkflow', diff --git a/src/applications/uiexample/examples/PhabricatorBusyExample.php b/src/applications/uiexample/examples/PhabricatorBusyExample.php new file mode 100644 index 0000000000..4d88bac3ef --- /dev/null +++ b/src/applications/uiexample/examples/PhabricatorBusyExample.php @@ -0,0 +1,17 @@ +<?php + +final class PhabricatorBusyExample extends PhabricatorUIExample { + + public function getName() { + return 'Busy'; + } + + public function getDescription() { + return "Busy."; + } + + public function renderExample() { + Javelin::initBehavior('phabricator-busy-example'); + return null; + } +} diff --git a/webroot/rsrc/css/aphront/form-view.css b/webroot/rsrc/css/aphront/form-view.css index 961a45420b..25301c8bce 100644 --- a/webroot/rsrc/css/aphront/form-view.css +++ b/webroot/rsrc/css/aphront/form-view.css @@ -32,9 +32,10 @@ .device-phone .aphront-form-view label.aphront-form-label, .aphront-form-full-width.aphront-form-view label.aphront-form-label { - float: left; + display: block; + float: none; text-align: left; - width: auto; + width: 100%; margin-bottom: 3px; } @@ -65,8 +66,8 @@ .device-phone .aphront-form-error, .aphront-form-full-width .aphront-form-error { - float: right; - width: auto; + float: none; + width: 100%; } .device-phone .aphront-form-drag-and-drop-upload { diff --git a/webroot/rsrc/css/core/core.css b/webroot/rsrc/css/core/core.css index 89aa57b170..d72781cb80 100644 --- a/webroot/rsrc/css/core/core.css +++ b/webroot/rsrc/css/core/core.css @@ -113,16 +113,13 @@ img { .busy { position: fixed; - bottom: 8px; - right: 8px; - - background: #ffffff url(/rsrc/image/loading.gif) center no-repeat; - width: 64px; - height: 64px; - opacity: 0.5; - - border: 1px solid #444444; - border-radius: 8px; + bottom: 16px; + right: 16px; + width: 44px; + height: 44px; + border-radius: 5px; + opacity: 0.4; + background: #000 url(/res/cb6fc6eb/rsrc/image/loading/compass_24.gif) center no-repeat; } .grouped:after { diff --git a/webroot/rsrc/image/loading/boating_24.gif b/webroot/rsrc/image/loading/boating_24.gif new file mode 100644 index 0000000000..eae5784e21 Binary files /dev/null and b/webroot/rsrc/image/loading/boating_24.gif differ diff --git a/webroot/rsrc/image/loading/compass_24.gif b/webroot/rsrc/image/loading/compass_24.gif new file mode 100644 index 0000000000..c437e8a87d Binary files /dev/null and b/webroot/rsrc/image/loading/compass_24.gif differ diff --git a/webroot/rsrc/image/loading/loading_d48.gif b/webroot/rsrc/image/loading/loading_d48.gif new file mode 100644 index 0000000000..1a34b39165 Binary files /dev/null and b/webroot/rsrc/image/loading/loading_d48.gif differ diff --git a/webroot/rsrc/image/loading/loading_w24.gif b/webroot/rsrc/image/loading/loading_w24.gif new file mode 100644 index 0000000000..b13cfb8adf Binary files /dev/null and b/webroot/rsrc/image/loading/loading_w24.gif differ diff --git a/webroot/rsrc/js/application/uiexample/busy-example.js b/webroot/rsrc/js/application/uiexample/busy-example.js new file mode 100644 index 0000000000..d829435270 --- /dev/null +++ b/webroot/rsrc/js/application/uiexample/busy-example.js @@ -0,0 +1,9 @@ +/** + * @provides javelin-behavior-phabricator-busy-example + * @requires phabricator-busy + * javelin-behavior + */ + +JX.behavior('phabricator-busy-example', function(config) { + JX.Busy.start(); +}); diff --git a/webroot/rsrc/js/core/Busy.js b/webroot/rsrc/js/core/Busy.js index 07b884e63c..eaaad74477 100644 --- a/webroot/rsrc/js/core/Busy.js +++ b/webroot/rsrc/js/core/Busy.js @@ -1,6 +1,7 @@ /** * @requires javelin-install * javelin-dom + * javelin-fx * @provides phabricator-busy * @javelin */ @@ -26,14 +27,13 @@ JX.install('Busy', { var self = JX.Busy; if (!self._depth) { self._indicator = JX.$N('div', {className: 'busy'}); - self._indicator.style.display = 'none'; + self._indicator.style.opacity = 0; document.body.appendChild(self._indicator); // Don't actually show the indicator for a little while, to prevent // it from flashing briefly for every Ajax request. - setTimeout(function() { - self._indicator && (self._indicator.style.display = ''); - }, 500); + + new JX.FX(self._indicator).setDuration(1000).start({opacity: [0, 0.8]}); } self._depth++; },