From 118877dc6d750c5c76f9b56b00f19ca849735f3e Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 19:46:45 -0500 Subject: [PATCH 1/6] Add addEventListener variant with options exposed --- src/Web/Event/EventTarget.js | 12 ++++++++++++ src/Web/Event/EventTarget.purs | 26 ++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/Web/Event/EventTarget.js b/src/Web/Event/EventTarget.js index bad064d..2eda756 100644 --- a/src/Web/Event/EventTarget.js +++ b/src/Web/Event/EventTarget.js @@ -6,6 +6,18 @@ export function eventListener(fn) { }; } +export function addEventListenerOpt(type) { + return function (listener) { + return function (options) { + return function (target) { + return function () { + return target.addEventListener(type, listener, options); + }; + }; + }; + }; +} + export function addEventListener(type) { return function (listener) { return function (useCapture) { diff --git a/src/Web/Event/EventTarget.purs b/src/Web/Event/EventTarget.purs index b2aa54e..b126346 100644 --- a/src/Web/Event/EventTarget.purs +++ b/src/Web/Event/EventTarget.purs @@ -29,6 +29,32 @@ foreign import eventListener . (Event -> Effect a) -> Effect EventListener +foreign import addEventListenerOpt + :: EventType + -> EventListener + -> { capture :: Boolean + , once :: Boolean + , passive :: Boolean + } + -> EventTarget + -> Effect Unit + +-- | Adds a listener to an event target. +-- | - `capture` - whether the listener is added to the "capture" phase +-- | - `once` - if true, indicates listener should be invokved at most once +-- | before being automatically removed. +-- | - `passive` - indicates the callback function will never call `preventDefault` +addEventListener' + :: EventType + -> EventListener + -> { capture :: Boolean + , once :: Boolean + , passive :: Boolean + } + -> EventTarget + -> Effect Unit +addEventListener' = addEventListenerOpt + -- | Adds a listener to an event target. The boolean argument indicates whether -- | the listener should be added for the "capture" phase. foreign import addEventListener From 7ed1e239947451683a1e5707fa60def94e7e58a8 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 19:48:01 -0500 Subject: [PATCH 2/6] Add changelog entry --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 14ee8df..ca40001 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: - Migrate FFI to ES modules (#24 by @JordanMartinez) +- Add `addEventListener` variant with options exposed (#25 by @JordanMartinez) New features: From 4b3ffea045cb29960174ca58d3c9bcde52d310c8 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Tue, 22 Mar 2022 19:51:06 -0500 Subject: [PATCH 3/6] Replace old version with variant This change wasn't breaking until this commit --- src/Web/Event/EventTarget.js | 14 +------------- src/Web/Event/EventTarget.purs | 22 +--------------------- 2 files changed, 2 insertions(+), 34 deletions(-) diff --git a/src/Web/Event/EventTarget.js b/src/Web/Event/EventTarget.js index 2eda756..fbc5ea6 100644 --- a/src/Web/Event/EventTarget.js +++ b/src/Web/Event/EventTarget.js @@ -6,7 +6,7 @@ export function eventListener(fn) { }; } -export function addEventListenerOpt(type) { +export function addEventListener(type) { return function (listener) { return function (options) { return function (target) { @@ -18,18 +18,6 @@ export function addEventListenerOpt(type) { }; } -export function addEventListener(type) { - return function (listener) { - return function (useCapture) { - return function (target) { - return function () { - return target.addEventListener(type, listener, useCapture); - }; - }; - }; - }; -} - export function removeEventListener(type) { return function (listener) { return function (useCapture) { diff --git a/src/Web/Event/EventTarget.purs b/src/Web/Event/EventTarget.purs index b126346..e4bcf12 100644 --- a/src/Web/Event/EventTarget.purs +++ b/src/Web/Event/EventTarget.purs @@ -29,22 +29,12 @@ foreign import eventListener . (Event -> Effect a) -> Effect EventListener -foreign import addEventListenerOpt - :: EventType - -> EventListener - -> { capture :: Boolean - , once :: Boolean - , passive :: Boolean - } - -> EventTarget - -> Effect Unit - -- | Adds a listener to an event target. -- | - `capture` - whether the listener is added to the "capture" phase -- | - `once` - if true, indicates listener should be invokved at most once -- | before being automatically removed. -- | - `passive` - indicates the callback function will never call `preventDefault` -addEventListener' +foreign import addEventListener :: EventType -> EventListener -> { capture :: Boolean @@ -53,16 +43,6 @@ addEventListener' } -> EventTarget -> Effect Unit -addEventListener' = addEventListenerOpt - --- | Adds a listener to an event target. The boolean argument indicates whether --- | the listener should be added for the "capture" phase. -foreign import addEventListener - :: EventType - -> EventListener - -> Boolean - -> EventTarget - -> Effect Unit -- | Removes a listener to an event target. The boolean argument indicates -- | whether the listener should be removed for the "capture" phase. From 670842d9b86236a08b625cbed86ffa813ee7f5b7 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Thu, 24 Mar 2022 21:33:39 -0500 Subject: [PATCH 4/6] Revert "Replace old version with variant" This reverts commit 4b3ffea045cb29960174ca58d3c9bcde52d310c8. --- src/Web/Event/EventTarget.js | 14 +++++++++++++- src/Web/Event/EventTarget.purs | 22 +++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/src/Web/Event/EventTarget.js b/src/Web/Event/EventTarget.js index fbc5ea6..2eda756 100644 --- a/src/Web/Event/EventTarget.js +++ b/src/Web/Event/EventTarget.js @@ -6,7 +6,7 @@ export function eventListener(fn) { }; } -export function addEventListener(type) { +export function addEventListenerOpt(type) { return function (listener) { return function (options) { return function (target) { @@ -18,6 +18,18 @@ export function addEventListener(type) { }; } +export function addEventListener(type) { + return function (listener) { + return function (useCapture) { + return function (target) { + return function () { + return target.addEventListener(type, listener, useCapture); + }; + }; + }; + }; +} + export function removeEventListener(type) { return function (listener) { return function (useCapture) { diff --git a/src/Web/Event/EventTarget.purs b/src/Web/Event/EventTarget.purs index e4bcf12..b126346 100644 --- a/src/Web/Event/EventTarget.purs +++ b/src/Web/Event/EventTarget.purs @@ -29,12 +29,22 @@ foreign import eventListener . (Event -> Effect a) -> Effect EventListener +foreign import addEventListenerOpt + :: EventType + -> EventListener + -> { capture :: Boolean + , once :: Boolean + , passive :: Boolean + } + -> EventTarget + -> Effect Unit + -- | Adds a listener to an event target. -- | - `capture` - whether the listener is added to the "capture" phase -- | - `once` - if true, indicates listener should be invokved at most once -- | before being automatically removed. -- | - `passive` - indicates the callback function will never call `preventDefault` -foreign import addEventListener +addEventListener' :: EventType -> EventListener -> { capture :: Boolean @@ -43,6 +53,16 @@ foreign import addEventListener } -> EventTarget -> Effect Unit +addEventListener' = addEventListenerOpt + +-- | Adds a listener to an event target. The boolean argument indicates whether +-- | the listener should be added for the "capture" phase. +foreign import addEventListener + :: EventType + -> EventListener + -> Boolean + -> EventTarget + -> Effect Unit -- | Removes a listener to an event target. The boolean argument indicates -- | whether the listener should be removed for the "capture" phase. From c7b2789d0f1bb7d051ca757c6b7d3d9b15f10528 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Thu, 24 Mar 2022 21:34:59 -0500 Subject: [PATCH 5/6] Rename to addEventListenerWithOptions --- src/Web/Event/EventTarget.js | 2 +- src/Web/Event/EventTarget.purs | 14 ++------------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/src/Web/Event/EventTarget.js b/src/Web/Event/EventTarget.js index 2eda756..6e530a6 100644 --- a/src/Web/Event/EventTarget.js +++ b/src/Web/Event/EventTarget.js @@ -6,7 +6,7 @@ export function eventListener(fn) { }; } -export function addEventListenerOpt(type) { +export function addEventListenerWithOptions(type) { return function (listener) { return function (options) { return function (target) { diff --git a/src/Web/Event/EventTarget.purs b/src/Web/Event/EventTarget.purs index b126346..d0735f0 100644 --- a/src/Web/Event/EventTarget.purs +++ b/src/Web/Event/EventTarget.purs @@ -3,6 +3,7 @@ module Web.Event.EventTarget , EventListener , eventListener , addEventListener + , addEventListenerWithOptions , removeEventListener , dispatchEvent ) where @@ -29,22 +30,12 @@ foreign import eventListener . (Event -> Effect a) -> Effect EventListener -foreign import addEventListenerOpt - :: EventType - -> EventListener - -> { capture :: Boolean - , once :: Boolean - , passive :: Boolean - } - -> EventTarget - -> Effect Unit - -- | Adds a listener to an event target. -- | - `capture` - whether the listener is added to the "capture" phase -- | - `once` - if true, indicates listener should be invokved at most once -- | before being automatically removed. -- | - `passive` - indicates the callback function will never call `preventDefault` -addEventListener' +foreign import addEventListenerWithOptions :: EventType -> EventListener -> { capture :: Boolean @@ -53,7 +44,6 @@ addEventListener' } -> EventTarget -> Effect Unit -addEventListener' = addEventListenerOpt -- | Adds a listener to an event target. The boolean argument indicates whether -- | the listener should be added for the "capture" phase. From 0ab47e5c341fd5ad7ba8144fc1bb719807b10638 Mon Sep 17 00:00:00 2001 From: Jordan Martinez Date: Thu, 24 Mar 2022 21:35:32 -0500 Subject: [PATCH 6/6] Update changelog; no longer breaking change --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca40001..034c096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ Notable changes to this project are documented in this file. The format is based Breaking changes: - Migrate FFI to ES modules (#24 by @JordanMartinez) -- Add `addEventListener` variant with options exposed (#25 by @JordanMartinez) New features: +- Add `addEventListenerWithOptions` to expose more options (#25 by @JordanMartinez) Bugfixes: