@@ -246,66 +304,78 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
-
+
-
+
-
+
-
-
+
-
-
-
+
-
-
+
+
-
S
-
M
-
T
-
W
-
T
-
F
-
S
+
S
+
M
+
T
+
W
+
T
+
F
+
S
-
-
-
-
-
- {{day.text}}
+
+
+
+
-
-
-
+
+
+
+
+
+
+
+
`;
}
@@ -317,12 +387,16 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
return {
date: {
type: Date,
+ notify: true,
value: () => new Date(),
observer: '_populate'
},
currentMonth: {
type: Number
},
+ currentDay: {
+ type: Number
+ },
minDate: {
type: Date,
value: null
@@ -432,23 +506,23 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
this.cf = 0;
//fill with empty cells
for (var i = 0; i < this.tmpDate.getDay(); i++) {
- tmpArray.push({ text: "", isDisabled: false, i: this.cf++ });
+ tmpArray.push({text: "", isDisabled: false, i: this.cf++});
}
//fill days and check disable dates
for (var i = 1; i <= this.monthDays(this.tmpDate); i++) {
this.tmpDate.setDate(i);
if ((this.minDate != null && this.tmpDate <= this.minDate) || (this.maxDate != null && this.tmpDate >= this.maxDate) || this.disabledWeekDay.indexOf(this.days_names[(this.tmpDate).getDay()]) != -1 || (this.disabledDays).indexOf(i) != -1) {
- tmpArray.push({ text: i, isDisabled: true, i: this.cf++ });
+ tmpArray.push({text: i, isDisabled: true, i: this.cf++});
} else {
- tmpArray.push({ text: i, isDisabled: false, i: this.cf++ });
+ tmpArray.push({text: i, isDisabled: false, i: this.cf++});
}
}
//fill remaining empty cells
this.cf = (tmpArray.length > 35) ? (42 - (tmpArray.length)) : (34 - (tmpArray.length));
for (var j = 0; j <= this.cf; j++) {
- tmpArray.push({ text: "" });
+ tmpArray.push({text: ""});
}
this.days = tmpArray;
tmpArray = null;
@@ -475,7 +549,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
if (this.multiSelect.consequent) {
this.multiple = [];
this.cf = f.i;
- this.multiple.push(f.text + "," + this.currentMonth + "," + this.currentYear)
+ this.multiple.push(f.text + "," + this.currentMonth + "," + this.currentYear);
for (var j = 1; this.multiple.length < (this.multiSelect.max); j++) {
this.tmpDate = new Date(this.currentYear, this.currentMonth, f.text + j);
if ((this.minDate != null && this.tmpDate <= this.minDate) || (this.maxDate != null && this.tmpDate >= this.maxDate) || this.disabledWeekDay.indexOf(this.days_names[(this.tmpDate).getDay()]) != -1 || (this.disabledDays).indexOf(this.tmpDate.getDate()) != -1) {
@@ -488,7 +562,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
if (this.cf < 0) {
this.multiple.push(f.text + "," + this.currentMonth + "," + this.currentYear);
} else {
- target.classList.remove('selected')
+ target.classList.remove('selected');
this.multiple.splice(this.cf, 1);
this.triggerEvent('multiselect', this.multiple);
return;
@@ -503,8 +577,49 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
}
}
+ _keyPressSelect(e) {
+ if (e.which === 13){
+ this._setDate(e);
+ return;
+ var target = e.target;
+ var f = e.model.day;
+ if (f.text != "" && !e.model.day.isDisabled) {
+
+ if (this.multiSelect != null) {
+ if (this.multiSelect.consequent) {
+ this.multiple = [];
+ this.cf = f.i;
+ this.multiple.push(f.text + "," + this.currentMonth + "," + this.currentYear);
+ for (var j = 1; this.multiple.length < (this.multiSelect.max); j++) {
+ this.tmpDate = new Date(this.currentYear, this.currentMonth, f.text + j);
+ if ((this.minDate != null && this.tmpDate <= this.minDate) || (this.maxDate != null && this.tmpDate >= this.maxDate) || this.disabledWeekDay.indexOf(this.days_names[(this.tmpDate).getDay()]) != -1 || (this.disabledDays).indexOf(this.tmpDate.getDate()) != -1) {
+ } else {
+ this.multiple.push(this.tmpDate.getDate() + "," + this.tmpDate.getMonth() + "," + this.tmpDate.getFullYear());
+ }
+ }
+ } else {
+ this.cf = this.multiple.indexOf(f.text + "," + this.currentMonth + "," + this.currentYear);
+ if (this.cf < 0) {
+ this.multiple.push(f.text + "," + this.currentMonth + "," + this.currentYear);
+ } else {
+ target.classList.remove('selected');
+ this.multiple.splice(this.cf, 1);
+ this.triggerEvent('multiselect', this.multiple);
+ return;
+ }
+ if (this.multiple.length > this.multiSelect.max) {
+ this.multiple.shift();
+ }
+ }
+ this.triggerEvent('multiselect', this.multiple);
+ }
+ this.date = new Date(this.currentYear, this.currentMonth, f.text);
+ }
+ }
+ }
+
triggerEvent(e, data) {
- var event = new CustomEvent(e, { detail: { dates: data } });
+ var event = new CustomEvent(e, {detail: {dates: data}});
this.dispatchEvent(event);
}
@@ -515,6 +630,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
this.current_page = 'calendarContent';
this.pagination();
}
+
_setMonth(e) {
this.currentMonth = this.months_names.indexOf(e.model.item);
this.generateTable();
@@ -553,12 +669,14 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
_populate(newDate, oldDate) {
this.currentMonth = newDate.getMonth();
this.currentYear = newDate.getFullYear();
-
+ this.currentDay = newDate.getDay();
+ this.generateTable();
+ this.separator = [0, 1, 2, 3, 4, 5];
if (!oldDate) {
// don't dispatch the date changed event if the element is just initialising
return;
}
- this.dispatchEvent(new CustomEvent('date-change', { detail: { date: newDate } }));
+ this.dispatchEvent(new CustomEvent('date-change', {detail: {date: newDate}}));
}
dateFormat(date) {
@@ -570,6 +688,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
monthFormat() {
return this.months_names[this.currentMonth]
}
+
yearFormat() {
return this.currentYear;
}
@@ -587,7 +706,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
tmp.setMonth(this.currentMonth + x);
this.currentMonth = tmp.getMonth();
this.currentYear = tmp.getFullYear();
- this.dispatchEvent(new CustomEvent('month-change', { detail: { date: this.tmpDate } }));
+ this.dispatchEvent(new CustomEvent('month-change', {detail: {date: this.tmpDate}}));
this.generateTable();
this.separator = [0, 1, 2, 3, 4, 5];
}
@@ -597,6 +716,7 @@ class CalendarLite extends GestureEventListeners(PolymerElement) {
node.removeEventListener(eventName, onceCallback);
callback();
}
+
node.addEventListener(eventName, onceCallback);
}
diff --git a/datepicker-lite.js b/datepicker-lite.js
index 3f44af1..5499604 100644
--- a/datepicker-lite.js
+++ b/datepicker-lite.js
@@ -1,7 +1,9 @@
'use strict';
-import { PolymerElement, html } from '@polymer/polymer/polymer-element.js';
+import {PolymerElement, html} from '@polymer/polymer/polymer-element.js';
import '@polymer/paper-dropdown-menu/paper-dropdown-menu.js';
import '@polymer/paper-input/paper-input.js';
+import '@polymer/iron-icons/iron-icons.js';
+
import './calendar-lite.js';
/**
@@ -10,22 +12,91 @@ import './calendar-lite.js';
*/
class DatePickerLite extends PolymerElement {
static get template() {
+ // language=HTML
return html`
-
+
+
+
+
+
+
+ /
+ /
+
+
+
+
+
+
+
-
`;
}
@@ -34,21 +105,56 @@ class DatePickerLite extends PolymerElement {
value: {
type: String,
notify: true,
- observer: 'valueChanged'
- },
- date: {
- type: Object,
- observer: 'dateChanged'
+ observer: '_valueChanged'
},
readonly: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ required: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ label: String,
+ monthInput: {
+ type: Number
+ },
+ dayInput: {
+ type: Number
+ },
+ yearInput: {
+ type: Number
+ },
+ invalid: {
type: Boolean,
value: false
},
- readableDate: String,
- label: String
+ inputDate: {
+ type: Date,
+ notify: true
+ },
+ opened: {
+ type: Boolean,
+ value: false
+ },
+ _clearDateInProgress: Boolean,
+ _stopDateCompute: Boolean
};
}
+ static get observers() {
+ return [
+ 'computeDate(monthInput, dayInput, yearInput)'
+ ];
+ }
+
_getDateString(date) {
let month = '' + (date.getMonth() + 1);
let day = '' + date.getDate();
@@ -61,24 +167,145 @@ class DatePickerLite extends PolymerElement {
}
datePicked(event) {
- this.set('date', event.detail.date);
+ if (this._clearDateInProgress) {
+ this._clearDateInProgress = false;
+ return;
+ }
+ let date = event.detail.date;
+ let month = '' + (date.getMonth() + 1);
+ let day = '' + date.getDate();
+ let year = date.getFullYear();
+
+ month = month.length < 2 ? '0' + month : month;
+ day = day.length < 2 ? '0' + day : day;
+
+ this._stopDateCompute = true;
+ this.set('monthInput', month);
+ this.set('dayInput', day);
+ this.set('yearInput', year);
+ this.value = this._getDateString(date);
+ this._stopDateCompute = false;
+ }
+
+ computeDate(month, day, year) {
+ if (this._stopDateCompute) {
+ // prevent setting wrong value when year/month/day are set by datepiker in datePicked
+ return;
+ }
+
+ if (this._isValidYear() && this._isValidMonth() &&
+ this._isValidDay() && this._enteredDateIsValid() ) {
+ let newDate = new Date(year, month - 1, day);
+ this.set('inputDate', newDate);
+ this.set('value', year + '-' + month + '-' + day);
+ }
+ }
+
+ toggleCalendar() {
+ if (!this.readonly) {
+ this.set('opened', !this.opened);
+ }
+
+ }
+
+ keyCalendar(event){
+ if (!this.readonly) {
+ if (event.which === 13 || event.button === 0){
+ this.set('opened', !this.opened);
+ }
+ }
+ }
+
+ _clearData() {
+ this._clearDateInProgress = true;
+ this.set('inputDate', new Date());
+ this.set('monthInput', undefined);
+ this.set('dayInput', undefined);
+ this.set('yearInput', undefined);
+ this.set('value', null);
+ this.set('invalid', false);
+ }
+
+ _isValidYear() {
+ if (this.yearInput !== undefined) {
+ return this.yearInput >= 1970 && this.yearInput < 9999 && String(this.yearInput).length === 4;
+ }
+ return false;
}
- dateChanged() {
- this.$.ddMenu.opened = false;
- this.readableDate = this.date.toDateString();
+ _isValidMonth() {
+ return this.monthInput >= 1 && this.monthInput <= 12;
+ }
- this.dateJustChanged = true;
- this.value = this._getDateString(this.date);
+ _isValidDay() {
+ return this.dayInput >= 1 && this.dayInput <= 31;
}
- valueChanged() {
- if (this.dateJustChanged) {
- this.dateJustChanged = false;
+
+ _enteredDateIsValid() {
+ let newDate = new Date(this.yearInput, this.monthInput - 1, this.dayInput);
+
+ let newYear = newDate.getFullYear();
+ let newMonth = newDate.getMonth() + 1;
+ let newDay = newDate.getDate();
+
+ return newMonth === Number(this.monthInput) &&
+ newDay === Number(this.dayInput) &&
+ newYear === Number(this.yearInput);
+ }
+
+
+ validate() {
+ let valid = true;
+
+ if ((this._isValidMonth() && this._isValidDay() && this._isValidYear()) && this.required) {
+ valid = this._enteredDateIsValid();
+ this.set('invalid', !this._enteredDateIsValid());
+ return valid;
+
+ } else if (!this.required) {
+ if (this.monthInput !== undefined || this.dayInput !== undefined || this.yearInput !== undefined) {
+ if (this._isValidMonth() && this._isValidDay() && this._isValidYear()) {
+ valid = this._enteredDateIsValid();
+ this.set('invalid', false);
+ return valid;
+
+ }else {
+ this.set('invalid', true);
+ valid = this._enteredDateIsValid();
+ return valid;
+ }
+ }
+
+ valid = this._enteredDateIsValid();
+ this.set('invalid', false);
+ return valid;
+ }
+
+ this.set('invalid', true);
+ return valid;
+ }
+
+ _valueChanged(newValue) {
+ if (!newValue) {
+ if (this.monthInput || this.dayInput || this.yearInput) {
+ this._clearData();
+ }
return;
}
- this.date = new Date(this.value);
+ this._stopDateCompute = true;
+ const dData = newValue.split('-');
+ this.set('monthInput', dData[1]);
+ this.set('dayInput', dData[2]);
+ this.set('yearInput', dData[0]);
+ this._stopDateCompute = false;
+
+ const d = new Date(newValue);
+ if (d.toString() !== 'Invalid Date') {
+ this.set('inputDate', d);
+ }
}
+
}
window.customElements.define('datepicker-lite', DatePickerLite);
diff --git a/index.html b/index.html
index 5b5b58c..1c1a61c 100644
--- a/index.html
+++ b/index.html
@@ -15,32 +15,39 @@
+
Date will be displayed here
-
-
+
+
-
+
-
diff --git a/package-lock.json b/package-lock.json
index 8d6a2e5..0f803b4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -5,264 +5,299 @@
"requires": true,
"dependencies": {
"@polymer/font-roboto": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/font-roboto/-/font-roboto-3.0.0-pre.21.tgz",
- "integrity": "sha512-1DnYDaoyTeSmZzocj7jhHS8tM1j+FJNTrMEOyudLKF8sqGzmlz48XyMRbt4RL4pO9szz5vJ8xhS+4WUPHFj9OA=="
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/font-roboto/-/font-roboto-3.0.0-pre.25.tgz",
+ "integrity": "sha512-wO/GVqgFDVbKlXvBvsM10mod10XF+cJCjeQh8IltXEZy9SIiWMtdOz/ILqceRPkAZV9xyAXcn4mfunZ/MYPJaA=="
+ },
+ "@polymer/iron-a11y-announcer": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-a11y-announcer/-/iron-a11y-announcer-3.0.0-pre.25.tgz",
+ "integrity": "sha512-wtp0pAUbtAAidLD3Skchr9KG3X6lNkpsEoMsrqc8bNNm5zcHzcQ6wzxtskNhuAwgyjDbBEM+DANmNtj/Jl9Z8A==",
+ "requires": {
+ "@polymer/polymer": "^3.0.0"
+ }
},
"@polymer/iron-a11y-keys-behavior": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-a11y-keys-behavior/-/iron-a11y-keys-behavior-3.0.0-pre.21.tgz",
- "integrity": "sha512-fdADeKVQsZ7Izg5H6pOM9VVFWMTVUGgMfGr6jzEW0ehZT6N7bTzBIjft2r8sh3qSx2zCUxQEgUUDoeXE9/yROA==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-a11y-keys-behavior/-/iron-a11y-keys-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-nLEu/Mr0nHI9QosG6k75TyScQVUnuwEn6hFBubFravU0QQ8o2+TTwvK5XAVlW2fcNieEvmgC8EhI6FZJCUsCig==",
+ "requires": {
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-autogrow-textarea": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-autogrow-textarea/-/iron-autogrow-textarea-3.0.0-pre.25.tgz",
+ "integrity": "sha512-FC2jPZgVAxKxUFfnEhMhqENmXTxbMNBMw52Kw0Kbd8EUOEmG+9u+BqNSvYryNKjUzxqL0mj/iFjnuBcdz+d8pA==",
"requires": {
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-behaviors": "^3.0.0-pre.24",
+ "@polymer/iron-flex-layout": "^3.0.0-pre.24",
+ "@polymer/iron-validatable-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-behaviors": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-behaviors/-/iron-behaviors-3.0.0-pre.21.tgz",
- "integrity": "sha512-sxdLri6CMNs6kty8sPDYGuAX9LofbEn2r/qI3QkJZUXFZhZUSGwCmoDt9yMWffNSamUsEDURLafYW09jOEhtRQ==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-behaviors/-/iron-behaviors-3.0.0-pre.25.tgz",
+ "integrity": "sha512-+oo+Ac+NiSi5SwiyqrTPzwXG15nJkHtjhDwI8cOw61AkkH7sjcytTAyrgrXD/ePsd7+TvWGM6yQfcLH5YhQe5A==",
"requires": {
- "@polymer/iron-a11y-keys-behavior": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-checked-element-behavior": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-checked-element-behavior/-/iron-checked-element-behavior-3.0.0-pre.21.tgz",
- "integrity": "sha512-ZpyKomXudcOM1vGvfqwFkrlTumChStbNy5rRFKbdCbsUeZsXV83LIHfkXxMhJJ5hEIExvK4pDcnv/wEdFggXPQ==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-checked-element-behavior/-/iron-checked-element-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-BBIITYvJKHbWFpwNFzJNLi+smtb3t+iRiExsu72SnpphHpZqoU0Gao6KUXH74Din6ddKoiNhzwr5j7ihv1XIbw==",
+ "requires": {
+ "@polymer/iron-form-element-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-validatable-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-dropdown": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-dropdown/-/iron-dropdown-3.0.0-pre.25.tgz",
+ "integrity": "sha512-/lcy080i9JwLup6A4MPKZRCmgO2hYM5aXfTjqGQNT57Rgn2n7xRImRfuSLry4G1PCXa3pbNpJfgkuvi7CgyM4g==",
+ "requires": {
+ "@polymer/iron-behaviors": "^3.0.0-pre.24",
+ "@polymer/iron-overlay-behavior": "^3.0.0-pre.25",
+ "@polymer/neon-animation": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-fit-behavior": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-fit-behavior/-/iron-fit-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-9zbkliuMDfTMaShhU/Z/aLn+aSfwKePJq5gH2LlS67JeiyOspsk71wpvmNoXz2apFjH23TiNw79TKE4SAVJ4CA==",
"requires": {
- "@polymer/iron-form-element-behavior": "3.0.0-pre.21",
- "@polymer/iron-validatable-behavior": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-flex-layout": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-flex-layout/-/iron-flex-layout-3.0.0-pre.21.tgz",
- "integrity": "sha512-/GFBWLBhpzycXmdyS+rzQxCa/ssCX5ZGEa0M/oMRsUK/hUKrj/XBNNYZ3BlyHf2NHELNqnwZLcIZB5EPjA0uwg==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-flex-layout/-/iron-flex-layout-3.0.0-pre.25.tgz",
+ "integrity": "sha512-ykYxrF6UlnWP0jcbXV51BG3Ts6XD6BWg7HOzkt60YWNkB69QUf3grESUkfT/SERj7WySlGom4no/tdpOPRtwAw==",
"requires": {
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-form-element-behavior": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-form-element-behavior/-/iron-form-element-behavior-3.0.0-pre.21.tgz",
- "integrity": "sha512-E9oS0ryZw7FPQ/XMmBaKScyv8l/z86kKpIfXm+WLbqapu5FIuNE54z/73QUs5uoKI+H8gR9UL48mzZGCiGEMDw==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-form-element-behavior/-/iron-form-element-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-YBbURxfnKYbDhqvhMc5P9arv0NI8nQkpj+Vg8yCJ/dwXTeKv2Olxl5/+CaslsaGsOKWQl1o4iITRwcF5cwQ6aQ==",
"requires": {
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-icon": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-icon/-/iron-icon-3.0.0-pre.21.tgz",
- "integrity": "sha512-B/6ncM/JiKYOCkYtIsgztZuMzmMWAR5POGQ0r7TU0RaBzKstqTvn6NfRHeNzYjsOwBMse/wA6/qvgvCRgx6kWw==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-icon/-/iron-icon-3.0.0-pre.25.tgz",
+ "integrity": "sha512-qPN74NM/EA0+yh0m2QgxI7tUXq9Lg6xdPLbEu3KBiNdOod/36o/MJp0uHSN77D15S4zPD4oWB065w8h94j4RPg==",
"requires": {
- "@polymer/iron-flex-layout": "3.0.0-pre.21",
- "@polymer/iron-meta": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-flex-layout": "^3.0.0-pre.24",
+ "@polymer/iron-meta": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-icons": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-icons/-/iron-icons-3.0.0-pre.25.tgz",
+ "integrity": "sha512-1NuyHfRcefraTz0cf7AsY4HMhcf/t1AABTCVIg1UMmORpooWdFuxGPl4uViRQf/pBIzh25Tgj1WbwtvuEj/a8g==",
+ "requires": {
+ "@polymer/iron-icon": "^3.0.0-pre.24",
+ "@polymer/iron-iconset-svg": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-iconset-svg": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-iconset-svg/-/iron-iconset-svg-3.0.0-pre.21.tgz",
- "integrity": "sha512-YWdX3QROFHKsGds9wUDbD2u1hN6uG6oG4fEu/F16aHFQg9tu2oiSyRspGsOQlXJ28177Qc2rxQ1Kp8GdlzpMbw==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-iconset-svg/-/iron-iconset-svg-3.0.0-pre.25.tgz",
+ "integrity": "sha512-VFttgxS07p1Qxb4xhxA5hFNYkWzy2FAE2TFjakEJ/bKgJwOVgZ4oMkk9e0+6xkb/xWiHS4FuGpoTbS4PRhtQZQ==",
+ "requires": {
+ "@polymer/iron-meta": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-input": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-input/-/iron-input-3.0.0-pre.25.tgz",
+ "integrity": "sha512-ShAX1CQjm/w86TXPEcqoHUXCeok2cuFqFPyLDDRH9PxvnMs30GOjqRlbyB0nsfaWXBDg43GWcA7aTQTVITkY+Q==",
"requires": {
- "@polymer/iron-meta": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-a11y-announcer": "^3.0.0-pre.24",
+ "@polymer/iron-validatable-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-meta": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-meta/-/iron-meta-3.0.0-pre.21.tgz",
- "integrity": "sha512-RR24zD2t4rSJyjisMo5Cfy200FFYrsmRDZSX8wk1JdaDHVWLgq9DM1aa7/B7WI7sEWkckzVZPBthRFVB+PmVwA==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-meta/-/iron-meta-3.0.0-pre.25.tgz",
+ "integrity": "sha512-Pot2n+3fINPAS97erAwg1Ps0CRISomGQQZvJeuqeUjgdrdfKuDaWnGdASY6ndmdcEgcwaSJfJrBpTUCBIZmtJw==",
+ "requires": {
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-overlay-behavior": {
+ "version": "3.0.0-pre.26",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-overlay-behavior/-/iron-overlay-behavior-3.0.0-pre.26.tgz",
+ "integrity": "sha512-SJDgsz3gQfkdZAaa9sH4Sd9rSAyKN6s1Ndjkf3N/X6h2gj9sbrVbM+v83TLI2I0bv/bvSR3V0+5+T0w2Z2+Wfg==",
+ "requires": {
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-fit-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-resizable-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-resizable-behavior": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-resizable-behavior/-/iron-resizable-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-6C9s5pkjNpTekJFEu/cbEpftC12080ncMekAhIYzbDDa56VVDxWqH2f5M3l2XM55fWkMlfUh3JCiPwlxO4vDCw==",
+ "requires": {
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/iron-selector": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-selector/-/iron-selector-3.0.0-pre.25.tgz",
+ "integrity": "sha512-EWysNFBT0d+5YzX/tF7KShdqnccDJCnuCnY33egfY/Y7zq2/qXg6jU1M9NTRn48eb/P3ZkzrEMlbodd54rDBXQ==",
"requires": {
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/iron-validatable-behavior": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/iron-validatable-behavior/-/iron-validatable-behavior-3.0.0-pre.21.tgz",
- "integrity": "sha512-G4yxCe2xp9+jJ0MkjqC26MKo1FqsvUrnmqpCtJiVBLlpZEUx1b2lZz2ZzynXpnisg9EuZ3xtHtOge5UFTNoG+w==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/iron-validatable-behavior/-/iron-validatable-behavior-3.0.0-pre.25.tgz",
+ "integrity": "sha512-xTUUYkQy4D5zoIm9IurtCAMJrew2Atubu87XNwZzySBjrcMHSxU98VtItpCYfWsFlld8Kqk2AQ2EUONo3TLAdw==",
+ "requires": {
+ "@polymer/iron-meta": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/neon-animation": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/neon-animation/-/neon-animation-3.0.0-pre.25.tgz",
+ "integrity": "sha512-QX4AkuxC7/vMkf1wRESFFOHRt+GuB0vCa45zidRbCRfSjGILrszimwJ9rOIyLypP14a+pPugqp1SY+lGDGLm0g==",
"requires": {
- "@polymer/iron-meta": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-resizable-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-selector": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/paper-behaviors": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/paper-behaviors/-/paper-behaviors-3.0.0-pre.21.tgz",
- "integrity": "sha512-CiS/1K9b+b5qxpykr5P/ZeO5le06H7aaR/ymPWJ/m0ioFcSyzRPWlEwjDwiqqCBCmwmdsLXvLYmB2Z6oLiXqPQ==",
+ "version": "3.0.0-pre.26",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-behaviors/-/paper-behaviors-3.0.0-pre.26.tgz",
+ "integrity": "sha512-qp7Anu8kE8qoXhvGmWk/Su91b6fgyz2Us2UrrYPZGzldzispt52YjV/5UnGpHffhTfosxvBNPhNWzC2OcpLciQ==",
+ "requires": {
+ "@polymer/iron-behaviors": "^3.0.0-pre.24",
+ "@polymer/iron-checked-element-behavior": "^3.0.0-pre.24",
+ "@polymer/paper-ripple": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/paper-button": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-button/-/paper-button-3.0.0-pre.25.tgz",
+ "integrity": "sha512-tAUyFqhu34Ydi8SELJWkKsFGOnYqQ9AhCfGjZKQlI5Q02iKZb6Ndua/4w8q8g/5OXAyiN48c8QTi52z7lqOVXg==",
"requires": {
- "@polymer/iron-behaviors": "3.0.0-pre.21",
- "@polymer/iron-checked-element-behavior": "3.0.0-pre.21",
- "@polymer/paper-ripple": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-flex-layout": "^3.0.0-pre.24",
+ "@polymer/paper-behaviors": "^3.0.0-pre.25",
+ "@polymer/paper-styles": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/paper-dropdown-menu": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-dropdown-menu/-/paper-dropdown-menu-3.0.0-pre.25.tgz",
+ "integrity": "sha512-wGoekUde3KC7QmmSQMc7tmM2lDUJ2gGWvBsHN6hKyNpv2G1q6tA49v2zoBahnzaGUxdn+J9ods/KHqmt0HB9eA==",
+ "requires": {
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-form-element-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-icon": "^3.0.0-pre.24",
+ "@polymer/iron-iconset-svg": "^3.0.0-pre.24",
+ "@polymer/iron-validatable-behavior": "^3.0.0-pre.24",
+ "@polymer/paper-behaviors": "^3.0.0-pre.25",
+ "@polymer/paper-input": "^3.0.0-pre.24",
+ "@polymer/paper-menu-button": "^3.0.0-pre.24",
+ "@polymer/paper-ripple": "^3.0.0-pre.24",
+ "@polymer/paper-styles": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/paper-icon-button": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/paper-icon-button/-/paper-icon-button-3.0.0-pre.21.tgz",
- "integrity": "sha512-H+kx7v6R7+Hd6A6hSt+bsCMzbTPArty8yGFqTKpjsvGFCVfRHcIwoKrHqgQ0CX/JHmn2Zs+tF0IIdtiHjJYegg==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-icon-button/-/paper-icon-button-3.0.0-pre.25.tgz",
+ "integrity": "sha512-fC+BLKb9BHuuHzGU3nGSoOrYSIidQrMp0FhaBYyWmU14fxB8c/1VE9uoIV4gP+vxCi/R4rDIKoNWSlKG1t1nfg==",
+ "requires": {
+ "@polymer/iron-icon": "^3.0.0-pre.24",
+ "@polymer/paper-behaviors": "^3.0.0-pre.25",
+ "@polymer/paper-styles": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/paper-input": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-input/-/paper-input-3.0.0-pre.25.tgz",
+ "integrity": "sha512-y4mBehkXzeSh+Vw/fjnNAVyOau/7QqqH+6fwwzFnr0PuFt1o4jcfanYSDCKn+exgYERlR7M5df1Zb2KrcXw62w==",
"requires": {
- "@polymer/iron-icon": "3.0.0-pre.21",
- "@polymer/paper-behaviors": "3.0.0-pre.21",
- "@polymer/paper-styles": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-autogrow-textarea": "^3.0.0-pre.24",
+ "@polymer/iron-behaviors": "^3.0.0-pre.24",
+ "@polymer/iron-form-element-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-input": "^3.0.0-pre.24",
+ "@polymer/paper-styles": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/paper-menu-button": {
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-menu-button/-/paper-menu-button-3.0.0-pre.25.tgz",
+ "integrity": "sha512-blBF2jam/E99cgtop/bq2Zmj28SgPoStHc16fpZc+Vap+V/I26QFqvUUGWd1TFpKIt5tEqnJCGsVDmNyjXTnUg==",
+ "requires": {
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/iron-behaviors": "^3.0.0-pre.24",
+ "@polymer/iron-dropdown": "^3.0.0-pre.24",
+ "@polymer/iron-fit-behavior": "^3.0.0-pre.24",
+ "@polymer/neon-animation": "^3.0.0-pre.24",
+ "@polymer/paper-styles": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/paper-ripple": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/paper-ripple/-/paper-ripple-3.0.0-pre.21.tgz",
- "integrity": "sha512-qqNdU1/57WtMr+3NiAVI2zXw4LrEX9QD9jwifIgJXWj+lqe0YMeKrXOvCYHvV8nv9Owq7dRGvhOXM++E+imoLQ==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-ripple/-/paper-ripple-3.0.0-pre.25.tgz",
+ "integrity": "sha512-Scjqdzgsx5giEL7BgOLi0TclVjZjqbxPKmzjCbb58WeMI3hqWtR/AchTu4a94M9BuxYJkq4QQNp9lKInyqqKQg==",
"requires": {
- "@polymer/iron-a11y-keys-behavior": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/iron-a11y-keys-behavior": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
}
},
"@polymer/paper-styles": {
- "version": "3.0.0-pre.21",
- "resolved": "https://registry.npmjs.org/@polymer/paper-styles/-/paper-styles-3.0.0-pre.21.tgz",
- "integrity": "sha512-GJB0EirkY17N05kbTMDa8aABvQ2GIE95LMt7aOy16VG6sjh1TFS0gUOnoGgHA7ZUUZsOP3BdNqxKYzgQ+9m/GA==",
+ "version": "3.0.0-pre.25",
+ "resolved": "https://registry.npmjs.org/@polymer/paper-styles/-/paper-styles-3.0.0-pre.25.tgz",
+ "integrity": "sha512-WgbPo5K6GINEJsWwwothtNJbcj9S/B1t8GmzBxBZ6fMwLK9CbxNn4nAgkwgT1VOc1MspcXz4sOoOtCLeu5a8tw==",
"requires": {
- "@polymer/font-roboto": "3.0.0-pre.21",
- "@polymer/iron-flex-layout": "3.0.0-pre.21",
- "@polymer/polymer": "3.0.2"
- },
- "dependencies": {
- "@polymer/polymer": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.2.tgz",
- "integrity": "sha512-ow8AAjTe9ps8bantY9IvL0PT+xHf5VN3Cjahfr7gBJAc0lv3jTwGBv7pso65SHyrUJEEHeakhx6iPMl7qY4tfw==",
- "requires": {
- "@webcomponents/shadycss": "1.3.1"
- }
- }
+ "@polymer/font-roboto": "^3.0.0-pre.24",
+ "@polymer/iron-flex-layout": "^3.0.0-pre.24",
+ "@polymer/polymer": "^3.0.0"
+ }
+ },
+ "@polymer/polymer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@polymer/polymer/-/polymer-3.0.5.tgz",
+ "integrity": "sha512-Zbmhtr5vZ3NoHWwFYLKI4ff7yfE6DZopI8vaS7HvmUIuNqsv/EpEDXfNEYjqePQmkMX5LU9OIKV1eX/+9aveow==",
+ "requires": {
+ "@webcomponents/shadycss": "^1.2.0"
}
},
"@webcomponents/shadycss": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.3.1.tgz",
- "integrity": "sha512-U/j4nODWIq0U9v0ll48dj4U4YgTqsVeRt0LKei0GA10JUpnZnORoIByY5+7m9G6KWIAj2mT9KtuUOnn7u93VXg=="
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/@webcomponents/shadycss/-/shadycss-1.5.0.tgz",
+ "integrity": "sha512-jNuC7alo3EfiqZPosCruJuMAaUI9qgiuGxFcFyPWjOpo4BP+vgC7hxpTzQYxbIWUgrqkn9lnfPup2hE9c/h/PQ=="
+ },
+ "moment": {
+ "version": "2.22.2",
+ "resolved": "https://registry.npmjs.org/moment/-/moment-2.22.2.tgz",
+ "integrity": "sha1-PCV/mDn8DpP/UxSWMiOeuQeD/2Y="
}
}
}
diff --git a/package.json b/package.json
index 150654d..fc19e04 100644
--- a/package.json
+++ b/package.json
@@ -6,10 +6,14 @@
"license": "see license in LICENSE",
"dependencies": {
"@polymer/iron-flex-layout": "^3.0.0-pre.21",
+ "@polymer/iron-icons": "^3.0.0-pre.25",
"@polymer/iron-iconset-svg": "^3.0.0-pre.21",
+ "@polymer/paper-button": "^3.0.0-pre.25",
"@polymer/paper-dropdown-menu": "^3.0.0-pre.21",
"@polymer/paper-icon-button": "^3.0.0-pre.21",
"@polymer/paper-input": "^3.0.0-pre.21",
- "@polymer/polymer": "^3.0.0"
+ "@polymer/paper-styles": "^3.0.0-pre.25",
+ "@polymer/polymer": "^3.0.0",
+ "moment": "^2.22.2"
}
}
diff --git a/time-picker-lite.js b/time-picker-lite.js
new file mode 100644
index 0000000..5f858f0
--- /dev/null
+++ b/time-picker-lite.js
@@ -0,0 +1,175 @@
+'use strict';
+import {PolymerElement, html} from '@polymer/polymer/polymer-element.js';
+import '@polymer/paper-input/paper-input.js';
+
+
+/**
+ * @customElement
+ * @polymer
+ */
+class TimePickerLite extends PolymerElement {
+ static get template() {
+ // language=HTML
+ return html`
+
+
+
+
+
+ :
+
+
+
+
+
+ `;
+ }
+
+ static get properties() {
+ return {
+ value: {
+ type: String,
+ notify: true,
+ observer: '_valueChanged'
+ },
+ readonly: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ required: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ disabled: {
+ type: Boolean,
+ value: false,
+ reflectToAttribute: true,
+ },
+ hoursInput: {
+ type: Number
+ },
+ minutesInput: {
+ type: Number
+ },
+ label: String,
+ invalid: {
+ type: Boolean,
+ value: false
+ },
+ _allInputsFilled: {
+ type: Boolean,
+ value: false
+ }
+ };
+ }
+
+ static get observers() {
+ return [
+ 'computeTime(hoursInput, minutesInput)',
+ 'inputFields(hoursInput, minutesInput)'
+ ];
+ }
+
+ _valueChanged(newValue) {
+ if (!newValue) {
+ if (this.hoursInput || this.minutesInput) {
+ this._clearData();
+ }
+ return;
+ }
+
+ const dData = newValue.split(':');
+ this.set('hoursInput', dData[0]);
+ this.set('minutesInput', dData[1]);
+
+ }
+
+ _isValidHour() {
+ return this.hoursInput >= 1 && this.hoursInput <= 23 && String(this.hoursInput).length <= 2;
+ }
+
+ _isValidMinute() {
+ return this.minutesInput >= 1 && this.minutesInput <= 59 && String(this.minutesInput).length <= 2;
+ }
+
+ inputFields(hours, minutes) {
+ if (hours !== undefined && minutes !== undefined) {
+ this.set('_allInputsFilled', true);
+ }
+ }
+
+ computeTime(hours, minutes) {
+ if (this._allInputsFilled) {
+ this.set('hoursInput', hours);
+ this.set('minutesInput', minutes);
+ this.set('value', hours + ':' + minutes);
+ }
+ }
+
+ _formatHours() {
+ if (isNaN(Number(this.hoursInput)) || Number(this.hoursInput) < 1 || Number(this.hoursInput) > 23) {
+ this.set('hoursInput', undefined);
+ }else {
+ this.hoursInput = this.hoursInput.length < 2 ? '0' + this.hoursInput : this.hoursInput;
+ }
+ }
+
+ _formatMinutes() {
+ if (isNaN(Number(this.minutesInput)) || Number(this.minutesInput) < 1 || Number(this.minutesInput) > 59) {
+ this.set('minutesInput', undefined);
+ }else {
+ this.minutesInput = this.minutesInput.length < 2 ? '0' + this.minutesInput : this.minutesInput;
+ }
+ }
+
+ _isValidHours() {
+ return isNaN(this.hoursInput) || this.hoursInput < 1 || this.hoursInput > 23;
+ }
+
+ _isValidMinutes() {
+ return isNaN(this.minutesInput) || this.minutesInput < 1 || this.minutesInput > 59;
+ }
+
+ _clearData() {
+ this.set('hoursInput', undefined);
+ this.set('minutesInput', undefined);
+ this.set('value', null);
+ this.set('invalid', false);
+ }
+
+ validate() {
+ this.set('invalid', this._isValidHours() || this._isValidMinutes());
+ return this._isValidHours() || this._isValidMinutes();
+ }
+
+}
+
+
+window.customElements.define('timepicker-lite', TimePickerLite);