Commit 54958a78 authored by Przemyslaw Kaminski's avatar Przemyslaw Kaminski

SearchBar: open class fixes, dropdown works now, but no selection still

parent d917d62e
...@@ -41,7 +41,6 @@ ...@@ -41,7 +41,6 @@
margin: 2px; margin: 2px;
border: 0; border: 0;
} }
.search-field { .search-bar.closed {
/* display: grid; */ display: none;
/* grid-template-columns: auto auto auto; */
} }
...@@ -14,7 +14,7 @@ import DOM.Simple.Element as Element ...@@ -14,7 +14,7 @@ import DOM.Simple.Element as Element
import DOM.Simple.Event as DE import DOM.Simple.Event as DE
import Effect ( Effect ) import Effect ( Effect )
import Effect.Uncurried (mkEffectFn1) import Effect.Uncurried (mkEffectFn1)
import FFI.Simple ((..)) import FFI.Simple ((..), (.=))
import Reactix as R import Reactix as R
import Reactix.DOM.HTML as HTML import Reactix.DOM.HTML as HTML
import Reactix.DOM.HTML (text, button, div, input, option, form, span, ul, li, a) import Reactix.DOM.HTML (text, button, div, input, option, form, span, ul, li, a)
...@@ -59,19 +59,21 @@ searchFieldComponent = R.memo (R.hooksComponent "SearchField" cpt) hasChanged ...@@ -59,19 +59,21 @@ searchFieldComponent = R.memo (R.hooksComponent "SearchField" cpt) hasChanged
databaseInput :: R.State (Maybe Database) -> Array Database -> R.Element databaseInput :: R.State (Maybe Database) -> Array Database -> R.Element
databaseInput (db /\ setDB) dbs = databaseInput (db /\ setDB) dbs =
div { className: "input-group-btn search-panel" } div { className: "input-group-btn search-panel dropdown" }
[ button { className: "btn dropdown-toggle", data: {"toggle": "dropdown"} } [
[ span {} [ text "x" ] ] dropdownBtn db
, input { type: "hidden" , ul {className: "dropdown-menu", role: "menu"} (liItem <$> dbs)
, onChange }
, ul { className: "dropdown-menu", role: "menu" } (liItem <$> dbs)
] ]
--select { className: "database", onChange } (item <$> dbs)
where where
onChange = mkEffectFn1 $ \e -> setDB (readDatabase (e .. "target" .. "value")) liItem db = li {onClick}
--item db = option { value: (show db) } [ text (show db) ]
liItem db = li {}
[ a {href: "#"} [text (show db) ] ] [ a {href: "#"} [text (show db) ] ]
where
onClick = mkEffectFn1 $ \_ -> setDB db
dropdownBtnProps = { id: "search-dropdown"
, className: "btn btn-default dropdown-toggle"
, type: "button"} .= "data-toggle" $ "dropdown"
dropdownBtn (Just db) = button dropdownBtnProps [ span {} [ text (show db) ] ]
dropdownBtn (Nothing) = button dropdownBtnProps [ span {} [ text "---" ] ]
searchInput :: R.State String -> R.Element searchInput :: R.State String -> R.Element
searchInput (term /\ setTerm) = searchInput (term /\ setTerm) =
......
...@@ -43,9 +43,10 @@ searchBarComponent = R.hooksComponent "SearchBar" cpt ...@@ -43,9 +43,10 @@ searchBarComponent = R.hooksComponent "SearchBar" cpt
, searchFieldContainer open props.databases search ] , searchFieldContainer open props.databases search ]
searchFieldContainer :: R.State Boolean -> Array Database -> R.State (Maybe Search) -> R.Element searchFieldContainer :: R.State Boolean -> Array Database -> R.State (Maybe Search) -> R.Element
searchFieldContainer (true /\ _) databases search = searchFieldContainer (open /\ _) databases search =
H.div { className: "search-bar open" } [ searchField { databases, search } ] H.div { className: "search-bar " <> openClass } [ searchField { databases, search } ]
searchFieldContainer (false /\ _) _ _ = H.div {className: "search-bar closed"} [] where
openClass = if open then "open" else "closed"
onSearchChange :: R.State (Maybe Search) -> R.Hooks Unit onSearchChange :: R.State (Maybe Search) -> R.Hooks Unit
onSearchChange (search /\ setSearch) = onSearchChange (search /\ setSearch) =
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment