| // Copyright 2019 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. |
| |
| import {LitElement, html, css} from 'lit-element'; |
| |
| export class MrDayIcon extends LitElement { |
| /** @override */ |
| static get styles() { |
| return css` |
| :host { |
| background-color: hsl(0, 0%, 95%); |
| margin: 0.25em 8px; |
| height: 20px; |
| width: 20px; |
| border: 2px solid white; |
| transition: border-color .5s ease-in-out; |
| } |
| :host(:hover) { |
| cursor: pointer; |
| border-color: hsl(87, 20%, 45%); |
| } |
| :host([activityLevel="0"]) { |
| background-color: var(--chops-blue-gray-50); |
| } |
| :host([activityLevel="1"]) { |
| background-color: hsl(87, 70%, 87%); |
| } |
| :host([activityLevel="2"]) { |
| background-color: hsl(88, 67%, 72%); |
| } |
| :host([activityLevel="3"]) { |
| background-color: hsl(87, 80%, 40%); |
| } |
| :host([selected]) { |
| border-color: hsl(0, 0%, 13%); |
| } |
| .hover-card { |
| display: none; |
| } |
| :host(:hover) .hover-card { |
| display: block; |
| position: relative; |
| width: 150px; |
| padding: 0.5em 8px; |
| background: rgba(0, 0, 0, 0.6); |
| color: var(--chops-white); |
| border-radius: 8px; |
| top: 120%; |
| left: 50%; |
| transform: translateX(-50%); |
| } |
| `; |
| } |
| |
| /** @override */ |
| render() { |
| return html` |
| <div class="hover-card"> |
| ${this.commentCount} Comments<br> |
| <chops-timestamp .timestamp=${this.date}></chops-timestamp> |
| </div> |
| `; |
| } |
| |
| /** @override */ |
| static get properties() { |
| return { |
| activityLevel: { |
| type: Number, |
| reflect: true, |
| }, |
| commentCount: {type: Number}, |
| date: {type: Number}, |
| selected: { |
| type: Boolean, |
| reflect: true, |
| }, |
| }; |
| } |
| |
| /** @override */ |
| update(changedProperties) { |
| if (changedProperties.has('commentCount')) { |
| const level = Math.ceil(this.commentCount / 2); |
| this.activityLevel = Math.min(level, 3); |
| } |
| super.update(changedProperties); |
| } |
| } |
| customElements.define('mr-day-icon', MrDayIcon); |