Skip to content

Commit

Permalink
Merge pull request #1 from amyboyd/master
Browse files Browse the repository at this point in the history
Setup transpilation from ES6 to ES5, and rewrite in ES6
  • Loading branch information
amyboyd committed Sep 18, 2015
2 parents 29fa9dd + bc656a0 commit e9da94b
Show file tree
Hide file tree
Showing 7 changed files with 205 additions and 44 deletions.
3 changes: 3 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
language: node_js
node_js:
- "0.10"
45 changes: 45 additions & 0 deletions Gruntfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
module.exports = function (grunt) {
require('matchdep').filterDev('grunt-*').forEach(grunt.loadNpmTasks);

grunt.initConfig({
pkg: grunt.file.readJSON('package.json'),

'6to5': {
dist: {
files: {
'src/sameHeight.es5.js': 'src/sameHeight.es6.js'
}
}
},

watch: {
js: {
files: ['src/sameHeight.es6.js'],
tasks: ['6to5', 'concat',],
options: {
debounceDelay: 100,
},
}
},

concat: {
options: {
banner: "// This file is compiled from sameHeight.es6.js. All direct edits will be lost.\n\n"
},
dist: {
files: {
'src/sameHeight.es5.js': [
'node_modules/6to5/browser-polyfill.js',
'src/sameHeight.es5.js',
]
}
}
}
});

grunt.registerTask('default', [
'6to5',
'concat',
'watch',
]);
};
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
Same height directive
=====================

[![Build Status](https://travis-ci.org/amyboyd/angular-same-height-directive.svg?branch=master)](https://travis-ci.org/amyboyd/angular-same-height-directive)

An Angular directive that keeps elements at the same height. This directive does not work in IE <= 8.

Format:
Expand Down Expand Up @@ -33,4 +35,4 @@ Examples:
Running the tests
-----------------

node_modules/karma/bin/karma start karma.conf.js
npm test
4 changes: 2 additions & 2 deletions karma.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ module.exports = function (config) {
files: [
'etc/js-tests/angular-1.2.9.js',
'etc/js-tests/angular-mocks.js',
'src/*.js',
'src/sameHeight.es5.js',
'test/unit/*.js'
],

Expand All @@ -16,7 +16,7 @@ module.exports = function (config) {
reporters: ['dots', 'coverage'],

preprocessors: {
'src/*.js': 'coverage',
'src/sameHeight.es5.js': 'coverage',
},

coverageReporter: {
Expand Down
38 changes: 23 additions & 15 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
{
"name": "angular-same-height",
"title": "Same height directive for Angular",
"url": "http://www.partnermarketing.com/",
"author": "Twogether Creative Ltd.",
"copyright": "2014",
"version": "0.1.0",
"dependencies": {
},
"devDependencies": {
"karma": "~0.10.10",
"karma-jasmine": "~0.1.5",
"karma-phantomjs-launcher": "~0.1.4",
"karma-coverage": "~0.2.4",
"jasmine-reporters": "~0.4.0"
}
"name": "angular-same-height",
"title": "Same height directive for Angular",
"url": "http://www.partnermarketing.com/",
"author": "Twogether Creative Ltd.",
"copyright": "2014",
"version": "0.1.0",
"dependencies": {},
"scripts": {
"test": "node_modules/karma/bin/karma start karma.conf.js"
},
"devDependencies": {
"karma": "~0.10.10",
"karma-jasmine": "~0.1.5",
"karma-phantomjs-launcher": "~0.1.4",
"karma-coverage": "~0.2.4",
"jasmine-reporters": "~0.4.0",
"grunt-6to5": "~3.0.0",
"grunt": "~0.4.5",
"matchdep": "~0.3.0",
"grunt-contrib-watch": "~0.6.1",
"6to5": "~3.2.1",
"grunt-contrib-concat": "~0.5.0"
}
}
111 changes: 111 additions & 0 deletions src/sameHeight.es5.js

Large diffs are not rendered by default.

44 changes: 18 additions & 26 deletions src/sameHeight.js → src/sameHeight.es6.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,37 +7,29 @@ angular.module('partnermarketing.sameHeight').directive('sameHeight', function($
// Ensure we aren't calculating based on any previously forced heights.
removeSame(selector, element);

var greatestHeight = 0;
let greatestHeight = 0;

var elements = findTargetElements(selector, element);
const elements = findTargetElements(selector, element);

for (var i = 0; i < elements.length; i++) {
for (let i = 0; i < elements.length; i++) {
if (elements[i].innerHeight > greatestHeight) {
greatestHeight = elements[i].innerHeight;
}
}

for (i = 0; i < elements.length; i++) {
elements[i].style.height = String(greatestHeight) + 'px';
}
elements.map((element) => element.style.height = String(greatestHeight) + 'px');
}

function removeSame(selector, element) {
var elements = findTargetElements(selector, element);
for (var i = 0; i < elements.length; i++) {
const elements = findTargetElements(selector, element);
for (let i = 0; i < elements.length; i++) {
elements[i].style.height = 'auto';
}
}

function trimString(string) {
return string.replace(/^ +/, '').replace(/ +$/, '');
}
const trimString = (string) => string.replace(/^ +/, '').replace(/ +$/, '');

function findTargetElements(selector, element) {
return Array.prototype.filter.call(element[0].querySelectorAll(selector), function(el) {
return !isHidden(el);
});
}
const findTargetElements = (selector, element) => Array(... element[0].querySelectorAll(selector)).filter((el) => !isHidden(el));

function isHidden(element) {
// `offsetParent_` is used by unit tests because `offsetParent` is read-only.
Expand All @@ -59,15 +51,15 @@ angular.module('partnermarketing.sameHeight').directive('sameHeight', function($
if (!angular.isString(scope.sameHeight)) {
return;
}
var targets = scope.sameHeight.split('}');
const targets = scope.sameHeight.split('}');
if (targets.length < 2) {
return;
}

var mediaQueriesAndTargets = [];
for (var i = 0; i < targets.length; i++) {
var mediaQuery = trimString(targets[i].replace(/^(.+)\{.+$/, '$1'));
var target = trimString(targets[i].replace(/^.+\{(.+)$/, '$1'));
const mediaQueriesAndTargets = [];
for (let i = 0; i < targets.length; i++) {
const mediaQuery = trimString(targets[i].replace(/^(.+)\{.+$/, '$1'));
const target = trimString(targets[i].replace(/^.+\{(.+)$/, '$1'));

if (mediaQuery === '' && target === '') {
continue;
Expand All @@ -77,9 +69,9 @@ angular.module('partnermarketing.sameHeight').directive('sameHeight', function($
}

function checkMediaQuery() {
for (var i = 0; i < mediaQueriesAndTargets.length; i++) {
var mediaQuery = mediaQueriesAndTargets[i][0];
var selector = mediaQueriesAndTargets[i][1];
for (let i = 0; i < mediaQueriesAndTargets.length; i++) {
const mediaQuery = mediaQueriesAndTargets[i][0];
const selector = mediaQueriesAndTargets[i][1];

if (mediaQuery === '*' ||
(typeof $window.matchMedia !== 'undefined' && $window.matchMedia(mediaQuery))) {
Expand All @@ -90,9 +82,9 @@ angular.module('partnermarketing.sameHeight').directive('sameHeight', function($
}
}

var resizeTimer;
let resizeTimer;

$window.addEventListener('resize', function() {
$window.addEventListener('resize', () => {
$window.clearTimeout(resizeTimer);
resizeTimer = $window.setTimeout(checkMediaQuery, 10);
});
Expand Down

0 comments on commit e9da94b

Please sign in to comment.