diff --git a/R/update-shiny-material-dropdown.R b/R/update-shiny-material-dropdown.R index 7f31c3e..3593199 100644 --- a/R/update-shiny-material-dropdown.R +++ b/R/update-shiny-material-dropdown.R @@ -20,67 +20,43 @@ update_material_dropdown <- function(session, input_id, value = NULL, choices = return(NULL) } - if(!is.null(choices)){ - if ( is.null(names(choices)) ){ + if(is.null(names(choices))) names(choices) <- choices - } - - if(!(value %in% choices)) { - message("ERROR: value '", value, "' not found in choices") + if(!all(value %in% choices)) { + for(ele in value[!value %in% choices]) + message("ERROR: value '", ele, "' not found in choices") return(NULL) } - choices_value_js_code <- paste0("$('#", input_id, "').empty(); $('#", input_id, "')") - - for(i in 1:length(choices)){ - - choices_value_js_code <- paste0( - choices_value_js_code, - ".append('')" - ) - - } - - choices_value_js_code <- gsub(pattern = "DOUBLEQUOTE", replacement = '"', x = choices_value_js_code) + choices <- gsub(pattern = " ", replacement = "_shinymaterialdropdownspace_", x = choices, fixed = TRUE) - session$sendCustomMessage( - type = "shinymaterialJS", - choices_value_js_code + choices_value_js_code <- paste0( + paste0("$('#", input_id, "').empty(); $('#", input_id, "')"), + paste0('.append(\'')", collapse = "") ) - choices_label_js_code <- paste0("$('#shiny-material-dropdown-", input_id, "').find('ul').empty(); $('#shiny-material-dropdown-", input_id, "').find('ul')") + session$sendCustomMessage(type = "shinymaterialJS", choices_value_js_code) - for(i in 1:length(choices)){ - - choices_label_js_code <- paste0( - choices_label_js_code, - ".append('