Skip to content

Commit d033aa7

Browse files
committed
Element.closest
1 parent 1c1b006 commit d033aa7

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ Breaking changes:
1010

1111
New features:
1212
- Add support for ShadowRoot API (#34)
13+
- Add support for `Element.closest` (#39)
1314

1415
Bugfixes:
1516

src/Web/DOM/Element.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,14 @@ exports.removeAttribute = function (name) {
105105
};
106106
};
107107

108+
exports._closest = function (selector) {
109+
return function(element) {
110+
return function() {
111+
return element.closest(selector);
112+
};
113+
};
114+
};
115+
108116
// - CSSOM ---------------------------------------------------------------------
109117

110118
exports.scrollTop = function (node) {

src/Web/DOM/Element.purs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ module Web.DOM.Element
2626
, getAttribute
2727
, hasAttribute
2828
, removeAttribute
29+
, closest
2930
, scrollTop
3031
, setScrollTop
3132
, scrollLeft
@@ -52,6 +53,8 @@ import Web.DOM.Internal.Types (Element) as Exports
5253
import Web.DOM.Internal.Types (Element, HTMLCollection, Node)
5354
import Web.DOM.NonDocumentTypeChildNode (NonDocumentTypeChildNode)
5455
import Web.DOM.ParentNode (ParentNode)
56+
import Web.DOM.ParentNode (QuerySelector) as Exports
57+
import Web.DOM.ParentNode (ParentNode, QuerySelector)
5558
import Web.DOM.ShadowRoot (ShadowRoot, ShadowRootMode)
5659
import Web.Event.EventTarget (EventTarget)
5760
import Web.Internal.FFI (unsafeReadProtoTagged)
@@ -121,6 +124,11 @@ foreign import _getAttribute :: String -> Element -> Effect (Nullable String)
121124
foreign import hasAttribute :: String -> Element -> Effect Boolean
122125
foreign import removeAttribute :: String -> Element -> Effect Unit
123126

127+
closest :: QuerySelector -> Element -> Effect (Maybe Element)
128+
closest qs = may toMaybe <<< _closest qs
129+
130+
foreign import _closest :: QuerySelector -> Element -> Effect (Nullable Element)
131+
124132
foreign import scrollTop :: Element -> Effect Number
125133
foreign import setScrollTop :: Number -> Element -> Effect Unit
126134

0 commit comments

Comments
 (0)