diff --git a/.editorconfig b/.editorconfig index 47c5438..219985c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,22 +13,8 @@ insert_final_newline = true indent_style = space indent_size = 2 -[*.js] -indent_style = space -indent_size = 2 - [*.hbs] insert_final_newline = false -indent_style = space -indent_size = 2 - -[*.css] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 [*.{diff,md}] trim_trailing_whitespace = false diff --git a/.jshintrc b/.jshintrc index 08096ef..d421faa 100644 --- a/.jshintrc +++ b/.jshintrc @@ -27,6 +27,6 @@ "strict": false, "white": false, "eqnull": true, - "esnext": true, + "esversion": 6, "unused": true } diff --git a/.npmignore b/.npmignore index 076a740..fa8b147 100644 --- a/.npmignore +++ b/.npmignore @@ -13,4 +13,4 @@ .travis.yml bower.json ember-cli-build.js -testem.json +testem.js diff --git a/.travis.yml b/.travis.yml index 8197d31..68b59ab 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,7 @@ --- language: node_js node_js: - - "0.12" + - "4" sudo: false @@ -11,6 +11,7 @@ cache: env: - EMBER_TRY_SCENARIO=default + - EMBER_TRY_SCENARIO=ember-1.13 - EMBER_TRY_SCENARIO=ember-release - EMBER_TRY_SCENARIO=ember-beta - EMBER_TRY_SCENARIO=ember-canary @@ -21,14 +22,17 @@ matrix: - env: EMBER_TRY_SCENARIO=ember-canary before_install: - - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH - - "npm config set spin false" - - "npm install -g npm@^2" + - npm config set spin false + - npm install -g bower + - bower --version + - npm install phantomjs-prebuilt + - phantomjs --version install: - - npm install -g bower - npm install - bower install script: - - ember try $EMBER_TRY_SCENARIO test + # Usually, it's ok to finish the test scenario without reverting + # to the addon's original dependency state, skipping "cleanup". + - ember try:one $EMBER_TRY_SCENARIO test --skip-cleanup diff --git a/CHANGELOG.md b/CHANGELOG.md index e80ceff..80640c0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,16 @@ # Change Log +* [BUGFIX] Fix an issue that could cause the `nextMonth()` method to skip a month. + +* Add Phantomjs dev-dependency. + +* Configure Ember-try to include Ember versions ~2.0.0 and ~2.4.0 (LTS). + +* Update to Ember-cli 2.7.0 + + + + ### v0.2.0 2016-08-12 * [FEATURE] Add `timeInterval` property to the TimePickerComponent. diff --git a/README.md b/README.md index adb303f..ae17c5f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ http://lozjackson.github.io/ember-time-tools/ ## Use -##DatePicker +## DatePicker Create a DatePickerComponent using the following example: @@ -27,7 +27,7 @@ You can use the InputDateComponent to create a html `input` element and a DatePi {{input-date value=date}} ``` -##TimePicker +## TimePicker Create a TimePickerComponent using the following example: @@ -41,10 +41,14 @@ You can use the InputTimeComponent to create a html `input` element and a TimePi {{input-time value=time}} ``` -##Calendar +## Calendar You can create a CalendarMonthComponent using the following example: ``` {{calendar-month events=model}} ``` + +## Compatibility + +Ember version ^2.0 is required for this addon to function correctly. Ember v1.x is not supported. diff --git a/addon/components/tt-calendar-month.js b/addon/components/tt-calendar-month.js index ec00f01..325c911 100644 --- a/addon/components/tt-calendar-month.js +++ b/addon/components/tt-calendar-month.js @@ -340,6 +340,7 @@ export default Ember.Component.extend({ if ( !date ) { date = new Date(); } + date.setDate(1); date.setMonth(date.getMonth() + 1); this.set('selectedDate', new Date(date)); }, @@ -353,6 +354,7 @@ export default Ember.Component.extend({ if ( !date ) { date = new Date(); } + date.setDate(1); date.setMonth(date.getMonth() - 1); this.setToday(new Date(date)); }, diff --git a/addon/components/tt-date-picker.js b/addon/components/tt-date-picker.js index d9ce551..0384c9d 100644 --- a/addon/components/tt-date-picker.js +++ b/addon/components/tt-date-picker.js @@ -290,6 +290,14 @@ export default Ember.Component.extend(ClickOutsideMixin, { day = date.getTime(); break; case 'object': + day = Ember.Object.create({ + year: day.year, + month: day.month, + date: day.date, + _date: date, + timestamp: date.getTime() + }); + break; default: day = Ember.Object.create({ year: day.year, @@ -305,7 +313,7 @@ export default Ember.Component.extend(ClickOutsideMixin, { if (this.get('select')) { this.sendAction('select', day); } else { - this.set('selectedDate', day) + this.set('selectedDate', day); } }, @@ -335,7 +343,7 @@ export default Ember.Component.extend(ClickOutsideMixin, { @param {Object} day */ selectDay(day) { - this._selectDate(day) + this._selectDate(day); }, /** diff --git a/addon/components/tt-time-picker.js b/addon/components/tt-time-picker.js index d2aebe5..3908360 100644 --- a/addon/components/tt-time-picker.js +++ b/addon/components/tt-time-picker.js @@ -181,7 +181,7 @@ export default Ember.Component.extend(ClickOutsideMixin, { if (this.get('select')) { this.sendAction('select', time); } else { - this.set('selectedTime', time) + this.set('selectedTime', time); } }, diff --git a/addon/helpers/format-date.js b/addon/helpers/format-date.js index 97cfa0b..47d096c 100644 --- a/addon/helpers/format-date.js +++ b/addon/helpers/format-date.js @@ -2,7 +2,7 @@ @module ember-time-tools */ import Ember from 'ember'; - +import moment from 'moment'; /** @class FormatDateHelper @namespace Helpers diff --git a/bower.json b/bower.json index 8059b2d..4a36a24 100644 --- a/bower.json +++ b/bower.json @@ -1,9 +1,8 @@ { "name": "ember-time-tools", "dependencies": { - "ember": "~2.4.3", - "ember-cli-shims": "0.1.0", - "ember-cli-test-loader": "0.2.2", + "ember": "~2.7.0", + "ember-cli-shims": "0.1.1", "ember-qunit-notifications": "0.1.0" } } diff --git a/config/ember-try.js b/config/ember-try.js index be846e1..de76796 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -7,6 +7,28 @@ module.exports = { dependencies: { } } }, + { + name: 'ember-2.0 LTS', + bower: { + dependencies: { + 'ember': '~2.0.0' + }, + resolutions: { + 'ember': '~2.0.0' + } + } + }, + { + name: 'ember-2.4 LTS', + bower: { + dependencies: { + 'ember': '~2.4.0' + }, + resolutions: { + 'ember': '~2.4.0' + } + } + }, { name: 'ember-release', bower: { diff --git a/package.json b/package.json index 9f92065..25d8ed0 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,7 @@ "scripts": { "build": "ember build", "start": "ember server", - "test": "ember try:testall" + "test": "ember try:each" }, "repository": "https://github.com/lozjackson/ember-time-tools", "engines": { @@ -18,36 +18,37 @@ "author": "Loz Jackson", "license": "MIT", "devDependencies": { - "broccoli-asset-rev": "^2.2.0", - "ember-ajax": "0.7.1", - "ember-cli": "2.3.0", + "broccoli-asset-rev": "^2.4.2", + "ember-ajax": "^2.0.1", + "ember-cli": "2.7.0", "ember-cli-app-version": "^1.0.0", "ember-cli-dependency-checker": "^1.2.0", "ember-cli-htmlbars-inline-precompile": "^0.3.1", - "ember-cli-inject-live-reload": "^1.3.1", "ember-cli-moment-shim": "1.1.0", - "ember-cli-qunit": "^1.2.1", - "ember-cli-release": "0.2.8", - "ember-cli-sri": "^2.0.0", + "ember-cli-inject-live-reload": "^1.4.0", + "ember-cli-jshint": "^1.0.0", + "ember-cli-qunit": "^2.0.0", + "ember-cli-release": "^0.2.9", + "ember-cli-sri": "^2.1.0", + "ember-cli-test-loader": "^1.1.0", "ember-cli-uglify": "^1.2.0", "ember-code-snippet": "1.3.0", - "ember-data": "^2.4.2", + "ember-data": "^2.7.0", "ember-disable-prototype-extensions": "^1.1.0", - "ember-disable-proxy-controllers": "^1.0.1", - "ember-export-application-global": "^1.0.4", "ember-in-viewport": "2.0.7", - "ember-load-initializers": "^0.5.0", "ember-moment": "6.1.0", + "ember-export-application-global": "^1.0.5", + "ember-load-initializers": "^0.5.1", "ember-resolver": "^2.0.3", - "ember-try": "^0.1.2", - "loader.js": "^4.0.0" + "phantomjs-prebuilt": "^2.1.12", + "loader.js": "^4.0.1" }, "keywords": [ "ember-addon" ], "dependencies": { - "ember-cli-babel": "^5.1.5", - "ember-cli-htmlbars": "^1.0.1", + "ember-cli-babel": "^5.1.6", + "ember-cli-htmlbars": "^1.0.3", "ember-clock": "^1.0.0", "ember-ui-components": "^0.8.0" }, diff --git a/testem.js b/testem.js new file mode 100644 index 0000000..26044b2 --- /dev/null +++ b/testem.js @@ -0,0 +1,13 @@ +/*jshint node:true*/ +module.exports = { + "framework": "qunit", + "test_page": "tests/index.html?hidepassed", + "disable_watching": true, + "launch_in_ci": [ + "PhantomJS" + ], + "launch_in_dev": [ + "PhantomJS", + "Chrome" + ] +}; diff --git a/tests/.jshintrc b/tests/.jshintrc index 6ec0b7c..d2bd113 100644 --- a/tests/.jshintrc +++ b/tests/.jshintrc @@ -47,6 +47,6 @@ "strict": false, "white": false, "eqnull": true, - "esnext": true, + "esversion": 6, "unused": true } diff --git a/tests/dummy/app/index.html b/tests/dummy/app/index.html index 229b89f..21c5dd9 100644 --- a/tests/dummy/app/index.html +++ b/tests/dummy/app/index.html @@ -9,16 +9,16 @@ {{content-for "head"}} - - + + {{content-for "head-footer"}}
{{content-for "body"}} - - + + {{content-for "body-footer"}} diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index 65dffc7..cf09e64 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -2,7 +2,8 @@ import Ember from 'ember'; import config from './config/environment'; const Router = Ember.Router.extend({ - location: config.locationType + location: config.locationType, + rootURL: config.rootURL }); Router.map(function() { diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index 4b378ae..44c67c3 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -4,7 +4,7 @@ module.exports = function(environment) { var ENV = { modulePrefix: 'dummy', environment: environment, - baseURL: '/ember-time-tools', + rootURL: '/ember-time-tools', locationType: 'hash', EmberENV: { FEATURES: { @@ -25,13 +25,13 @@ module.exports = function(environment) { // ENV.APP.LOG_TRANSITIONS = true; // ENV.APP.LOG_TRANSITIONS_INTERNAL = true; // ENV.APP.LOG_VIEW_LOOKUPS = true; - ENV.baseURL = '/'; + ENV.rootURL = '/'; ENV.locationType = 'auto'; } if (environment === 'test') { // Testem prefers this... - ENV.baseURL = '/'; + ENV.rootURL = '/'; ENV.locationType = 'none'; // keep test console output quieter diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js index ed23003..76996fd 100644 --- a/tests/helpers/module-for-acceptance.js +++ b/tests/helpers/module-for-acceptance.js @@ -1,23 +1,23 @@ import { module } from 'qunit'; +import Ember from 'ember'; import startApp from '../helpers/start-app'; import destroyApp from '../helpers/destroy-app'; +const { RSVP: { Promise } } = Ember; + export default function(name, options = {}) { module(name, { beforeEach() { this.application = startApp(); if (options.beforeEach) { - options.beforeEach.apply(this, arguments); + return options.beforeEach.apply(this, arguments); } }, afterEach() { - destroyApp(this.application); - - if (options.afterEach) { - options.afterEach.apply(this, arguments); - } + let afterEach = options.afterEach && options.afterEach.apply(this, arguments); + return Promise.resolve(afterEach).then(() => destroyApp(this.application)); } }); } diff --git a/tests/index.html b/tests/index.html index 64cb47e..f7ff652 100644 --- a/tests/index.html +++ b/tests/index.html @@ -10,9 +10,9 @@ {{content-for "head"}} {{content-for "test-head"}} - - - + + + {{content-for "head-footer"}} {{content-for "test-head-footer"}} @@ -21,12 +21,11 @@ {{content-for "body"}} {{content-for "test-body"}} - - - - - - + + + + + {{content-for "body-footer"}} {{content-for "test-body-footer"}}