blob: 46a2d08e656bcacf7ac8abe7f6bf9e3707181693 [file] [log] [blame]
<link rel="import" href="../polymer/polymer.html">
<link rel="import" href="../iron-icons/iron-icons.html">
<dom-module id="chops-user-id">
<template>
<style>
a {
color: black;
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
iron-icon {
top: -1px;
--iron-icon-height: 10px;
--iron-icon-width: 10px;
}
iron-icon:hover {
background-color: hsl(0, 0%, 81%);
}
.user-label {
font-size: .81em;
border-radius: 15px;
padding: 2px 8px;
background-color: hsl(0, 0%, 88%);
}
</style>
<span class="user-label">
<template is="dom-if" if="[[profileLink]]">
<a href$="[[profileLink]]">[[userId]]</a>
</template>
<template is="dom-if" if="[[!profileLink]]">
[[userId]]
</template>
<iron-icon
icon="clear"
hidden$="[[!removeable]]"
on-click="_removeUser"
title="[[fullName]] [[email]]"></iron-icon>
</span>
</template>
<script>
'use strict';
/**
* `<chops-user-id>` is an element used for displaying users.
*
* The only required attribute is userId. If the profile-link is provided
* the userId text will be displayed as a link. If an email and/or fullName
* are provided they will be visible when hovering over the element.
*
*
* @customElement
* @polymer
* @demo /demo/chops-user-id_demo.html
*/
class ChopsUserId extends Polymer.Element {
static get is() { return 'chops-user-id'; }
static get properties() {
return {
/**
* The user's id to be displayed. Required.
*
* @type String
*/
userId: {
type: String,
},
/**
* The user's email. Optional.
*
* @type String
*/
email: {
type: String,
},
/**
* The full name of the user. Optional.
*
* @type String
*/
fullName: {
type: String,
},
/**
* The link to the user's profile page. Optional.
*
* @type String
*/
profileLink: {
type: String,
value: "",
},
/**
* If true, a 'remove' icon will be visible and fire 'remove-user' on click.
*
* @type Boolean
*/
removeable: {
type: Boolean,
value: false,
},
}
}
/** Gets the user information and fires 'user-removed'. */
_removeUser(e) {
let user = {userId: this.userId};
if (this.email) { user.email = this.email; }
if (this.fullName) { user.fullName = this.fullName; }
if (this.profileLink) { user.profileLink = this.profileLink; }
this.dispatchEvent(new CustomEvent('remove-user', {detail: {removedUser: user}}));
}
/**
* Fired when a user wants to remove this user.
*
* @event remove-user
* @param {Object} removedUser object containing all of the user's given information.
*/
}
customElements.define(ChopsUserId.is, ChopsUserId);
</script>
<dom-module>