Updated the new character dialog to Polymer 1
This commit is contained in:
@@ -18,16 +18,6 @@ body {
|
|||||||
background-color: #E0E0E0;
|
background-color: #E0E0E0;
|
||||||
}
|
}
|
||||||
|
|
||||||
//fix tabs and core-toolbar having box shadow
|
|
||||||
core-toolbar {
|
|
||||||
box-shadow: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
//give drawer panel a shadow always
|
|
||||||
core-header-panel[drawer] {
|
|
||||||
box-shadow: 2px 0px 5px 0px rgba(0,0,0,0.2);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Paragraphs
|
//Paragraphs
|
||||||
p {
|
p {
|
||||||
margin-bottom: 8px;
|
margin-bottom: 8px;
|
||||||
@@ -77,6 +67,10 @@ paper-icon-item::shadow #contentIcon {
|
|||||||
right: 24px;
|
right: 24px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
paper-fab {
|
||||||
|
background-color: #d13b2e;
|
||||||
|
}
|
||||||
|
|
||||||
//Buttons
|
//Buttons
|
||||||
paper-button {
|
paper-button {
|
||||||
color: #000;
|
color: #000;
|
||||||
|
|||||||
@@ -1,40 +1,27 @@
|
|||||||
<template name="newCharacterDialog">
|
<template name="newCharacterDialog">
|
||||||
<div>
|
<div class="fit layout vertical">
|
||||||
<paper-input id="nameInput" label="Name"></paper-input><br>
|
<app-header-layout has-scrolling-region class="new-character-dialog flex">
|
||||||
<paper-input id="genderInput" label="Gender"></paper-input><br>
|
<app-header fixed effects="waterfall">
|
||||||
<paper-input id="raceInput" label="Race"></paper-input>
|
<app-toolbar>
|
||||||
<!--
|
<div main-title>New Character</div>
|
||||||
<div>
|
</app-toolbar>
|
||||||
<div layout horizontal center-justified>
|
</app-header>
|
||||||
{{pointsUsed}}/<paper-input-decorator><input type="number" value="27"></paper-input-decorator>
|
<div class="form">
|
||||||
</div>
|
<p>
|
||||||
<div layout horizontal wrap>
|
Input the basics of your character, but don't worry, you can always change these values later
|
||||||
<div>Strength</div>
|
</p>
|
||||||
<paper-slider id="strSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
<paper-input class="nameInput" label="Name" {{errorAtts "name"}}></paper-input><br>
|
||||||
</div>
|
<paper-input class="genderInput" label="Gender" {{errorAtts "gender"}}></paper-input><br>
|
||||||
<div layout horizontal wrap>
|
<paper-input class="raceInput" label="Race" {{errorAtts "race"}}></paper-input>
|
||||||
<div>Dexterity</div>
|
|
||||||
<paper-slider id="dexSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
|
||||||
</div>
|
|
||||||
<div layout horizontal wrap>
|
|
||||||
<div>Constitution</div>
|
|
||||||
<paper-slider id="conSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
|
||||||
</div>
|
|
||||||
<div layout horizontal wrap>
|
|
||||||
<div>Intelligence</div>
|
|
||||||
<paper-slider id="intSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
|
||||||
</div>
|
|
||||||
<div layout horizontal wrap>
|
|
||||||
<div>Wisdom</div>
|
|
||||||
<paper-slider id="wisSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
|
||||||
</div>
|
|
||||||
<div layout horizontal wrap>
|
|
||||||
<div>Charisma</div>
|
|
||||||
<paper-slider id="chaSlider" min="8" max="15" value="8" secondaryProgress={{secondaryProgress}}></paper-slider>
|
|
||||||
</div>
|
</div>
|
||||||
|
</app-header-layout>
|
||||||
|
<div class="buttons layout horizontal end-justified">
|
||||||
|
<paper-button class="cancelButton">
|
||||||
|
Cancel
|
||||||
|
</paper-button>
|
||||||
|
<paper-button class="addButton" disabled={{invalid}}>
|
||||||
|
Add
|
||||||
|
</paper-button>
|
||||||
</div>
|
</div>
|
||||||
-->
|
|
||||||
</div>
|
</div>
|
||||||
<paper-button id="cancelButton" affirmative> Cancel </paper-button>
|
</template>
|
||||||
<paper-button id="addButton" affirmative> Add </paper-button>
|
|
||||||
</template>
|
|
||||||
|
|||||||
@@ -1,13 +1,49 @@
|
|||||||
Template.newCharacterDialog.events({
|
Template.newCharacterDialog.onCreated(function(){
|
||||||
"tap #addButton": function(event, instance){
|
this.character = {};
|
||||||
Characters.insert({
|
this.schema = new SimpleSchema({
|
||||||
name: instance.find("#nameInput").value,
|
//strings
|
||||||
gender: instance.find("#genderInput").value,
|
name: {type: String},
|
||||||
race: instance.find("#raceInput").value,
|
gender: {type: String, optional: true},
|
||||||
owner: Meteor.userId(),
|
race: {type: String, optional: true},
|
||||||
}, function(err, id){
|
});
|
||||||
if (err) throw err;
|
this.context = this.schema.newContext();
|
||||||
Router.go("characterSheet", {_id: id});
|
this.context.runOnce = false;
|
||||||
});
|
});
|
||||||
}
|
|
||||||
|
Template.newCharacterDialog.helpers({
|
||||||
|
invalid(){
|
||||||
|
let context = Template.instance().context;
|
||||||
|
let valid = context.isValid() && context.runOnce;
|
||||||
|
return !valid;
|
||||||
|
},
|
||||||
|
errorAtts(key){
|
||||||
|
let error = Template.instance().context.keyErrorMessage(key);
|
||||||
|
if (error){
|
||||||
|
return {
|
||||||
|
invalid: true,
|
||||||
|
["error-message"]: error,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
changeFunction = function(field){
|
||||||
|
return _.debounce(function(event, instance){
|
||||||
|
instance.character[field] = event.currentTarget.value;
|
||||||
|
instance.schema.clean(instance.character);
|
||||||
|
instance.context.validate(instance.character);
|
||||||
|
if (!instance.context.runOnce) instance.context.runOnce = true;
|
||||||
|
}, 200);
|
||||||
|
};
|
||||||
|
|
||||||
|
Template.newCharacterDialog.events({
|
||||||
|
"input .nameInput": changeFunction("name"),
|
||||||
|
"input .genderInput": changeFunction("gender"),
|
||||||
|
"input .raceInput": changeFunction("race"),
|
||||||
|
"click .cancelButton": function(event, instance){
|
||||||
|
popDialogStack();
|
||||||
|
},
|
||||||
|
"click .addButton": function(event, instance){
|
||||||
|
popDialogStack(instance.character);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -51,11 +51,7 @@
|
|||||||
<div class="fab-buffer"></div>
|
<div class="fab-buffer"></div>
|
||||||
<paper-fab class="floatyButton addCharacter"
|
<paper-fab class="floatyButton addCharacter"
|
||||||
icon="add"
|
icon="add"
|
||||||
title="Add"
|
title="Add"></paper-fab>
|
||||||
role="button"
|
|
||||||
tabindex="0"
|
|
||||||
aria-label="Add"
|
|
||||||
hero-id="main"></paper-fab>
|
|
||||||
</div>
|
</div>
|
||||||
</app-header-layout>
|
</app-header-layout>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
@@ -22,9 +22,15 @@ Template.characterList.helpers({
|
|||||||
|
|
||||||
Template.characterList.events({
|
Template.characterList.events({
|
||||||
"tap .addCharacter": function(event, template) {
|
"tap .addCharacter": function(event, template) {
|
||||||
GlobalUI.showDialog({
|
pushDialogStack({
|
||||||
heading: "New Character",
|
|
||||||
template: "newCharacterDialog",
|
template: "newCharacterDialog",
|
||||||
});
|
element: event.currentTarget,
|
||||||
|
callback(character){
|
||||||
|
if (!character) return;
|
||||||
|
character.owner = Meteor.userId();
|
||||||
|
let _id = Characters.insert(character);
|
||||||
|
Router.go("characterSheet", {_id});
|
||||||
|
},
|
||||||
|
})
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,7 +0,0 @@
|
|||||||
.feedback .form {
|
|
||||||
padding: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.feedback .buttons {
|
|
||||||
padding: 8px 8px 8px 24px;
|
|
||||||
}
|
|
||||||
@@ -50,3 +50,11 @@
|
|||||||
background: red;
|
background: red;
|
||||||
border-radius: 30px;
|
border-radius: 30px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.dialog-stack .dialog .form {
|
||||||
|
padding: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.dialog-stack .dialog .buttons {
|
||||||
|
padding: 8px 8px 8px 24px;
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user