Closed rpkyle closed 3 years ago
I motion to deprecate the following components in the next dash-html-components
and dashHtmlComponents
releases, as they are no longer functional/supported in modern browsers, and propose to eventually remove these altogether:
htmlBasefont
: only works with Microsoft browsers, see herehtmlBlink
: not supported by any widely used modern browser, see herehtmlCommand
: not supported by any widely used modern browser, see herehtmlElement
: does not appear to be supported by widely used modern browsers, see herehtmlIsindex
: not supported by any widely used modern browser, see herehtmlListing
: not supported by any widely used modern browser, see herehtmlMarquee
: not supported by any widely used modern browser, see herehtmlMulticol
: not supported by any widely used modern browser, see herehtmlNextid
: not supported by any widely used modern browser, see herehtmlShadow
: not supported by any widely used modern browser, see herehtmlSpacer
: not supported by any widely used modern browser, see here@Marc-Andre-Rivet @alexcjohnson @wbrgss
htmlContent
should also be removed if htmlShadow
is being removed. It is used inside of Shadow DOM
and is also deprecated and not supported by any widely used modern browser, see here.
Following a discussion offline, we've made the decision to retain the above components. Closing this issue.
I'd kindly ask for reconsidering here — I understand that the components are dynamically generated, but the fact that the documentation is also dynamically generated makes it seem like these are fully functional bits and bobs to put into a dash.
In particular, even though <script>
is a very functional HTML element htmlScript
will never work in a dash (as it currently stands) because browsers don't execute <script>
s inserted in the way react does it (via innerHTML). Including it in the documentation only leads folks down dead ends. Either it should use a different insertion mechanism, or it should have a bright big warning in the docs, or it should be removed entirely.
I do agree we should keep these components around. script
in particular has some other uses like storing data. Typically this is used for the back-end to pass data to the front end on page load, but one could imagine scenarios where this is useful when Dash is part of a larger app, to pass data between pieces of that app.
But @mbauman is right that we should document these limitations better. Reopening as a documentation issue.
Possibly relevant to plotly/dashR#243, since we may want to document within the package also.
We recently prepared examples for
dashHtmlComponents
in advance of submission to CRAN.As a result, several components were identified as non-functional or obsolete by those writing up the examples; this is most likely the result of browsers deprecating previously valid HTML elements.
A list of these follows below. :no_entry_sign: indicates a component which is suspected not to function anymore.
From @rpkyle:
htmlBasefont
: this HTML5 element is deprecated, but the component does not suit the specifications as written and does not work.From @CanerIrfanoglu:
htmlListing
: Deprecated. Example working.htmlMarquee
: Obsolete. Example working.htmlMeta
: Example added but injects<meta>
tag to<body>
. Not sure if this is acceptable.htmlMultiCol
: Obsolete. Example added (requirescol
arg and Netscape 4 to work).htmlNextid
: Needs to be injected in the<head>
and not supported by any browser.htmlObjectEl
: Example created but not working.object
tag hasdata
attribute buthtmlObjectEl
does not. There is an issue created earlier.htmlOptgroup
: Example working. However, labels are blank. Noted thatoptgroup
should havelabel
argument. Below is how it looks vs. how it is supposed to look:htmlOutput
: Needoninput
attribute ofhtmlForm
&htmlInput
(does not exist) to create a working example.htmlParam
: Example added but not working. Depends ondata
attribute ofhtmlObjectEl
htmlPlaintext
: Obsolete. Example added but does not work as intended (should render rest of html as plain-text)From @sacul-git:
htmlScript
: I did not successfully create a minimalhtmlScript
that actually works.htmlShadow
: This is deprecated, and I'm not sure how to show a meaningful example in the context of a Dash app.htmlSlot
: I'm not sure how to show a meaningful example in the context of a Dash app.htmlSpacer
: non-standard and obsoletehtmlTitle
: Because an app's title is set throughDash$new(name = "title")
, I'm not sure how to show a meaningful example ofhtmlTitle
.htmlTrack
: Not sure how to use this within a Dash app with audio or video, and if there is a way, I'm not sure where I should source avtt
file from.@alexcjohnson