Skip to content

Commit

Permalink
feat(): Added link events
Browse files Browse the repository at this point in the history
  • Loading branch information
Alfredo De la calle authored and Alfredo De la calle committed Dec 16, 2016
1 parent 7c447d3 commit e6e91db
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 114 deletions.
3 changes: 2 additions & 1 deletion bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
"dependencies": {
"polymer": "Polymer/polymer#^1.4.0",
"iron-flex-layout": "^1.3.1",
"iron-icons": "^1.2.0"
"iron-icons": "^1.2.0",
"iron-a11y-keys-behavior": "polymerelements/iron-a11y-keys-behavior#^1.1.9"
},
"devDependencies": {
"iron-component-page": "PolymerElements/iron-component-page#^1.0.0",
Expand Down
2 changes: 1 addition & 1 deletion demo/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ <h3>Basic key-pad demo</h3>
<demo-snippet>
<template>

<key-pad shuffle>
<key-pad>
</key-pad>

</template>
Expand Down
14 changes: 5 additions & 9 deletions key-pad-key-styles.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,6 @@

}

.key-pad-key__keyNums {
@apply(--layout);
@apply(--layout-wrap);
}

.key-pad-key__keyNum {
flex: 1 0 33.3%;
@apply(--layout);
Expand All @@ -25,14 +20,15 @@
border: 1px solid #CCC;
border-radius: 50%;
text-align: center;
margin: 10px 0;
padding: 30px 0;
height: 75px;
width: 75px;
@apply(--layout;
@apply(--layout-center-center);
}
.key-pad-key__keyNum:nth-of-type(10) .key-pad-key__keyNum-content {
/* .key-pad-key__keyNum:nth-of-type(10) .key-pad-key__keyNum-content {
margin-right: 20px;
}

*/
.key-pad-key__keyNum-content:hover {
cursor: pointer;
background-color: #CCC;
Expand Down
29 changes: 2 additions & 27 deletions key-pad-key.html
Original file line number Diff line number Diff line change
Expand Up @@ -15,34 +15,9 @@
<div class$="key-pad-key__keyNum key-pad-key__[[ label ]]"
on-tap="_onTapKey">
<div class="key-pad-key__keyNum-content">
[[ label ]]
<span>[[ label ]]</span>
</div>
</div>
</template>

<script>
'use strict';

Polymer({
is: 'key-pad-key',
properties: {
key: {
type: String
},
label: {
type: String
}
},
ready: function() {
if (!this.label) {
this.set('label', this.key);
}
},

_onTapKey: function(evt) {
this.fire('key-pad-key.key', evt.model.key);
console.log('key-pad-key.key', evt.model.key);
}
})
</script>
<script src="key-pad-key.js"></script>
</dom-module>
26 changes: 26 additions & 0 deletions key-pad-key.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
'use strict';

Polymer({
is: 'key-pad-key',
properties: {
key: {
type: String
},
label: {
type: String
}
},

attached: function() {
if (!this.label) {
this.set('label', this.key);
}

this.updateStyles();
},

_onTapKey: function(evt) {
this.fire('key-pad-key:key', this.key);
console.log('key-pad-key:key', this.key);
}
});
28 changes: 0 additions & 28 deletions key-pad-styles.html
Original file line number Diff line number Diff line change
Expand Up @@ -35,34 +35,6 @@
@apply(--layout);
@apply(--layout-wrap);
}

.key-pad__keyNum {
flex: 1 0 33.3%;
@apply(--layout);
@apply(--layout-center-justified);
}

.key-pad__keyNum:nth-of-type(10) {
flex-basis: 66.6%;
@apply(--layout-end-justified);
}

.key-pad__keyNum-content {
border: 1px solid #CCC;
border-radius: 50%;
text-align: center;
margin: 10px 0;
padding: 30px 0;
width: 75px;
}
.key-pad__keyNum:nth-of-type(10) .key-pad__keyNum-content {
margin-right: 20px;
}

.key-pad__keyNum-content:hover {
cursor: pointer;
background-color: #CCC;
}
</style>
</template>
</dom-module>
Expand Down
8 changes: 3 additions & 5 deletions key-pad.html
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@

<!-- <div class="key-pad__point key-pad__point--selected key-pad__point--1"></div> -->
</div>
<div class="key-pad__reset">
<div class="key-pad__reset"
on-tap="_onTapReset">
<iron-icon icon="icons:close"></iron-icon>
</div>
</header>
Expand All @@ -35,10 +36,7 @@
<template is="dom-repeat" items="[[ _keypadNums ]]" as="keyNum">
<key-pad-key key="[[ keyNum ]]"></key-pad-key>
</template>
<div class="key-pad__keyNum key-pad__ok"
on-tap="">
<div class="key-pad__keyNum-content">OK</div>
</div>
<key-pad-key key="Intro" label="OK"></key-pad-key>
</div>
</section>
</template>
Expand Down
102 changes: 59 additions & 43 deletions key-pad.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,42 @@
'use strict';

/**
* Generate a random array
* @param {Integer} inPutArray Number of elements in array
* @return {Array} A shuffled array
*/
var _uniqueRandomNumber = function(inPutArray) {
var sArray = [];
var storeList = [];
var k = 1;

// Inserts Numbers in Array
for (var i = 1; i <= inPutArray; i++) {
sArray.push(i);
}
// Outputs numbers non-repeated
while (k <= inPutArray) {
// Search for value inside the Array in a random position
var randomPos = Math.floor(Math.random() * sArray.length);
// Selects value and removes it from Array
var valueFromArray = sArray.splice(randomPos, 1);
// Converts value in number
var numberRand = parseInt(valueFromArray);
//store and make array key for as like 0,1,2 for length :3
storeList.push(numberRand - 1);
k++;
}
return storeList;
};

var keys;

Polymer({

is: 'key-pad',
listeners: {
'key-pad-key:key': '_onKeypadKey'
},

properties: {
/**
Expand All @@ -15,11 +49,19 @@ Polymer({
value: ''
},

/**
* Max input length for keypad
* @type {Boolean}
*/
maxLength: {
type: Number,
value: 4
},

/**
* Ordering keys
* @type {Boolean}
*/
shuffle: {
type: Boolean
},
Expand All @@ -40,9 +82,14 @@ Polymer({
},

attached: function() {
var shuffle = this.shuffle ? true : false;

var shuffle = !!this.shuffle ? false : true;
this.set('_keypadNums', this._getRandomNumbers(shuffle));


},

destroy: function() {
this.unlisten(keys, 'key-pad-key:key');
},

reset: function() {
Expand All @@ -61,50 +108,19 @@ Polymer({
},

////// EVENTS

_onTapKey: function(evt) {
if (this.model.length < this.maxLength) {
this._setModel(this.model + evt.model.keyNum);
this.fire('key-pad.num-clicked', evt.model.keyNum);
console.log(evt.model.keyNum);
_onKeypadKey: function(evt, detail) {
//TODO: Check characters
var keyValue = detail.toString();

if (this._keyLength < this.maxLength) {
this._setModel(this.model + keyValue);
this._keyLength++;
}
},

_onTapOk: function() {
this.fire('key-pad.ok-clicked');
},

_onTapReset: function() {
this.fire('key-pad.reset-clicked');
},

/**
* Generate a random array
* @param {Integer} inPutArray Number of elements in array
* @return {Array} A shuffled array
*/
_uniqueRandomNumber: function(inPutArray) {
var sArray = [];
var storeList = [];
var k = 1;

// Inserts Numbers in Array
for (var i = 1; i <= inPutArray; i++) {
sArray.push(i);
}
// Outputs numbers non-repeated
while (k <= inPutArray) {
// Search for value inside the Array in a random position
var randomPos = Math.floor(Math.random() * sArray.length);
// Selects value and removes it from Array
var valueFromArray = sArray.splice(randomPos, 1);
// Converts value in number
var numberRand = parseInt(valueFromArray);
//store and make array key for as like 0,1,2 for length :3
storeList.push(numberRand - 1);
k++;
}
return storeList;
this.reset();
this.fire('key-pad:reset-clicked');
},

/**
Expand All @@ -113,7 +129,7 @@ Polymer({
* @return {Array} Array of numbers
*/
_getRandomNumbers: function(forceOrdering) {
var arr = forceOrdering ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] : this._uniqueRandomNumber(10);
var arr = forceOrdering ? [1, 2, 3, 4, 5, 6, 7, 8, 9, 0] : _uniqueRandomNumber(10);
var arrTmp = [];
var row = [];

Expand Down

0 comments on commit e6e91db

Please sign in to comment.