Skip to content

Commit 09508a0

Browse files
Port getBoundingClientRect from web-html (#53)
* Port getBoundingClientRect from web-html * Add changelog entry
1 parent d2b2a5d commit 09508a0

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ Notable changes to this project are documented in this file. The format is based
77
Breaking changes:
88
- Migrate FFI to ES modules (#51 by @JordanMartinez)
99
- Unwrap returned `Effect` for `doctype` (#52 by @JordanMartinez)
10+
- Port `getBoundingClientRect` from `web-html`; set arg to `Element` (#53 by @JordanMartinez)
1011

1112
New features:
1213

src/Web/DOM/Element.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,22 @@ export function clientHeight(el) {
185185
};
186186
}
187187

188+
export function getBoundingClientRect(el) {
189+
return function () {
190+
var rect = el.getBoundingClientRect();
191+
return {
192+
top: rect.top,
193+
right: rect.right,
194+
bottom: rect.bottom,
195+
left: rect.left,
196+
width: rect.width,
197+
height: rect.height,
198+
x: rect.x,
199+
y: rect.y
200+
};
201+
};
202+
}
203+
188204
export function _attachShadow(props) {
189205
return function (el) {
190206
return function() {

src/Web/DOM/Element.purs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ module Web.DOM.Element
3838
, clientLeft
3939
, clientWidth
4040
, clientHeight
41+
, getBoundingClientRect
42+
, DOMRect
4143
, ShadowRootInit
4244
, attachShadow
4345
) where
@@ -144,6 +146,19 @@ foreign import clientLeft :: Element -> Effect Number
144146
foreign import clientWidth :: Element -> Effect Number
145147
foreign import clientHeight :: Element -> Effect Number
146148

149+
type DOMRect =
150+
{ top :: Number
151+
, right :: Number
152+
, bottom :: Number
153+
, left :: Number
154+
, width :: Number
155+
, height :: Number
156+
, x :: Number
157+
, y :: Number
158+
}
159+
160+
foreign import getBoundingClientRect :: Element -> Effect DOMRect
161+
147162
type ShadowRootInit = {
148163
mode :: ShadowRootMode,
149164
delegatesFocus :: Boolean

0 commit comments

Comments
 (0)