Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(330)

Side by Side Diff: chrome/browser/resources/md_downloads/crisper.js

Issue 1409473002: MD Downloads: replace <paper-icon-button> with <inky-text-button> (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@iron-list3
Patch Set: revert some hunks Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chrome/browser/resources/md_downloads/item.css » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 Polymer = {dom: 'shadow'}; 5 Polymer = {dom: 'shadow'};
6 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 6 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
7 // Use of this source code is governed by a BSD-style license that can be 7 // Use of this source code is governed by a BSD-style license that can be
8 // found in the LICENSE file. 8 // found in the LICENSE file.
9 9
10 /** 10 /**
(...skipping 10835 matching lines...) Expand 10 before | Expand all | Expand 10 after
10846 // TODO(dfreedm): `pointer-events: none` works around https://crbug.com/ 370136 10846 // TODO(dfreedm): `pointer-events: none` works around https://crbug.com/ 370136
10847 // TODO(sjmiles): inline style may not be ideal, but avoids requiring a shadow-root 10847 // TODO(sjmiles): inline style may not be ideal, but avoids requiring a shadow-root
10848 svg.style.cssText = 'pointer-events: none; display: block; width: 100%; height: 100%;'; 10848 svg.style.cssText = 'pointer-events: none; display: block; width: 100%; height: 100%;';
10849 svg.appendChild(content).removeAttribute('id'); 10849 svg.appendChild(content).removeAttribute('id');
10850 return svg; 10850 return svg;
10851 } 10851 }
10852 return null; 10852 return null;
10853 } 10853 }
10854 10854
10855 }); 10855 });
10856 Polymer({
10857 is: 'paper-material',
10858
10859 properties: {
10860
10861 /**
10862 * The z-depth of this element, from 0-5. Setting to 0 will remove the
10863 * shadow, and each increasing number greater than 0 will be "deeper"
10864 * than the last.
10865 *
10866 * @attribute elevation
10867 * @type number
10868 * @default 1
10869 */
10870 elevation: {
10871 type: Number,
10872 reflectToAttribute: true,
10873 value: 1
10874 },
10875
10876 /**
10877 * Set this to true to animate the shadow when setting a new
10878 * `elevation` value.
10879 *
10880 * @attribute animated
10881 * @type boolean
10882 * @default false
10883 */
10884 animated: {
10885 type: Boolean,
10886 reflectToAttribute: true,
10887 value: false
10888 }
10889 }
10890 });
10891 (function() { 10856 (function() {
10892 'use strict'; 10857 'use strict';
10893 10858
10894 /** 10859 /**
10895 * Chrome uses an older version of DOM Level 3 Keyboard Events 10860 * Chrome uses an older version of DOM Level 3 Keyboard Events
10896 * 10861 *
10897 * Most keys are labeled as text, but some are Unicode codepoints. 10862 * Most keys are labeled as text, but some are Unicode codepoints.
10898 * Values taken from: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-200712 21/keyset.html#KeySet-Set 10863 * Values taken from: http://www.w3.org/TR/2007/WD-DOM-Level-3-Events-200712 21/keyset.html#KeySet-Set
10899 */ 10864 */
10900 var KEY_IDENTIFIER = { 10865 var KEY_IDENTIFIER = {
(...skipping 387 matching lines...) Expand 10 before | Expand all | Expand 10 after
11288 _triggerKeyHandler: function(keyCombo, handlerName, keyboardEvent) { 11253 _triggerKeyHandler: function(keyCombo, handlerName, keyboardEvent) {
11289 var detail = Object.create(keyCombo); 11254 var detail = Object.create(keyCombo);
11290 detail.keyboardEvent = keyboardEvent; 11255 detail.keyboardEvent = keyboardEvent;
11291 11256
11292 this[handlerName].call(this, new CustomEvent(keyCombo.event, { 11257 this[handlerName].call(this, new CustomEvent(keyCombo.event, {
11293 detail: detail 11258 detail: detail
11294 })); 11259 }));
11295 } 11260 }
11296 }; 11261 };
11297 })(); 11262 })();
11263 /**
11264 * @demo demo/index.html
11265 * @polymerBehavior
11266 */
11267 Polymer.IronControlState = {
11268
11269 properties: {
11270
11271 /**
11272 * If true, the element currently has focus.
11273 */
11274 focused: {
11275 type: Boolean,
11276 value: false,
11277 notify: true,
11278 readOnly: true,
11279 reflectToAttribute: true
11280 },
11281
11282 /**
11283 * If true, the user cannot interact with this element.
11284 */
11285 disabled: {
11286 type: Boolean,
11287 value: false,
11288 notify: true,
11289 observer: '_disabledChanged',
11290 reflectToAttribute: true
11291 },
11292
11293 _oldTabIndex: {
11294 type: Number
11295 },
11296
11297 _boundFocusBlurHandler: {
11298 type: Function,
11299 value: function() {
11300 return this._focusBlurHandler.bind(this);
11301 }
11302 }
11303
11304 },
11305
11306 observers: [
11307 '_changedControlState(focused, disabled)'
11308 ],
11309
11310 ready: function() {
11311 this.addEventListener('focus', this._boundFocusBlurHandler, true);
11312 this.addEventListener('blur', this._boundFocusBlurHandler, true);
11313 },
11314
11315 _focusBlurHandler: function(event) {
11316 // NOTE(cdata): if we are in ShadowDOM land, `event.target` will
11317 // eventually become `this` due to retargeting; if we are not in
11318 // ShadowDOM land, `event.target` will eventually become `this` due
11319 // to the second conditional which fires a synthetic event (that is also
11320 // handled). In either case, we can disregard `event.path`.
11321
11322 if (event.target === this) {
11323 var focused = event.type === 'focus';
11324 this._setFocused(focused);
11325 } else if (!this.shadowRoot) {
11326 this.fire(event.type, {sourceEvent: event}, {
11327 node: this,
11328 bubbles: event.bubbles,
11329 cancelable: event.cancelable
11330 });
11331 }
11332 },
11333
11334 _disabledChanged: function(disabled, old) {
11335 this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
11336 this.style.pointerEvents = disabled ? 'none' : '';
11337 if (disabled) {
11338 this._oldTabIndex = this.tabIndex;
11339 this.focused = false;
11340 this.tabIndex = -1;
11341 } else if (this._oldTabIndex !== undefined) {
11342 this.tabIndex = this._oldTabIndex;
11343 }
11344 },
11345
11346 _changedControlState: function() {
11347 // _controlStateChanged is abstract, follow-on behaviors may implement it
11348 if (this._controlStateChanged) {
11349 this._controlStateChanged();
11350 }
11351 }
11352
11353 };
11354 /**
11355 * @demo demo/index.html
11356 * @polymerBehavior Polymer.IronButtonState
11357 */
11358 Polymer.IronButtonStateImpl = {
11359
11360 properties: {
11361
11362 /**
11363 * If true, the user is currently holding down the button.
11364 */
11365 pressed: {
11366 type: Boolean,
11367 readOnly: true,
11368 value: false,
11369 reflectToAttribute: true,
11370 observer: '_pressedChanged'
11371 },
11372
11373 /**
11374 * If true, the button toggles the active state with each tap or press
11375 * of the spacebar.
11376 */
11377 toggles: {
11378 type: Boolean,
11379 value: false,
11380 reflectToAttribute: true
11381 },
11382
11383 /**
11384 * If true, the button is a toggle and is currently in the active state.
11385 */
11386 active: {
11387 type: Boolean,
11388 value: false,
11389 notify: true,
11390 reflectToAttribute: true
11391 },
11392
11393 /**
11394 * True if the element is currently being pressed by a "pointer," which
11395 * is loosely defined as mouse or touch input (but specifically excluding
11396 * keyboard input).
11397 */
11398 pointerDown: {
11399 type: Boolean,
11400 readOnly: true,
11401 value: false
11402 },
11403
11404 /**
11405 * True if the input device that caused the element to receive focus
11406 * was a keyboard.
11407 */
11408 receivedFocusFromKeyboard: {
11409 type: Boolean,
11410 readOnly: true
11411 },
11412
11413 /**
11414 * The aria attribute to be set if the button is a toggle and in the
11415 * active state.
11416 */
11417 ariaActiveAttribute: {
11418 type: String,
11419 value: 'aria-pressed',
11420 observer: '_ariaActiveAttributeChanged'
11421 }
11422 },
11423
11424 listeners: {
11425 down: '_downHandler',
11426 up: '_upHandler',
11427 tap: '_tapHandler'
11428 },
11429
11430 observers: [
11431 '_detectKeyboardFocus(focused)',
11432 '_activeChanged(active, ariaActiveAttribute)'
11433 ],
11434
11435 keyBindings: {
11436 'enter:keydown': '_asyncClick',
11437 'space:keydown': '_spaceKeyDownHandler',
11438 'space:keyup': '_spaceKeyUpHandler',
11439 },
11440
11441 _mouseEventRe: /^mouse/,
11442
11443 _tapHandler: function() {
11444 if (this.toggles) {
11445 // a tap is needed to toggle the active state
11446 this._userActivate(!this.active);
11447 } else {
11448 this.active = false;
11449 }
11450 },
11451
11452 _detectKeyboardFocus: function(focused) {
11453 this._setReceivedFocusFromKeyboard(!this.pointerDown && focused);
11454 },
11455
11456 // to emulate native checkbox, (de-)activations from a user interaction fire
11457 // 'change' events
11458 _userActivate: function(active) {
11459 if (this.active !== active) {
11460 this.active = active;
11461 this.fire('change');
11462 }
11463 },
11464
11465 _downHandler: function(event) {
11466 this._setPointerDown(true);
11467 this._setPressed(true);
11468 this._setReceivedFocusFromKeyboard(false);
11469 },
11470
11471 _upHandler: function() {
11472 this._setPointerDown(false);
11473 this._setPressed(false);
11474 },
11475
11476 _spaceKeyDownHandler: function(event) {
11477 var keyboardEvent = event.detail.keyboardEvent;
11478 keyboardEvent.preventDefault();
11479 keyboardEvent.stopImmediatePropagation();
11480 this._setPressed(true);
11481 },
11482
11483 _spaceKeyUpHandler: function() {
11484 if (this.pressed) {
11485 this._asyncClick();
11486 }
11487 this._setPressed(false);
11488 },
11489
11490 // trigger click asynchronously, the asynchrony is useful to allow one
11491 // event handler to unwind before triggering another event
11492 _asyncClick: function() {
11493 this.async(function() {
11494 this.click();
11495 }, 1);
11496 },
11497
11498 // any of these changes are considered a change to button state
11499
11500 _pressedChanged: function(pressed) {
11501 this._changedButtonState();
11502 },
11503
11504 _ariaActiveAttributeChanged: function(value, oldValue) {
11505 if (oldValue && oldValue != value && this.hasAttribute(oldValue)) {
11506 this.removeAttribute(oldValue);
11507 }
11508 },
11509
11510 _activeChanged: function(active, ariaActiveAttribute) {
11511 if (this.toggles) {
11512 this.setAttribute(this.ariaActiveAttribute,
11513 active ? 'true' : 'false');
11514 } else {
11515 this.removeAttribute(this.ariaActiveAttribute);
11516 }
11517 this._changedButtonState();
11518 },
11519
11520 _controlStateChanged: function() {
11521 if (this.disabled) {
11522 this._setPressed(false);
11523 } else {
11524 this._changedButtonState();
11525 }
11526 },
11527
11528 // provide hook for follow-on behaviors to react to button-state
11529
11530 _changedButtonState: function() {
11531 if (this._buttonStateChanged) {
11532 this._buttonStateChanged(); // abstract
11533 }
11534 }
11535
11536 };
11537
11538 /** @polymerBehavior */
11539 Polymer.IronButtonState = [
11540 Polymer.IronA11yKeysBehavior,
11541 Polymer.IronButtonStateImpl
11542 ];
11298 (function() { 11543 (function() {
11299 var Utility = { 11544 var Utility = {
11300 distance: function(x1, y1, x2, y2) { 11545 distance: function(x1, y1, x2, y2) {
11301 var xDelta = (x1 - x2); 11546 var xDelta = (x1 - x2);
11302 var yDelta = (y1 - y2); 11547 var yDelta = (y1 - y2);
11303 11548
11304 return Math.sqrt(xDelta * xDelta + yDelta * yDelta); 11549 return Math.sqrt(xDelta * xDelta + yDelta * yDelta);
11305 }, 11550 },
11306 11551
11307 now: window.performance && window.performance.now ? 11552 now: window.performance && window.performance.now ?
(...skipping 583 matching lines...) Expand 10 before | Expand all | Expand 10 after
11891 } 12136 }
11892 }, 12137 },
11893 12138
11894 _noinkChanged: function(noink, attached) { 12139 _noinkChanged: function(noink, attached) {
11895 if (attached) { 12140 if (attached) {
11896 this.keyEventTarget = noink ? this : this.target; 12141 this.keyEventTarget = noink ? this : this.target;
11897 } 12142 }
11898 } 12143 }
11899 }); 12144 });
11900 })(); 12145 })();
11901 /**
11902 * @demo demo/index.html
11903 * @polymerBehavior
11904 */
11905 Polymer.IronControlState = {
11906
11907 properties: {
11908
11909 /**
11910 * If true, the element currently has focus.
11911 */
11912 focused: {
11913 type: Boolean,
11914 value: false,
11915 notify: true,
11916 readOnly: true,
11917 reflectToAttribute: true
11918 },
11919
11920 /**
11921 * If true, the user cannot interact with this element.
11922 */
11923 disabled: {
11924 type: Boolean,
11925 value: false,
11926 notify: true,
11927 observer: '_disabledChanged',
11928 reflectToAttribute: true
11929 },
11930
11931 _oldTabIndex: {
11932 type: Number
11933 },
11934
11935 _boundFocusBlurHandler: {
11936 type: Function,
11937 value: function() {
11938 return this._focusBlurHandler.bind(this);
11939 }
11940 }
11941
11942 },
11943
11944 observers: [
11945 '_changedControlState(focused, disabled)'
11946 ],
11947
11948 ready: function() {
11949 this.addEventListener('focus', this._boundFocusBlurHandler, true);
11950 this.addEventListener('blur', this._boundFocusBlurHandler, true);
11951 },
11952
11953 _focusBlurHandler: function(event) {
11954 // NOTE(cdata): if we are in ShadowDOM land, `event.target` will
11955 // eventually become `this` due to retargeting; if we are not in
11956 // ShadowDOM land, `event.target` will eventually become `this` due
11957 // to the second conditional which fires a synthetic event (that is also
11958 // handled). In either case, we can disregard `event.path`.
11959
11960 if (event.target === this) {
11961 var focused = event.type === 'focus';
11962 this._setFocused(focused);
11963 } else if (!this.shadowRoot) {
11964 this.fire(event.type, {sourceEvent: event}, {
11965 node: this,
11966 bubbles: event.bubbles,
11967 cancelable: event.cancelable
11968 });
11969 }
11970 },
11971
11972 _disabledChanged: function(disabled, old) {
11973 this.setAttribute('aria-disabled', disabled ? 'true' : 'false');
11974 this.style.pointerEvents = disabled ? 'none' : '';
11975 if (disabled) {
11976 this._oldTabIndex = this.tabIndex;
11977 this.focused = false;
11978 this.tabIndex = -1;
11979 } else if (this._oldTabIndex !== undefined) {
11980 this.tabIndex = this._oldTabIndex;
11981 }
11982 },
11983
11984 _changedControlState: function() {
11985 // _controlStateChanged is abstract, follow-on behaviors may implement it
11986 if (this._controlStateChanged) {
11987 this._controlStateChanged();
11988 }
11989 }
11990
11991 };
11992 /**
11993 * @demo demo/index.html
11994 * @polymerBehavior Polymer.IronButtonState
11995 */
11996 Polymer.IronButtonStateImpl = {
11997
11998 properties: {
11999
12000 /**
12001 * If true, the user is currently holding down the button.
12002 */
12003 pressed: {
12004 type: Boolean,
12005 readOnly: true,
12006 value: false,
12007 reflectToAttribute: true,
12008 observer: '_pressedChanged'
12009 },
12010
12011 /**
12012 * If true, the button toggles the active state with each tap or press
12013 * of the spacebar.
12014 */
12015 toggles: {
12016 type: Boolean,
12017 value: false,
12018 reflectToAttribute: true
12019 },
12020
12021 /**
12022 * If true, the button is a toggle and is currently in the active state.
12023 */
12024 active: {
12025 type: Boolean,
12026 value: false,
12027 notify: true,
12028 reflectToAttribute: true
12029 },
12030
12031 /**
12032 * True if the element is currently being pressed by a "pointer," which
12033 * is loosely defined as mouse or touch input (but specifically excluding
12034 * keyboard input).
12035 */
12036 pointerDown: {
12037 type: Boolean,
12038 readOnly: true,
12039 value: false
12040 },
12041
12042 /**
12043 * True if the input device that caused the element to receive focus
12044 * was a keyboard.
12045 */
12046 receivedFocusFromKeyboard: {
12047 type: Boolean,
12048 readOnly: true
12049 },
12050
12051 /**
12052 * The aria attribute to be set if the button is a toggle and in the
12053 * active state.
12054 */
12055 ariaActiveAttribute: {
12056 type: String,
12057 value: 'aria-pressed',
12058 observer: '_ariaActiveAttributeChanged'
12059 }
12060 },
12061
12062 listeners: {
12063 down: '_downHandler',
12064 up: '_upHandler',
12065 tap: '_tapHandler'
12066 },
12067
12068 observers: [
12069 '_detectKeyboardFocus(focused)',
12070 '_activeChanged(active, ariaActiveAttribute)'
12071 ],
12072
12073 keyBindings: {
12074 'enter:keydown': '_asyncClick',
12075 'space:keydown': '_spaceKeyDownHandler',
12076 'space:keyup': '_spaceKeyUpHandler',
12077 },
12078
12079 _mouseEventRe: /^mouse/,
12080
12081 _tapHandler: function() {
12082 if (this.toggles) {
12083 // a tap is needed to toggle the active state
12084 this._userActivate(!this.active);
12085 } else {
12086 this.active = false;
12087 }
12088 },
12089
12090 _detectKeyboardFocus: function(focused) {
12091 this._setReceivedFocusFromKeyboard(!this.pointerDown && focused);
12092 },
12093
12094 // to emulate native checkbox, (de-)activations from a user interaction fire
12095 // 'change' events
12096 _userActivate: function(active) {
12097 if (this.active !== active) {
12098 this.active = active;
12099 this.fire('change');
12100 }
12101 },
12102
12103 _downHandler: function(event) {
12104 this._setPointerDown(true);
12105 this._setPressed(true);
12106 this._setReceivedFocusFromKeyboard(false);
12107 },
12108
12109 _upHandler: function() {
12110 this._setPointerDown(false);
12111 this._setPressed(false);
12112 },
12113
12114 _spaceKeyDownHandler: function(event) {
12115 var keyboardEvent = event.detail.keyboardEvent;
12116 keyboardEvent.preventDefault();
12117 keyboardEvent.stopImmediatePropagation();
12118 this._setPressed(true);
12119 },
12120
12121 _spaceKeyUpHandler: function() {
12122 if (this.pressed) {
12123 this._asyncClick();
12124 }
12125 this._setPressed(false);
12126 },
12127
12128 // trigger click asynchronously, the asynchrony is useful to allow one
12129 // event handler to unwind before triggering another event
12130 _asyncClick: function() {
12131 this.async(function() {
12132 this.click();
12133 }, 1);
12134 },
12135
12136 // any of these changes are considered a change to button state
12137
12138 _pressedChanged: function(pressed) {
12139 this._changedButtonState();
12140 },
12141
12142 _ariaActiveAttributeChanged: function(value, oldValue) {
12143 if (oldValue && oldValue != value && this.hasAttribute(oldValue)) {
12144 this.removeAttribute(oldValue);
12145 }
12146 },
12147
12148 _activeChanged: function(active, ariaActiveAttribute) {
12149 if (this.toggles) {
12150 this.setAttribute(this.ariaActiveAttribute,
12151 active ? 'true' : 'false');
12152 } else {
12153 this.removeAttribute(this.ariaActiveAttribute);
12154 }
12155 this._changedButtonState();
12156 },
12157
12158 _controlStateChanged: function() {
12159 if (this.disabled) {
12160 this._setPressed(false);
12161 } else {
12162 this._changedButtonState();
12163 }
12164 },
12165
12166 // provide hook for follow-on behaviors to react to button-state
12167
12168 _changedButtonState: function() {
12169 if (this._buttonStateChanged) {
12170 this._buttonStateChanged(); // abstract
12171 }
12172 }
12173
12174 };
12175
12176 /** @polymerBehavior */
12177 Polymer.IronButtonState = [
12178 Polymer.IronA11yKeysBehavior,
12179 Polymer.IronButtonStateImpl
12180 ];
12181 /** 12146 /**
12182 * `Polymer.PaperRippleBehavior` dynamically implements a ripple 12147 * `Polymer.PaperRippleBehavior` dynamically implements a ripple
12183 * when the element has focus via pointer or keyboard. 12148 * when the element has focus via pointer or keyboard.
12184 * 12149 *
12185 * NOTE: This behavior is intended to be used in conjunction with and after 12150 * NOTE: This behavior is intended to be used in conjunction with and after
12186 * `Polymer.IronButtonState` and `Polymer.IronControlState`. 12151 * `Polymer.IronButtonState` and `Polymer.IronControlState`.
12187 * 12152 *
12188 * @polymerBehavior Polymer.PaperRippleBehavior 12153 * @polymerBehavior Polymer.PaperRippleBehavior
12189 */ 12154 */
12190 Polymer.PaperRippleBehavior = { 12155 Polymer.PaperRippleBehavior = {
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
12272 return document.createElement('paper-ripple'); 12237 return document.createElement('paper-ripple');
12273 }, 12238 },
12274 12239
12275 _noinkChanged: function(noink) { 12240 _noinkChanged: function(noink) {
12276 if (this.hasRipple()) { 12241 if (this.hasRipple()) {
12277 this._ripple.noink = noink; 12242 this._ripple.noink = noink;
12278 } 12243 }
12279 } 12244 }
12280 12245
12281 }; 12246 };
12247 /**
12248 * `Polymer.PaperInkyFocusBehavior` implements a ripple when the element has k eyboard focus.
12249 *
12250 * @polymerBehavior Polymer.PaperInkyFocusBehaviorImpl
12251 */
12252 Polymer.PaperInkyFocusBehaviorImpl = {
12253
12254 observers: [
12255 '_focusedChanged(receivedFocusFromKeyboard)'
12256 ],
12257
12258 _focusedChanged: function(receivedFocusFromKeyboard) {
12259 if (receivedFocusFromKeyboard) {
12260 this.ensureRipple();
12261 }
12262 if (this.hasRipple()) {
12263 this._ripple.holdDown = receivedFocusFromKeyboard;
12264 }
12265 },
12266
12267 _createRipple: function() {
12268 var ripple = Polymer.PaperRippleBehavior._createRipple();
12269 ripple.id = 'ink';
12270 ripple.setAttribute('center', '');
12271 ripple.classList.add('circle');
12272 return ripple;
12273 }
12274
12275 };
12276
12277 /** @polymerBehavior Polymer.PaperInkyFocusBehavior */
12278 Polymer.PaperInkyFocusBehavior = [
12279 Polymer.IronButtonState,
12280 Polymer.IronControlState,
12281 Polymer.PaperRippleBehavior,
12282 Polymer.PaperInkyFocusBehaviorImpl
12283 ];
12284 Polymer({
12285 is: 'paper-material',
12286
12287 properties: {
12288
12289 /**
12290 * The z-depth of this element, from 0-5. Setting to 0 will remove the
12291 * shadow, and each increasing number greater than 0 will be "deeper"
12292 * than the last.
12293 *
12294 * @attribute elevation
12295 * @type number
12296 * @default 1
12297 */
12298 elevation: {
12299 type: Number,
12300 reflectToAttribute: true,
12301 value: 1
12302 },
12303
12304 /**
12305 * Set this to true to animate the shadow when setting a new
12306 * `elevation` value.
12307 *
12308 * @attribute animated
12309 * @type boolean
12310 * @default false
12311 */
12312 animated: {
12313 type: Boolean,
12314 reflectToAttribute: true,
12315 value: false
12316 }
12317 }
12318 });
12282 /** @polymerBehavior Polymer.PaperButtonBehavior */ 12319 /** @polymerBehavior Polymer.PaperButtonBehavior */
12283 Polymer.PaperButtonBehaviorImpl = { 12320 Polymer.PaperButtonBehaviorImpl = {
12284 12321
12285 properties: { 12322 properties: {
12286 12323
12287 /** 12324 /**
12288 * The z-depth of this element, from 0-5. Setting to 0 will remove the 12325 * The z-depth of this element, from 0-5. Setting to 0 will remove the
12289 * shadow, and each increasing number greater than 0 will be "deeper" 12326 * shadow, and each increasing number greater than 0 will be "deeper"
12290 * than the last. 12327 * than the last.
12291 * 12328 *
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
12577 _hideSecondaryProgress: function(secondaryRatio) { 12614 _hideSecondaryProgress: function(secondaryRatio) {
12578 return secondaryRatio === 0; 12615 return secondaryRatio === 0;
12579 } 12616 }
12580 12617
12581 }); 12618 });
12582 // Copyright 2015 The Chromium Authors. All rights reserved. 12619 // Copyright 2015 The Chromium Authors. All rights reserved.
12583 // Use of this source code is governed by a BSD-style license that can be 12620 // Use of this source code is governed by a BSD-style license that can be
12584 // found in the LICENSE file. 12621 // found in the LICENSE file.
12585 12622
12586 cr.define('downloads', function() { 12623 cr.define('downloads', function() {
12624 var InkyTextButton = Polymer({
12625 is: 'inky-text-button',
12626
12627 behaviors: [
12628 Polymer.PaperInkyFocusBehavior
12629 ],
12630
12631 hostAttributes: {
12632 role: 'button',
12633 tabindex: 0,
12634 },
12635 });
12636
12587 var Item = Polymer({ 12637 var Item = Polymer({
12588 is: 'downloads-item', 12638 is: 'downloads-item',
12589 12639
12590 properties: { 12640 properties: {
12591 data: { 12641 data: {
12592 type: Object, 12642 type: Object,
12593 }, 12643 },
12594 12644
12595 hideDate: { 12645 hideDate: {
12596 type: Boolean, 12646 type: Boolean,
(...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after
12893 onSaveDangerousTap_: function() { 12943 onSaveDangerousTap_: function() {
12894 downloads.ActionService.getInstance().saveDangerous(this.data.id); 12944 downloads.ActionService.getInstance().saveDangerous(this.data.id);
12895 }, 12945 },
12896 12946
12897 /** @private */ 12947 /** @private */
12898 onShowTap_: function() { 12948 onShowTap_: function() {
12899 downloads.ActionService.getInstance().show(this.data.id); 12949 downloads.ActionService.getInstance().show(this.data.id);
12900 }, 12950 },
12901 }); 12951 });
12902 12952
12903 return {Item: Item}; 12953 return {
12954 InkyTextButton: InkyTextButton,
12955 Item: Item,
12956 };
12904 }); 12957 });
12905 Polymer({ 12958 Polymer({
12906 is: 'paper-item', 12959 is: 'paper-item',
12907 12960
12908 hostAttributes: { 12961 hostAttributes: {
12909 role: 'listitem', 12962 role: 'listitem',
12910 tabindex: '0' 12963 tabindex: '0'
12911 }, 12964 },
12912 12965
12913 behaviors: [ 12966 behaviors: [
(...skipping 2961 matching lines...) Expand 10 before | Expand all | Expand 10 after
15875 this.close(); 15928 this.close();
15876 } 15929 }
15877 } 15930 }
15878 }); 15931 });
15879 15932
15880 PaperMenuButton.ANIMATION_CUBIC_BEZIER = 'cubic-bezier(.3,.95,.5,1)'; 15933 PaperMenuButton.ANIMATION_CUBIC_BEZIER = 'cubic-bezier(.3,.95,.5,1)';
15881 PaperMenuButton.MAX_ANIMATION_TIME_MS = 400; 15934 PaperMenuButton.MAX_ANIMATION_TIME_MS = 400;
15882 15935
15883 Polymer.PaperMenuButton = PaperMenuButton; 15936 Polymer.PaperMenuButton = PaperMenuButton;
15884 })(); 15937 })();
15885 /**
15886 * `Polymer.PaperInkyFocusBehavior` implements a ripple when the element has k eyboard focus.
15887 *
15888 * @polymerBehavior Polymer.PaperInkyFocusBehaviorImpl
15889 */
15890 Polymer.PaperInkyFocusBehaviorImpl = {
15891
15892 observers: [
15893 '_focusedChanged(receivedFocusFromKeyboard)'
15894 ],
15895
15896 _focusedChanged: function(receivedFocusFromKeyboard) {
15897 if (receivedFocusFromKeyboard) {
15898 this.ensureRipple();
15899 }
15900 if (this.hasRipple()) {
15901 this._ripple.holdDown = receivedFocusFromKeyboard;
15902 }
15903 },
15904
15905 _createRipple: function() {
15906 var ripple = Polymer.PaperRippleBehavior._createRipple();
15907 ripple.id = 'ink';
15908 ripple.setAttribute('center', '');
15909 ripple.classList.add('circle');
15910 return ripple;
15911 }
15912
15913 };
15914
15915 /** @polymerBehavior Polymer.PaperInkyFocusBehavior */
15916 Polymer.PaperInkyFocusBehavior = [
15917 Polymer.IronButtonState,
15918 Polymer.IronControlState,
15919 Polymer.PaperRippleBehavior,
15920 Polymer.PaperInkyFocusBehaviorImpl
15921 ];
15922 Polymer({ 15938 Polymer({
15923 is: 'paper-icon-button', 15939 is: 'paper-icon-button',
15924 15940
15925 hostAttributes: { 15941 hostAttributes: {
15926 role: 'button', 15942 role: 'button',
15927 tabindex: '0' 15943 tabindex: '0'
15928 }, 15944 },
15929 15945
15930 behaviors: [ 15946 behaviors: [
15931 Polymer.PaperInkyFocusBehavior 15947 Polymer.PaperInkyFocusBehavior
(...skipping 947 matching lines...) Expand 10 before | Expand all | Expand 10 after
16879 }; 16895 };
16880 16896
16881 Manager.onLoad = function() { 16897 Manager.onLoad = function() {
16882 document.querySelector('downloads-manager').onLoad_(); 16898 document.querySelector('downloads-manager').onLoad_();
16883 }; 16899 };
16884 16900
16885 return {Manager: Manager}; 16901 return {Manager: Manager};
16886 }); 16902 });
16887 16903
16888 window.addEventListener('load', downloads.Manager.onLoad); 16904 window.addEventListener('load', downloads.Manager.onLoad);
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/resources/md_downloads/item.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698