Skip to content

Commit 986f07b

Browse files
committed
add hasClass
1 parent 231dee6 commit 986f07b

File tree

5 files changed

+29
-4
lines changed

5 files changed

+29
-4
lines changed

README.markdown

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,15 @@
1313
var addClass = require('fd-class').addClass;
1414
var removeClass = require('fd-class').removeClass;
1515
var toggleClass = require('fd-class').toggleClass;
16+
var hasClass = require('fd-class').hasClass;
1617

1718
var select = require('fd-select').select;
1819
var always = require('fj-always');
1920

2021
addClass(always('blue'), select('li')); // adds the class "blue" to all the li
2122
removeClass(always('blue'), select('li')); // removes the class "blue" to all the li
2223
toggleClass(always('blue'), select('li')); // toggles the class "blue" to all the li
24+
hasClass(always('foo'), select('.item')); // returns true if all ".item" contain the class "foo"
2325

2426
var hide = addClass(always('hide'));
2527

index.es6

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ function _toggleClass(getClass, elements) {
1212
return elements.map((element, idx) => element.classList.toggle(getClass(idx)));
1313
}
1414

15+
function _hasClass(getClass, elements) {
16+
return elements.every((element, idx) => element.classList.contains(getClass(idx)));
17+
}
18+
1519
export let addClass = curry2(_addClass);
1620
export let removeClass = curry2(_removeClass);
1721
export let toggleClass = curry2(_toggleClass);
22+
export let hasClass = curry2(_hasClass);

index.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,14 @@ function _toggleClass(getClass, elements) {
2121
});
2222
}
2323

24+
function _hasClass(getClass, elements) {
25+
return elements.every(function (element, idx) {
26+
return element.classList.contains(getClass(idx));
27+
});
28+
}
29+
2430
var addClass = exports.addClass = curry2(_addClass);
2531
var removeClass = exports.removeClass = curry2(_removeClass);
2632
var toggleClass = exports.toggleClass = curry2(_toggleClass);
33+
var hasClass = exports.hasClass = curry2(_hasClass);
2734
exports.__esModule = true;

test.es6

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,14 @@ import assert from 'assert';
22
import always from 'fj-always';
33
import { select, selectOne } from 'fd-select';
44

5-
import { addClass, removeClass, toggleClass } from './';
5+
import { addClass, removeClass, toggleClass, hasClass } from './';
66

77

88
describe('fd-class', () => {
99
const HTML = `
1010
<ul data-foo="bar" class="fruits">
11-
<li class="fruit yummie tastie">apple</li>
12-
<li class="fruit yummie tastie">orange</li>
11+
<li class="fruit yummie tastie red">apple</li>
12+
<li class="fruit yummie tastie red">orange</li>
1313
<li class="fruit yummie tastie">plum</li>
1414
</ul>
1515
`;
@@ -73,6 +73,11 @@ describe('fd-class', () => {
7373
assert(!lis[2].classList.contains('blue'));
7474
});
7575

76+
it('#hasClass', () => {
77+
assert(hasClass(always('fruit'))(lis));
78+
assert(!hasClass(always('red'))(lis));
79+
});
80+
7681
it('#getClass should get the index of the element', () => {
7782
function rowClass(idx) {
7883
return 'row-' + idx;

test.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ var _ = require("./");
1515
var addClass = _.addClass;
1616
var removeClass = _.removeClass;
1717
var toggleClass = _.toggleClass;
18+
var hasClass = _.hasClass;
1819

1920

2021

2122
describe("fd-class", function () {
22-
var HTML = "\n <ul data-foo=\"bar\" class=\"fruits\">\n <li class=\"fruit yummie tastie\">apple</li>\n <li class=\"fruit yummie tastie\">orange</li>\n <li class=\"fruit yummie tastie\">plum</li>\n </ul>\n ";
23+
var HTML = "\n <ul data-foo=\"bar\" class=\"fruits\">\n <li class=\"fruit yummie tastie red\">apple</li>\n <li class=\"fruit yummie tastie red\">orange</li>\n <li class=\"fruit yummie tastie\">plum</li>\n </ul>\n ";
2324
var fixture = undefined,
2425
lis = undefined,
2526
li = undefined;
@@ -82,6 +83,11 @@ describe("fd-class", function () {
8283
assert(!lis[2].classList.contains("blue"));
8384
});
8485

86+
it("#hasClass", function () {
87+
assert(hasClass(always("fruit"))(lis));
88+
assert(!hasClass(always("red"))(lis));
89+
});
90+
8591
it("#getClass should get the index of the element", function () {
8692
function rowClass(idx) {
8793
return "row-" + idx;

0 commit comments

Comments
 (0)