Skip to content

Commit

Permalink
Merge pull request #10 from RinteRface/nextui-v2
Browse files Browse the repository at this point in the history
Move to Nextui v2
  • Loading branch information
DivadNojnarg authored Nov 15, 2023
2 parents d3cd625 + 6fa99fd commit fd8e6b1
Show file tree
Hide file tree
Showing 241 changed files with 24,824 additions and 14,777 deletions.
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

0 comments on commit fd8e6b1

Please sign in to comment.