Lor*_*lmi 5 accordion elm bootstrap-accordion
我正在接近Elm,我需要创建一个包含一些可折叠数据的页面.由于我目前正在使用Bootstrap,因此Accordion组件似乎是最适合使用的组件.
这是我的相关虚拟代码:
view : Model -> Html Msg
view model =
div []
[ basicAccordion model.accordionState
"Dummy1"
(div []
[ text "Dummy Title"
, Button.button [ Button.secondary ] [ text "Hello World" ]
]
)
Nothing
, structuredAccordion model.accordionState
"Dummy2"
([ Card.titleH4 [] [ text "Another trial" ]
, Card.text [] [ text "Bye" ]
]
)
(Just ("id_dummy2"))
]
basicAccordion : Accordion.State -> String -> Html Msg -> Maybe String -> Maybe Bool -> Html Msg
basicAccordion state title content id collapsed =
let
singleCard =
Card.custom <| content
in
structuredAccordion state title [ singleCard ] id collapsed
structuredAccordion : Accordion.State -> String -> List (Card.BlockItem Msg) -> Maybe String -> Maybe Bool -> Html Msg
structuredAccordion state title content id collapsed =
Accordion.config Msgs.AccordionMsg
|> Accordion.withAnimation
|> Accordion.cards
[ Accordion.card
{ id = (Maybe.withDefault title id)
, options = []
, header =
Accordion.header [] <| Accordion.toggle [] [ text title ]
, blocks =
[ Accordion.block [] content
]
}
]
|> Accordion.view state
Run Code Online (Sandbox Code Playgroud)
这是问题所在:
对我而言,这是一个非常基本的功能,我很惊讶它不是卡配置的一部分...希望我是一个没有注意到的东西.任何的想法?
PS:第一篇文章,是仁慈的:)
稍微更新一下,差不多就解决了。
好人 rundis 提交了一个新版本。允许为一张卡提供初始扩展状态。这可能是 4.0 包发布的一部分。
界面非常简单,您只需添加到模型初始化中即可:
model.AccordionState = Accordion.initialStateCardOpen myAccordionId
Run Code Online (Sandbox Code Playgroud)
其中 id 是创建 Accordion 时在视图中设置的 id。
这并不让我完全高兴,因为我想从几张卡片的列表中进行选择以打开,但部分解决了问题。