blob: bf81b0b7c12224bce06954ccf3bc35bafe76f005 [file] [log] [blame]
<!-- The <commit-selector-sk> custom element declaration.
Allows choosing from a list of commits. The element presents as a button
that when pressed pops up a dialog with the commits to choose from.
Attributes:
currentCommit: The hash of the currently selected commit, or '' if none
has been selected.
Events:
'change'
The change event will be produced when the user has made
a selection. The selected commit hash is provided in e.detail.hash.
Methods:
setCommits(commits): Set the commits to choose from. The commits are
in the form of an array where each entry looks like:
{
Hash: 'ae434....',
Author: 'jcgregorio@google.com',
Subject: 'First line of commit msg.'
}
-->
<style type='text/css' media='screen'>
html /deep/ paper-action-dialog#commits /deep/ .commit {
font-family: monospace;
padding: 0.7em;
cursor: pointer;
}
html /deep/ paper-action-dialog#commits /deep/ .commit .hash {
color: #D95F02;
}
html /deep/ paper-action-dialog#commits /deep/ .commit .author {
color: #1B9E77;
}
html /deep/ paper-action-dialog#commits /deep/ .commit:hover {
background: #eee;
}
</style>
<polymer-element name='commit-selector-sk'>
<template>
<paper-button id=choose>
<span>{{currentCommitMsg}}</span>
</paper-button>
<paper-action-dialog id=commits backdrop>
<core-selector id=selector valueattr='label'>
<div class=commit data-label=''>None</div>
<template repeat='{{c in commits}}'>
<div class=commit data-label='{{c.Hash}}'>
<span class='hash'>{{c.Hash|shortHash}}</span>
<span class=author>{{c.Author}}</span>
<span class=subject>{{c.Subject}}</span>
</div>
</template>
</core-selector>
<paper-button dismissive>Cancel</paper-button>
</paper-action-dialog>
</template>
<script>
Polymer({
ready: function() {
this.commits = [
{
Hash: 'abcde3924829384902389',
Author: 'jcgregorio@google.com',
Subject: 'Did a commit.'
},
{
Hash: '123459348239084923020',
Author: 'jcgregorio@google.com',
Subject: 'A previous commit.'
}
];
this.currentCommit = '';
this.currentCommitMsg = 'No commit chosen';
var that = this;
this.$.choose.addEventListener('click', function() {
that.$.commits.toggle();
});
this.$.selector.addEventListener('core-activate', function(e) {
that.$.commits.toggle();
that.currentCommit = e.detail.item.dataset.label;
});
},
// Returns a truncated hash, used in template expansion.
shortHash: function(s) {
return s.slice(0, 9);
},
currentCommitChanged: function() {
var detail = {hash: this.currentCommit};
this.dispatchEvent(new CustomEvent('change', {detail: detail}));
if (this.currentCommit === '') {
this.currentCommitMsg = 'No commit chosen';
} else {
this.currentCommitMsg = this.currentCommit;
}
}
});
</script>
</polymer-element>