Index: chrome/browser/resources/md_history/app.vulcanized.html |
diff --git a/chrome/browser/resources/md_history/app.vulcanized.html b/chrome/browser/resources/md_history/app.vulcanized.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..9540eaa06f3ed528dd0ba3c445286cb8310692dc |
--- /dev/null |
+++ b/chrome/browser/resources/md_history/app.vulcanized.html |
@@ -0,0 +1,3997 @@ |
+<html><head><!-- |
+@license |
+Copyright (c) 2014 The Polymer Project Authors. All rights reserved. |
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
+Code distributed by Google as part of the polymer project is also |
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
+--><!-- |
+@license |
+Copyright (c) 2016 The Polymer Project Authors. All rights reserved. |
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
+Code distributed by Google as part of the polymer project is also |
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
+--><!-- |
+@license |
+Copyright (c) 2015 The Polymer Project Authors. All rights reserved. |
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt |
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt |
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt |
+Code distributed by Google as part of the polymer project is also |
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt |
+--><meta charset="UTF-8"><link rel="import" href="chrome://resources/html/polymer.html"> |
+<style> |
+/* Copyright 2016 The Chromium Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. */ |
+ |
+:root { |
+ /* This is a custom, Chrome-specific color that does not have a --paper or |
+ * --google equivalent. */ |
+ --md-background-color: rgb(241, 241, 241); |
+ /* This is --google-blue-700, rewritten as a native custom property for speed. |
+ */ |
+ --md-toolbar-color: rgb(51, 103, 214); |
+} |
+ |
+</style> |
+ |
+</head><body><div hidden="" by-vulcanize=""><style> |
+ /* IE 10 support for HTML5 hidden attr */ |
+ [hidden] { |
+ display: none !important; |
+ } |
+</style> |
+ |
+<style is="custom-style"> |
+ :root { |
+ |
+ --layout: { |
+ display: -ms-flexbox; |
+ display: -webkit-flex; |
+ display: flex; |
+ }; |
+ |
+ --layout-inline: { |
+ display: -ms-inline-flexbox; |
+ display: -webkit-inline-flex; |
+ display: inline-flex; |
+ }; |
+ |
+ --layout-horizontal: { |
+ @apply(--layout); |
+ |
+ -ms-flex-direction: row; |
+ -webkit-flex-direction: row; |
+ flex-direction: row; |
+ }; |
+ |
+ --layout-horizontal-reverse: { |
+ @apply(--layout); |
+ |
+ -ms-flex-direction: row-reverse; |
+ -webkit-flex-direction: row-reverse; |
+ flex-direction: row-reverse; |
+ }; |
+ |
+ --layout-vertical: { |
+ @apply(--layout); |
+ |
+ -ms-flex-direction: column; |
+ -webkit-flex-direction: column; |
+ flex-direction: column; |
+ }; |
+ |
+ --layout-vertical-reverse: { |
+ @apply(--layout); |
+ |
+ -ms-flex-direction: column-reverse; |
+ -webkit-flex-direction: column-reverse; |
+ flex-direction: column-reverse; |
+ }; |
+ |
+ --layout-wrap: { |
+ -ms-flex-wrap: wrap; |
+ -webkit-flex-wrap: wrap; |
+ flex-wrap: wrap; |
+ }; |
+ |
+ --layout-wrap-reverse: { |
+ -ms-flex-wrap: wrap-reverse; |
+ -webkit-flex-wrap: wrap-reverse; |
+ flex-wrap: wrap-reverse; |
+ }; |
+ |
+ --layout-flex-auto: { |
+ -ms-flex: 1 1 auto; |
+ -webkit-flex: 1 1 auto; |
+ flex: 1 1 auto; |
+ }; |
+ |
+ --layout-flex-none: { |
+ -ms-flex: none; |
+ -webkit-flex: none; |
+ flex: none; |
+ }; |
+ |
+ --layout-flex: { |
+ -ms-flex: 1 1 0.000000001px; |
+ -webkit-flex: 1; |
+ flex: 1; |
+ -webkit-flex-basis: 0.000000001px; |
+ flex-basis: 0.000000001px; |
+ }; |
+ |
+ --layout-flex-2: { |
+ -ms-flex: 2; |
+ -webkit-flex: 2; |
+ flex: 2; |
+ }; |
+ |
+ --layout-flex-3: { |
+ -ms-flex: 3; |
+ -webkit-flex: 3; |
+ flex: 3; |
+ }; |
+ |
+ --layout-flex-4: { |
+ -ms-flex: 4; |
+ -webkit-flex: 4; |
+ flex: 4; |
+ }; |
+ |
+ --layout-flex-5: { |
+ -ms-flex: 5; |
+ -webkit-flex: 5; |
+ flex: 5; |
+ }; |
+ |
+ --layout-flex-6: { |
+ -ms-flex: 6; |
+ -webkit-flex: 6; |
+ flex: 6; |
+ }; |
+ |
+ --layout-flex-7: { |
+ -ms-flex: 7; |
+ -webkit-flex: 7; |
+ flex: 7; |
+ }; |
+ |
+ --layout-flex-8: { |
+ -ms-flex: 8; |
+ -webkit-flex: 8; |
+ flex: 8; |
+ }; |
+ |
+ --layout-flex-9: { |
+ -ms-flex: 9; |
+ -webkit-flex: 9; |
+ flex: 9; |
+ }; |
+ |
+ --layout-flex-10: { |
+ -ms-flex: 10; |
+ -webkit-flex: 10; |
+ flex: 10; |
+ }; |
+ |
+ --layout-flex-11: { |
+ -ms-flex: 11; |
+ -webkit-flex: 11; |
+ flex: 11; |
+ }; |
+ |
+ --layout-flex-12: { |
+ -ms-flex: 12; |
+ -webkit-flex: 12; |
+ flex: 12; |
+ }; |
+ |
+ /* alignment in cross axis */ |
+ |
+ --layout-start: { |
+ -ms-flex-align: start; |
+ -webkit-align-items: flex-start; |
+ align-items: flex-start; |
+ }; |
+ |
+ --layout-center: { |
+ -ms-flex-align: center; |
+ -webkit-align-items: center; |
+ align-items: center; |
+ }; |
+ |
+ --layout-end: { |
+ -ms-flex-align: end; |
+ -webkit-align-items: flex-end; |
+ align-items: flex-end; |
+ }; |
+ |
+ --layout-baseline: { |
+ -ms-flex-align: baseline; |
+ -webkit-align-items: baseline; |
+ align-items: baseline; |
+ }; |
+ |
+ /* alignment in main axis */ |
+ |
+ --layout-start-justified: { |
+ -ms-flex-pack: start; |
+ -webkit-justify-content: flex-start; |
+ justify-content: flex-start; |
+ }; |
+ |
+ --layout-center-justified: { |
+ -ms-flex-pack: center; |
+ -webkit-justify-content: center; |
+ justify-content: center; |
+ }; |
+ |
+ --layout-end-justified: { |
+ -ms-flex-pack: end; |
+ -webkit-justify-content: flex-end; |
+ justify-content: flex-end; |
+ }; |
+ |
+ --layout-around-justified: { |
+ -ms-flex-pack: distribute; |
+ -webkit-justify-content: space-around; |
+ justify-content: space-around; |
+ }; |
+ |
+ --layout-justified: { |
+ -ms-flex-pack: justify; |
+ -webkit-justify-content: space-between; |
+ justify-content: space-between; |
+ }; |
+ |
+ --layout-center-center: { |
+ @apply(--layout-center); |
+ @apply(--layout-center-justified); |
+ }; |
+ |
+ /* self alignment */ |
+ |
+ --layout-self-start: { |
+ -ms-align-self: flex-start; |
+ -webkit-align-self: flex-start; |
+ align-self: flex-start; |
+ }; |
+ |
+ --layout-self-center: { |
+ -ms-align-self: center; |
+ -webkit-align-self: center; |
+ align-self: center; |
+ }; |
+ |
+ --layout-self-end: { |
+ -ms-align-self: flex-end; |
+ -webkit-align-self: flex-end; |
+ align-self: flex-end; |
+ }; |
+ |
+ --layout-self-stretch: { |
+ -ms-align-self: stretch; |
+ -webkit-align-self: stretch; |
+ align-self: stretch; |
+ }; |
+ |
+ --layout-self-baseline: { |
+ -ms-align-self: baseline; |
+ -webkit-align-self: baseline; |
+ align-self: baseline; |
+ }; |
+ |
+ /* multi-line alignment in main axis */ |
+ |
+ --layout-start-aligned: { |
+ -ms-flex-line-pack: start; /* IE10 */ |
+ -ms-align-content: flex-start; |
+ -webkit-align-content: flex-start; |
+ align-content: flex-start; |
+ }; |
+ |
+ --layout-end-aligned: { |
+ -ms-flex-line-pack: end; /* IE10 */ |
+ -ms-align-content: flex-end; |
+ -webkit-align-content: flex-end; |
+ align-content: flex-end; |
+ }; |
+ |
+ --layout-center-aligned: { |
+ -ms-flex-line-pack: center; /* IE10 */ |
+ -ms-align-content: center; |
+ -webkit-align-content: center; |
+ align-content: center; |
+ }; |
+ |
+ --layout-between-aligned: { |
+ -ms-flex-line-pack: justify; /* IE10 */ |
+ -ms-align-content: space-between; |
+ -webkit-align-content: space-between; |
+ align-content: space-between; |
+ }; |
+ |
+ --layout-around-aligned: { |
+ -ms-flex-line-pack: distribute; /* IE10 */ |
+ -ms-align-content: space-around; |
+ -webkit-align-content: space-around; |
+ align-content: space-around; |
+ }; |
+ |
+ /******************************* |
+ Other Layout |
+ *******************************/ |
+ |
+ --layout-block: { |
+ display: block; |
+ }; |
+ |
+ --layout-invisible: { |
+ visibility: hidden !important; |
+ }; |
+ |
+ --layout-relative: { |
+ position: relative; |
+ }; |
+ |
+ --layout-fit: { |
+ position: absolute; |
+ top: 0; |
+ right: 0; |
+ bottom: 0; |
+ left: 0; |
+ }; |
+ |
+ --layout-scroll: { |
+ -webkit-overflow-scrolling: touch; |
+ overflow: auto; |
+ }; |
+ |
+ --layout-fullbleed: { |
+ margin: 0; |
+ height: 100vh; |
+ }; |
+ |
+ /* fixed position */ |
+ |
+ --layout-fixed-top: { |
+ position: fixed; |
+ top: 0; |
+ left: 0; |
+ right: 0; |
+ }; |
+ |
+ --layout-fixed-right: { |
+ position: fixed; |
+ top: 0; |
+ right: 0; |
+ bottom: 0; |
+ }; |
+ |
+ --layout-fixed-bottom: { |
+ position: fixed; |
+ right: 0; |
+ bottom: 0; |
+ left: 0; |
+ }; |
+ |
+ --layout-fixed-left: { |
+ position: fixed; |
+ top: 0; |
+ bottom: 0; |
+ left: 0; |
+ }; |
+ |
+ } |
+ |
+</style> |
+ |
+ |
+<dom-module id="app-drawer" assetpath="chrome://resources/polymer/v1_0/app-layout/app-drawer/"> |
+ <template> |
+ <style> |
+ :host { |
+ position: fixed; |
+ top: -120px; |
+ right: 0; |
+ bottom: -120px; |
+ left: 0; |
+ |
+ visibility: hidden; |
+ |
+ transition: visibility 0.2s ease; |
+ } |
+ |
+ :host([opened]) { |
+ visibility: visible; |
+ } |
+ |
+ :host([persistent]) { |
+ width: var(--app-drawer-width, 256px); |
+ } |
+ |
+ :host([persistent][position=left]) { |
+ right: auto; |
+ } |
+ |
+ :host([persistent][position=right]) { |
+ left: auto; |
+ } |
+ |
+ #contentContainer { |
+ position: absolute; |
+ top: 0; |
+ bottom: 0; |
+ left: 0; |
+ |
+ width: var(--app-drawer-width, 256px); |
+ padding: 120px 0; |
+ |
+ transition: 0.2s ease; |
+ transition-property: -webkit-transform; |
+ transition-property: transform; |
+ -webkit-transform: translate3d(-100%, 0, 0); |
+ transform: translate3d(-100%, 0, 0); |
+ |
+ background-color: #FFF; |
+ |
+ @apply(--app-drawer-content-container); |
+ } |
+ |
+ :host([position=right]) > #contentContainer { |
+ right: 0; |
+ left: auto; |
+ |
+ -webkit-transform: translate3d(100%, 0, 0); |
+ transform: translate3d(100%, 0, 0); |
+ } |
+ |
+ :host([swipe-open]) > #contentContainer::after { |
+ position: fixed; |
+ top: 0; |
+ bottom: 0; |
+ left: 100%; |
+ |
+ visibility: visible; |
+ |
+ width: 20px; |
+ |
+ content: ''; |
+ } |
+ |
+ :host([swipe-open][position=right]) > #contentContainer::after { |
+ right: 100%; |
+ left: auto; |
+ } |
+ |
+ :host([opened]) > #contentContainer { |
+ -webkit-transform: translate3d(0, 0, 0); |
+ transform: translate3d(0, 0, 0); |
+ } |
+ |
+ #scrim { |
+ position: absolute; |
+ top: 0; |
+ right: 0; |
+ bottom: 0; |
+ left: 0; |
+ |
+ transition: opacity 0.2s ease; |
+ -webkit-transform: translateZ(0); |
+ transform: translateZ(0); |
+ |
+ opacity: 0; |
+ background: var(--app-drawer-scrim-background, rgba(0, 0, 0, 0.5)); |
+ } |
+ |
+ :host([opened]) > #scrim { |
+ opacity: 1; |
+ } |
+ |
+ :host([opened][persistent]) > #scrim { |
+ visibility: hidden; |
+ /** |
+ * NOTE(keanulee): Keep both opacity: 0 and visibility: hidden to prevent the |
+ * scrim from showing when toggling between closed and opened/persistent. |
+ */ |
+ |
+ opacity: 0; |
+ } |
+ </style> |
+ |
+ <div id="scrim" on-tap="close"></div> |
+ |
+ <div id="contentContainer"> |
+ <content></content> |
+ </div> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="app-location" assetpath="chrome://resources/polymer/v1_0/app-route/"> |
+ <template> |
+ <iron-location path="{{__path}}" query="{{__query}}" hash="{{__hash}}" url-space-regex="{{urlSpaceRegex}}"> |
+ </iron-location> |
+ <iron-query-params params-string="{{__query}}" params-object="{{queryParams}}"> |
+ </iron-query-params> |
+ </template> |
+ </dom-module> |
+<dom-module id="iron-pages" assetpath="chrome://resources/polymer/v1_0/iron-pages/"> |
+ |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ } |
+ |
+ :host > ::content > :not(.iron-selected) { |
+ display: none !important; |
+ } |
+ </style> |
+ |
+ <content></content> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="paper-ripple" assetpath="chrome://resources/polymer/v1_0/paper-ripple/"> |
+ |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ position: absolute; |
+ border-radius: inherit; |
+ overflow: hidden; |
+ top: 0; |
+ left: 0; |
+ right: 0; |
+ bottom: 0; |
+ |
+ /* See PolymerElements/paper-behaviors/issues/34. On non-Chrome browsers, |
+ * creating a node (with a position:absolute) in the middle of an event |
+ * handler "interrupts" that event handler (which happens when the |
+ * ripple is created on demand) */ |
+ pointer-events: none; |
+ } |
+ |
+ :host([animating]) { |
+ /* This resolves a rendering issue in Chrome (as of 40) where the |
+ ripple is not properly clipped by its parent (which may have |
+ rounded corners). See: http://jsbin.com/temexa/4 |
+ |
+ Note: We only apply this style conditionally. Otherwise, the browser |
+ will create a new compositing layer for every ripple element on the |
+ page, and that would be bad. */ |
+ -webkit-transform: translate(0, 0); |
+ transform: translate3d(0, 0, 0); |
+ } |
+ |
+ #background, |
+ #waves, |
+ .wave-container, |
+ .wave { |
+ pointer-events: none; |
+ position: absolute; |
+ top: 0; |
+ left: 0; |
+ width: 100%; |
+ height: 100%; |
+ } |
+ |
+ #background, |
+ .wave { |
+ opacity: 0; |
+ } |
+ |
+ #waves, |
+ .wave { |
+ overflow: hidden; |
+ } |
+ |
+ .wave-container, |
+ .wave { |
+ border-radius: 50%; |
+ } |
+ |
+ :host(.circle) #background, |
+ :host(.circle) #waves { |
+ border-radius: 50%; |
+ } |
+ |
+ :host(.circle) .wave-container { |
+ overflow: hidden; |
+ } |
+ </style> |
+ |
+ <div id="background"></div> |
+ <div id="waves"></div> |
+ </template> |
+</dom-module> |
+<style is="custom-style"> |
+ |
+ :root { |
+ |
+ --shadow-transition: { |
+ transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1); |
+ }; |
+ |
+ --shadow-none: { |
+ box-shadow: none; |
+ }; |
+ |
+ /* from http://codepen.io/shyndman/pen/c5394ddf2e8b2a5c9185904b57421cdb */ |
+ |
+ --shadow-elevation-2dp: { |
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), |
+ 0 1px 5px 0 rgba(0, 0, 0, 0.12), |
+ 0 3px 1px -2px rgba(0, 0, 0, 0.2); |
+ }; |
+ |
+ --shadow-elevation-3dp: { |
+ box-shadow: 0 3px 4px 0 rgba(0, 0, 0, 0.14), |
+ 0 1px 8px 0 rgba(0, 0, 0, 0.12), |
+ 0 3px 3px -2px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ --shadow-elevation-4dp: { |
+ box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), |
+ 0 1px 10px 0 rgba(0, 0, 0, 0.12), |
+ 0 2px 4px -1px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ --shadow-elevation-6dp: { |
+ box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), |
+ 0 1px 18px 0 rgba(0, 0, 0, 0.12), |
+ 0 3px 5px -1px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ --shadow-elevation-8dp: { |
+ box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), |
+ 0 3px 14px 2px rgba(0, 0, 0, 0.12), |
+ 0 5px 5px -3px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ --shadow-elevation-12dp: { |
+ box-shadow: 0 12px 16px 1px rgba(0, 0, 0, 0.14), |
+ 0 4px 22px 3px rgba(0, 0, 0, 0.12), |
+ 0 6px 7px -4px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ --shadow-elevation-16dp: { |
+ box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), |
+ 0 6px 30px 5px rgba(0, 0, 0, 0.12), |
+ 0 8px 10px -5px rgba(0, 0, 0, 0.4); |
+ }; |
+ |
+ } |
+ |
+</style> |
+<dom-module id="paper-material-shared-styles" assetpath="chrome://resources/polymer/v1_0/paper-material/"> |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ position: relative; |
+ } |
+ |
+ :host([elevation="1"]) { |
+ @apply(--shadow-elevation-2dp); |
+ } |
+ |
+ :host([elevation="2"]) { |
+ @apply(--shadow-elevation-4dp); |
+ } |
+ |
+ :host([elevation="3"]) { |
+ @apply(--shadow-elevation-6dp); |
+ } |
+ |
+ :host([elevation="4"]) { |
+ @apply(--shadow-elevation-8dp); |
+ } |
+ |
+ :host([elevation="5"]) { |
+ @apply(--shadow-elevation-16dp); |
+ } |
+ </style> |
+ </template> |
+</dom-module> |
+ |
+ |
+<dom-module id="paper-button" assetpath="chrome://resources/polymer/v1_0/paper-button/"> |
+ <template strip-whitespace=""> |
+ <style include="paper-material-shared-styles"> |
+ :host { |
+ @apply(--layout-inline); |
+ @apply(--layout-center-center); |
+ position: relative; |
+ box-sizing: border-box; |
+ min-width: 5.14em; |
+ margin: 0 0.29em; |
+ background: transparent; |
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
+ -webkit-tap-highlight-color: transparent; |
+ font: inherit; |
+ text-transform: uppercase; |
+ outline-width: 0; |
+ border-radius: 3px; |
+ -moz-user-select: none; |
+ -ms-user-select: none; |
+ -webkit-user-select: none; |
+ user-select: none; |
+ cursor: pointer; |
+ z-index: 0; |
+ padding: 0.7em 0.57em; |
+ |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-button); |
+ } |
+ |
+ :host([hidden]) { |
+ display: none !important; |
+ } |
+ |
+ :host([raised].keyboard-focus) { |
+ font-weight: bold; |
+ @apply(--paper-button-raised-keyboard-focus); |
+ } |
+ |
+ :host(:not([raised]).keyboard-focus) { |
+ font-weight: bold; |
+ @apply(--paper-button-flat-keyboard-focus); |
+ } |
+ |
+ :host([disabled]) { |
+ background: #eaeaea; |
+ color: #a8a8a8; |
+ cursor: auto; |
+ pointer-events: none; |
+ |
+ @apply(--paper-button-disabled); |
+ } |
+ |
+ :host([animated]) { |
+ @apply(--shadow-transition); |
+ } |
+ |
+ paper-ripple { |
+ color: var(--paper-button-ink-color); |
+ } |
+ </style> |
+ |
+ <content></content> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="iron-icon" assetpath="chrome://resources/polymer/v1_0/iron-icon/"> |
+ <template> |
+ <style> |
+ :host { |
+ @apply(--layout-inline); |
+ @apply(--layout-center-center); |
+ position: relative; |
+ |
+ vertical-align: middle; |
+ |
+ fill: var(--iron-icon-fill-color, currentcolor); |
+ stroke: var(--iron-icon-stroke-color, none); |
+ |
+ width: var(--iron-icon-width, 24px); |
+ height: var(--iron-icon-height, 24px); |
+ } |
+ </style> |
+ </template> |
+ |
+ </dom-module> |
+<style is="custom-style"> |
+ |
+ :root { |
+ |
+ /* Material Design color palette for Google products */ |
+ |
+ --google-red-100: #f4c7c3; |
+ --google-red-300: #e67c73; |
+ --google-red-500: #db4437; |
+ --google-red-700: #c53929; |
+ |
+ --google-blue-100: #c6dafc; |
+ --google-blue-300: #7baaf7; |
+ --google-blue-500: #4285f4; |
+ --google-blue-700: #3367d6; |
+ |
+ --google-green-100: #b7e1cd; |
+ --google-green-300: #57bb8a; |
+ --google-green-500: #0f9d58; |
+ --google-green-700: #0b8043; |
+ |
+ --google-yellow-100: #fce8b2; |
+ --google-yellow-300: #f7cb4d; |
+ --google-yellow-500: #f4b400; |
+ --google-yellow-700: #f09300; |
+ |
+ --google-grey-100: #f5f5f5; |
+ --google-grey-300: #e0e0e0; |
+ --google-grey-500: #9e9e9e; |
+ --google-grey-700: #616161; |
+ |
+ /* Material Design color palette from online spec document */ |
+ |
+ --paper-red-50: #ffebee; |
+ --paper-red-100: #ffcdd2; |
+ --paper-red-200: #ef9a9a; |
+ --paper-red-300: #e57373; |
+ --paper-red-400: #ef5350; |
+ --paper-red-500: #f44336; |
+ --paper-red-600: #e53935; |
+ --paper-red-700: #d32f2f; |
+ --paper-red-800: #c62828; |
+ --paper-red-900: #b71c1c; |
+ --paper-red-a100: #ff8a80; |
+ --paper-red-a200: #ff5252; |
+ --paper-red-a400: #ff1744; |
+ --paper-red-a700: #d50000; |
+ |
+ --paper-pink-50: #fce4ec; |
+ --paper-pink-100: #f8bbd0; |
+ --paper-pink-200: #f48fb1; |
+ --paper-pink-300: #f06292; |
+ --paper-pink-400: #ec407a; |
+ --paper-pink-500: #e91e63; |
+ --paper-pink-600: #d81b60; |
+ --paper-pink-700: #c2185b; |
+ --paper-pink-800: #ad1457; |
+ --paper-pink-900: #880e4f; |
+ --paper-pink-a100: #ff80ab; |
+ --paper-pink-a200: #ff4081; |
+ --paper-pink-a400: #f50057; |
+ --paper-pink-a700: #c51162; |
+ |
+ --paper-purple-50: #f3e5f5; |
+ --paper-purple-100: #e1bee7; |
+ --paper-purple-200: #ce93d8; |
+ --paper-purple-300: #ba68c8; |
+ --paper-purple-400: #ab47bc; |
+ --paper-purple-500: #9c27b0; |
+ --paper-purple-600: #8e24aa; |
+ --paper-purple-700: #7b1fa2; |
+ --paper-purple-800: #6a1b9a; |
+ --paper-purple-900: #4a148c; |
+ --paper-purple-a100: #ea80fc; |
+ --paper-purple-a200: #e040fb; |
+ --paper-purple-a400: #d500f9; |
+ --paper-purple-a700: #aa00ff; |
+ |
+ --paper-deep-purple-50: #ede7f6; |
+ --paper-deep-purple-100: #d1c4e9; |
+ --paper-deep-purple-200: #b39ddb; |
+ --paper-deep-purple-300: #9575cd; |
+ --paper-deep-purple-400: #7e57c2; |
+ --paper-deep-purple-500: #673ab7; |
+ --paper-deep-purple-600: #5e35b1; |
+ --paper-deep-purple-700: #512da8; |
+ --paper-deep-purple-800: #4527a0; |
+ --paper-deep-purple-900: #311b92; |
+ --paper-deep-purple-a100: #b388ff; |
+ --paper-deep-purple-a200: #7c4dff; |
+ --paper-deep-purple-a400: #651fff; |
+ --paper-deep-purple-a700: #6200ea; |
+ |
+ --paper-indigo-50: #e8eaf6; |
+ --paper-indigo-100: #c5cae9; |
+ --paper-indigo-200: #9fa8da; |
+ --paper-indigo-300: #7986cb; |
+ --paper-indigo-400: #5c6bc0; |
+ --paper-indigo-500: #3f51b5; |
+ --paper-indigo-600: #3949ab; |
+ --paper-indigo-700: #303f9f; |
+ --paper-indigo-800: #283593; |
+ --paper-indigo-900: #1a237e; |
+ --paper-indigo-a100: #8c9eff; |
+ --paper-indigo-a200: #536dfe; |
+ --paper-indigo-a400: #3d5afe; |
+ --paper-indigo-a700: #304ffe; |
+ |
+ --paper-blue-50: #e3f2fd; |
+ --paper-blue-100: #bbdefb; |
+ --paper-blue-200: #90caf9; |
+ --paper-blue-300: #64b5f6; |
+ --paper-blue-400: #42a5f5; |
+ --paper-blue-500: #2196f3; |
+ --paper-blue-600: #1e88e5; |
+ --paper-blue-700: #1976d2; |
+ --paper-blue-800: #1565c0; |
+ --paper-blue-900: #0d47a1; |
+ --paper-blue-a100: #82b1ff; |
+ --paper-blue-a200: #448aff; |
+ --paper-blue-a400: #2979ff; |
+ --paper-blue-a700: #2962ff; |
+ |
+ --paper-light-blue-50: #e1f5fe; |
+ --paper-light-blue-100: #b3e5fc; |
+ --paper-light-blue-200: #81d4fa; |
+ --paper-light-blue-300: #4fc3f7; |
+ --paper-light-blue-400: #29b6f6; |
+ --paper-light-blue-500: #03a9f4; |
+ --paper-light-blue-600: #039be5; |
+ --paper-light-blue-700: #0288d1; |
+ --paper-light-blue-800: #0277bd; |
+ --paper-light-blue-900: #01579b; |
+ --paper-light-blue-a100: #80d8ff; |
+ --paper-light-blue-a200: #40c4ff; |
+ --paper-light-blue-a400: #00b0ff; |
+ --paper-light-blue-a700: #0091ea; |
+ |
+ --paper-cyan-50: #e0f7fa; |
+ --paper-cyan-100: #b2ebf2; |
+ --paper-cyan-200: #80deea; |
+ --paper-cyan-300: #4dd0e1; |
+ --paper-cyan-400: #26c6da; |
+ --paper-cyan-500: #00bcd4; |
+ --paper-cyan-600: #00acc1; |
+ --paper-cyan-700: #0097a7; |
+ --paper-cyan-800: #00838f; |
+ --paper-cyan-900: #006064; |
+ --paper-cyan-a100: #84ffff; |
+ --paper-cyan-a200: #18ffff; |
+ --paper-cyan-a400: #00e5ff; |
+ --paper-cyan-a700: #00b8d4; |
+ |
+ --paper-teal-50: #e0f2f1; |
+ --paper-teal-100: #b2dfdb; |
+ --paper-teal-200: #80cbc4; |
+ --paper-teal-300: #4db6ac; |
+ --paper-teal-400: #26a69a; |
+ --paper-teal-500: #009688; |
+ --paper-teal-600: #00897b; |
+ --paper-teal-700: #00796b; |
+ --paper-teal-800: #00695c; |
+ --paper-teal-900: #004d40; |
+ --paper-teal-a100: #a7ffeb; |
+ --paper-teal-a200: #64ffda; |
+ --paper-teal-a400: #1de9b6; |
+ --paper-teal-a700: #00bfa5; |
+ |
+ --paper-green-50: #e8f5e9; |
+ --paper-green-100: #c8e6c9; |
+ --paper-green-200: #a5d6a7; |
+ --paper-green-300: #81c784; |
+ --paper-green-400: #66bb6a; |
+ --paper-green-500: #4caf50; |
+ --paper-green-600: #43a047; |
+ --paper-green-700: #388e3c; |
+ --paper-green-800: #2e7d32; |
+ --paper-green-900: #1b5e20; |
+ --paper-green-a100: #b9f6ca; |
+ --paper-green-a200: #69f0ae; |
+ --paper-green-a400: #00e676; |
+ --paper-green-a700: #00c853; |
+ |
+ --paper-light-green-50: #f1f8e9; |
+ --paper-light-green-100: #dcedc8; |
+ --paper-light-green-200: #c5e1a5; |
+ --paper-light-green-300: #aed581; |
+ --paper-light-green-400: #9ccc65; |
+ --paper-light-green-500: #8bc34a; |
+ --paper-light-green-600: #7cb342; |
+ --paper-light-green-700: #689f38; |
+ --paper-light-green-800: #558b2f; |
+ --paper-light-green-900: #33691e; |
+ --paper-light-green-a100: #ccff90; |
+ --paper-light-green-a200: #b2ff59; |
+ --paper-light-green-a400: #76ff03; |
+ --paper-light-green-a700: #64dd17; |
+ |
+ --paper-lime-50: #f9fbe7; |
+ --paper-lime-100: #f0f4c3; |
+ --paper-lime-200: #e6ee9c; |
+ --paper-lime-300: #dce775; |
+ --paper-lime-400: #d4e157; |
+ --paper-lime-500: #cddc39; |
+ --paper-lime-600: #c0ca33; |
+ --paper-lime-700: #afb42b; |
+ --paper-lime-800: #9e9d24; |
+ --paper-lime-900: #827717; |
+ --paper-lime-a100: #f4ff81; |
+ --paper-lime-a200: #eeff41; |
+ --paper-lime-a400: #c6ff00; |
+ --paper-lime-a700: #aeea00; |
+ |
+ --paper-yellow-50: #fffde7; |
+ --paper-yellow-100: #fff9c4; |
+ --paper-yellow-200: #fff59d; |
+ --paper-yellow-300: #fff176; |
+ --paper-yellow-400: #ffee58; |
+ --paper-yellow-500: #ffeb3b; |
+ --paper-yellow-600: #fdd835; |
+ --paper-yellow-700: #fbc02d; |
+ --paper-yellow-800: #f9a825; |
+ --paper-yellow-900: #f57f17; |
+ --paper-yellow-a100: #ffff8d; |
+ --paper-yellow-a200: #ffff00; |
+ --paper-yellow-a400: #ffea00; |
+ --paper-yellow-a700: #ffd600; |
+ |
+ --paper-amber-50: #fff8e1; |
+ --paper-amber-100: #ffecb3; |
+ --paper-amber-200: #ffe082; |
+ --paper-amber-300: #ffd54f; |
+ --paper-amber-400: #ffca28; |
+ --paper-amber-500: #ffc107; |
+ --paper-amber-600: #ffb300; |
+ --paper-amber-700: #ffa000; |
+ --paper-amber-800: #ff8f00; |
+ --paper-amber-900: #ff6f00; |
+ --paper-amber-a100: #ffe57f; |
+ --paper-amber-a200: #ffd740; |
+ --paper-amber-a400: #ffc400; |
+ --paper-amber-a700: #ffab00; |
+ |
+ --paper-orange-50: #fff3e0; |
+ --paper-orange-100: #ffe0b2; |
+ --paper-orange-200: #ffcc80; |
+ --paper-orange-300: #ffb74d; |
+ --paper-orange-400: #ffa726; |
+ --paper-orange-500: #ff9800; |
+ --paper-orange-600: #fb8c00; |
+ --paper-orange-700: #f57c00; |
+ --paper-orange-800: #ef6c00; |
+ --paper-orange-900: #e65100; |
+ --paper-orange-a100: #ffd180; |
+ --paper-orange-a200: #ffab40; |
+ --paper-orange-a400: #ff9100; |
+ --paper-orange-a700: #ff6500; |
+ |
+ --paper-deep-orange-50: #fbe9e7; |
+ --paper-deep-orange-100: #ffccbc; |
+ --paper-deep-orange-200: #ffab91; |
+ --paper-deep-orange-300: #ff8a65; |
+ --paper-deep-orange-400: #ff7043; |
+ --paper-deep-orange-500: #ff5722; |
+ --paper-deep-orange-600: #f4511e; |
+ --paper-deep-orange-700: #e64a19; |
+ --paper-deep-orange-800: #d84315; |
+ --paper-deep-orange-900: #bf360c; |
+ --paper-deep-orange-a100: #ff9e80; |
+ --paper-deep-orange-a200: #ff6e40; |
+ --paper-deep-orange-a400: #ff3d00; |
+ --paper-deep-orange-a700: #dd2c00; |
+ |
+ --paper-brown-50: #efebe9; |
+ --paper-brown-100: #d7ccc8; |
+ --paper-brown-200: #bcaaa4; |
+ --paper-brown-300: #a1887f; |
+ --paper-brown-400: #8d6e63; |
+ --paper-brown-500: #795548; |
+ --paper-brown-600: #6d4c41; |
+ --paper-brown-700: #5d4037; |
+ --paper-brown-800: #4e342e; |
+ --paper-brown-900: #3e2723; |
+ |
+ --paper-grey-50: #fafafa; |
+ --paper-grey-100: #f5f5f5; |
+ --paper-grey-200: #eeeeee; |
+ --paper-grey-300: #e0e0e0; |
+ --paper-grey-400: #bdbdbd; |
+ --paper-grey-500: #9e9e9e; |
+ --paper-grey-600: #757575; |
+ --paper-grey-700: #616161; |
+ --paper-grey-800: #424242; |
+ --paper-grey-900: #212121; |
+ |
+ --paper-blue-grey-50: #eceff1; |
+ --paper-blue-grey-100: #cfd8dc; |
+ --paper-blue-grey-200: #b0bec5; |
+ --paper-blue-grey-300: #90a4ae; |
+ --paper-blue-grey-400: #78909c; |
+ --paper-blue-grey-500: #607d8b; |
+ --paper-blue-grey-600: #546e7a; |
+ --paper-blue-grey-700: #455a64; |
+ --paper-blue-grey-800: #37474f; |
+ --paper-blue-grey-900: #263238; |
+ |
+ /* opacity for dark text on a light background */ |
+ --dark-divider-opacity: 0.12; |
+ --dark-disabled-opacity: 0.38; /* or hint text or icon */ |
+ --dark-secondary-opacity: 0.54; |
+ --dark-primary-opacity: 0.87; |
+ |
+ /* opacity for light text on a dark background */ |
+ --light-divider-opacity: 0.12; |
+ --light-disabled-opacity: 0.3; /* or hint text or icon */ |
+ --light-secondary-opacity: 0.7; |
+ --light-primary-opacity: 1.0; |
+ |
+ } |
+ |
+</style> |
+ |
+ |
+<style is="custom-style"> |
+ |
+ :root { |
+ /* |
+ * You can use these generic variables in your elements for easy theming. |
+ * For example, if all your elements use `--primary-text-color` as its main |
+ * color, then switching from a light to a dark theme is just a matter of |
+ * changing the value of `--primary-text-color` in your application. |
+ */ |
+ --primary-text-color: var(--light-theme-text-color); |
+ --primary-background-color: var(--light-theme-background-color); |
+ --secondary-text-color: var(--light-theme-secondary-color); |
+ --disabled-text-color: var(--light-theme-disabled-color); |
+ --divider-color: var(--light-theme-divider-color); |
+ --error-color: var(--paper-deep-orange-a700); |
+ |
+ /* |
+ * Primary and accent colors. Also see color.html for more colors. |
+ */ |
+ --primary-color: var(--paper-indigo-500); |
+ --light-primary-color: var(--paper-indigo-100); |
+ --dark-primary-color: var(--paper-indigo-700); |
+ |
+ --accent-color: var(--paper-pink-a200); |
+ --light-accent-color: var(--paper-pink-a100); |
+ --dark-accent-color: var(--paper-pink-a400); |
+ |
+ |
+ /* |
+ * Material Design Light background theme |
+ */ |
+ --light-theme-background-color: #ffffff; |
+ --light-theme-base-color: #000000; |
+ --light-theme-text-color: var(--paper-grey-900); |
+ --light-theme-secondary-color: #737373; /* for secondary text and icons */ |
+ --light-theme-disabled-color: #9b9b9b; /* disabled/hint text */ |
+ --light-theme-divider-color: #dbdbdb; |
+ |
+ /* |
+ * Material Design Dark background theme |
+ */ |
+ --dark-theme-background-color: var(--paper-grey-900); |
+ --dark-theme-base-color: #ffffff; |
+ --dark-theme-text-color: #ffffff; |
+ --dark-theme-secondary-color: #bcbcbc; /* for secondary text and icons */ |
+ --dark-theme-disabled-color: #646464; /* disabled/hint text */ |
+ --dark-theme-divider-color: #3c3c3c; |
+ |
+ /* |
+ * Deprecated values because of their confusing names. |
+ */ |
+ --text-primary-color: var(--dark-theme-text-color); |
+ --default-primary-color: var(--primary-color); |
+ |
+ } |
+ |
+</style> |
+ |
+ |
+<dom-module id="paper-icon-button" assetpath="chrome://resources/polymer/v1_0/paper-icon-button/"> |
+ <template strip-whitespace=""> |
+ <style> |
+ :host { |
+ display: inline-block; |
+ position: relative; |
+ padding: 8px; |
+ outline: none; |
+ -webkit-user-select: none; |
+ -moz-user-select: none; |
+ -ms-user-select: none; |
+ user-select: none; |
+ cursor: pointer; |
+ z-index: 0; |
+ line-height: 1; |
+ |
+ width: 40px; |
+ height: 40px; |
+ |
+ /* NOTE: Both values are needed, since some phones require the value to be `transparent`. */ |
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
+ -webkit-tap-highlight-color: transparent; |
+ |
+ /* Because of polymer/2558, this style has lower specificity than * */ |
+ box-sizing: border-box !important; |
+ |
+ @apply(--paper-icon-button); |
+ } |
+ |
+ :host #ink { |
+ color: var(--paper-icon-button-ink-color, --primary-text-color); |
+ opacity: 0.6; |
+ } |
+ |
+ :host([disabled]) { |
+ color: var(--paper-icon-button-disabled-text, --disabled-text-color); |
+ pointer-events: none; |
+ cursor: auto; |
+ |
+ @apply(--paper-icon-button-disabled); |
+ } |
+ |
+ :host(:hover) { |
+ @apply(--paper-icon-button-hover); |
+ } |
+ |
+ iron-icon { |
+ --iron-icon-width: 100%; |
+ --iron-icon-height: 100%; |
+ } |
+ </style> |
+ |
+ <iron-icon id="icon" src="[[src]]" icon="[[icon]]" alt$="[[alt]]"></iron-icon> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="paper-tab" assetpath="chrome://resources/polymer/v1_0/paper-tabs/"> |
+ <template> |
+ <style> |
+ :host { |
+ @apply(--layout-inline); |
+ @apply(--layout-center); |
+ @apply(--layout-center-justified); |
+ @apply(--layout-flex-auto); |
+ |
+ position: relative; |
+ padding: 0 12px; |
+ overflow: hidden; |
+ cursor: pointer; |
+ vertical-align: middle; |
+ |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-tab); |
+ } |
+ |
+ :host(:focus) { |
+ outline: none; |
+ } |
+ |
+ :host([link]) { |
+ padding: 0; |
+ } |
+ |
+ .tab-content { |
+ height: 100%; |
+ transform: translateZ(0); |
+ -webkit-transform: translateZ(0); |
+ transition: opacity 0.1s cubic-bezier(0.4, 0.0, 1, 1); |
+ @apply(--layout-horizontal); |
+ @apply(--layout-center-center); |
+ @apply(--layout-flex-auto); |
+ @apply(--paper-tab-content); |
+ } |
+ |
+ :host(:not(.iron-selected)) > .tab-content { |
+ opacity: 0.8; |
+ |
+ @apply(--paper-tab-content-unselected); |
+ } |
+ |
+ :host(:focus) .tab-content { |
+ opacity: 1; |
+ font-weight: 700; |
+ } |
+ |
+ paper-ripple { |
+ color: var(--paper-tab-ink, --paper-yellow-a100); |
+ } |
+ |
+ .tab-content > ::content > a { |
+ @apply(--layout-flex-auto); |
+ |
+ height: 100%; |
+ } |
+ </style> |
+ |
+ <div class="tab-content"> |
+ <content></content> |
+ </div> |
+ </template> |
+ |
+ </dom-module> |
+<iron-iconset-svg name="paper-tabs" size="24"> |
+<svg><defs> |
+<g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g> |
+<g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g> |
+</defs></svg> |
+</iron-iconset-svg> |
+ |
+ |
+<dom-module id="paper-tabs" assetpath="chrome://resources/polymer/v1_0/paper-tabs/"> |
+ <template> |
+ <style> |
+ :host { |
+ @apply(--layout); |
+ @apply(--layout-center); |
+ |
+ height: 48px; |
+ font-size: 14px; |
+ font-weight: 500; |
+ overflow: hidden; |
+ -moz-user-select: none; |
+ -ms-user-select: none; |
+ -webkit-user-select: none; |
+ user-select: none; |
+ |
+ /* NOTE: Both values are needed, since some phones require the value to be `transparent`. */ |
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
+ -webkit-tap-highlight-color: transparent; |
+ |
+ @apply(--paper-tabs); |
+ } |
+ |
+ :host-context([dir=rtl]) { |
+ @apply(--layout-horizontal-reverse); |
+ } |
+ |
+ #tabsContainer { |
+ position: relative; |
+ height: 100%; |
+ white-space: nowrap; |
+ overflow: hidden; |
+ @apply(--layout-flex-auto); |
+ } |
+ |
+ #tabsContent { |
+ height: 100%; |
+ -moz-flex-basis: auto; |
+ -ms-flex-basis: auto; |
+ flex-basis: auto; |
+ } |
+ |
+ #tabsContent.scrollable { |
+ position: absolute; |
+ white-space: nowrap; |
+ } |
+ |
+ #tabsContent:not(.scrollable), |
+ #tabsContent.scrollable.fit-container { |
+ @apply(--layout-horizontal); |
+ } |
+ |
+ #tabsContent.scrollable.fit-container { |
+ min-width: 100%; |
+ } |
+ |
+ #tabsContent.scrollable.fit-container > ::content > * { |
+ /* IE - prevent tabs from compressing when they should scroll. */ |
+ -ms-flex: 1 0 auto; |
+ -webkit-flex: 1 0 auto; |
+ flex: 1 0 auto; |
+ } |
+ |
+ .hidden { |
+ display: none; |
+ } |
+ |
+ .not-visible { |
+ opacity: 0; |
+ cursor: default; |
+ } |
+ |
+ paper-icon-button { |
+ width: 48px; |
+ height: 48px; |
+ padding: 12px; |
+ margin: 0 4px; |
+ } |
+ |
+ #selectionBar { |
+ position: absolute; |
+ height: 2px; |
+ bottom: 0; |
+ left: 0; |
+ right: 0; |
+ background-color: var(--paper-tabs-selection-bar-color, --paper-yellow-a100); |
+ -webkit-transform: scale(0); |
+ transform: scale(0); |
+ -webkit-transform-origin: left center; |
+ transform-origin: left center; |
+ transition: -webkit-transform; |
+ transition: transform; |
+ |
+ @apply(--paper-tabs-selection-bar); |
+ } |
+ |
+ #selectionBar.align-bottom { |
+ top: 0; |
+ bottom: auto; |
+ } |
+ |
+ #selectionBar.expand { |
+ transition-duration: 0.15s; |
+ transition-timing-function: cubic-bezier(0.4, 0.0, 1, 1); |
+ } |
+ |
+ #selectionBar.contract { |
+ transition-duration: 0.18s; |
+ transition-timing-function: cubic-bezier(0.0, 0.0, 0.2, 1); |
+ } |
+ |
+ #tabsContent > ::content > *:not(#selectionBar) { |
+ height: 100%; |
+ } |
+ </style> |
+ |
+ <paper-icon-button icon="paper-tabs:chevron-left" class$="[[_computeScrollButtonClass(_leftHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onLeftScrollButtonDown" tabindex="-1"></paper-icon-button> |
+ |
+ <div id="tabsContainer" on-track="_scroll" on-down="_down"> |
+ <div id="tabsContent" class$="[[_computeTabsContentClass(scrollable, fitContainer)]]"> |
+ <div id="selectionBar" class$="[[_computeSelectionBarClass(noBar, alignBottom)]]" on-transitionend="_onBarTransitionEnd"></div> |
+ <content select="*"></content> |
+ </div> |
+ </div> |
+ |
+ <paper-icon-button icon="paper-tabs:chevron-right" class$="[[_computeScrollButtonClass(_rightHidden, scrollable, hideScrollButtons)]]" on-up="_onScrollButtonUp" on-down="_onRightScrollButtonDown" tabindex="-1"></paper-icon-button> |
+ |
+ </template> |
+ |
+ </dom-module> |
+<iron-iconset-svg name="cr" size="24"> |
+ <svg> |
+ <defs> |
+ |
+ <g id="add"><path d="M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z"></path></g> |
+ <g id="arrow-drop-down"><path d="M7 10l5 5 5-5z"></path></g> |
+ <g id="cancel"><path d="M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"></path></g> |
+<if expr="chromeos"> |
+ <g id="check"><path d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"></path></g> |
+</if> |
+ <g id="chevron-right"><path d="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"></path></g> |
+ <g id="clear"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> |
+ <g id="close"><path d="M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></g> |
+ <g id="domain"><path d="M12 7V3H2v18h20V7H12zM6 19H4v-2h2v2zm0-4H4v-2h2v2zm0-4H4V9h2v2zm0-4H4V5h2v2zm4 12H8v-2h2v2zm0-4H8v-2h2v2zm0-4H8V9h2v2zm0-4H8V5h2v2zm10 12h-8v-2h2v-2h-2v-2h2v-2h-2V9h8v10zm-2-8h-2v2h2v-2zm0 4h-2v2h2v-2z"></path></g> |
+ <g id="expand-less"><path d="M12 8l-6 6 1.41 1.41L12 10.83l4.59 4.58L18 14z"></path></g> |
+ <g id="expand-more"><path d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"></path></g> |
+ <g id="extension"><path d="M20.5 11H19V7c0-1.1-.9-2-2-2h-4V3.5C13 2.12 11.88 1 10.5 1S8 2.12 8 3.5V5H4c-1.1 0-1.99.9-1.99 2v3.8H3.5c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-1.5c0-1.49 1.21-2.7 2.7-2.7 1.49 0 2.7 1.21 2.7 2.7V22H17c1.1 0 2-.9 2-2v-4h1.5c1.38 0 2.5-1.12 2.5-2.5S21.88 11 20.5 11z"></path></g> |
+ <g id="file-download"><path d="M19 9h-4V3H9v6H5l7 7 7-7zM5 18v2h14v-2H5z"></path></g> |
+ <g id="fullscreen"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"></path></g> |
+ <g id="group"><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"></path></g> |
+ <g id="menu"><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"></path></g> |
+ <g id="more-vert"><path d="M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z"></path></g> |
+ <g id="person"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"></path></g> |
+ <g id="print"><path d="M19 8H5c-1.66 0-3 1.34-3 3v6h4v4h12v-4h4v-6c0-1.66-1.34-3-3-3zm-3 11H8v-5h8v5zm3-7c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1zm-1-9H6v4h12V3z"></path></g> |
+ <g id="search"><path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"></path></g> |
+ <g id="settings"><path d="M19.43 12.98c.04-.32.07-.64.07-.98s-.03-.66-.07-.98l2.11-1.65c.19-.15.24-.42.12-.64l-2-3.46c-.12-.22-.39-.3-.61-.22l-2.49 1c-.52-.4-1.08-.73-1.69-.98l-.38-2.65C14.46 2.18 14.25 2 14 2h-4c-.25 0-.46.18-.49.42l-.38 2.65c-.61.25-1.17.59-1.69.98l-2.49-1c-.23-.09-.49 0-.61.22l-2 3.46c-.13.22-.07.49.12.64l2.11 1.65c-.04.32-.07.65-.07.98s.03.66.07.98l-2.11 1.65c-.19.15-.24.42-.12.64l2 3.46c.12.22.39.3.61.22l2.49-1c.52.4 1.08.73 1.69.98l.38 2.65c.03.24.24.42.49.42h4c.25 0 .46-.18.49-.42l.38-2.65c.61-.25 1.17-.59 1.69-.98l2.49 1c.23.09.49 0 .61-.22l2-3.46c.12-.22.07-.49-.12-.64l-2.11-1.65zM12 15.5c-1.93 0-3.5-1.57-3.5-3.5s1.57-3.5 3.5-3.5 3.5 1.57 3.5 3.5-1.57 3.5-3.5 3.5z"></path></g> |
+ <g id="star"><path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path></g> |
+ <g id="warning"><path d="M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z"></path></g> |
+ </defs> |
+ </svg> |
+</iron-iconset-svg> |
+ |
+ |
+<dom-module id="iron-a11y-announcer" assetpath="chrome://resources/polymer/v1_0/iron-a11y-announcer/"> |
+ <template> |
+ <style> |
+ :host { |
+ display: inline-block; |
+ position: fixed; |
+ clip: rect(0px,0px,0px,0px); |
+ } |
+ </style> |
+ <div aria-live$="[[mode]]">[[_text]]</div> |
+ </template> |
+ |
+ </dom-module> |
+<style> |
+/* Copyright 2015 The Chromium Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. */ |
+ |
+<if expr="not chromeos"> |
+@font-face { |
+ font-family: 'Roboto'; |
+ font-style: normal; |
+ font-weight: 400; |
+ src: local('Roboto'), local('Roboto-Regular'), |
+ url("chrome://resources/roboto/roboto-regular.woff2") format('woff2'); |
+} |
+ |
+@font-face { |
+ font-family: 'Roboto'; |
+ font-style: normal; |
+ font-weight: 500; |
+ src: local('Roboto Medium'), local('Roboto-Medium'), |
+ url("chrome://resources/roboto/roboto-medium.woff2") format('woff2'); |
+} |
+ |
+@font-face { |
+ font-family: 'Roboto'; |
+ font-style: normal; |
+ font-weight: 700; |
+ src: local('Roboto Bold'), local('Roboto-Bold'), |
+ url("chrome://resources/roboto/roboto-bold.woff2") format('woff2'); |
+} |
+</if> |
+ |
+</style> |
+<style is="custom-style"> |
+ |
+ :root { |
+ |
+ /* Shared Styles */ |
+ --paper-font-common-base: { |
+ font-family: 'Roboto', 'Noto', sans-serif; |
+ -webkit-font-smoothing: antialiased; |
+ }; |
+ |
+ --paper-font-common-code: { |
+ font-family: 'Roboto Mono', 'Consolas', 'Menlo', monospace; |
+ -webkit-font-smoothing: antialiased; |
+ }; |
+ |
+ --paper-font-common-expensive-kerning: { |
+ text-rendering: optimizeLegibility; |
+ }; |
+ |
+ --paper-font-common-nowrap: { |
+ white-space: nowrap; |
+ overflow: hidden; |
+ text-overflow: ellipsis; |
+ }; |
+ |
+ /* Material Font Styles */ |
+ |
+ --paper-font-display4: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 112px; |
+ font-weight: 300; |
+ letter-spacing: -.044em; |
+ line-height: 120px; |
+ }; |
+ |
+ --paper-font-display3: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 56px; |
+ font-weight: 400; |
+ letter-spacing: -.026em; |
+ line-height: 60px; |
+ }; |
+ |
+ --paper-font-display2: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 45px; |
+ font-weight: 400; |
+ letter-spacing: -.018em; |
+ line-height: 48px; |
+ }; |
+ |
+ --paper-font-display1: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 34px; |
+ font-weight: 400; |
+ letter-spacing: -.01em; |
+ line-height: 40px; |
+ }; |
+ |
+ --paper-font-headline: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 24px; |
+ font-weight: 400; |
+ letter-spacing: -.012em; |
+ line-height: 32px; |
+ }; |
+ |
+ --paper-font-title: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 20px; |
+ font-weight: 500; |
+ line-height: 28px; |
+ }; |
+ |
+ --paper-font-subhead: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 16px; |
+ font-weight: 400; |
+ line-height: 24px; |
+ }; |
+ |
+ --paper-font-body2: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 14px; |
+ font-weight: 500; |
+ line-height: 24px; |
+ }; |
+ |
+ --paper-font-body1: { |
+ @apply(--paper-font-common-base); |
+ |
+ font-size: 14px; |
+ font-weight: 400; |
+ line-height: 20px; |
+ }; |
+ |
+ --paper-font-caption: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 12px; |
+ font-weight: 400; |
+ letter-spacing: 0.011em; |
+ line-height: 20px; |
+ }; |
+ |
+ --paper-font-menu: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 13px; |
+ font-weight: 500; |
+ line-height: 24px; |
+ }; |
+ |
+ --paper-font-button: { |
+ @apply(--paper-font-common-base); |
+ @apply(--paper-font-common-nowrap); |
+ |
+ font-size: 14px; |
+ font-weight: 500; |
+ letter-spacing: 0.018em; |
+ line-height: 24px; |
+ text-transform: uppercase; |
+ }; |
+ |
+ --paper-font-code2: { |
+ @apply(--paper-font-common-code); |
+ |
+ font-size: 14px; |
+ font-weight: 700; |
+ line-height: 20px; |
+ }; |
+ |
+ --paper-font-code1: { |
+ @apply(--paper-font-common-code); |
+ |
+ font-size: 14px; |
+ font-weight: 500; |
+ line-height: 20px; |
+ }; |
+ |
+ } |
+ |
+</style> |
+ |
+ |
+<dom-module id="paper-input-container" assetpath="chrome://resources/polymer/v1_0/paper-input/"> |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ padding: 8px 0; |
+ |
+ @apply(--paper-input-container); |
+ } |
+ |
+ :host([inline]) { |
+ display: inline-block; |
+ } |
+ |
+ :host([disabled]) { |
+ pointer-events: none; |
+ opacity: 0.33; |
+ |
+ @apply(--paper-input-container-disabled); |
+ } |
+ |
+ :host([hidden]) { |
+ display: none !important; |
+ } |
+ |
+ .floated-label-placeholder { |
+ @apply(--paper-font-caption); |
+ } |
+ |
+ .underline { |
+ position: relative; |
+ } |
+ |
+ .focused-line { |
+ @apply(--layout-fit); |
+ |
+ background: var(--paper-input-container-focus-color, --primary-color); |
+ height: 2px; |
+ |
+ -webkit-transform-origin: center center; |
+ transform-origin: center center; |
+ -webkit-transform: scale3d(0,1,1); |
+ transform: scale3d(0,1,1); |
+ |
+ @apply(--paper-input-container-underline-focus); |
+ } |
+ |
+ .underline.is-highlighted .focused-line { |
+ -webkit-transform: none; |
+ transform: none; |
+ -webkit-transition: -webkit-transform 0.25s; |
+ transition: transform 0.25s; |
+ |
+ @apply(--paper-transition-easing); |
+ } |
+ |
+ .underline.is-invalid .focused-line { |
+ background: var(--paper-input-container-invalid-color, --error-color); |
+ -webkit-transform: none; |
+ transform: none; |
+ -webkit-transition: -webkit-transform 0.25s; |
+ transition: transform 0.25s; |
+ |
+ @apply(--paper-transition-easing); |
+ } |
+ |
+ .unfocused-line { |
+ @apply(--layout-fit); |
+ |
+ background: var(--paper-input-container-color, --secondary-text-color); |
+ height: 1px; |
+ |
+ @apply(--paper-input-container-underline); |
+ } |
+ |
+ :host([disabled]) .unfocused-line { |
+ border-bottom: 1px dashed; |
+ border-color: var(--paper-input-container-color, --secondary-text-color); |
+ background: transparent; |
+ |
+ @apply(--paper-input-container-underline-disabled); |
+ } |
+ |
+ .label-and-input-container { |
+ @apply(--layout-flex-auto); |
+ @apply(--layout-relative); |
+ |
+ width: 100%; |
+ max-width: 100%; |
+ } |
+ |
+ .input-content { |
+ @apply(--layout-horizontal); |
+ @apply(--layout-center); |
+ |
+ position: relative; |
+ } |
+ |
+ .input-content ::content label, |
+ .input-content ::content .paper-input-label { |
+ position: absolute; |
+ top: 0; |
+ right: 0; |
+ left: 0; |
+ width: 100%; |
+ font: inherit; |
+ color: var(--paper-input-container-color, --secondary-text-color); |
+ -webkit-transition: -webkit-transform 0.25s, width 0.25s; |
+ transition: transform 0.25s, width 0.25s; |
+ -webkit-transform-origin: left top; |
+ transform-origin: left top; |
+ |
+ @apply(--paper-font-common-nowrap); |
+ @apply(--paper-font-subhead); |
+ @apply(--paper-input-container-label); |
+ @apply(--paper-transition-easing); |
+ } |
+ |
+ .input-content.label-is-floating ::content label, |
+ .input-content.label-is-floating ::content .paper-input-label { |
+ -webkit-transform: translateY(-75%) scale(0.75); |
+ transform: translateY(-75%) scale(0.75); |
+ |
+ /* Since we scale to 75/100 of the size, we actually have 100/75 of the |
+ original space now available */ |
+ width: 133%; |
+ |
+ @apply(--paper-input-container-label-floating); |
+ } |
+ |
+ :host-context([dir="rtl"]) .input-content.label-is-floating ::content label, |
+ :host-context([dir="rtl"]) .input-content.label-is-floating ::content .paper-input-label { |
+ /* TODO(noms): Figure out why leaving the width at 133% before the animation |
+ * actually makes |
+ * it wider on the right side, not left side, as you would expect in RTL */ |
+ width: 100%; |
+ -webkit-transform-origin: right top; |
+ transform-origin: right top; |
+ } |
+ |
+ .input-content.label-is-highlighted ::content label, |
+ .input-content.label-is-highlighted ::content .paper-input-label { |
+ color: var(--paper-input-container-focus-color, --primary-color); |
+ |
+ @apply(--paper-input-container-label-focus); |
+ } |
+ |
+ .input-content.is-invalid ::content label, |
+ .input-content.is-invalid ::content .paper-input-label { |
+ color: var(--paper-input-container-invalid-color, --error-color); |
+ } |
+ |
+ .input-content.label-is-hidden ::content label, |
+ .input-content.label-is-hidden ::content .paper-input-label { |
+ visibility: hidden; |
+ } |
+ |
+ .input-content ::content input, |
+ .input-content ::content textarea, |
+ .input-content ::content iron-autogrow-textarea, |
+ .input-content ::content .paper-input-input { |
+ position: relative; /* to make a stacking context */ |
+ outline: none; |
+ box-shadow: none; |
+ padding: 0; |
+ width: 100%; |
+ max-width: 100%; |
+ background: transparent; |
+ border: none; |
+ color: var(--paper-input-container-input-color, --primary-text-color); |
+ -webkit-appearance: none; |
+ text-align: inherit; |
+ |
+ @apply(--paper-font-subhead); |
+ @apply(--paper-input-container-input); |
+ } |
+ |
+ ::content [prefix] { |
+ @apply(--paper-font-subhead); |
+ |
+ @apply(--paper-input-prefix); |
+ @apply(--layout-flex-none); |
+ } |
+ |
+ ::content [suffix] { |
+ @apply(--paper-font-subhead); |
+ |
+ @apply(--paper-input-suffix); |
+ @apply(--layout-flex-none); |
+ } |
+ |
+ /* Firefox sets a min-width on the input, which can cause layout issues */ |
+ .input-content ::content input { |
+ min-width: 0; |
+ } |
+ |
+ .input-content ::content textarea { |
+ resize: none; |
+ } |
+ |
+ .add-on-content { |
+ position: relative; |
+ } |
+ |
+ .add-on-content.is-invalid ::content * { |
+ color: var(--paper-input-container-invalid-color, --error-color); |
+ } |
+ |
+ .add-on-content.is-highlighted ::content * { |
+ color: var(--paper-input-container-focus-color, --primary-color); |
+ } |
+ </style> |
+ |
+ <template is="dom-if" if="[[!noLabelFloat]]"> |
+ <div class="floated-label-placeholder" aria-hidden="true"> </div> |
+ </template> |
+ |
+ <div class$="[[_computeInputContentClass(noLabelFloat,alwaysFloatLabel,focused,invalid,_inputHasContent)]]"> |
+ <content select="[prefix]" id="prefix"></content> |
+ |
+ <div class="label-and-input-container" id="labelAndInputContainer"> |
+ <content select=":not([add-on]):not([prefix]):not([suffix])"></content> |
+ </div> |
+ |
+ <content select="[suffix]"></content> |
+ </div> |
+ |
+ <div class$="[[_computeUnderlineClass(focused,invalid)]]"> |
+ <div class="unfocused-line"></div> |
+ <div class="focused-line"></div> |
+ </div> |
+ |
+ <div class$="[[_computeAddOnContentClass(focused,invalid)]]"> |
+ <content id="addOnContent" select="[add-on]"></content> |
+ </div> |
+ </template> |
+</dom-module> |
+ |
+<dom-module id="paper-spinner-styles" assetpath="chrome://resources/polymer/v1_0/paper-spinner/"> |
+ <template> |
+ <style> |
+ /* |
+ /**************************/ |
+ /* STYLES FOR THE SPINNER */ |
+ /**************************/ |
+ |
+ /* |
+ * Constants: |
+ * ARCSIZE = 270 degrees (amount of circle the arc takes up) |
+ * ARCTIME = 1333ms (time it takes to expand and contract arc) |
+ * ARCSTARTROT = 216 degrees (how much the start location of the arc |
+ * should rotate each time, 216 gives us a |
+ * 5 pointed star shape (it's 360/5 * 3). |
+ * For a 7 pointed star, we might do |
+ * 360/7 * 3 = 154.286) |
+ * SHRINK_TIME = 400ms |
+ */ |
+ |
+ :host { |
+ display: inline-block; |
+ position: relative; |
+ width: 28px; |
+ height: 28px; |
+ |
+ /* 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ |
+ --paper-spinner-container-rotation-duration: 1568ms; |
+ |
+ /* ARCTIME */ |
+ --paper-spinner-expand-contract-duration: 1333ms; |
+ |
+ /* 4 * ARCTIME */ |
+ --paper-spinner-full-cycle-duration: 5332ms; |
+ |
+ /* SHRINK_TIME */ |
+ --paper-spinner-cooldown-duration: 400ms; |
+ } |
+ |
+ #spinnerContainer { |
+ width: 100%; |
+ height: 100%; |
+ |
+ /* The spinner does not have any contents that would have to be |
+ * flipped if the direction changes. Always use ltr so that the |
+ * style works out correctly in both cases. */ |
+ direction: ltr; |
+ } |
+ |
+ #spinnerContainer.active { |
+ -webkit-animation: container-rotate var(--paper-spinner-container-rotation-duration) linear infinite; |
+ animation: container-rotate var(--paper-spinner-container-rotation-duration) linear infinite; |
+ } |
+ |
+ @-webkit-keyframes container-rotate { |
+ to { -webkit-transform: rotate(360deg) } |
+ } |
+ |
+ @keyframes container-rotate { |
+ to { transform: rotate(360deg) } |
+ } |
+ |
+ .spinner-layer { |
+ position: absolute; |
+ width: 100%; |
+ height: 100%; |
+ opacity: 0; |
+ white-space: nowrap; |
+ border-color: var(--paper-spinner-color, --google-blue-500); |
+ } |
+ |
+ .layer-1 { |
+ border-color: var(--paper-spinner-layer-1-color, --google-blue-500); |
+ } |
+ |
+ .layer-2 { |
+ border-color: var(--paper-spinner-layer-2-color, --google-red-500); |
+ } |
+ |
+ .layer-3 { |
+ border-color: var(--paper-spinner-layer-3-color, --google-yellow-500); |
+ } |
+ |
+ .layer-4 { |
+ border-color: var(--paper-spinner-layer-4-color, --google-green-500); |
+ } |
+ |
+ /** |
+ * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): |
+ * |
+ * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't |
+ * guarantee that the animation will start _exactly_ after that value. So we avoid using |
+ * animation-delay and instead set custom keyframes for each color (as layer-2undant as it |
+ * seems). |
+ */ |
+ .active .spinner-layer { |
+ -webkit-animation-name: fill-unfill-rotate; |
+ -webkit-animation-duration: var(--paper-spinner-full-cycle-duration); |
+ -webkit-animation-timing-function: cubic-bezier(0.4, 0.0, 0.2, 1); |
+ -webkit-animation-iteration-count: infinite; |
+ animation-name: fill-unfill-rotate; |
+ animation-duration: var(--paper-spinner-full-cycle-duration); |
+ animation-timing-function: cubic-bezier(0.4, 0.0, 0.2, 1); |
+ animation-iteration-count: infinite; |
+ opacity: 1; |
+ } |
+ |
+ .active .spinner-layer.layer-1 { |
+ -webkit-animation-name: fill-unfill-rotate, layer-1-fade-in-out; |
+ animation-name: fill-unfill-rotate, layer-1-fade-in-out; |
+ } |
+ |
+ .active .spinner-layer.layer-2 { |
+ -webkit-animation-name: fill-unfill-rotate, layer-2-fade-in-out; |
+ animation-name: fill-unfill-rotate, layer-2-fade-in-out; |
+ } |
+ |
+ .active .spinner-layer.layer-3 { |
+ -webkit-animation-name: fill-unfill-rotate, layer-3-fade-in-out; |
+ animation-name: fill-unfill-rotate, layer-3-fade-in-out; |
+ } |
+ |
+ .active .spinner-layer.layer-4 { |
+ -webkit-animation-name: fill-unfill-rotate, layer-4-fade-in-out; |
+ animation-name: fill-unfill-rotate, layer-4-fade-in-out; |
+ } |
+ |
+ @-webkit-keyframes fill-unfill-rotate { |
+ 12.5% { -webkit-transform: rotate(135deg) } /* 0.5 * ARCSIZE */ |
+ 25% { -webkit-transform: rotate(270deg) } /* 1 * ARCSIZE */ |
+ 37.5% { -webkit-transform: rotate(405deg) } /* 1.5 * ARCSIZE */ |
+ 50% { -webkit-transform: rotate(540deg) } /* 2 * ARCSIZE */ |
+ 62.5% { -webkit-transform: rotate(675deg) } /* 2.5 * ARCSIZE */ |
+ 75% { -webkit-transform: rotate(810deg) } /* 3 * ARCSIZE */ |
+ 87.5% { -webkit-transform: rotate(945deg) } /* 3.5 * ARCSIZE */ |
+ to { -webkit-transform: rotate(1080deg) } /* 4 * ARCSIZE */ |
+ } |
+ |
+ @keyframes fill-unfill-rotate { |
+ 12.5% { transform: rotate(135deg) } /* 0.5 * ARCSIZE */ |
+ 25% { transform: rotate(270deg) } /* 1 * ARCSIZE */ |
+ 37.5% { transform: rotate(405deg) } /* 1.5 * ARCSIZE */ |
+ 50% { transform: rotate(540deg) } /* 2 * ARCSIZE */ |
+ 62.5% { transform: rotate(675deg) } /* 2.5 * ARCSIZE */ |
+ 75% { transform: rotate(810deg) } /* 3 * ARCSIZE */ |
+ 87.5% { transform: rotate(945deg) } /* 3.5 * ARCSIZE */ |
+ to { transform: rotate(1080deg) } /* 4 * ARCSIZE */ |
+ } |
+ |
+ @-webkit-keyframes layer-1-fade-in-out { |
+ 0% { opacity: 1 } |
+ 25% { opacity: 1 } |
+ 26% { opacity: 0 } |
+ 89% { opacity: 0 } |
+ 90% { opacity: 1 } |
+ to { opacity: 1 } |
+ } |
+ |
+ @keyframes layer-1-fade-in-out { |
+ 0% { opacity: 1 } |
+ 25% { opacity: 1 } |
+ 26% { opacity: 0 } |
+ 89% { opacity: 0 } |
+ 90% { opacity: 1 } |
+ to { opacity: 1 } |
+ } |
+ |
+ @-webkit-keyframes layer-2-fade-in-out { |
+ 0% { opacity: 0 } |
+ 15% { opacity: 0 } |
+ 25% { opacity: 1 } |
+ 50% { opacity: 1 } |
+ 51% { opacity: 0 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @keyframes layer-2-fade-in-out { |
+ 0% { opacity: 0 } |
+ 15% { opacity: 0 } |
+ 25% { opacity: 1 } |
+ 50% { opacity: 1 } |
+ 51% { opacity: 0 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @-webkit-keyframes layer-3-fade-in-out { |
+ 0% { opacity: 0 } |
+ 40% { opacity: 0 } |
+ 50% { opacity: 1 } |
+ 75% { opacity: 1 } |
+ 76% { opacity: 0 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @keyframes layer-3-fade-in-out { |
+ 0% { opacity: 0 } |
+ 40% { opacity: 0 } |
+ 50% { opacity: 1 } |
+ 75% { opacity: 1 } |
+ 76% { opacity: 0 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @-webkit-keyframes layer-4-fade-in-out { |
+ 0% { opacity: 0 } |
+ 65% { opacity: 0 } |
+ 75% { opacity: 1 } |
+ 90% { opacity: 1 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @keyframes layer-4-fade-in-out { |
+ 0% { opacity: 0 } |
+ 65% { opacity: 0 } |
+ 75% { opacity: 1 } |
+ 90% { opacity: 1 } |
+ to { opacity: 0 } |
+ } |
+ |
+ .circle-clipper { |
+ display: inline-block; |
+ position: relative; |
+ width: 50%; |
+ height: 100%; |
+ overflow: hidden; |
+ border-color: inherit; |
+ } |
+ |
+ /** |
+ * Patch the gap that appear between the two adjacent div.circle-clipper while the |
+ * spinner is rotating (appears on Chrome 50, Safari 9.1.1, and Edge). |
+ */ |
+ .spinner-layer::after { |
+ left: 45%; |
+ width: 10%; |
+ border-top-style: solid; |
+ } |
+ |
+ .spinner-layer::after, |
+ .circle-clipper::after { |
+ content: ''; |
+ box-sizing: border-box; |
+ position: absolute; |
+ top: 0; |
+ border-width: var(--paper-spinner-stroke-width, 3px); |
+ border-color: inherit; |
+ border-radius: 50%; |
+ } |
+ |
+ .circle-clipper::after { |
+ bottom: 0; |
+ width: 200%; |
+ border-style: solid; |
+ border-bottom-color: transparent !important; |
+ } |
+ |
+ .circle-clipper.left::after { |
+ left: 0; |
+ border-right-color: transparent !important; |
+ -webkit-transform: rotate(129deg); |
+ transform: rotate(129deg); |
+ } |
+ |
+ .circle-clipper.right::after { |
+ left: -100%; |
+ border-left-color: transparent !important; |
+ -webkit-transform: rotate(-129deg); |
+ transform: rotate(-129deg); |
+ } |
+ |
+ .active .gap-patch::after, |
+ .active .circle-clipper::after { |
+ -webkit-animation-duration: var(--paper-spinner-expand-contract-duration); |
+ -webkit-animation-timing-function: cubic-bezier(0.4, 0.0, 0.2, 1); |
+ -webkit-animation-iteration-count: infinite; |
+ animation-duration: var(--paper-spinner-expand-contract-duration); |
+ animation-timing-function: cubic-bezier(0.4, 0.0, 0.2, 1); |
+ animation-iteration-count: infinite; |
+ } |
+ |
+ .active .circle-clipper.left::after { |
+ -webkit-animation-name: left-spin; |
+ animation-name: left-spin; |
+ } |
+ |
+ .active .circle-clipper.right::after { |
+ -webkit-animation-name: right-spin; |
+ animation-name: right-spin; |
+ } |
+ |
+ @-webkit-keyframes left-spin { |
+ 0% { -webkit-transform: rotate(130deg) } |
+ 50% { -webkit-transform: rotate(-5deg) } |
+ to { -webkit-transform: rotate(130deg) } |
+ } |
+ |
+ @keyframes left-spin { |
+ 0% { transform: rotate(130deg) } |
+ 50% { transform: rotate(-5deg) } |
+ to { transform: rotate(130deg) } |
+ } |
+ |
+ @-webkit-keyframes right-spin { |
+ 0% { -webkit-transform: rotate(-130deg) } |
+ 50% { -webkit-transform: rotate(5deg) } |
+ to { -webkit-transform: rotate(-130deg) } |
+ } |
+ |
+ @keyframes right-spin { |
+ 0% { transform: rotate(-130deg) } |
+ 50% { transform: rotate(5deg) } |
+ to { transform: rotate(-130deg) } |
+ } |
+ |
+ #spinnerContainer.cooldown { |
+ -webkit-animation: container-rotate var(--paper-spinner-container-rotation-duration) linear infinite, fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(0.4, 0.0, 0.2, 1); |
+ animation: container-rotate var(--paper-spinner-container-rotation-duration) linear infinite, fade-out var(--paper-spinner-cooldown-duration) cubic-bezier(0.4, 0.0, 0.2, 1); |
+ } |
+ |
+ @-webkit-keyframes fade-out { |
+ 0% { opacity: 1 } |
+ to { opacity: 0 } |
+ } |
+ |
+ @keyframes fade-out { |
+ 0% { opacity: 1 } |
+ to { opacity: 0 } |
+ } |
+ </style> |
+ </template> |
+</dom-module> |
+ |
+ |
+<dom-module id="paper-spinner-lite" assetpath="chrome://resources/polymer/v1_0/paper-spinner/"> |
+ <template strip-whitespace=""> |
+ <style include="paper-spinner-styles"></style> |
+ |
+ <div id="spinnerContainer" class-name="[[__computeContainerClasses(active, __coolingDown)]]"> |
+ <div class="spinner-layer"> |
+ <div class="circle-clipper left"></div> |
+ <div class="circle-clipper right"></div> |
+ </div> |
+ </div> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="cr-toolbar-search-field" assetpath="chrome://resources/cr_elements/cr_toolbar/"> |
+ <template> |
+ <style> |
+ :host { |
+ align-items: center; |
+ display: flex; |
+ height: 40px; |
+ transition: background-color 150ms cubic-bezier(0.4, 0, 0.2, 1), |
+ width 150ms cubic-bezier(0.4, 0, 0.2, 1); |
+ width: 44px; |
+ } |
+ |
+ [hidden] { |
+ display: none !important; |
+ } |
+ |
+ paper-icon-button { |
+ height: 32px; |
+ margin: 6px; |
+ min-width: 32px; |
+ padding: 6px; |
+ width: 32px; |
+ } |
+ |
+ #icon { |
+ --paper-icon-button-ink-color: white; |
+ transition: margin 150ms, opacity 200ms; |
+ } |
+ |
+ #prompt { |
+ opacity: 0; |
+ } |
+ |
+ paper-spinner-lite { |
+ --paper-spinner-color: white; |
+ height: 20px; |
+ margin: 0 6px; |
+ opacity: 0; |
+ padding: 6px; |
+ position: absolute; |
+ width: 20px; |
+ } |
+ |
+ paper-spinner-lite[active] { |
+ opacity: 1; |
+ } |
+ |
+ #prompt, |
+ paper-spinner-lite { |
+ transition: opacity 200ms; |
+ } |
+ |
+ paper-input-container { |
+ --paper-input-container-input-color: white; |
+ --paper-input-container-underline: { |
+ display: none; |
+ }; |
+ --paper-input-container-underline-focus: { |
+ display: none; |
+ }; |
+ --paper-input-container-label: { |
+ color: inherit; |
+ font-size: inherit; |
+ }; |
+ -webkit-padding-start: 2px; |
+ flex: 1; |
+ } |
+ |
+ input[type='search']::-webkit-search-decoration, |
+ input[type='search']::-webkit-search-cancel-button, |
+ input[type='search']::-webkit-search-results-button { |
+ -webkit-appearance: none; |
+ } |
+ |
+ /** Wide layout. */ |
+ :host(:not([narrow])) { |
+ -webkit-padding-end: 0; |
+ background: rgba(0, 0, 0, 0.22); |
+ border-radius: 2px; |
+ cursor: text; |
+ width: var(--cr-toolbar-field-width); |
+ } |
+ |
+ :host(:not([narrow]):not([showing-search])) #icon, |
+ :host(:not([narrow]):not([showing-search])) #prompt { |
+ opacity: 0.6; |
+ } |
+ |
+ :host([narrow]:not([showing-search])) paper-input-container { |
+ display: none; |
+ } |
+ |
+ /* Search open. */ |
+ :host([showing-search][spinner-active]) #icon { |
+ opacity: 0; |
+ } |
+ |
+ :host([narrow][showing-search]) { |
+ width: 100%; |
+ } |
+ |
+ /* |
+ * Margin needs to be animated to prevent jumping around during |
+ * opening/closing. -webkit-margin-start is not animatable, so we have to |
+ * use regular margin-left/right instead. |
+ */ |
+ :host-context([dir=ltr]):host([narrow][showing-search]) #icon { |
+ margin-left: 18px; |
+ } |
+ |
+ :host-context([dir=rtl]):host([narrow][showing-search]) #icon { |
+ margin-right: 18px; |
+ } |
+ </style> |
+ <paper-spinner-lite active="[[isSpinnerShown_(spinnerActive, showingSearch)]]"> |
+ </paper-spinner-lite> |
+ <paper-icon-button id="icon" icon="cr:search" title="[[label]]" tabindex$="[[computeIconTabIndex_(narrow)]]"> |
+ </paper-icon-button> |
+ <paper-input-container id="searchTerm" on-search="onSearchTermSearch" on-keydown="onSearchTermKeydown" no-label-float=""> |
+ <label id="prompt" for="searchInput">[[label]]</label> |
+ <input is="iron-input" id="searchInput" type="search" on-blur="onInputBlur_" incremental=""> |
+ </paper-input-container> |
+ <paper-icon-button icon="cr:cancel" id="clearSearch" title="[[clearLabel]]" hidden$="[[!hasSearchText_]]" on-tap="hideSearch_"> |
+ </paper-icon-button> |
+ </template> |
+ </dom-module> |
+<dom-module id="cr-toolbar" assetpath="chrome://resources/cr_elements/cr_toolbar/"> |
+ <template> |
+ <style> |
+ :host { |
+ --cr-toolbar-field-width: 580px; |
+ color: #fff; |
+ display: flex; |
+ height: 56px; |
+ } |
+ |
+ h1 { |
+ @apply(--layout-flex); |
+ -webkit-margin-start: 6px; |
+ font-size: 123%; |
+ font-weight: 400; |
+ text-overflow: ellipsis; |
+ overflow: hidden; |
+ white-space: nowrap; |
+ } |
+ |
+ #leftContent { |
+ -webkit-margin-start: 18px; |
+ align-items: center; |
+ display: flex; |
+ position: absolute; |
+ transition: opacity 100ms; |
+ } |
+ |
+ #menuButton { |
+ height: 32px; |
+ margin-bottom: 6px; |
+ margin-top: 6px; |
+ min-width: 32px; |
+ padding: 6px; |
+ width: 32px; |
+ } |
+ |
+ :host(:not([show-menu])) #menuButton { |
+ display: none; |
+ } |
+ |
+ #centeredContent { |
+ -webkit-margin-start: var(--cr-toolbar-field-margin, 0); |
+ -webkit-padding-end: 12px; |
+ display: flex; |
+ flex: 1 1 0; |
+ justify-content: center; |
+ } |
+ |
+ :host(:not([narrow_])) #leftContent { |
+ max-width: calc((100% - var(--cr-toolbar-field-width) - 18px) / 2); |
+ } |
+ |
+ :host([narrow_]) #centeredContent { |
+ justify-content: flex-end; |
+ } |
+ |
+ :host([narrow_][showing-search_]) #leftContent { |
+ opacity: 0; |
+ } |
+ </style> |
+ <div id="leftContent"> |
+ <paper-icon-button id="menuButton" icon="cr:menu" on-tap="onMenuTap_"> |
+ </paper-icon-button> |
+ <h1>[[pageName]]</h1> |
+ </div> |
+ |
+ <div id="centeredContent"> |
+ <cr-toolbar-search-field id="search" narrow="[[narrow_]]" label="[[searchPrompt]]" clear-label="[[clearLabel]]" spinner-active="[[spinnerActive]]" showing-search="{{showingSearch_}}"> |
+ </cr-toolbar-search-field> |
+ <iron-media-query query="(max-width: 900px)" query-matches="{{narrow_}}"> |
+ </iron-media-query> |
+ </div> |
+ </template> |
+ </dom-module> |
+<iron-iconset-svg size="24" name="history"> |
+ <svg> |
+ <defs> |
+ |
+ <g id="chevron-left"><path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"></path></g> |
+ <g id="today"><path d="M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z"></path></g> |
+ </defs> |
+ </svg> |
+</iron-iconset-svg> |
+<dom-module id="shared-style" assetpath="chrome://history/"> |
+ <template> |
+ <style> |
+ :root { |
+ --card-border-color: rgba(0, 0, 0, 0.14); |
+ --card-box-shadow: { |
+ box-shadow: 0 2px 2px rgba(0, 0, 0, .05), |
+ 0 1px 4px rgba(0, 0, 0, .08), |
+ 0 1px 1px rgba(0, 0, 0, .2);; |
+ }; |
+ --card-container-filter: { |
+ filter: drop-shadow(0 2px 1px rgba(0, 0, 0, .05)) |
+ drop-shadow(0 1px 0px rgba(0, 0, 0, .08)) |
+ drop-shadow(0 1px 1px rgba(0, 0, 0, .2)); |
+ }; |
+ --card-first-last-item-padding: 8px; |
+ --card-max-width: 960px; |
+ --card-min-width: 550px; |
+ --card-padding-between: 20px; |
+ --card-padding-side: 24px; |
+ --card-sizing: { |
+ margin: 0 auto; |
+ max-width: var(--card-max-width); |
+ min-width: var(--card-min-width); |
+ padding: 0 var(--card-padding-side); |
+ width: calc(100% - 2 * var(--card-padding-side)); |
+ }; |
+ --first-card-padding-top: 24px; |
+ --item-height: 44px; |
+ --primary-text-color: #333; |
+ --secondary-text-color: #757575; |
+ --side-bar-width: 256px; |
+ --toolbar-grouped-height: 101px; |
+ --toolbar-height: 56px; |
+ } |
+ |
+ [hidden] { |
+ display: none !important; |
+ } |
+ |
+ .card-title { |
+ @apply(--layout-center); |
+ @apply(--layout-horizontal); |
+ -webkit-padding-start: 20px; |
+ border-bottom: 1px solid var(--card-border-color); |
+ border-radius: 2px 2px 0 0; |
+ color: var(--primary-text-color); |
+ font-size: 14px; |
+ font-weight: 500; |
+ height: 48px; |
+ } |
+ |
+ .centered-message { |
+ align-items: center; |
+ color: #b4b4b4; |
+ display: flex; |
+ flex: 1; |
+ font-size: 14px; |
+ font-weight: 500; |
+ height: 100%; |
+ justify-content: center; |
+ } |
+ |
+ .menu-item { |
+ -webkit-user-select: none; |
+ cursor: pointer; |
+ font: inherit; |
+ white-space: nowrap; |
+ } |
+ |
+ .website-icon { |
+ -webkit-margin-end: 16px; |
+ background-repeat: no-repeat; |
+ background-size: 16px; |
+ height: 16px; |
+ width: 16px; |
+ } |
+ |
+ .website-title { |
+ color: var(--primary-text-color); |
+ overflow: hidden; |
+ text-decoration: none; |
+ text-overflow: ellipsis; |
+ white-space: nowrap; |
+ } |
+ |
+ button.icon-button { |
+ height: 36px; |
+ width: 36px; |
+ } |
+ |
+ button.icon-button iron-icon { |
+ color: var(--secondary-text-color); |
+ height: 20px; |
+ width: 20px; |
+ } |
+ </style> |
+ </template> |
+</dom-module> |
+<dom-module id="history-toolbar" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ color: #fff; |
+ display: block; |
+ transition: background-color 150ms; |
+ width: 100%; |
+ } |
+ |
+ cr-toolbar, |
+ #overlay-buttons, |
+ #overlay-wrapper, |
+ #toolbar-container { |
+ @apply(--layout-center); |
+ @apply(--layout-horizontal); |
+ width: 100%; |
+ } |
+ |
+ :host([items-selected_]) { |
+ background: rgb(68, 136, 255); |
+ } |
+ |
+ #toolbar-container { |
+ height: var(--toolbar-height); |
+ } |
+ |
+ cr-toolbar { |
+ --cr-toolbar-field-margin: var(--side-bar-width); |
+ } |
+ |
+ cr-toolbar[show-menu] { |
+ --cr-toolbar-field-margin: 0; |
+ } |
+ |
+ :host(:not([has-drawer])) #overlay-wrapper { |
+ -webkit-margin-start: var(--side-bar-width); |
+ } |
+ |
+ #overlay-buttons { |
+ margin: 0 auto; |
+ max-width: var(--card-max-width); |
+ padding: 0 var(--card-padding-side); |
+ } |
+ |
+ paper-button { |
+ font-weight: 500; |
+ } |
+ |
+ #number-selected { |
+ @apply(--layout-flex); |
+ } |
+ |
+ #cancel-icon-button { |
+ -webkit-margin-end: 24px; |
+ -webkit-margin-start: 2px; |
+ height: 36px; |
+ min-width: 36px; |
+ width: 36px; |
+ } |
+ |
+ #grouped-nav-container paper-icon-button { |
+ --paper-icon-button-ink-color: rgba(255, 255, 255, 0.4); |
+ -webkit-margin-start: 24px; |
+ flex: 0 0 auto; |
+ } |
+ |
+ paper-tab { |
+ --paper-tab-ink: rgba(255, 255, 255, 0.4); |
+ font-size: 13px; |
+ text-transform: uppercase; |
+ } |
+ |
+ paper-tabs { |
+ --paper-tabs-selection-bar-color: var(--google-blue-500); |
+ height: calc(var(--toolbar-grouped-height) - var(--toolbar-height)); |
+ min-width: 300px; |
+ } |
+ |
+ #grouped-buttons-container { |
+ @apply(--layout-center); |
+ @apply(--layout-horizontal); |
+ } |
+ |
+ #grouped-range-buttons { |
+ -webkit-margin-start: 32px; |
+ } |
+ |
+ #grouped-nav-container { |
+ @apply(--layout-center); |
+ @apply(--layout-end-justified); |
+ @apply(--layout-flex); |
+ @apply(--layout-horizontal); |
+ -webkit-margin-end: 24px; |
+ overflow: hidden; |
+ transition: opacity 150ms; |
+ } |
+ |
+ :host([grouped-range='0']) #grouped-nav-container { |
+ opacity: 0; |
+ pointer-events: none; |
+ } |
+ |
+ #grouped-date { |
+ flex: 0 1 auto; |
+ opacity: 0.7; |
+ overflow: hidden; |
+ text-align: right; |
+ text-overflow: ellipsis; |
+ white-space: nowrap; |
+ } |
+ |
+ :host-context([dir=rtl]) .rtl-reversible { |
+ transform: rotate(180deg); |
+ } |
+ </style> |
+ <div id="toolbar-container"> |
+ <cr-toolbar id="main-toolbar" page-name="$i18n{title}" clear-label="$i18n{clearSearch}" search-prompt="$i18n{searchPrompt}" hidden$="[[itemsSelected_]]" spinner-active="[[spinnerActive]]" show-menu="[[hasDrawer]]" on-search-changed="onSearchChanged_"> |
+ </cr-toolbar> |
+ <template is="dom-if" if="[[itemsSelected_]]"> |
+ <div id="overlay-wrapper" hidden$="[[!itemsSelected_]]"> |
+ <div id="overlay-buttons"> |
+ <paper-icon-button icon="cr:clear" id="cancel-icon-button" on-tap="onClearSelectionTap_"></paper-icon-button> |
+ <div id="number-selected">[[numberOfItemsSelected_(count)]]</div> |
+ <paper-button id="cancel-button" on-tap="onClearSelectionTap_"> |
+ $i18n{cancel} |
+ </paper-button> |
+ <paper-button id="delete-button" on-tap="onDeleteTap_"> |
+ $i18n{delete} |
+ </paper-button> |
+ </div> |
+ </div> |
+ </template> |
+ </div> |
+ <template is="dom-if" if="[[isGroupedMode]]"> |
+ <div id="grouped-buttons-container"> |
+ <paper-tabs attr-for-selected="value" selected="{{groupedRange}}" id="grouped-range-buttons"> |
+ <paper-tab value="0">$i18n{rangeAllTime}</paper-tab> |
+ <paper-tab value="1">$i18n{rangeWeek}</paper-tab> |
+ <paper-tab value="2">$i18n{rangeMonth}</paper-tab> |
+ </paper-tabs> |
+ <div id="grouped-nav-container"> |
+ <span id="grouped-date"> |
+ {{getHistoryInterval_(queryStartTime, queryEndTime)}} |
+ </span> |
+ <paper-icon-button icon="history:today" alt="$i18n{rangeToday}" title="$i18n{rangeToday}"></paper-icon-button> |
+ <paper-icon-button icon="history:chevron-left" alt="$i18n{rangePrevious}" title="$i18n{rangePrevious}" class="rtl-reversible"></paper-icon-button> |
+ <paper-icon-button icon="cr:chevron-right" alt="$i18n{rangeNext}" title="$i18n{rangeNext}" class="rtl-reversible"></paper-icon-button> |
+ </div> |
+ </div> |
+ </template> |
+ </template> |
+ </dom-module> |
+<dom-module id="cr-dialog" assetpath="chrome://resources/cr_elements/cr_dialog/"> |
+ <template> |
+ <style> |
+ :host { |
+ border: 0; |
+ border-radius: 2px; |
+ bottom: 0; |
+ color: inherit; |
+ padding: 0; |
+ top: 0; |
+ } |
+ |
+ :host::backdrop { |
+ background-color: rgba(0, 0, 0, 0.6); |
+ bottom: 0; |
+ left: 0; |
+ position: fixed; |
+ right: 0; |
+ top: 0; |
+ } |
+ |
+ .title-container { |
+ align-items: center; |
+ /* TODO(dbeam): should this be a --settings-separator-line? */ |
+ border-bottom: 1px solid rgba(0, 0, 0, 0.14); |
+ display: flex; |
+ min-height: 52px; |
+ } |
+ |
+ :host ::content .title { |
+ font-size: 123.07%; /* (16px / 13px) * 100 */ |
+ } |
+ |
+ #close { |
+ --paper-icon-button: { |
+ height: 40px; |
+ width: 40px; |
+ }; |
+ -webkit-margin-end: 6px; |
+ /* <paper-icon-button> overrides --iron-icon-{height,width}, so this |
+ * padding essentially reduces 40x40 to 20x20. */ |
+ padding: 10px; |
+ } |
+ |
+ .body-container { |
+ display: flex; |
+ flex-direction: column; |
+ max-width: 800px; |
+ min-width: 512px; |
+ /* TODO(dbeam): use <paper-dialog-scrollable> to get dividers? */ |
+ overflow: auto; |
+ } |
+ |
+ :host ::content .body { |
+ margin: 12px 0; |
+ } |
+ |
+ :host ::content .body, |
+ :host ::content .title { |
+ -webkit-padding-end: 24px; |
+ -webkit-padding-start: 24px; |
+ flex: 1; |
+ } |
+ |
+ :host ::content .button-container { |
+ -webkit-padding-end: 16px; |
+ -webkit-padding-start: 16px; |
+ display: flex; |
+ justify-content: flex-end; |
+ margin-bottom: 12px; |
+ margin-top: 12px; |
+ } |
+ |
+ :host ::content .button-container .cancel-button { |
+ -webkit-margin-end: 8px; |
+ color: var(--paper-grey-600); |
+ } |
+ |
+ :host ::content .footer { |
+ background-color: var(--paper-grey-200); |
+ border-bottom-left-radius: inherit; |
+ border-bottom-right-radius: inherit; |
+ margin: 0; |
+ padding: 12px 20px; |
+ } |
+ </style> |
+ <div class="title-container"> |
+ <content select=".title"></content> |
+ <paper-icon-button icon="cr:clear" on-tap="cancel" id="close"> |
+ </paper-icon-button> |
+ </div> |
+ <div class="body-container"> |
+ <content select=".body"></content> |
+ </div> |
+ <content select=".button-container"></content> |
+ <content select=".footer"></content> |
+ </template> |
+ </dom-module> |
+<dom-module id="iron-overlay-backdrop" assetpath="chrome://resources/polymer/v1_0/iron-overlay-behavior/"> |
+ |
+ <template> |
+ <style> |
+ :host { |
+ position: fixed; |
+ top: 0; |
+ left: 0; |
+ width: 100%; |
+ height: 100%; |
+ background-color: var(--iron-overlay-backdrop-background-color, #000); |
+ opacity: 0; |
+ transition: opacity 0.2s; |
+ pointer-events: none; |
+ @apply(--iron-overlay-backdrop); |
+ } |
+ |
+ :host(.opened) { |
+ opacity: var(--iron-overlay-backdrop-opacity, 0.6); |
+ pointer-events: auto; |
+ @apply(--iron-overlay-backdrop-opened); |
+ } |
+ </style> |
+ |
+ <content></content> |
+ </template> |
+ |
+</dom-module> |
+ |
+<script src="chrome://resources/polymer/v1_0/web-animations-js/web-animations-next-lite.min.js"></script> |
+ |
+ |
+<dom-module id="iron-dropdown" assetpath="chrome://resources/polymer/v1_0/iron-dropdown/"> |
+ <template> |
+ <style> |
+ :host { |
+ position: fixed; |
+ } |
+ |
+ #contentWrapper ::content > * { |
+ overflow: auto; |
+ } |
+ |
+ #contentWrapper.animating ::content > * { |
+ overflow: hidden; |
+ } |
+ </style> |
+ |
+ <div id="contentWrapper"> |
+ <content id="content" select=".dropdown-content"></content> |
+ </div> |
+ </template> |
+ |
+ </dom-module> |
+<link rel="import" href="chrome://resources/html/util.html"> |
+<dom-module id="cr-shared-menu" assetpath="chrome://resources/cr_elements/cr_shared_menu/"> |
+ <template> |
+ <style> |
+ #menu { |
+ @apply(--shadow-elevation-2dp); |
+ background-color: white; |
+ overflow: hidden; |
+ padding: 8px 0; |
+ position: relative; |
+ } |
+ </style> |
+ <iron-dropdown id="dropdown" allow-outside-scroll="" restore-focus-on-close="" vertical-align="auto" horizontal-align="right" opened="{{menuOpen}}" open-animation-config="[[openAnimationConfig]]" close-animation-config="[[closeAnimationConfig]]"> |
+ <div id="menu" class="dropdown-content" role="menu"> |
+ <content></content> |
+ </div> |
+ </iron-dropdown> |
+ </template> |
+ </dom-module> |
+ |
+<style is="custom-style"> |
+ :root { |
+ --cr-actionable: { |
+ cursor: pointer; |
+ }; |
+ --cr-focused-item-color: var(--google-grey-300); |
+ --cr-separator-line: 1px solid rgba(0, 0, 0, 0.06); |
+ } |
+</style> |
+ |
+<dom-module id="cr-shared-style" assetpath="chrome://resources/cr_elements/"> |
+ <template> |
+ <style> |
+ .action-button { |
+ background: var(--google-blue-500); |
+ color: white; |
+ --paper-button-flat-keyboard-focus: { |
+ background: rgb(58, 117, 215); /* 88% of --google-blue-500 */ |
+ }; |
+ } |
+ |
+ .action-button[disabled] { |
+ opacity: .25; /* TODO(dbeam): check this value with bettes. */ |
+ } |
+ |
+ .cancel-button { |
+ --paper-button-flat-keyboard-focus: { |
+ background: rgba(0, 0, 0, .12); |
+ }; |
+ } |
+ |
+ .action-button, |
+ .cancel-button { |
+ font-weight: 500; |
+ } |
+ |
+ [actionable] { |
+ @apply(--cr-actionable); |
+ } |
+ </style> |
+ </template> |
+</dom-module> |
+ |
+ |
+<dom-module id="paper-item-shared-styles" assetpath="chrome://resources/polymer/v1_0/paper-item/"> |
+ <template> |
+ <style> |
+ :host, .paper-item { |
+ display: block; |
+ position: relative; |
+ min-height: var(--paper-item-min-height, 48px); |
+ padding: 0px 16px; |
+ } |
+ |
+ .paper-item { |
+ @apply(--paper-font-subhead); |
+ border:none; |
+ outline: none; |
+ background: white; |
+ width: 100%; |
+ text-align: left; |
+ } |
+ |
+ :host([hidden]), .paper-item[hidden] { |
+ display: none !important; |
+ } |
+ |
+ :host(.iron-selected), .paper-item.iron-selected { |
+ font-weight: var(--paper-item-selected-weight, bold); |
+ |
+ @apply(--paper-item-selected); |
+ } |
+ |
+ :host([disabled]), .paper-item[disabled] { |
+ color: var(--paper-item-disabled-color, --disabled-text-color); |
+ |
+ @apply(--paper-item-disabled); |
+ } |
+ |
+ :host(:focus), .paper-item:focus { |
+ position: relative; |
+ outline: 0; |
+ |
+ @apply(--paper-item-focused); |
+ } |
+ |
+ :host(:focus):before, .paper-item:focus:before { |
+ @apply(--layout-fit); |
+ |
+ background: currentColor; |
+ content: ''; |
+ opacity: var(--dark-divider-opacity); |
+ pointer-events: none; |
+ |
+ @apply(--paper-item-focused-before); |
+ } |
+ </style> |
+ </template> |
+</dom-module> |
+ |
+ |
+<dom-module id="paper-item" assetpath="chrome://resources/polymer/v1_0/paper-item/"> |
+ <template> |
+ <style include="paper-item-shared-styles"></style> |
+ <style> |
+ :host { |
+ @apply(--layout-horizontal); |
+ @apply(--layout-center); |
+ @apply(--paper-font-subhead); |
+ |
+ @apply(--paper-item); |
+ } |
+ </style> |
+ |
+ <content></content> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="iron-collapse" assetpath="chrome://resources/polymer/v1_0/iron-collapse/"> |
+ |
+ <template> |
+ |
+ <style> |
+ :host { |
+ display: block; |
+ transition-duration: var(--iron-collapse-transition-duration, 300ms); |
+ overflow: visible; |
+ } |
+ |
+ :host(.iron-collapse-closed) { |
+ display: none; |
+ } |
+ |
+ :host(:not(.iron-collapse-opened)) { |
+ overflow: hidden; |
+ } |
+ </style> |
+ |
+ <content></content> |
+ |
+ </template> |
+ |
+</dom-module> |
+ |
+<dom-module id="paper-checkbox" assetpath="chrome://resources/polymer/v1_0/paper-checkbox/"> |
+ <template strip-whitespace=""> |
+ <style> |
+ :host { |
+ display: inline-block; |
+ white-space: nowrap; |
+ cursor: pointer; |
+ --calculated-paper-checkbox-size: var(--paper-checkbox-size, 18px); |
+ @apply(--paper-font-common-base); |
+ line-height: 0; |
+ -webkit-tap-highlight-color: transparent; |
+ } |
+ |
+ :host([hidden]) { |
+ display: none !important; |
+ } |
+ |
+ :host(:focus) { |
+ outline: none; |
+ } |
+ |
+ .hidden { |
+ display: none; |
+ } |
+ |
+ #checkboxContainer { |
+ display: inline-block; |
+ position: relative; |
+ width: var(--calculated-paper-checkbox-size); |
+ height: var(--calculated-paper-checkbox-size); |
+ min-width: var(--calculated-paper-checkbox-size); |
+ margin: var(--paper-checkbox-margin, initial); |
+ vertical-align: var(--paper-checkbox-vertical-align, middle); |
+ background-color: var(--paper-checkbox-unchecked-background-color, transparent); |
+ } |
+ |
+ #ink { |
+ position: absolute; |
+ |
+ /* Center the ripple in the checkbox by negative offsetting it by |
+ * (inkWidth - rippleWidth) / 2 */ |
+ top: calc(0px - (2.66 * var(--calculated-paper-checkbox-size) - var(--calculated-paper-checkbox-size)) / 2); |
+ left: calc(0px - (2.66 * var(--calculated-paper-checkbox-size) - var(--calculated-paper-checkbox-size)) / 2); |
+ width: calc(2.66 * var(--calculated-paper-checkbox-size)); |
+ height: calc(2.66 * var(--calculated-paper-checkbox-size)); |
+ color: var(--paper-checkbox-unchecked-ink-color, --primary-text-color); |
+ opacity: 0.6; |
+ pointer-events: none; |
+ } |
+ |
+ :host-context([dir="rtl"]) #ink { |
+ right: calc(0px - (2.66 * var(--calculated-paper-checkbox-size) - var(--calculated-paper-checkbox-size)) / 2); |
+ left: auto; |
+ } |
+ |
+ #ink[checked] { |
+ color: var(--paper-checkbox-checked-ink-color, --primary-color); |
+ } |
+ |
+ #checkbox { |
+ position: relative; |
+ box-sizing: border-box; |
+ height: 100%; |
+ border: solid 2px; |
+ border-color: var(--paper-checkbox-unchecked-color, --primary-text-color); |
+ border-radius: 2px; |
+ pointer-events: none; |
+ -webkit-transition: background-color 140ms, border-color 140ms; |
+ transition: background-color 140ms, border-color 140ms; |
+ } |
+ |
+ /* checkbox checked animations */ |
+ #checkbox.checked #checkmark { |
+ -webkit-animation: checkmark-expand 140ms ease-out forwards; |
+ animation: checkmark-expand 140ms ease-out forwards; |
+ } |
+ |
+ @-webkit-keyframes checkmark-expand { |
+ 0% { |
+ -webkit-transform: scale(0, 0) rotate(45deg); |
+ } |
+ 100% { |
+ -webkit-transform: scale(1, 1) rotate(45deg); |
+ } |
+ } |
+ |
+ @keyframes checkmark-expand { |
+ 0% { |
+ transform: scale(0, 0) rotate(45deg); |
+ } |
+ 100% { |
+ transform: scale(1, 1) rotate(45deg); |
+ } |
+ } |
+ |
+ #checkbox.checked { |
+ background-color: var(--paper-checkbox-checked-color, --primary-color); |
+ border-color: var(--paper-checkbox-checked-color, --primary-color); |
+ } |
+ |
+ #checkmark { |
+ position: absolute; |
+ width: 36%; |
+ height: 70%; |
+ border-style: solid; |
+ border-top: none; |
+ border-left: none; |
+ border-right-width: calc(2/15 * var(--calculated-paper-checkbox-size)); |
+ border-bottom-width: calc(2/15 * var(--calculated-paper-checkbox-size)); |
+ border-color: var(--paper-checkbox-checkmark-color, white); |
+ -webkit-transform-origin: 97% 86%; |
+ transform-origin: 97% 86%; |
+ box-sizing: content-box; /* protect against page-level box-sizing */ |
+ } |
+ |
+ :host-context([dir="rtl"]) #checkmark { |
+ -webkit-transform-origin: 50% 14%; |
+ transform-origin: 50% 14%; |
+ } |
+ |
+ /* label */ |
+ #checkboxLabel { |
+ position: relative; |
+ display: inline-block; |
+ vertical-align: middle; |
+ padding-left: var(--paper-checkbox-label-spacing, 8px); |
+ white-space: normal; |
+ line-height: normal; |
+ color: var(--paper-checkbox-label-color, --primary-text-color); |
+ @apply(--paper-checkbox-label); |
+ } |
+ |
+ :host([checked]) #checkboxLabel { |
+ color: var(--paper-checkbox-label-checked-color, --paper-checkbox-label-color); |
+ @apply(--paper-checkbox-label-checked); |
+ } |
+ |
+ :host-context([dir="rtl"]) #checkboxLabel { |
+ padding-right: var(--paper-checkbox-label-spacing, 8px); |
+ padding-left: 0; |
+ } |
+ |
+ #checkboxLabel[hidden] { |
+ display: none; |
+ } |
+ |
+ /* disabled state */ |
+ |
+ :host([disabled]) #checkbox { |
+ opacity: 0.5; |
+ border-color: var(--paper-checkbox-unchecked-color, --primary-text-color); |
+ } |
+ |
+ :host([disabled][checked]) #checkbox { |
+ background-color: var(--paper-checkbox-unchecked-color, --primary-text-color); |
+ opacity: 0.5; |
+ } |
+ |
+ :host([disabled]) #checkboxLabel { |
+ opacity: 0.65; |
+ } |
+ |
+ /* invalid state */ |
+ #checkbox.invalid:not(.checked) { |
+ border-color: var(--paper-checkbox-error-color, --error-color); |
+ } |
+ </style> |
+ |
+ <div id="checkboxContainer"> |
+ <div id="checkbox" class$="[[_computeCheckboxClass(checked, invalid)]]"> |
+ <div id="checkmark" class$="[[_computeCheckmarkClass(checked)]]"></div> |
+ </div> |
+ </div> |
+ |
+ <div id="checkboxLabel"><content></content></div> |
+ </template> |
+ |
+ </dom-module> |
+<dom-module id="paper-icon-button-light" assetpath="chrome://resources/polymer/v1_0/paper-icon-button/"> |
+ <template strip-whitespace=""> |
+ <style> |
+ :host { |
+ vertical-align: middle; |
+ color: inherit; |
+ outline: none; |
+ width: 24px; |
+ height: 24px; |
+ background: none; |
+ margin: 0; |
+ border: none; |
+ padding: 0; |
+ |
+ position: relative; |
+ cursor: pointer; |
+ |
+ /* NOTE: Both values are needed, since some phones require the value to be `transparent`. */ |
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0); |
+ -webkit-tap-highlight-color: transparent; |
+ } |
+ |
+ :host([disabled]) { |
+ color: #9b9b9b; |
+ pointer-events: none; |
+ cursor: auto; |
+ } |
+ |
+ paper-ripple { |
+ opacity: 0.6; |
+ color: currentColor; |
+ } |
+ </style> |
+ <content></content> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-searched-label" assetpath="chrome://history/"> |
+ <template> |
+ <span id="container"></span> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-item" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ } |
+ |
+ :host(:not([embedded])) #main-container { |
+ position: relative; |
+ } |
+ |
+ :host(:not([embedded])) #sizing-container { |
+ @apply(--card-sizing); |
+ } |
+ |
+ :host([is-first-item]) #main-container { |
+ margin-top: var(--first-card-padding-top); |
+ } |
+ |
+ :host([is-card-end]) #main-container { |
+ margin-bottom: var(--card-padding-between); |
+ } |
+ |
+ :host([is-card-start][is-card-end]) #main-container { |
+ border-radius: 2px; |
+ } |
+ |
+ #date-accessed { |
+ display: none; |
+ } |
+ |
+ :host([is-card-start]) #date-accessed { |
+ display: flex; |
+ } |
+ |
+ #item-container { |
+ @apply(--layout-center); |
+ @apply(--layout-horizontal); |
+ min-height: var(--item-height); |
+ } |
+ |
+ :host([is-card-start]) #item-container { |
+ padding-top: var(--card-first-last-item-padding); |
+ } |
+ |
+ :host([is-card-end]) #item-container { |
+ padding-bottom: var(--card-first-last-item-padding); |
+ } |
+ |
+ #title-and-domain { |
+ @apply(--layout-center); |
+ @apply(--layout-flex); |
+ @apply(--layout-horizontal); |
+ height: var(--item-height); |
+ overflow: hidden; |
+ } |
+ |
+ paper-checkbox { |
+ --paper-checkbox-checked-color: rgb(68, 136, 255); |
+ --paper-checkbox-size: 16px; |
+ --paper-checkbox-unchecked-color: var(--secondary-text-color); |
+ height: 16px; |
+ margin: 0 16px 0 20px; |
+ padding: 2px; |
+ width: 16px; |
+ } |
+ |
+ #time-accessed { |
+ color: #646464; |
+ min-width: 96px; |
+ } |
+ |
+ #domain { |
+ -webkit-margin-start: 16px; |
+ color: var(--secondary-text-color); |
+ flex-shrink: 0; |
+ } |
+ |
+ #menu-button { |
+ -webkit-margin-end: 12px; |
+ } |
+ |
+ #star-container { |
+ -webkit-margin-end: 4px; |
+ -webkit-margin-start: 12px; |
+ width: 32px; |
+ } |
+ |
+ #bookmark-star { |
+ color: rgb(68, 136, 255); |
+ height: 32px; |
+ width: 32px; |
+ } |
+ |
+ #bookmark-star iron-icon { |
+ height: 16px; |
+ width: 16px; |
+ } |
+ |
+ #time-gap-separator { |
+ -webkit-border-start: 1px solid #888; |
+ -webkit-margin-start: 77px; |
+ height: 15px; |
+ } |
+ |
+ #background { |
+ background: #fff; |
+ bottom: -1px; /* Prevents shadow artifacts when zoomed */ |
+ left: 0; |
+ position: absolute; |
+ right: 0; |
+ top: 0; |
+ z-index: -1; |
+ } |
+ |
+ :host([embedded]) #background { |
+ display: none; |
+ } |
+ |
+ :host([is-card-start]) #background { |
+ border-radius: 2px 2px 0 0; |
+ } |
+ |
+ :host([is-card-end]) #background { |
+ border-radius: 0 0 2px 2px; |
+ bottom: 0; |
+ } |
+ </style> |
+ |
+ <div id="sizing-container"> |
+ <div id="main-container"> |
+ <div id="background"></div> |
+ <div id="date-accessed" class="card-title"> |
+ [[cardTitle_(numberOfItems, item.dateRelativeDay, searchTerm)]] |
+ </div> |
+ <div id="item-container"> |
+ <paper-checkbox id="checkbox" on-mousedown="onCheckboxMousedown_" on-click="onCheckboxSelected_" checked="{{selected}}" disabled="[[selectionNotAllowed_()]]"> |
+ </paper-checkbox> |
+ <span id="time-accessed">[[item.readableTimestamp]]</span> |
+ <div class="website-icon" id="icon"></div> |
+ <div id="title-and-domain"> |
+ <a href="[[item.url]]" id="title" class="website-title" title="[[cropItemTitle_(item.title)]]"> |
+ <history-searched-label title="[[cropItemTitle_(item.title)]]" search-term="[[searchTerm]]"></history-searched-label> |
+ </a> |
+ <span id="domain">[[item.domain]]</span> |
+ </div> |
+ <div id="star-container"> |
+ <template is="dom-if" if="[[item.starred]]"> |
+ <button is="paper-icon-button-light" id="bookmark-star" title="$i18n{removeBookmark}" on-tap="onRemoveBookmarkTap_"> |
+ <iron-icon icon="cr:star"></iron-icon> |
+ </button> |
+ </template> |
+ </div> |
+ <button is="paper-icon-button-light" id="menu-button" class="icon-button" title="$i18n{moreActionsButton}" on-tap="onMenuButtonTap_"> |
+ <iron-icon icon="cr:more-vert"></iron-icon> |
+ </button> |
+ </div> |
+ <div id="time-gap-separator" hidden="[[!hasTimeGap]]"></div> |
+ </div> |
+ </div> |
+ </template> |
+ </dom-module> |
+<link rel="import" href="chrome://history/constants.html"> |
+<dom-module id="history-grouped-list" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ overflow: auto; |
+ position: relative; |
+ } |
+ |
+ #main-container { |
+ @apply(--card-sizing); |
+ align-items: center; |
+ display: flex; |
+ flex-direction: column; |
+ padding-top: var(--first-card-padding-top); |
+ } |
+ |
+ .domain-heading { |
+ align-items: center; |
+ display: flex; |
+ height: var(--item-height); |
+ padding: 0 20px; |
+ } |
+ |
+ .domain-count { |
+ color: rgb(151, 156, 160); |
+ padding-left: 10px; |
+ } |
+ |
+ .domain-heading-text { |
+ display: flex; |
+ } |
+ |
+ .group-container { |
+ @apply(--card-box-shadow); |
+ background: #fff; |
+ border-radius: 2px; |
+ margin-bottom: var(--card-padding-between); |
+ max-width: var(--card-max-width); |
+ min-width: var(--card-min-width); |
+ width: 100%; |
+ } |
+ |
+ .card-title { |
+ margin-bottom: var(--card-first-last-item-padding); |
+ } |
+ |
+ .domain-heading-text { |
+ flex: 1 1 0; |
+ } |
+ |
+ .dropdown-indicator { |
+ max-width: 16px; |
+ } |
+ |
+ history-item { |
+ padding-left: 20px; |
+ } |
+ </style> |
+ <div id="no-results" class="centered-message" hidden$="[[hasResults(groupedHistoryData_.length)]]"> |
+ [[noResultsMessage(searchedTerm, querying)]] |
+ </div> |
+ <div id="main-container" hidden$="[[!hasResults(groupedHistoryData_.length)]]"> |
+ <template is="dom-repeat" items="[[groupedHistoryData_]]" as="group" initial-count="1" index-as="groupIndex"> |
+ <div class="group-container"> |
+ <div class="card-title"> |
+ [[group.title]] |
+ </div> |
+ |
+ <template is="dom-repeat" items="[[group.domains]]" as="domain" initial-count="10" index-as="domainIndex"> |
+ <div> |
+ <div class="domain-heading" on-tap="toggleDomainExpanded_"> |
+ <div class="domain-heading-text"> |
+ <div class="website-icon" style="[[getWebsiteIconStyle_(domain)]]"></div> |
+ <span>[[domain.domain]]</span> |
+ <span class="domain-count">[[domain.visits.length]]</span> |
+ </div> |
+ <iron-icon icon="[[getDropdownIcon_(domain.expanded)]]" class="dropdown-indicator"></iron-icon> |
+ </div> |
+ <iron-collapse opened="{{domain.expanded}}" id="collapse"> |
+ <template is="dom-if" if="[[domain.rendered]]"> |
+ <template is="dom-repeat" items="[[domain.visits]]" as="item" initial-count="5" index-as="itemIndex"> |
+ <history-item item="[[item]]" selected="{{item.selected}}" has-time-gap="[[needsTimeGap_( |
+ groupIndex, domainIndex, itemIndex)]]" search-term="[[searchedTerm]]" number-of-items="[[historyData.length]]" path="[[pathForItem_( |
+ groupIndex, domainIndex, itemIndex)]]" embedded=""> |
+ </history-item> |
+ </template> |
+ </template> |
+ </iron-collapse> |
+ </div> |
+ </template> |
+ </div> |
+ </template> |
+ </div> |
+ </template> |
+ </dom-module> |
+<dom-module id="iron-list" assetpath="chrome://resources/polymer/v1_0/iron-list/"> |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ position: relative; |
+ } |
+ |
+ @media only screen and (-webkit-max-device-pixel-ratio: 1) { |
+ :host { |
+ will-change: transform; |
+ } |
+ } |
+ |
+ #items { |
+ @apply(--iron-list-items-container); |
+ position: relative; |
+ } |
+ |
+ :host(:not([grid])) #items > ::content > * { |
+ width: 100%; |
+ }; |
+ |
+ #items > ::content > * { |
+ box-sizing: border-box; |
+ margin: 0; |
+ position: absolute; |
+ top: 0; |
+ will-change: transform; |
+ } |
+ </style> |
+ |
+ <array-selector id="selector" items="{{items}}" selected="{{selectedItems}}" selected-item="{{selectedItem}}"> |
+ </array-selector> |
+ |
+ <div id="items"> |
+ <content></content> |
+ </div> |
+ |
+ </template> |
+</dom-module> |
+ |
+<dom-module id="iron-scroll-threshold" assetpath="chrome://resources/polymer/v1_0/iron-scroll-threshold/"> |
+ <template> |
+ <style> |
+ :host { |
+ display: block; |
+ } |
+ </style> |
+ |
+ <content></content> |
+ |
+ </template> |
+</dom-module> |
+ |
+<dom-module id="history-list" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ overflow: overlay; |
+ } |
+ |
+ #infinite-list { |
+ @apply(--card-container-filter); |
+ } |
+ |
+ history-item { |
+ --history-item-padding-side: var(--card-padding-side); |
+ } |
+ </style> |
+ <div id="no-results" class="centered-message" hidden$="[[hasResults(historyData_.length)]]"> |
+ {{noResultsMessage(searchedTerm, querying)}} |
+ </div> |
+ <iron-list items="{{historyData_}}" as="item" id="infinite-list" hidden$="[[!hasResults(historyData_.length)]]"> |
+ <template> |
+ <history-item item="[[item]]" selected="{{item.selected}}" is-first-item="[[isFirstItem_(index)]]" is-card-start="[[isCardStart_(item, index, historyData_.length)]]" is-card-end="[[isCardEnd_(item, index, historyData_.length)]]" has-time-gap="[[needsTimeGap_(item, index, historyData_.length)]]" search-term="[[searchedTerm]]" number-of-items="[[historyData_.length]]" path="[[pathForItem_(index)]]"> |
+ </history-item> |
+ </template> |
+ </iron-list> |
+ <iron-scroll-threshold id="scroll-threshold" scroll-target="infinite-list" lower-threshold="500" on-lower-threshold="loadMoreData_"> |
+ </iron-scroll-threshold> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-list-container" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style cr-shared-style"> |
+ :host { |
+ display: block; |
+ height: 100%; |
+ overflow: hidden; |
+ } |
+ |
+ #content, |
+ #content > * { |
+ height: 100%; |
+ } |
+ |
+ dialog .body { |
+ white-space: pre-wrap; |
+ } |
+ </style> |
+ <iron-pages id="content" attr-for-selected="id" selected="[[selectedPage_]]"> |
+ <history-list id="infinite-list" querying="[[queryState.querying]]" searched-term="[[queryResult.info.term]]"></history-list> |
+ <template is="dom-if" if="[[grouped]]"> |
+ <history-grouped-list id="grouped-list" range="[[queryState.range]]" query-start-time="[[queryResult.info.queryStartTime]]" query-end-time="[[queryResult.info.queryEndTime]]" searched-term="[[queryResult.info.term]]"> |
+ </history-grouped-list> |
+ </template> |
+ </iron-pages> |
+ |
+ <template is="history-lazy-render" id="dialog"> |
+ <dialog is="cr-dialog"> |
+ <div class="title">$i18n{removeSelected}</div> |
+ <div class="body">$i18n{deleteWarning}</div> |
+ <div class="button-container"> |
+ <paper-button class="cancel-button" on-tap="onDialogCancelTap_"> |
+ $i18n{cancel} |
+ </paper-button> |
+ <paper-button class="action-button" on-tap="onDialogConfirmTap_" autofocus=""> |
+ $i18n{deleteConfirm} |
+ </paper-button> |
+ </div> |
+ </dialog> |
+ </template> |
+ |
+ <template is="history-lazy-render" id="sharedMenu"> |
+ <cr-shared-menu> |
+ <paper-item id="menuMoreButton" class="menu-item" on-tap="onMoreFromSiteTap_"> |
+ $i18n{moreFromSite} |
+ </paper-item> |
+ <paper-item id="menuRemoveButton" class="menu-item" on-tap="onRemoveFromHistoryTap_"> |
+ $i18n{removeFromHistory} |
+ </paper-item> |
+ </cr-shared-menu> |
+ </template> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-synced-device-card" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ @apply(--card-sizing); |
+ display: block; |
+ padding-bottom: var(--card-padding-between); |
+ } |
+ |
+ #card-heading { |
+ @apply(--layout-justified); |
+ cursor: pointer; |
+ } |
+ |
+ #icon { |
+ -webkit-margin-start: 20px; |
+ } |
+ |
+ #tab-item-list { |
+ padding: 8px 0; |
+ } |
+ |
+ #last-update-time { |
+ color: var(--secondary-text-color); |
+ } |
+ |
+ #right-buttons { |
+ -webkit-margin-end: 4px; |
+ } |
+ |
+ #menu-button { |
+ -webkit-margin-end: 8px; |
+ } |
+ |
+ #collapse { |
+ overflow: hidden; |
+ } |
+ |
+ #history-item-container { |
+ @apply(--card-box-shadow); |
+ background: #fff; |
+ border-radius: 2px; |
+ } |
+ |
+ #item-container { |
+ @apply(--layout-center); |
+ @apply(--layout-horizontal); |
+ min-height: var(--item-height); |
+ } |
+ |
+ #window-separator { |
+ background-color: var(--card-border-color); |
+ height: 1px; |
+ margin: 5px auto; |
+ width: 80%; |
+ } |
+ </style> |
+ <div id="history-item-container"> |
+ <div class="card-title" id="card-heading" aria-expanded$="[[cardOpen_]]" aria-controls="collapse" on-tap="toggleTabCard"> |
+ <div> |
+ [[device]] |
+ <span id="last-update-time">[[lastUpdateTime]]</span> |
+ </div> |
+ <div id="right-buttons"> |
+ <button is="paper-icon-button-light" id="menu-button" class="icon-button" on-tap="onMenuButtonTap_" title="$i18n{moreActionsButton}"> |
+ <iron-icon icon="cr:more-vert"></iron-icon> |
+ </button> |
+ <button is="paper-icon-button-light" class="icon-button" title$="[[getCollapseTitle_(cardOpen_)]]"> |
+ <iron-icon icon="cr:expand-less" id="dropdown-indicator"> |
+ </iron-icon> |
+ </button> |
+ </div> |
+ </div> |
+ |
+ <iron-collapse opened="{{cardOpen_}}" id="collapse"> |
+ <div id="tab-item-list"> |
+ <template is="dom-repeat" items="[[tabs]]" as="tab" id="tab-list"> |
+ <div id="item-container"> |
+ <div id="icon" class="website-icon"></div> |
+ <a href="[[tab.url]]" class="website-title" title="[[tab.title]]" on-click="openTab_"> |
+ <history-searched-label title="[[tab.title]]" search-term="[[searchTerm]]"></history-searched-label> |
+ </a> |
+ </div> |
+ <div id="window-separator" hidden$="[[!isWindowSeparatorIndex_(index, separatorIndexes)]]"> |
+ </div> |
+ </template> |
+ </div> |
+ </iron-collapse> |
+ </div> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-synced-device-manager" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ overflow: overlay; |
+ } |
+ |
+ #illustration { |
+ background: -webkit-image-set( |
+ url("chrome://history/images/100/sign_in_promo.png") 1x, |
+ url("chrome://history/images/200/sign_in_promo.png") 2x) |
+ no-repeat center center; |
+ height: 222px; |
+ margin-top: 100px; |
+ width: 594px; |
+ } |
+ |
+ #no-synced-tabs { |
+ height: 100%; |
+ } |
+ |
+ #sign-in-guide { |
+ align-items: center; |
+ display: flex; |
+ flex-direction: column; |
+ justify-content: center; |
+ overflow-x: hidden; |
+ text-align: center; |
+ } |
+ |
+ #sign-in-promo { |
+ color: var(--primary-text-color); |
+ font-size: 28px; |
+ margin-top: 40px; |
+ } |
+ |
+ #sign-in-promo-desc { |
+ color: #848484; |
+ font-size: 16px; |
+ margin-top: 10px; |
+ } |
+ |
+ #sign-in-button { |
+ background-color: var(--google-blue-500); |
+ color: white; |
+ font-size: 14px; |
+ margin-top: 24px; |
+ } |
+ |
+ #synced-device-list { |
+ padding-top: var(--first-card-padding-top); |
+ } |
+ </style> |
+ <div id="synced-device-list" hidden="[[!syncedDevices_.length]]"> |
+ <template is="dom-repeat" items="[[syncedDevices_]]" as="syncedDevice"> |
+ <history-synced-device-card device="[[syncedDevice.device]]" last-update-time="[[syncedDevice.lastUpdateTime]]" tabs="[[syncedDevice.tabs]]" separator-indexes="[[syncedDevice.separatorIndexes]]" search-term="[[searchTerm]]" session-tag="[[syncedDevice.tag]]"> |
+ </history-synced-device-card> |
+ </template> |
+ </div> |
+ <div id="no-synced-tabs" class="centered-message" hidden="[[!showNoSyncedMessage(signInState_, syncedDevices_.length, |
+ guestSession_)]]"> |
+ [[noSyncedTabsMessage(fetchingSyncedTabs_)]] |
+ </div> |
+ <div id="sign-in-guide" hidden="[[!showSignInGuide(signInState_, guestSession_)]]"> |
+ <div id="illustration"></div> |
+ <div id="sign-in-promo">$i18n{signInPromo}</div> |
+ <div id="sign-in-promo-desc">$i18n{signInPromoDesc}</div> |
+ <paper-button id="sign-in-button" on-tap="onSignInTap_"> |
+ $i18n{signInButton} |
+ </paper-button> |
+ </div> |
+ |
+ <template is="history-lazy-render" id="menu"> |
+ <cr-shared-menu> |
+ <paper-item class="menu-item" on-tap="onOpenAllTap_"> |
+ $i18n{openAll} |
+ </paper-item> |
+ <paper-item class="menu-item" on-tap="onDeleteSessionTap_"> |
+ $i18n{deleteSession} |
+ </paper-item> |
+ </cr-shared-menu> |
+ </template> |
+ </template> |
+ </dom-module> |
+<dom-module id="history-side-bar" assetpath="chrome://history/"> |
+ <template> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ height: 100%; |
+ padding-top: 5px; |
+ width: var(--side-bar-width); |
+ } |
+ |
+ div.separator { |
+ background-color: rgba(0, 0, 0, 0.08); |
+ height: 1px; |
+ margin: 8px 0; |
+ } |
+ |
+ #clear-browsing-data { |
+ text-transform: uppercase; |
+ } |
+ |
+ iron-selector { |
+ -webkit-user-select: none; |
+ background-color: transparent; |
+ color: #5a5a5a; |
+ } |
+ |
+ iron-selector > a { |
+ @apply(--paper-font-subhead); |
+ -webkit-padding-start: 24px; |
+ align-items: center; |
+ box-sizing: border-box; |
+ color: inherit; |
+ cursor: pointer; |
+ display: flex; |
+ font-size: 14px; |
+ font-weight: 500; |
+ min-height: 48px; |
+ position: relative; |
+ text-decoration: none; |
+ } |
+ |
+ iron-selector > a.iron-selected { |
+ color: var(--google-blue-500); |
+ font-weight: 500; |
+ } |
+ |
+ #footer { |
+ bottom: 0; |
+ color: var(--paper-grey-600); |
+ position: absolute; |
+ width: var(--side-bar-width); |
+ } |
+ |
+ :host([drawer]) #footer { |
+ /* This compensates the 120px by which app-drawer protrudes under |
+ * the viewport. */ |
+ bottom: 120px; |
+ } |
+ |
+ #footer-text { |
+ -webkit-padding-end: 16px; |
+ -webkit-padding-start: 24px; |
+ line-height: 20px; |
+ margin: 24px 0; |
+ } |
+ |
+ #footer a { |
+ color: var(--google-blue-700); |
+ text-decoration: none; |
+ } |
+ </style> |
+ |
+ <iron-selector id="menu" selected="{{selectedPage}}" selectable=".page-item" attr-for-selected="path" fallback-selection="history" on-iron-activate="onSelectorActivate_"> |
+ <a href="/[[getQueryString_(route)]]" class="page-item" path="history"> |
+ $i18n{historyMenuItem} |
+ <paper-ripple></paper-ripple> |
+ </a> |
+ <a href="/syncedTabs[[getQueryString_(route)]]" class="page-item" path="syncedTabs"> |
+ $i18n{openTabsMenuItem} |
+ <paper-ripple></paper-ripple> |
+ </a> |
+ <div class="separator"></div> |
+ <a href="chrome://settings/clearBrowserData" on-tap="onClearBrowsingDataTap_" id="clear-browsing-data"> |
+ $i18n{clearBrowsingData} |
+ <paper-ripple></paper-ripple> |
+ </a> |
+ <div id="footer" hidden="[[!showFooter]]"> |
+ <div class="separator"></div> |
+ <div id="footer-text">$i18nRaw{sidebarFooter}</div> |
+ </div> |
+ </iron-selector> |
+ </template> |
+ </dom-module> |
+</div><dom-module id="history-app"> |
+ <template> |
+ <style no-process=""> |
+ history-toolbar { |
+ background: var(--md-toolbar-color); |
+ } |
+ </style> |
+ <style include="shared-style"> |
+ :host { |
+ display: block; |
+ height: 100%; |
+ overflow: hidden; |
+ } |
+ |
+ /* Sizing this with flex causes slow load performance, see |
+ crbug.com/618153. */ |
+ #main-container { |
+ height: calc(100% - var(--toolbar-height)); |
+ } |
+ |
+ :host([grouped_]) #main-container { |
+ height: calc(100% - var(--toolbar-grouped-height)); |
+ } |
+ |
+ #content-side-bar { |
+ float: left; |
+ } |
+ |
+ #content, |
+ #content > * { |
+ height: 100%; |
+ } |
+ |
+ #drawer-header { |
+ align-items: center; |
+ border-bottom: 1px solid rgba(0, 0, 0, 0.08); |
+ display: flex; |
+ height: var(--toolbar-height); |
+ margin-bottom: 5px; |
+ } |
+ |
+ h1 { |
+ -webkit-padding-start: 24px; |
+ color: rgb(66, 66, 66); |
+ font-size: 123%; |
+ font-weight: 400; |
+ } |
+ </style> |
+ <app-location route="{{route_}}"></app-location> |
+ <app-route route="{{route_}}" pattern="/:page" data="{{routeData_}}" query-params="{{queryParams_}}"> |
+ </app-route> |
+ <history-toolbar id="toolbar" spinner-active="[[shouldShowSpinner_(queryState_.querying, |
+ queryState_.incremental, |
+ queryState_.searchTerm)]]" is-grouped-mode="{{grouped_}}" grouped-range="{{queryState_.range}}" search-term="{{queryState_.searchTerm}}" query-start-time="[[queryResult_.info.queryStartTime]]" query-end-time="[[queryResult_.info.queryEndTime]]" has-drawer="[[hasDrawer_]]"> |
+ </history-toolbar> |
+ |
+ <div id="main-container"> |
+ <history-side-bar id="content-side-bar" selected-page="[[selectedPage_]]" route="[[route_]]" show-footer="[[showSidebarFooter]]" hidden$="[[hasDrawer_]]"> |
+ </history-side-bar> |
+ <iron-pages id="content" attr-for-selected="path" fallback-selection="history" selected="[[getSelectedPage_(selectedPage_, items)]]" items="{{items}}"> |
+ <history-list-container id="history" query-state="{{queryState_}}" query-result="[[queryResult_]]" grouped="[[grouped_]]" path="history"> |
+ </history-list-container> |
+ <template is="dom-if" if="[[syncedTabsSelected_(selectedPage_)]]"> |
+ <history-synced-device-manager id="synced-devices" session-list="[[queryResult_.sessionList]]" search-term="[[queryState_.searchTerm]]" path="syncedTabs"> |
+ </history-synced-device-manager> |
+ </template> |
+ </iron-pages> |
+ </div> |
+ |
+ <template is="dom-if" if="[[hasDrawer_]]"> |
+ <app-drawer id="drawer" swipe-open="" align="start" tabindex="0"> |
+ <div id="drawer-header"> |
+ <h1>$i18n{title}</h1> |
+ </div> |
+ <history-side-bar id="drawer-side-bar" selected-page="[[selectedPage_]]" route="[[route_]]" show-footer="[[showSidebarFooter]]" drawer=""> |
+ </history-side-bar> |
+ </app-drawer> |
+ </template> |
+ |
+ <iron-media-query query="(max-width: 1023px)" query-matches="{{hasDrawer_}}"> |
+ </iron-media-query> |
+ </template> |
+ </dom-module> |
+<script src="app.crisper.js"></script></body></html> |