NEWS
teal.slice 0.7.1 (2025-12-02)
Miscellaneous
- Improve unit test coverage (#666).
teal.slice 0.7.0 (2025-08-20)
Enhancements
- Improved the layout and appearance of the filter panel with new UI design.
Bug fixes
- Fix bug where drop-down choices show no choices (#662).
Miscellaneous
- In R6 classes
finalize() method is moved to private and is replaced in public API by destroy() (#658).
teal.slice 0.6.0 (2025-02-03)
Enhancements
- Reduced the space of the filter panel by not displaying the "add filters" UI in a separate panel.
- The deprecated parameters
code and check were removed from init_filtered_data().
Bug fixes
- Fix error while creating the filter choices when the data has a factor with a level containing an empty string ("").
Breaking changes
ui_add and srv_add no longer exist as adding new filters is a part of ui_active and srv_active.
Miscellaneous
print.teal_slice() and print.teal_slices() now return object invisibly.
teal.slice 0.5.1 (2024-04-30)
Bug fixes
- Fix how the filter panel handles NA values in a Date column.
- Fix filtering of
ordered column to return the right call.
- Ensure choices are sorted for
factor and ordered data types.
Miscellaneous
- Added
teal_slice and teal_slices to package index.
- Implement mouse-over behavior for the filter card when it is selected.
teal.slice 0.5.0 (2024-02-06)
Enhancements
- Simplified
init_filtered_data to accept a named list of datasets. init_filtered_data does not currently handle a list containing dataset, metadata, datalabel and code.
Breaking changes
TealData object is no longer supported by teal.slice.
set_filter_state no longer accepts a nested list. Use teal_slices() and teal_slice() instead.
- Renamed
FilteredDataset subclass that handles data.frames from DefaultFilteredDataset to DataframeFilteredDataset. Added new class DefaultFilteredDataset that will store any type of object. Filtering will is not supported.
Bug fixes
- Performs an exact match when determining the default label of a dataset from attributes.
Miscellaneous
- Specified minimal version of package dependencies.
- Removed storing and restoring of
teal_slices objects.
- Update documentation and code to reflect the changes due to the refactor of
teal.data::JoinKeys into teal.data::join_keys.
teal.slice 0.4.0
New features
- Filter panel API is now based on
teal_slice and teal_slices objects.
- It is now possible to specify a filter based on an arbitrary logical expression. See
expr argument in teal_slice.
- It is now possible to limit choices in a single filter card. See
choices argument in teal_slice.
- It is now possible to initialize the filter panel without the "Add filter variables" panel through
allow_add in teal_slices.
- It is now possible to set a filter that cannot be removed by the app user. See
anchored argument in teal_slice.
- It is now possible to set a filter whose selection cannot be changed. See
fixed argument in teal_slice.
- It is now possible to limit choices within a variable to a single value only. See
multiple argument in teal_slice .
- Changed appearance of filter cards to a collapsible accordion.
- Replaced
sliderInput with interactive plotly chart to allow the user to zoom in on the variable distribution.
- Implemented reactive counts in single filter cards to compare filtered and unfiltered variable distributions. See
count_type argument in teal_slices.
- Added state history: individual filter states track changes so the user can rewind them or reset the initial state.
Breaking changes
- Setting filters using a list is now deprecated. Use
teal_slices and teal_slice instead.
- Removed
CDISCFilteredData and CDISCFilteredDataset and implementing JoinKeys handling in their parent classes (FilteredData and DefaultFilteredDataset).
- Specifying set of filterable columns is done through
include_varnames and exclude_varnames in teal_slices. Specifying attr(, "filterable") is hard deprecated.
- Removed private fields
$code and $check from FilteredData class and made appropriate changes to constructor and init_filtered_data.
teal.slice 0.3.0
- Examples now use
scda.2022 instead of scda.2021.
- Transferred data hashing step in
FilteredDataset to teal.
- Removed constructor of
Queue class.
New features
- Added a global turn on/off button for the Filter Panel.
- Added ability to collapse Active Filter Display panel.
- Added ability to collapse all filters of an individual dataset.
- Added fixed filter states.
Enhancements
- Improved filter state presentation in
FilterState$format.
Bug fixes
- Fixed an error where the
RangeFilterState produced an error when using bootstrap 4.
- Fixed a bug that caused the range slider to omit values selected by the filter API.
- Fixed a bug where setting incorrect values for Date and Date time ranges caused the app to crash.
Miscellaneous
- Calculation of step in slider for
RangeFilterState now uses checkmate::test_integerish instead of is.integer.
- Updated
init_filtered_data to take into account the removal of CDISCTealData from teal.data package.
- Added
shinyvalidate validation for Date and Date time ranges.
- Added examples apps for
FilterState child classes and DFFilterStates.
teal.slice 0.2.0
New features
- Added
set_filterable_varnames method to FilteredData and FilteredDataset objects so that there is control over which variables can be filtered.
- Added support for custom
bslib bootstrap themes via the teal.bs_theme option. See the teal vignette teal-bs-themses for more information.
- Removed
CDISCFilteredDataset class and functionality moved to CDISCFilteredData.
- Changed constructor of
FilteredData to not require TealData object. See help(init_filtered_data) for more details.
- The filtered data is now stored in
FilteredData not FilteredDataset.
- The join keys stored inside
FilteredData are now JoinKeys objects.
- Updated
get_filter_state to return a list of active filter states and an attribute with the character form of the filter states.
- Updated the
get_varlabels method for FilterStates classes. It now accepts a vector input.
- Exported
S3 generic function init_filter_states so that it can be used in other packages.
- Added a
FilterPanelAPI class to encapsulate the API of a filter panel.
Enhancements
- Redesigned the count bars for filter panel check box inputs.
- Redesigned the filter panel input for dates to use
CSS flexbox.
- Update icons to be compatible with Font Awesome 6.
- Updates the
FilteredData method get_formatted_filter_state so it no longer appends empty filters.
- Added clearer installation instructions to
README.
Breaking changes
- Renamed internal S3 method
get_filterable_varnames to get_supported_filter_varnames.
Bug fixes
- Fixed a bug when the filter panel overview would not refresh if the panel was hidden during a transition between active modules.
- Fixed a bug in
FilterState where sliderInput step values were too precise.
teal.slice 0.1.1
New features
- Added a formatting function for filter panel classes.
Miscellaneous
- Added a template to the
pkgdown site.
- Updated package authors.
- Added package vignettes.
Fix
- Fixed a bug in
FilteredDataset, where launching a shiny application without FilteredData would not attach the appropriate CSS files.
teal.slice 0.1.0
- Initial release of
teal.slice - a package providing a filter module for teal applications.
Changes (from behavior when functionality was part of teal)
Breaking changes
default_filter has been deprecated - use list() instead for a default filter.
Bug fixes
- Add counts to filtering categorical variables bar charts in the filtering panel in cases where they were missing.
- Fixed a bug causing an error when both sliders of
RangeFilterState where put to either end of the allowed range
in the UI.
Miscellaneous
- Added
is_any_filtered method to all FilterState classes to detect if selected values actually filters out any data. This is used to decide if an explicit filter statement is added to the call.
- The filter panel now displays a helpful message when data has no rows or columns in place of an empty drop down widget.
FilteredData now stores whether its datasets had a reproducibility check or not via two new methods to its class: set_check and get_check.