mirror of
https://github.com/rstudio/shiny.git
synced 2026-01-11 16:08:19 -05:00
Compare commits
1 Commits
v1.9.0
...
dynamicJsx
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c252987a3 |
@@ -12474,6 +12474,25 @@
|
||||
};
|
||||
}
|
||||
addMessageHandler("shiny-insert-tab", function(message) {
|
||||
if (message.jsxTag) {
|
||||
var jsxContainerEl = document.createElement("div");
|
||||
var jsxId = "shiny-jsx-container-" + message.inputId;
|
||||
jsxContainerEl.style.display = "none";
|
||||
jsxContainerEl.setAttribute("id", jsxId);
|
||||
document.body.appendChild(jsxContainerEl);
|
||||
var jsxContainer = document.body.querySelector("#" + jsxId);
|
||||
(0, import_jquery39.default)(jsxContainer).html(message.jsxTag.html);
|
||||
message.liTag = {
|
||||
html: jsxContainer.querySelector("ul.nav").innerHTML,
|
||||
deps: []
|
||||
};
|
||||
message.divTag = {
|
||||
html: jsxContainer.querySelector("div.tab-content").innerHTML,
|
||||
deps: message.jsxTag.deps
|
||||
};
|
||||
jsxContainer.remove();
|
||||
delete message.jsxTag;
|
||||
}
|
||||
var $parentTabset = getTabset(message.inputId);
|
||||
var $tabset = $parentTabset;
|
||||
var $tabContent = getTabContent($tabset);
|
||||
|
||||
File diff suppressed because one or more lines are too long
2
inst/www/shared/shiny.min.js
vendored
2
inst/www/shared/shiny.min.js
vendored
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -971,7 +971,37 @@ class ShinyApp {
|
||||
position: "after" | "before" | void;
|
||||
select: boolean;
|
||||
menuName: string;
|
||||
jsxTag: { html: string; deps: HtmlDep[] };
|
||||
}) => {
|
||||
if (message.jsxTag) {
|
||||
// Render jsxTag (a <script> tag) inside a (temporary) hidden div and use
|
||||
// the HTML results to populate liTag/divTag
|
||||
const jsxContainerEl = document.createElement("div");
|
||||
const jsxId = "shiny-jsx-container-" + message.inputId;
|
||||
|
||||
jsxContainerEl.style.display = "none";
|
||||
jsxContainerEl.setAttribute("id", jsxId);
|
||||
|
||||
document.body.appendChild(jsxContainerEl);
|
||||
const jsxContainer = document.body.querySelector("#" + jsxId);
|
||||
|
||||
// Use jQuery's .html() method since that has special handling to ensure
|
||||
// <script> tags are evaluated.
|
||||
$(jsxContainer).html(message.jsxTag.html);
|
||||
|
||||
message.liTag = {
|
||||
html: jsxContainer.querySelector("ul.nav").innerHTML,
|
||||
deps: [],
|
||||
};
|
||||
message.divTag = {
|
||||
html: jsxContainer.querySelector("div.tab-content").innerHTML,
|
||||
deps: message.jsxTag.deps,
|
||||
};
|
||||
|
||||
jsxContainer.remove();
|
||||
delete message.jsxTag;
|
||||
}
|
||||
|
||||
const $parentTabset = getTabset(message.inputId);
|
||||
let $tabset = $parentTabset;
|
||||
const $tabContent = getTabContent($tabset);
|
||||
|
||||
Reference in New Issue
Block a user