Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move to Nextui v2 #10

Merged
merged 61 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
a8038ff
start v2, add tailwind, ...
DivadNojnarg Oct 11, 2023
f7c04ba
continue update components
DivadNojnarg Oct 11, 2023
d1932fc
accordion and badge demo
DivadNojnarg Oct 16, 2023
545dc42
fix checkbox
DivadNojnarg Oct 16, 2023
a046a20
add chip + update card, radio and checkbox group
DivadNojnarg Oct 17, 2023
2991dbf
start add tabs, select, + fix few issues
DivadNojnarg Oct 17, 2023
322c94f
fix id issues + improve select demo
DivadNojnarg Oct 18, 2023
6a3725e
bump next ui to 2.2.2
DivadNojnarg Nov 5, 2023
1382a02
skeleton (broken)
DivadNojnarg Nov 5, 2023
fa3d96d
add snippet
DivadNojnarg Nov 5, 2023
3611d31
start slider input
DivadNojnarg Nov 5, 2023
e65e3d3
start autocomplete
DivadNojnarg Nov 5, 2023
cb1b369
add experimental validation to auto complete
DivadNojnarg Nov 5, 2023
511fd4a
fix tooltip and popover demo
DivadNojnarg Nov 5, 2023
60142c2
fix autocomplete update
DivadNojnarg Nov 5, 2023
ed55283
add update select + basic validation
DivadNojnarg Nov 5, 2023
10d4509
toggle select opening + dynamic content (add JSX support)
DivadNojnarg Nov 5, 2023
5741857
update doc
DivadNojnarg Nov 5, 2023
6eca853
add update accordion
DivadNojnarg Nov 5, 2023
7288e50
fix update slider + ...
DivadNojnarg Nov 5, 2023
1f22ede
update checkbox works
DivadNojnarg Nov 5, 2023
64271ca
update switch
DivadNojnarg Nov 5, 2023
ebcfad9
update tabs works
DivadNojnarg Nov 5, 2023
fe6641a
start listbox
DivadNojnarg Nov 5, 2023
c7e5890
basic theme switcher rework
DivadNojnarg Nov 6, 2023
62b37aa
them switcher for listbox app
DivadNojnarg Nov 6, 2023
78e7487
fix slider event + add debounce
DivadNojnarg Nov 7, 2023
f97112a
bump nextui
DivadNojnarg Nov 7, 2023
2e90612
use reactR for radio elements (for now ...)
DivadNojnarg Nov 9, 2023
55e423b
add checkbox group with reactR
DivadNojnarg Nov 9, 2023
739dfe8
will fix modal issue
DivadNojnarg Nov 10, 2023
6dda431
update some function names + check examples
DivadNojnarg Nov 10, 2023
8001d3a
fix slider range
DivadNojnarg Nov 10, 2023
2ceb4ef
add theme switcher to global layout + improve switch example (custom …
DivadNojnarg Nov 10, 2023
697a914
cleanup
DivadNojnarg Nov 10, 2023
aedafbc
clean navbar example
DivadNojnarg Nov 10, 2023
fe0029c
unify radio and checkbox group + fix issue in checkbox group
DivadNojnarg Nov 11, 2023
177c8fe
enable empty selection for checkbox example
DivadNojnarg Nov 11, 2023
bf8fe7b
added pagination
DivadNojnarg Nov 11, 2023
47ee71f
missing lib
DivadNojnarg Nov 11, 2023
d8f3fa9
doc
DivadNojnarg Nov 11, 2023
85f7dc3
start rework dropdown
DivadNojnarg Nov 12, 2023
105efe1
default issues
DivadNojnarg Nov 12, 2023
3179167
update doc, tests, ...
DivadNojnarg Nov 12, 2023
eefd32b
fix few doc issues
DivadNojnarg Nov 12, 2023
df89c6e
add example data for showcase
DivadNojnarg Nov 12, 2023
48150dd
remove theme param from layout as dark_mode can do the same ...
DivadNojnarg Nov 12, 2023
00eaf9f
start larger demo
DivadNojnarg Nov 12, 2023
ab1a455
start table
DivadNojnarg Nov 12, 2023
55def06
start relayout demo
DivadNojnarg Nov 13, 2023
c2bd877
improve
DivadNojnarg Nov 13, 2023
d9e6f98
improve layout
DivadNojnarg Nov 13, 2023
ae6fc5b
tweak echart theme
DivadNojnarg Nov 13, 2023
8dfb35d
update readme
DivadNojnarg Nov 13, 2023
ce9e37e
missing pakage in demo
DivadNojnarg Nov 13, 2023
6029356
add types color from tailwind mapping
DivadNojnarg Nov 14, 2023
ec84907
support named lists for table (data input)
DivadNojnarg Nov 15, 2023
08aefbc
refine power column
DivadNojnarg Nov 15, 2023
6a6ca1c
add circular progress + update doc/tests ...
DivadNojnarg Nov 15, 2023
82190eb
further cleanup R CMD check
DivadNojnarg Nov 15, 2023
6fa99fd
better layout + add modal for no selection + tweaks
DivadNojnarg Nov 15, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions DESCRIPTION
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,15 @@ RoxygenNote: 7.2.3
Imports:
htmltools,
shiny,
shiny.react
shiny.react,
jsonlite
Suggests:
testthat (>= 3.0.0),
shinytest2,
purrr
purrr,
thematic,
shiny.router
Config/testthat/edition: 3
Depends:
R (>= 2.10)
LazyData: true
71 changes: 47 additions & 24 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,75 +1,98 @@
# Generated by roxygen2: do not edit by hand

export(accordion)
export(accordion_item)
export(action_button)
export(autocomplete)
export(autocomplete_item)
export(autocomplete_section)
export(avatar)
export(avatar_group)
export(badge)
export(button)
export(card)
export(card_body)
export(card_divider)
export(card_footer)
export(card_header)
export(card_image)
export(checkbox_group_input)
export(checkbox_input)
export(col)
export(collapse_group)
export(collapse_option)
export(collapse_panel)
export(container)
export(checkboxgroup_input)
export(chip)
export(circular_progress)
export(code_block)
export(colors)
export(createReactShinyInput)
export(date_input)
export(divider)
export(dropdow_menu)
export(dropdown)
export(dropdown_button)
export(dropdown_item)
export(dropdown_section)
export(dropdown_trigger)
export(get_examples)
export(grid)
export(grid_container)
export(image)
export(is_testing)
export(link)
export(listbox)
export(listbox_item)
export(listbox_section)
export(modal)
export(modal_body)
export(modal_content)
export(modal_footer)
export(modal_header)
export(navbar)
export(navbar_brand)
export(navbar_collapse)
export(navbar_collapse_item)
export(navbar_content)
export(navbar_item)
export(navbar_link)
export(navbar_toggle)
export(nextui_page)
export(numeric_input)
export(pagination)
export(popover)
export(popover_content)
export(popover_trigger)
export(progress)
export(radio_input)
export(row)
export(run_app)
export(radiuses)
export(run_example)
export(select_input)
export(select_item)
export(select_section)
export(select_variants)
export(sizes)
export(skeleton)
export(slider_input)
export(snippet)
export(spacer)
export(switch_input)
export(text)
export(text_area_input)
export(tab)
export(table)
export(table_body)
export(table_cell)
export(table_col)
export(table_header)
export(table_row)
export(tabs)
export(tabs_variants)
export(text_input)
export(textarea_input)
export(theme_switcher)
export(tooltip)
export(update_accordion)
export(update_action_button)
export(update_checkbox_group_input)
export(update_autocomplete)
export(update_checkbox_input)
export(update_collapse_panel)
export(update_checkboxgroup_input)
export(update_date_input)
export(update_dropdown)
export(update_listbox)
export(update_numeric_input)
export(update_pagination)
export(update_radio_input)
export(update_select_input)
export(update_slider_input)
export(update_switch_input)
export(update_text_area_input)
export(update_tabs)
export(update_text_input)
export(update_textarea_input)
export(user)
export(user_link)
import(shiny)
import(shiny.react)
180 changes: 118 additions & 62 deletions R/components.R
Original file line number Diff line number Diff line change
Expand Up @@ -7,112 +7,168 @@ component <- function(name) {
)
}

custom_component <- function(name, js) {
dependency <- htmltools::htmlDependency(
name = name,
version = "0", # Not used.
src = c(href = ""), # Not used.
head = paste0("
<script>
(jsmodule.custom_components ??= {})['", name, "'] = (() => {", js, "})();
</script>
")
)
function(...) shiny.react::reactElement(
module = "custom_components",
name = name,
props = shiny.react::asProps(...),
deps = list(nextui_deps(), dependency)
)
}
#' @rdname avatar
#' @inherit component params return
#' @export
avatar <- component("Avatar")

#' @rdname card
#' @rdname avatar
#' @export
avatar_group <- component("AvatarGroup")

#' @rdname badge
#' @inherit component params return
#' @export
card <- component("Card")
badge <- component("Badge")

#' @rdname card
#' @rdname button
#' @inherit component params return
#' @export
card_body <- custom_component("Card.Body", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Card.Body;
")
button <- component("Button")

#' @rdname card
#' @inherit component params return
#' @export
card_header <- custom_component("Card.Header", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Card.Header;
")
card <- component("Card")

#' @rdname card
#' @inherit component params return
#' @export
card_divider <- custom_component("Card.Divider", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Card.Divider;
")
card_body <- component("CardBody")

#' @rdname card
#' @inherit component params return
#' @export
card_footer <- custom_component("Card.Footer", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Card.Footer;
")
card_header <- component("CardHeader")

#' @rdname card
#' @export
card_footer <- component("CardFooter")

#' @rdname circular-progress
#' @inherit component params return
#' @export
card_image <- custom_component("Card.Image", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Card.Image;
")
circular_progress <- component("CircularProgress")

#' @rdname text
#' @rdname chip
#' @inherit component params return
#' @export
text <- component("Text")
chip <- component("Chip")

#' @rdname avatar
#' @rdname code
#' @inherit component params return
#' @export
avatar <- component("Avatar")
code_block <- component("Code")

#' @rdname avatar
#' @rdname divider
#' @inherit component params return
#' @export
avatar_group <- custom_component("Avatar.Group", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.Avatar.Group;
")
divider <- component("Divider")

#' @rdname badge
#' @rdname image
#' @inherit component params return
#' @export
badge <- component("Badge")
image <- component("Image")

#' @rdname link
#' @inherit component params return
#' @export
link <- component("Link")

#' @rdname progress
#' @inherit component params return
#' @export
progress <- component("Progress")

#' @rdname link
#' @rdname skeleton
#' @inherit component params return
#' @export
link <- component("Link")
skeleton <- component("Skeleton")

#' @rdname user
#' @rdname snippet
#' @inherit component params return
#' @export
user <- component("User")
snippet <- component("Snippet")

#' @rdname table
#' @keywords internal
.table <- component("Table")

#' @rdname table
#' @export
table_header <- component("TableHeader")

#' @rdname table
#' @export
table_body <- component("TableBody")

#' @rdname table
#' @export
table_col <- component("TableColumn")

#' @rdname table
#' @export
table_row <- component("TableRow")

#' @rdname table
#' @export
table_cell <-component("TableCell")

#' Table widget
#'
#' @rdname table
#' @param data Data to render.
#' @param ... Options.
#' @export
#' @details
#' See \url{https://nextui.org/docs/components/table} to get the list of
#' parameters to pass in \code{...}.
#' @example inst/examples/table/app.R
#' @seealso See \url{https://nextui.org/docs/components/table}.
table <- function(data = NULL, ...) {
if (!inherits(data, "list")) {
cols <- colnames(data)
data <- if (nrow(data) == 0) {
list()
} else {
split(data, seq(nrow(data)))
}
} else {
if (length(names(data[[1]])) == 0) {
stop("Data should be a named list")
} else {
cols <- names(data[[1]])
}
}

if (is.null(data) || length(data) == 0) {
body <- table_body(
emptyContent = chip("No data :( ...", color = "danger"),
JS("[]")
)
} else {
# convert each rows to a list

body <- table_body(
lapply(seq_along(data), function(i) {
tmp <- as.list(data[[i]])
table_row(
key = i,
lapply(seq_along(tmp), function(j) {
table_cell(tmp[[j]])
})
)
})
)
}

.table(
...,
label = "My Table",
table_header(lapply(cols, table_col)),
body
)
}

#' @rdname user
#' @inherit component params return
#' @export
user_link <- custom_component("User.Link", "
const NextUI = jsmodule['@nextui-org/react'];
return NextUI.User.Link;
")
user <- component("User")
22 changes: 22 additions & 0 deletions R/data.R
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#' Pokemon API data
#'
#' Extract of some data from the 151 first Pokemons.
#'
#' @format ## `poke_data`
#' A nested list with 151 entries. Each sublist contains:
#' \describe{
#' \item{name}{Char: Pokemon name.}
#' \item{description}{Char: Pokemon description.}
#' \item{shape}{Char: Pokemon shape.}
#' \item{sprites}{List: Front and back sprites (images).}
#' \itemize{
#' \item{front_default}{Char: front sprite URL}
#' \item{shiny_default}{Char: front sprite URL (shiny form)}
#' }
#' \item{habitat}{Char: Pokemon habitat.}
#' ...
#' }
#' @note Have a look to inst/app-doc/data-doc.html to get an
#' interactive overview.
#' @source <https://pokeapi.co/docs/v2>
"poke_data"
Loading
Loading