@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.

Add a class to the Tokenizer container while it is focused

Summary: For some evil design purpose.

Test Plan: Focused, blurred tokenizers.

Reviewers: chad

Reviewed By: chad

CC: aran

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

+85 -63
+61 -61
src/__celerity_resource_map__.php
··· 858 858 ), 859 859 'aphront-tokenizer-control-css' => 860 860 array( 861 - 'uri' => '/res/207105f0/rsrc/css/aphront/tokenizer.css', 861 + 'uri' => '/res/6e14867e/rsrc/css/aphront/tokenizer.css', 862 862 'type' => 'css', 863 863 'requires' => 864 864 array( ··· 2525 2525 ), 2526 2526 'javelin-tokenizer' => 2527 2527 array( 2528 - 'uri' => '/res/731a958c/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', 2528 + 'uri' => '/res/8bccdb9e/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js', 2529 2529 'type' => 'js', 2530 2530 'requires' => 2531 2531 array( ··· 3961 3961 ), array( 3962 3962 'packages' => 3963 3963 array( 3964 - 'fbb09f9f' => 3964 + 'dbf66141' => 3965 3965 array( 3966 3966 'name' => 'core.pkg.css', 3967 3967 'symbols' => ··· 4003 4003 34 => 'phabricator-object-item-list-view-css', 4004 4004 35 => 'global-drag-and-drop-css', 4005 4005 ), 4006 - 'uri' => '/res/pkg/fbb09f9f/core.pkg.css', 4006 + 'uri' => '/res/pkg/dbf66141/core.pkg.css', 4007 4007 'type' => 'css', 4008 4008 ), 4009 4009 '26980a1c' => ··· 4135 4135 'uri' => '/res/pkg/f96657b8/diffusion.pkg.js', 4136 4136 'type' => 'js', 4137 4137 ), 4138 - '41f3916d' => 4138 + 'c9168ae3' => 4139 4139 array( 4140 4140 'name' => 'javelin.pkg.js', 4141 4141 'symbols' => ··· 4160 4160 17 => 'javelin-typeahead-ondemand-source', 4161 4161 18 => 'javelin-tokenizer', 4162 4162 ), 4163 - 'uri' => '/res/pkg/41f3916d/javelin.pkg.js', 4163 + 'uri' => '/res/pkg/c9168ae3/javelin.pkg.js', 4164 4164 'type' => 'js', 4165 4165 ), 4166 4166 '6b1fccc6' => ··· 4194 4194 'reverse' => 4195 4195 array( 4196 4196 'aphront-attached-file-view-css' => '6b1fccc6', 4197 - 'aphront-dialog-view-css' => 'fbb09f9f', 4198 - 'aphront-error-view-css' => 'fbb09f9f', 4199 - 'aphront-form-view-css' => 'fbb09f9f', 4200 - 'aphront-list-filter-view-css' => 'fbb09f9f', 4201 - 'aphront-pager-view-css' => 'fbb09f9f', 4202 - 'aphront-panel-view-css' => 'fbb09f9f', 4203 - 'aphront-table-view-css' => 'fbb09f9f', 4204 - 'aphront-tokenizer-control-css' => 'fbb09f9f', 4205 - 'aphront-tooltip-css' => 'fbb09f9f', 4206 - 'aphront-typeahead-control-css' => 'fbb09f9f', 4197 + 'aphront-dialog-view-css' => 'dbf66141', 4198 + 'aphront-error-view-css' => 'dbf66141', 4199 + 'aphront-form-view-css' => 'dbf66141', 4200 + 'aphront-list-filter-view-css' => 'dbf66141', 4201 + 'aphront-pager-view-css' => 'dbf66141', 4202 + 'aphront-panel-view-css' => 'dbf66141', 4203 + 'aphront-table-view-css' => 'dbf66141', 4204 + 'aphront-tokenizer-control-css' => 'dbf66141', 4205 + 'aphront-tooltip-css' => 'dbf66141', 4206 + 'aphront-typeahead-control-css' => 'dbf66141', 4207 4207 'differential-changeset-view-css' => '8aaacd1b', 4208 4208 'differential-core-view-css' => '8aaacd1b', 4209 4209 'differential-inline-comment-editor' => '27c55b30', ··· 4217 4217 'differential-table-of-contents-css' => '8aaacd1b', 4218 4218 'diffusion-commit-view-css' => 'c8ce2d88', 4219 4219 'diffusion-icons-css' => 'c8ce2d88', 4220 - 'global-drag-and-drop-css' => 'fbb09f9f', 4220 + 'global-drag-and-drop-css' => 'dbf66141', 4221 4221 'inline-comment-summary-css' => '8aaacd1b', 4222 4222 'javelin-aphlict' => '26980a1c', 4223 - 'javelin-behavior' => '41f3916d', 4223 + 'javelin-behavior' => 'c9168ae3', 4224 4224 'javelin-behavior-aphlict-dropdown' => '26980a1c', 4225 4225 'javelin-behavior-aphlict-listen' => '26980a1c', 4226 4226 'javelin-behavior-aphront-basic-tokenizer' => '26980a1c', ··· 4271 4271 'javelin-behavior-repository-crossreference' => '27c55b30', 4272 4272 'javelin-behavior-toggle-class' => '26980a1c', 4273 4273 'javelin-behavior-workflow' => '26980a1c', 4274 - 'javelin-dom' => '41f3916d', 4275 - 'javelin-event' => '41f3916d', 4276 - 'javelin-install' => '41f3916d', 4277 - 'javelin-json' => '41f3916d', 4278 - 'javelin-mask' => '41f3916d', 4279 - 'javelin-request' => '41f3916d', 4280 - 'javelin-resource' => '41f3916d', 4281 - 'javelin-stratcom' => '41f3916d', 4282 - 'javelin-tokenizer' => '41f3916d', 4283 - 'javelin-typeahead' => '41f3916d', 4284 - 'javelin-typeahead-normalizer' => '41f3916d', 4285 - 'javelin-typeahead-ondemand-source' => '41f3916d', 4286 - 'javelin-typeahead-preloaded-source' => '41f3916d', 4287 - 'javelin-typeahead-source' => '41f3916d', 4288 - 'javelin-uri' => '41f3916d', 4289 - 'javelin-util' => '41f3916d', 4290 - 'javelin-vector' => '41f3916d', 4291 - 'javelin-workflow' => '41f3916d', 4292 - 'lightbox-attachment-css' => 'fbb09f9f', 4274 + 'javelin-dom' => 'c9168ae3', 4275 + 'javelin-event' => 'c9168ae3', 4276 + 'javelin-install' => 'c9168ae3', 4277 + 'javelin-json' => 'c9168ae3', 4278 + 'javelin-mask' => 'c9168ae3', 4279 + 'javelin-request' => 'c9168ae3', 4280 + 'javelin-resource' => 'c9168ae3', 4281 + 'javelin-stratcom' => 'c9168ae3', 4282 + 'javelin-tokenizer' => 'c9168ae3', 4283 + 'javelin-typeahead' => 'c9168ae3', 4284 + 'javelin-typeahead-normalizer' => 'c9168ae3', 4285 + 'javelin-typeahead-ondemand-source' => 'c9168ae3', 4286 + 'javelin-typeahead-preloaded-source' => 'c9168ae3', 4287 + 'javelin-typeahead-source' => 'c9168ae3', 4288 + 'javelin-uri' => 'c9168ae3', 4289 + 'javelin-util' => 'c9168ae3', 4290 + 'javelin-vector' => 'c9168ae3', 4291 + 'javelin-workflow' => 'c9168ae3', 4292 + 'lightbox-attachment-css' => 'dbf66141', 4293 4293 'maniphest-task-summary-css' => '6b1fccc6', 4294 4294 'maniphest-transaction-detail-css' => '6b1fccc6', 4295 4295 'phabricator-busy' => '26980a1c', 4296 4296 'phabricator-content-source-view-css' => '8aaacd1b', 4297 - 'phabricator-core-buttons-css' => 'fbb09f9f', 4298 - 'phabricator-core-css' => 'fbb09f9f', 4299 - 'phabricator-crumbs-view-css' => 'fbb09f9f', 4300 - 'phabricator-directory-css' => 'fbb09f9f', 4297 + 'phabricator-core-buttons-css' => 'dbf66141', 4298 + 'phabricator-core-css' => 'dbf66141', 4299 + 'phabricator-crumbs-view-css' => 'dbf66141', 4300 + 'phabricator-directory-css' => 'dbf66141', 4301 4301 'phabricator-drag-and-drop-file-upload' => '27c55b30', 4302 4302 'phabricator-dropdown-menu' => '26980a1c', 4303 4303 'phabricator-file-upload' => '26980a1c', 4304 - 'phabricator-filetree-view-css' => 'fbb09f9f', 4305 - 'phabricator-flag-css' => 'fbb09f9f', 4306 - 'phabricator-form-view-css' => 'fbb09f9f', 4307 - 'phabricator-header-view-css' => 'fbb09f9f', 4308 - 'phabricator-jump-nav' => 'fbb09f9f', 4304 + 'phabricator-filetree-view-css' => 'dbf66141', 4305 + 'phabricator-flag-css' => 'dbf66141', 4306 + 'phabricator-form-view-css' => 'dbf66141', 4307 + 'phabricator-header-view-css' => 'dbf66141', 4308 + 'phabricator-jump-nav' => 'dbf66141', 4309 4309 'phabricator-keyboard-shortcut' => '26980a1c', 4310 4310 'phabricator-keyboard-shortcut-manager' => '26980a1c', 4311 - 'phabricator-main-menu-view' => 'fbb09f9f', 4311 + 'phabricator-main-menu-view' => 'dbf66141', 4312 4312 'phabricator-menu-item' => '26980a1c', 4313 - 'phabricator-nav-view-css' => 'fbb09f9f', 4313 + 'phabricator-nav-view-css' => 'dbf66141', 4314 4314 'phabricator-notification' => '26980a1c', 4315 - 'phabricator-notification-css' => 'fbb09f9f', 4316 - 'phabricator-notification-menu-css' => 'fbb09f9f', 4317 - 'phabricator-object-item-list-view-css' => 'fbb09f9f', 4315 + 'phabricator-notification-css' => 'dbf66141', 4316 + 'phabricator-notification-menu-css' => 'dbf66141', 4317 + 'phabricator-object-item-list-view-css' => 'dbf66141', 4318 4318 'phabricator-object-selector-css' => '8aaacd1b', 4319 4319 'phabricator-phtize' => '26980a1c', 4320 4320 'phabricator-prefab' => '26980a1c', 4321 4321 'phabricator-project-tag-css' => '6b1fccc6', 4322 - 'phabricator-remarkup-css' => 'fbb09f9f', 4322 + 'phabricator-remarkup-css' => 'dbf66141', 4323 4323 'phabricator-shaped-request' => '27c55b30', 4324 - 'phabricator-side-menu-view-css' => 'fbb09f9f', 4325 - 'phabricator-standard-page-view' => 'fbb09f9f', 4324 + 'phabricator-side-menu-view-css' => 'dbf66141', 4325 + 'phabricator-standard-page-view' => 'dbf66141', 4326 4326 'phabricator-textareautils' => '26980a1c', 4327 4327 'phabricator-tooltip' => '26980a1c', 4328 - 'phabricator-transaction-view-css' => 'fbb09f9f', 4329 - 'phabricator-zindex-css' => 'fbb09f9f', 4330 - 'sprite-apps-large-css' => 'fbb09f9f', 4331 - 'sprite-gradient-css' => 'fbb09f9f', 4332 - 'sprite-icon-css' => 'fbb09f9f', 4333 - 'sprite-menu-css' => 'fbb09f9f', 4334 - 'syntax-highlighting-css' => 'fbb09f9f', 4328 + 'phabricator-transaction-view-css' => 'dbf66141', 4329 + 'phabricator-zindex-css' => 'dbf66141', 4330 + 'sprite-apps-large-css' => 'dbf66141', 4331 + 'sprite-gradient-css' => 'dbf66141', 4332 + 'sprite-icon-css' => 'dbf66141', 4333 + 'sprite-menu-css' => 'dbf66141', 4334 + 'syntax-highlighting-css' => 'dbf66141', 4335 4335 ), 4336 4336 ));
+4
webroot/rsrc/css/aphront/tokenizer.css
··· 20 20 box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); 21 21 } 22 22 23 + div.jx-tokenizer-container-focused { 24 + border-color: #0099ff; 25 + } 26 + 23 27 var.jx-tokenizer-metrics { 24 28 position: absolute; 25 29 left: 20px;
+20 -2
webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
··· 28 28 * If you do this correctly, the input should suggest items and enter them as 29 29 * tokens as the user types. 30 30 * 31 + * When the tokenizer is focused, the CSS class `jx-tokenizer-container-focused` 32 + * is added to the container node. 33 + * 31 34 * @group control 32 35 */ 33 36 JX.install('Tokenizer', { ··· 205 208 } else if (e.getType() == 'keydown') { 206 209 this._onkeydown(e); 207 210 } else if (e.getType() == 'blur') { 208 - this._focus.value = ''; 209 - this._redraw(); 211 + this._didblur(); 210 212 211 213 // Explicitly update the placeholder since we just wiped the field 212 214 // value. ··· 378 380 focus : function() { 379 381 var focus = this._focus; 380 382 JX.DOM.show(focus); 383 + 384 + JX.DOM.alterClass( 385 + this._containerNode, 386 + 'jx-tokenizer-container-focused', 387 + true); 388 + 381 389 setTimeout(function() { JX.DOM.focus(focus); }, 0); 390 + }, 391 + 392 + _didblur: function() { 393 + JX.DOM.alterClass( 394 + this._containerNode, 395 + 'jx-tokenizer-container-focused', 396 + false); 397 + this._focus.value = ''; 398 + this._redraw(); 382 399 } 400 + 383 401 } 384 402 });