f7MultiLayout()
: supported by {brochure}
, this allows to have beautiful transitions between pages to provide a more native like experience.f7Form()
: gather inputs in the same form to get a nested list containing all input values. This allows to reduce the number of inputs on the server side. updateF7Form()
makes it possible to update input in batch or only selected ones.f7List()
which allows you to benefit from new styling options such as outline, inset, strong, … Internally, we use a function able to detect whether the input is inside a f7List()
: if yes, you can style this list by passing parameters like f7List(outline = TRUE, inset = TRUE, ...)
; if not, the input is internally wrapped in a list to have correct rendering (but no styling is possible). Besides, some input like f7Text()
can have custom styling (add an icon, clear button, outline style), which is independent from the external list wrapper style. Hence, we don’t recommend doing f7List(outline = TRUE, f7Text(outline = TRUE))
since it won’t render very well (only use f7List(outline = TRUE, f7Text())
). Please have a look at the corresponding examples in the documentation.f7Treeview()
: display items in a treeview. Used in combination with f7TreeviewItem()
and f7TreeviewGroup()
.f7AddMessages()
is definitely removed. Deprecated from previous releases.f7Appbar()
has been removed in Framework7. We have no alternative to replace it.f7ShowNavbar()
and f7HideNavbar()
are removed, as long time deprecated.f7checkBox()
and f7checkBoxGroup()
are removed, as long time deprecated.f7InsertTab()
, f7RemoveTab()
as long time deprecated.f7ValidateInput()
as long time deprecated.f7Popover()
and f7PopoverTarget()
as long time deprecated.f7ShowPreloader()
and f7HidePreloader()
as long time deprecated.f7Menu()
, f7MenuItem()
, f7MenuDropdown()
, f7MenuDropdownDivider()
and updateF7MenuDropdown()
are totally removed from Framework7. We have no alternative to replace it.f7Icon()
: remove deprecated parameter old
.f7SmartSelect()
: maxlength
becomes maxLength
. Typo from Framework7.value
from f7Password()
(accidental copy and paste from f7Text()
).f7Toolbar()
default position is now bottom
.httr
dependency from app_container()
.f7PhotoBrowser()
: id
param reintroduce (but not mandatory, default NULL
) as needed by updateF7Entity()
to update the widget on the server side.f7ListItem
: now, we don’t allow footer
and header
whenever the parent list container has mode media
(avoids cluttered layout). When subtitle
is provided without the parent list being of mode media
, an error is also raised (subtitle
is specific to the media list layout). right
can’t be passed when title
is NULL.f7Accordion()
:
multiCollapse
has been removed in Framework7.f7Block()
:
hairlines
is deprecated since removed from Framework7.f7Segment()
:
container
is deprecated, removed from Framework7.f7Navbar()
:
shadow
and subtitle
have been removed in Framework7.f7SocialCard()
is deprecated as the same result can be achieved with f7Card()
.f7AutoComplete()
: expandInput
is deprecated, removed from Framework7.f7Row()
, f7Col()
and f7Flex()
are deprecated in favor of f7Grid()
, as specified by Framework7 8.3.3f7Fabs()
: morph
is deprecated. Only morphTarget
is used.f7Toolbar()
:
hairline
and shadow
are deprecated, removed from Framework7.f7Shadow()
removed from Framework7. No replacement. Will be removed in a future release.f7Swipeout
: deprecate side
parameter and ...
. Now use either left
/right
or both.f7AutoComplete
: value
now defaults to NULL
(instead of the first choice).updateF7Login()
: id
is deprecated.f7Messages()
: the corresponding input is now a list of lists, each item being a single f7Message()
. The previous setting was not optimal R,the JS binding was returning a array of objects, which can’t be easily translated to R. We now return an object of objects which becomes a list of lists.f7Block()
gains an outline
parameter (add grey border).f7Button()
get a new tonal
style. It is also possible to pass icon
as parameter and update the icon with updateF7Button
.f7Card()
get a new raised
and divider
parameters.f7CheckboxGroup()
has a new position
parameter to control the check icon position. Default to left.f7CheckboxChoice()
: new function to pass inside choices
in a f7CheckboxGroup()
. Improved choice with title, subtitle, …f7List()
has new outline
, dividers
and strong
styles. mode
gains 2 new values: simple
and links
.f7ListItem()
has new routable
parameter which allows navigation between pages in the new f7MultiLayout()
.f7ListItem()
and f7VirtualListItem()
have new optional argument id
, which allows for easy targeting.f7ListIndex()
now gets applied to an specific element, instead of the whole page. This makes it possible to add multiple lists with list indexes to the same app.id
argument to f7List()
, which makes it possible to use an id as target in f7ListIndex
.f7Panel()
has new “floating”/“push” effects as well as a new options
parameter to pass in extra configuration. See https://framework7.io/docs/panel#panel-parameters.f7VirtualList()
has new outline
, dividers
and strong
styles. Additionally, mode
was added with the following possible values: simple
, links
, media
or contacts
.f7Popup()
has a new push
effect (pushing the main view behind on opening). There’s also a new argument called page
that can control whether or not the popup behaves as a page and can scroll- handy for popups with more content.f7Radio()
has a new position
parameter to control the check icon position. Default to left (like f7CheckboxGroup()
). Also, f7Radio()
inherits from f7List()
styling parameters such as inset
, outline
,dividers
, strong
for more styling option.f7RadioChoice()
: new function to pass inside choices
in a f7Radio()
. Improved choice with title, subtitle, …f7Sheet()
gains new options
parameter to allow passing more configuration. See https://framework7.io/docs/sheet-modal#sheet-parameters.f7Picker()
has new ...
parameter to pass custom options. Also f7Picker()
now can have NULL as value
, allowing you to display a placeholder.f7DatePicker()
has new ...
parameter to pass custom options. f7DatePicker()
now also supports usage of the timePicker
, and returns a posixct object when this is enabled. See https://framework7.io/docs/calendar#examples.tapHoldPreventClicks
, touchClicksDistanceThreshold
, mdTouchRipple
to f7Page()
touch options.dark
option in f7Page()
now also supports "auto"
besides TRUE
and FALSE
. If set to auto (the new default) it automatically enables dark theme based on user system color scheme preference.showF7Preloader()
has new type
parameter and a new modal dialog support (if type
is passed). New id
parameter that has to be set when type
is not NULL.hideF7Preloader()
has a new id
parameter. This is to hide modals or progress from the server.updateF7Preloader()
to be able to update a progress preloader from the server.f7PhotoBrowser()
fixed the pageBackLinkText
to back
when type was set to page
, but this has been removed. The Framework7 default is now used, or the pageBackLinkText
can be set manually (iOS only).f7ColorPicker()
has new ...
parameter to pass custom options and now returns a list of values with hex, rgb, hsl, hsb, alpha, hue, rgba, and hsla values.f7Slider()
has new ...
parameter to pass extra options. New showLabel
parameter: fix an unfortunate naming conflict between the input label (name) and the name Framework7 has given to the bubble component (label).f7AutoComplete()
and updateF7AutoComplete()
have new ...
parameter to pass extra options as well as a new style
parameter to customize the input look and feel. f7AutoComplete()
has new style
parameter to allow for custom styling only when openIn
is dropdown
.f7SplitLayout()
has a new look and at a minimal app width (1024 px) the sidebar becomes always visible. The sidebar will be collapsed on smaller screens.f7Text()
, f7TextArea()
and f7Password()
have new parameters: description
, media
, floating
, outline
and cleareable
for more styling options. label
can also be NULL.f7Select()
has new description
, media
and outline
parameters.f7Link()
has new routable
parameter which allows to use the new experimental router layout in f7MultiLayout()
.f7Navbar()
: both leftPanel
and rightPanel
now accept shiny tags such as an icon or link. This is useful to support the new router layout. Items must be wrapped in a shiny::tagList()
.f7DefaultOptions()
: can be used in f7Page()
to pass app options.f7Picker
, f7DatePicker
and f7ColorPicker
now have an additional style
parameter to set the input style and inherit from f7List
options such as outline, inset, strong and dividers.f7Toggle()
and f7Stepper()
automatically detect when they are called inside a f7List
and adjust accordingly to the list style.f7TabLink()
: href
can now be different of #
if passed in ...
(Default is still #
when no custom href
is detected). This allows to use tab links as routable links but with a better rendering in the toolbar/tabbar than classic f7Link()
.updateF7App
can now also handle changes in app theme (ios or md), dark mode, and color.f7Fabs()
has a new argument global
that can be used to make FABs persistent across different tabs in f7TabLayout()
.f7ExpandableCard()
has a new argument buttonColor
that can be used to control the color of the close button.f7Login()
has a new argument cancellable
that can, optionally, show a cancel button to close the login window. f7LoginServer()
also return the cancel state so it can be used to trigger actions on the server side, like changing tab.updateF7Login()
: new cancel
parameter to close the login window.limit
to f7AutoComplete()
. Thanks @bthieurmel.f7Card()
(Typo).skeletonsOnLoad
to f7Page()
options (not compatible) with preloader
.preloader
is moved to f7Page()
options list.loading_duration
from f7Page()
. Now the preloader will automatically disappear when shiny is idle like in {bs4Dash}
.f7SplitLayout()
for consistency reasons.f7Tab()
uses validate_tabName
so that Tab 1
is not valid anymore but Tab1
yes. Tabs will have to be manually renamed.f7Popup()
is now generated on the server side like f7Notif()
. Remove updateF7Popup()
, f7TogglePopup()
.f7listIndex()
: remove f7ListIndexItem()
. f7ListIndex()
is generated from the server side.f7Skeleton()
: triggered from server side. See examples.f7Swiper()
: better CSS, pagination, navigation, scrollbar, …f7PhotoBrowser()
example: wrong default theme …f7CheckBox()
: better layout.f7FabMorphTarget()
example.f7PhotoBrowser()
just works with two or more pictures. Fix issue in JSON conversion.updateF7Popup()
documentation (showed as deprecated by mistake).f7Navbar()
: hard-coded css style causing white text on white background.f7Tab()
so as to pass any name, as oposed to tabName.f7SmartSelect()
with openIn param (failed when not provided).f7Tab()
can create duplicate IDs which in turn break the page. Now we use validate_tabName
internally to check whether the tab is valid (avoid JS issues with jQuery selectors)…updateF7AutoComplete()
accepts choices.f7SmartSelect()
interfering NS for server-side module.f7DatePicker()
and DST.f7Page()
does not accept anymore color by its name. Now, and like in earlier versions, f7Page()
accepts either hex code or color name.f7Slider()
code updated to work with the fix for #215 above.This release only fixes an issue with Shiny 1.7.0 with a failing unit test. Thanks @schloerke
This release also fixes an issue with R CMD check and htmltools.
f7Link()
icon now expects f7Icon()
. label is not mandatory anymore.updateF7Radio()
. Fixes #135. Thanks @korterling.f7Dialog()
has a fixed height of 300px and vertical overflow to avoid issues....
to f7SmartSelect()
.options
to f7SearchBar()
to provide more configuration. Fixes #47: thanks @rodrigoheck.valueText
param for f7Gauge()
. Fixes #84: thanks @tanho63.f7Gauge()
JS code (no user impact).f7SmartSelect()
.insertF7Tab()
are losing reactivity.f7DatePicker()
visibility issue. Thanks @styvens.f7Button()
with link not working. Thanks @bwganblack.f7SmartSelect()
on selection. Thanks @dewalex.This release is to addresses the following reverse dependency issue with shiny. Moreover, it also starts the road to v1.0.0 (later this year).
f7AddMessages()
will become updateF7Messages()
in future releasef7HideNavbar()
and f7ShowNavbar()
will be replaced by updateF7Navbar()
f7ShowPopup()
will become updateF7Popup()
f7checkBox()
will become f7Checkbox()
f7checkBoxGroup()
will become f7CheckboxGroup()
f7ValidateInput()
will become validateF7Input()
f7InsertTab()
and f7RemoveTab()
will becomes insertF7Tab()
and removeF7Tab()
, respectivelyf7ShowPreloader()
and f7HidePreloader()
will become showF7Preloader()
and hideF7Preloader()
, respectively.f7Popover()
and f7PopoverTarget()
replaced by addF7Popover()
and toggleF7Popover()
create_manifest()
is going to be replaced by the workflow described here: https://unleash-shiny.rinterface.com/mobile-pwa.html#charpente-and-pwa-toolsupdateF7Fabs()
: inputId becomes idf7Appbar()
: left_panel becomes leftPanel and right_panel rightPanelf7Init()
removed. Now pass it through the f7Page()
optionsf7Navbar()
: left_panel becomes leftPanel and right_panel rightPanelf7Panel()
and updateF7Panel()
: inputId becomes idf7InsertTab()
and f7RemoveTab()
: inputId becomes idf7ExpandableCard()
and f7Card()
: img becomes imagef7SocialCard()
: author_img becomes imagef7ListItem()
: url becomes hreff7VirtualListItem()
: url becomes hrefupdateF7VirtualList()
: old_index and new_index become oldIndex and newIndex, respectivelyf7Toast()
, updateF7Progress()
, … and has been swapped at the end of the parameters for more conveniencef7Dialog()
: inputId becomes idupdateF7Sheet()
: inputId becomes idf7Link()
: external has been removed from (much simpler), src becomes hreff7Button()
: src becomes hreff7Gauge()
and not mandatory. Default to shiny::getDefaultReactiveDomain()
f7Chip()
: icon_status becomes iconStatus, img becomes imagef7Accordion()
and updateF7Accordion()
f7ProgressInf()
(useless)f7Swiper()
API. New options parameterf7PhotoBrowser()
is now called from the shiny server function. See help, id and label have been removedf7Searchbar()
updateF7Entity()
updateF7ActionSheet()
addF7Tooltip()
and updateF7Tooltip()
to generate tooltips from the serverf7Page()
so that we doesn’t oblige users to create a PWAf7Page()
has a new options parameter as replacement of f7Init()
. Much simpler to handlef7Menu()
, f7MenuItem()
, f7MenuDropdown()
, f7MenuDropdownDivider()
and updateF7MenuDropdown()
: special buttons and dropdown elements, behaving like action buttonsf7PhotoBrowser()
updateF7SmartSelect()
: thanks @Edireitoshiny:disconnect
occurs. Gives ability to reload or reconnecthtmltools::attachDependencies()
in create_app_ui
f7Searchbar()
since it messes up with tabbar navigation. This does not have any impact on user experience. In a future release of shinyMobile, f7Searchbar()
will have input binding associated as well as more parameters for configurationf7SmartSelect()
: type param becomes openIn to align with other inputsf7Messages()
: messages are updated on the server side with f7AddMessages()
. New f7MessageBar()
to send messages from the server side.f7ActionSheet()
: to access the currently selected button, use input$[sheet_id]_button. This is to make action sheets compatible with shiny modules. Moreover, the buttons provided must be included in a list (not in a dataframe)f7Sheet()
is still inserted in the UI side but can be triggered either on the server side in combination with updateF7Sheet()
(see example) or on the UI side. Overall, this improves flexibility since user may choose any trigger element. In practice, any element having data-sheet
pointing to the sheet id as well as the “sheet-open” css class may open it, instead of having a default trigger contained in the sheet. A use case may be to open a sheet in the tabbar (the trigger would be a f7TabLink()
that is a special button styled for the tabbar)session
is now optional and has been moved to the last position in function callf7AutoComplete()
: type becomes openIn to align with the framework7 documentationf7Icon()
(not used)f7Popup()
. It has now an input associated giving the popup state (opened or closed) as well as new parameters: backdrop, closeByBackdropClick, closeOnEscape, animate and swipeToClose. label parameters has been removed. To create an f7Popup()
put the f7Popup()
tag in you UI. On the server side call f7TogglePopup()
. See documentation for a detailed example. Thanks @pasahef7NavbarHide()
renamed to f7HideNavbar()
for consistancyf7NavbarShow()
renamed to f7ShowNavbar()
for consistancyf7Gauge()
valueText was removed. It does not make sense that the value can be accidentally different from the text displayed. valueText is then an internal parameter.f7DatePicker()
: min becomes minDate, max becomes maxDate and format becomes dateFormatf7Appbar()
input$shinyInfo
and input$lastInputChanged
(see shinyMobile tools vignette for more details)f7SmartSelect()
has input binding as well as an update function updateF7SmartSelect()
f7VirtualList()
, f7VirtualListItem()
, updateF7VirtualList()
: high performance list with caching system -> faster rendering (up to 10x faster than f7List()
). Ability to add item(s), remove item(s), move item, filter items, …f7TabLayout()
. This allows to use the f7Messagebar()
in a tabs layout configuration.f7ValidateInput()
function to validate input from the server side (similar to shinyFeedback but internal to shinyMobile and without dependencies)f7Login()
and updateF7Login()
feature to provide UI boilerplates for authenticationf7Tabs()
may be used as standalone components with the style argument (segmented or strong). toolbar has the default behavior.f7Icon()
and icons dependencies. thanks @pvictorupdateF7DatePicker()
: thanks @pvictorf7Fabs()
to get the status of the containerupdateF7Button()
and updateF7Fabs()
f7Init()
. Pull the screen from top to bottom fires input$ptr
which becomes TRUE. When the pull to refresh event is finished, input$ptr
is NULL. Useful to trigger events in an observeEventupdateF7Select()
: thanks @Seyphaton for the suggestionf7TogglePopup()
to close/open a f7Popup()
. Thanks @pasahepreview_mobile()
: function that previews your app in a seleted range of devices (iphone, samsung, htc, …)f7File()
for file upload. See shiny fileInput
f7DownloadButton()
to work properly with the shiny downloadHandler
function. Thanks @bwganblack for the reportf7Init()
to control the delay necessary to trigger a long press (default to 750 ms)f7ShowPreloader()
and f7HidePreloader()
f7TextArea()
input and updateF7TextArea()
on the server sidef7checkBoxGroup()
and f7Radio()
f7TabLink()
(special link to insert in f7Tabs()
that may open a f7Sheet()
)f7Button()
f7Segment()
f7Popup()
+ rewrite js binding. Thanks @pvictorf7DatePicker()
: direction, openIn, scrollToInput, closeByOutsideClick, toolbar, toolbarCloseText, header and headerPlaceholderupdateF7Gauge()
. Thanks @rodrigoheck for the suggestionf7Slider()
to prevent wrong behaviour when used in f7TabLayout()
f7Select()
does not rely anymore on the shiny selectInput binding (does not have impact on user experience)f7Tab()
: allows to navigate through hidden tabs without displaying them in the tab menu. Thanks @rodrigoheckf7AutoComplete()
f7Picker()
and updateF7Picker()
: rotateEffect, openIn, scrollToInput, closeByOutsideClick, toolbar, toolbarCloseText and sheetSwipeToClosef7Icon()
f7Select()
updateF7Slider()
f7Slider()
f7Slider()
labels (remove enableLabels param)updateF7Slider()
f7Slider()
updateF7Stepper()
f7Stepper()
: add 2 more parameters (decimalPoint and buttonsEndInputMode)f7Init()
. This improves perfomances on old devicesf7SingleLayout()
example (replace sliderInput by f7Slider)f7SplitLayout()
example (replace sliderInput by f7Slider)f7TabLayout()
exampleupdateF7AutoComplete
: text input was not updated. Thanks @sanchez5674 for the reportf7Page()
. Thanks @ pvictorf7Sheet()
wrong css style applied when multiple sheets are in the same appf7Tabs()
: if one put f7Tabs()
inside a f7Tab()
in a parent f7Tabs()
, the input binding was giving the wrong tab for the top level tabset (once we clicked in the tab containing the sub-tabset).f7InsertTab()
and f7RemoveTab()
when swipeable is TRUEf7Tabs()
on click. This allows to use f7Tabs()
without swipeable and animatedf7Panel()
(need to provide the f7Panel()
inputId)f7Swipeout()
to make the current tab swipping if in f7TabLayout()
f7Fab()
label white background color in dark modef7Navbar()
would center the body content on scroll, due to a css conflictf7Slider()
and f7TabLayout()
: When setting value of a slider in a swipeable f7TabLayout it cause the tab to be swip. This describe here : framework7io/framework7#2603. Thanks @pvictorf7DatePicker()
format for months. Thanks @kmaheshkulkarnif7DatePicker()
: the viewport does not scroll to input by defaultf7AutoComplete()
examplef7Popup()
. Thanks @pasahef7Popup()
. Now f7Popup()
triggers shiny output rendering. Thanks @pasaheupdateF7Gauge()
-> wrong fraction for semi circle gauges.f7Stepper()
: some options were not properly initialized (max, min, …)f7Slider()
example 2: wrong argument in helpf7Icon()
example: wrong function namef7Row()
examplef7Sheet()
: hiddenItems is NULL by defaultf7Appbar()
NEWS.md
file to track changes to the package.