f7Dialog() text parameter that could not handle a list of tags.f7File() button class. Thanks @SCasanova.f7Grid(). Thanks @ThomasChln.f7Progress when value is NULL.window.Framework7 = Framework7.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_uif7Searchbar() 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 fileInputf7DownloadButton() 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.