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