Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- splices :: Monad m => View Text -> Splices (Splice m)
- splices v = do
- "dfInputText" ## dfInputText v
- "dfSubView" ## dfSubView splices v
- "dfInputList" ## dfInputList splices v
- dfInputList :: MonadIO m => (View Text -> Splices (Splice m)) -> View Text -> Splice m
- dfInputList userSplices view = do
- (ref, _) <- getRefAttributes Nothing
- let listRef = absoluteRef ref view
- listAttrs =
- [ ("id", listRef)
- , ("class", "inputList")
- ]
- addControl _ = return $ disableOnclick ref view
- [ ("onclick", T.concat [ "addInputListItem(this, '"
- , listRef
- , "'); return false;"] ) ]
- removeControl _ = return $ disableOnclick ref view
- [ ("onclick", T.concat [ "removeInputListItem(this, '"
- , listRef
- , "'); return false;"] ) ]
- itemAttrs v _ = return
- [ ("id", T.concat [listRef, ".", last $ "0" : viewContext v])
- , ("class", T.append listRef ".inputListItem")
- ]
- templateAttrs v _ = return
- [ ("id", T.concat [listRef, ".", last $ "-1" : viewContext v])
- , ("class", T.append listRef ".inputListTemplate")
- , ("style", "display: none;")
- ]
- items = listSubViews ref view
- f attrs v = localHS (bindAttributeSplices ("itemAttrs" ## attrs v) .
- bindDigestiveSplices v) runChildren
- dfListItem = do
- template <- f templateAttrs (makeListSubView ref (-1) view)
- res <- mapSplices (f itemAttrs) items
- return $ template ++ res
- attrSplices = do
- "addControl" ## addControl
- "removeControl" ## removeControl
- nodes <- localHS (bindSplices (("dfListItem" ## dfListItem) <> userSplices view) .
- bindAttributeSplices attrSplices) runChildren
- let indices = [X.Element "input"
- [ ("type", "hidden")
- , ("name", T.intercalate "." [listRef, indicesRef])
- , ("value", T.intercalate "," $ map
- (last . ("0":) . viewContext) items)
- ] []
- ]
- return [X.Element "div" listAttrs (indices ++ nodes)]
- splices' :: Monad m => View Text -> Splices (Splice m)
- splices' v = do
- "dfInputText" ## dfInputText v
- "dfSubView" ## dfSubView splices v
- "dfInputList" ## dfInputList splices v
- "foo" ## undefined
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement