library(bslib)
Lists are a great way to organize information in a structured way. And Framework7 provides a number of different list types to choose from, ranging from simple text lists to more complex lists with icons, groups, headers and footers. In {shinyMobile}
, all these possibilities are available through the f7List()
and f7ListItem()
functions.
There are 4 styling options available for lists:
There are 4 different modes available for lists:
As you can imagine, there are a lot of possible combinations of these options. Below we will show some examples of how to create different types of lists.
There are two different ways in which you can create items belonging in f7List()
:
tags$li()
, which is the most simple way to create a list item. Within this tag you can add any HTML content you like.f7ListItem()
, which gives you plenty of options to configure your list item. This is the recommended method.For example, the following code creates a simple list with 5 items using the first method:
f7List( mode = "simple", lapply(1:5, function(j) { tags$li( paste("Item", j) ) }) )
Using the second method, the code would look like:
f7List( mode = "simple", lapply(1:5, function(j) { f7ListItem( title = paste("Item", j) ) }) )
The styling of these two methods might differ slightly, because in the second method some CSS classes are added to the list items. However, in the case of a simple item like above, there's no difference.
The most simple list has mode
set to "simple"
and no other options set:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkcJJDBUEYniKzuIHuIhgBGRAAVjhGTYBA+EG4ACsTM4QAqyVyeaQAJLkGCnMmO86XCURVBNcjRW2Ip7OY3ms49J2uAC+Qcd4dc4ZMGNcwmqFOqtN1+u4WlQLFIcOJGdIJrNmJD3TAIYAukA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
Note that you need to use title = ...
in f7ListItem()
when using f7List(mode = "simple", ...)
. Other arguments in f7ListItem()
will be ignored when mode
is "simple"
.
Using the styling options, you can already drastically change the appearance of the list:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkcJJDBUEYniLXiw2VoJREACpYACqsIVrj+kgpknFDC+zg12oxZLJtgYJDy23NOsxVuc4ge4iGAEZEABWOEZNgED4QbgAKxMzhAuoFQtIAElyDBTi6yaz2c5UE1yNEE4ins5w9HXD0U84AL4lq2V4svEyW5zCaoU6q0wPB7haVBKuHErukCNRzFl7pgMsAXSAA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
When setting mode
to "links"
, the list items will be displayed as links:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkVIIIC0X5MWTXMSpRKIgAVLAAVVhIrOf0kFMk4oYX2c6q1GIVZ1sDBIeW2Zu18oV4ge4iGAEZEABWOEZNgED4QbgAKxMzhAOrJdjywgAJFJTpayVytIDuC66HBxNtUE1yNEAJLkGBPZyhuHqQIZZGxeKJZLURv5IhEPG5YglsA9JNnbtJgC+fbJQ+cfZMFucwmqFOqtP9ge4WlQLFIcOJy9IYYjmP73TA-YAukA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
In the example above, we're using f7Link()
to create the links. This will automatically make sure that the links are opened in a new tab.
To add some complexity to the link list, we can add a header and footer. In this case, we will use f7ListItem()
to create the list items. It is important to set mode
to NULL
in f7List()
:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBtnSAKrg8EYslk4lSCASiIAFSwUthIrOf0kFMk4oYX2cGq18oVrlsDBIeW2Zu1mMt4ge4iGAEZEABWOEZNgED4QbgAKxMzhAOrJXJ5pAAkuQYKdLWTWeznKgmuRovHEU9nKGLcmzgioEbthnbCd+AAJOCl6p5guRhUZIhEdLlzNVsAgtvpRsmQtF5zqQIZZGxeKJZLUWf5Nt43LEGD8ZuuHpFgC+G4VO-XL0HL2E1Qp1Vp-sD3C0qBYpDhxJvpDDEcxm+6YE3AF0gA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
A grouped list can be generated by using f7ListGroup()
. The mode
argument should be set to "contacts"
in f7List()
:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkcQyNlSGi-Jiya5iVIIBKIgAVLAAVVhIrOf0kFMk4oYX2cmp1GMVZ1sDBIeW2Ft1CsV4ge4iGABZEAA2OEZNgED4QbiSEzOEB6slcnmkADidpYqFO1rJrPZznB0PV6uhWEhwEkAF0ramyW70B7uABGRDVgAM-sDwe4ACtw5GXWXXDHbABJcgwFmXNXOVBNcjRfbVYQkJ7Odul7vL0VwA1QbZ2PLCAAkkhgeRTK5XogI23Htjg9eisXiiWSBD+EAwGUU8GoRAYgN2ZQqqDdOTqEQ4gmgIqBwG8Rh1NWPr1gAHjB9Z1POrZwvwGCtqgeRdF2x5liYS54d2ADEzhYFAEB-EQMBjkBqrkiwMB0NU9yhOQcGkFGRFkhe5DXvwADUnoAEzOD6bh4M4wiwP+JwNvWCmKYgACcqlqapcLViYPTccuOkrgAvvp+FcUZerGc4+kES8wjVBSLERAGEBBuUIZaKgLCkHCxIeaQHYvAZ3RgAZRZAA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
By adding media
to the f7ListItem()
, you can display an image next to the list item, thereby making a pretty fancy contact list!
If desired, you can also use f7Icon()
:
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkcQyNlSGi-Jiya5iVIIBKIgAVLAAVVhIrOf0kFMk4oYX2cmp1GMVZ1sDBIeW2Ft1CsV4ge4iGABZEAA2OEZNgED4QbiSEzOEB6slcnmkADidpYqFO1rJrPZznB0PV6uhWEhwEkAF0ramyW70B7uABGRDVgAM-sDwe4ACtw5GXWXXDHbABJcgwFmXNXOVBNcjRfbVYQkJ7Odul7vL0VwA1QWm7PtS6KoGckAD6GUM4j5XZX3YAxM4sFAIH8iDAx+oSBKICwYHRqvdQuQAB6kFGF7WuOthwPW0QANQAMzVs4PpuHgzjCLAqBGDW9aYVh9aIAAnPhBH4XC1YmD0wEXmRK4AL6UWWtGKjRer0ZRJilsI1QUt+EQBhAQblCGWioCwpBwsSQmkB2LxUd0YBUUWQA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
With mode
set to "media"
, you can create a list with media objects, and you have the option to add a subtitle
to the list items. Note that header
and footer
can't be used in a media list.
card( shinyMobile:::create_app_link( "NobwRAdghgtgpmAXGKAHVA6ASmANGAYwHsIAXOMpMAdzgCMAnRRAVwhiLdIAoAdMAPQsAzgwEAbAJZ0BWCdIZQGATwHCAFpIjKAskTqTxcfgEpeEWo2ZbhpKOPF8IAAmf8NW3fsPG851wxwqETCzgC8zgR8YOqkpKjCiAICDFrkDABmUARwGADmkqTqLHQYkkQpaXCZ2XAAtNRQwjB1BIoQAqbmZhDmUoxKytwe2j39iirDmtp6BkY95iPKAILoTq4skuHOGQDsAApQeXDrrs6khUbb-DrKzmio-Lj+Z0SoFyShEVK23AAmSgA1tsAGLLAAyAGUAKK4c7qODwa5gcrCUzPFxnPaQrR5IzgqDKTg8F5nZzQABudCU2z2ADkoFSlNwLqQrhF+HtwZJbOjSVjdtzfvyyRw-nBkfA-pIoE8Ra8WGytBKIgAVLAAVVh8tc0opknFDC+znVWoxZLJtgYJDy21N2sxFuc4ge4iGAEZEO6AAxwjJsAgfCDcSQmZwgHUCoWkACS5BgpydZNZ7OcqCa5GiqsuvjhofNSctJRTKrTGZO-EhxZzT2c+cjorg0qg2zseWEABJJDA8onC2dbMpU-w6EQGIa6oppSJEM4AByoAAeAG45Y7+65RARtunbHBvdFYvFEskCH8IBgMop4NQx4DdmUKqgXTl1ERxIaBKg4G8jHV3QAbN6i6Ad6dS1pIcL8BgABWqB5Hy64btQBpFMiuzevwDZnCYBYbqkeSxDu5bRFgkiEaQEG4dhri7pmlZEEi4g2tU5xwIupD3KOirwjyZYMBcBAsC6DB1vG8JQJx6hNPCEowEckgEPY5IsDAdDVFReH9uogQZMiADEWFIRaPSFgAvqZJn8pZ1GYsI1QUqxET+hAgblMGWioIqcLEl5pBhhGmJmd0YBmQAukAA", # nolint "app", header = FALSE ), full_screen = TRUE, style = "width: 393px; margin: 0 auto; float: none;" )
The default media width is 50
. If you want to override this, you can add width
to the img
tag.
The list view can be used in other cases as well:
f7VirtualList()
for displaying a list with a large number of items.f7List()
. You can read more about this in the Inputs Layout vignette.f7Swipeout()
and f7SwipeOutItem()
for this.Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.