@@ -0,0 +1,18 @@
1+# Frequently Asked Questions
2+
3+### How do I configure DOM events with flags like `preventDefault` and `stopPropagation`?
4+
5+Using `element`, a low-level DOM builder function. Its second argument, `ElementConfig`, has a `_elementConfig_eventSpec` field that can be modified using `addEventSpecFlags`. It takes a `Proxy` that specifies the `DomSpace`, an event name, and a callback which takes the event result and returns an event flag, which can enable behavior like `preventDefault` and `stopPropagation`.
6+
7+For example:
8+
9+```haskell
10+linkPreventDefault :: forall t m a. DomBuilder t m => m a -> m (Event t (), a)
11+linkPreventDefault c = do
12+ let cfg = (def :: ElementConfig EventResult t (DomBuilderSpace m))
13+ & elementConfig_initialAttributes .~ ("href" =: "https://reflex-frp.org")
14+ & elementConfig_eventSpec %~ addEventSpecFlags (Proxy :: Proxy (DomBuilderSpace m)) Click (const preventDefault)
15+ & elementConfig_eventSpec %~ addEventSpecFlags (Proxy :: Proxy (DomBuilderSpace m)) Click (const stopPropagation)
16+ (link, a) <- element "a" cfg c
17+ return (domEvent Click link, a)
18+```