These functions were temporarily ripped out of Shiny and moved
to the htmltools package. We've discovered that it's safe to
keep including them in shiny; as long as the functions in shiny
and the functions in htmltools are identical, the user won't
receive a conflict warning.
we can call shiny:::setServerInfo() in Shiny Server before launching an app, so that the app author can make use of the info to decide the behavior of the app
- validateInput renamed to validate
- validateCondition renamed to need
- Removed ability to provide "bare" conditions. It is
still possible to fail validation silently by passing
FALSE as the second argument to need()
- Rather than using a two-element list to convey results,
use a single result protocol; NULL is success, FALSE is
silent failure, string is failure with message
- Tweak "missing input" semantics, add tests
two advantages:
1. we no longer need to worry about input$foo being a list;
2. users have to explicitly call validateCondition() when they want error messages, so we know when to silently stop;
also added a new method shinysession$registerDataObj(), which was designed to be a general data retrieval method: we can store arbitrary data objects as "downloads", and return arbitrary http response based on the filter function; see renderDataTable() and updateSelectizeInput() for two examples
All render functions need to call markRenderFunction on their
return values for this mechanism to work.
Also:
- Remove runRmdContainer (it's moved to rmarkdown)
- Remove some bad .Rbuildignore entries
- Make height/width in shinyApp respected
- shinyUI and shinyServer calls are no longer required in ui.R and server.R
- shinyAppObj renamed to shinyApp
- runApp can take pathname, list(ui=..., server=...), shinyApp, and shinyAppDir
as appDir argument
- Unify all Shiny app representations around shiny.appobj
- BREAKING CHANGE: shinyUI no longer has a "path" argument
- Instead of returning UI, ui.R can return a function that returns UI; it will
be invoked each time the page is requested. (Note that this is NOT the same
as saying ui.R will be run each time the page is requested.) The function can
take either no args or a single "req" arg which is the request.
- makeReactiveBinding: Turns a "regular" variable into a reactive.
No need to use reactiveValues() for simple reactivity.
- setAutoflush (not exported): Causes flushReact() to be called
each time something is executed at the R console top-level.
- options(shiny.suppressMissingContextError=TRUE): Prevents the
"Operation not allowed without an active reactive context" error
when attempting to read a reactive value or expression from the
console.