From 6e072d7441412d9a5b46a3f4fcf0353af8b6bfe7 Mon Sep 17 00:00:00 2001 From: Utkarsh Kukreti Date: Tue, 21 Aug 2018 17:16:32 +0530 Subject: [PATCH] Add `matches` and `closest` functions to Web.DOM.Element. --- src/Web/DOM/Element.js | 16 ++++++++++++++++ src/Web/DOM/Element.purs | 9 +++++++++ 2 files changed, 25 insertions(+) diff --git a/src/Web/DOM/Element.js b/src/Web/DOM/Element.js index b6dd761..daa0f69 100644 --- a/src/Web/DOM/Element.js +++ b/src/Web/DOM/Element.js @@ -168,3 +168,19 @@ exports.clientHeight = function (el) { return el.clientHeight; }; }; + +exports.matches = function (selector) { + return function(el) { + return function() { + return el.matches(selector); + }; + }; +}; + +exports._closest = function (selector) { + return function(el) { + return function() { + return el.closest(selector); + }; + }; +}; diff --git a/src/Web/DOM/Element.purs b/src/Web/DOM/Element.purs index b02366e..4b6dc75 100644 --- a/src/Web/DOM/Element.purs +++ b/src/Web/DOM/Element.purs @@ -35,6 +35,8 @@ module Web.DOM.Element , clientLeft , clientWidth , clientHeight + , matches + , closest ) where import Prelude @@ -127,3 +129,10 @@ foreign import clientTop :: Element -> Effect Number foreign import clientLeft :: Element -> Effect Number foreign import clientWidth :: Element -> Effect Number foreign import clientHeight :: Element -> Effect Number + +foreign import matches :: String -> Element -> Effect Boolean + +foreign import _closest :: String -> Element -> Effect (Nullable Element) + +closest :: String -> Element -> Effect (Maybe Element) +closest selector = map toMaybe <<< _closest selector