Skip to content
This repository has been archived by the owner on Jun 4, 2024. It is now read-only.

Several components have limited or no functionality in current browsers #129

Closed
rpkyle opened this issue Aug 7, 2019 · 6 comments · Fixed by #178
Closed

Several components have limited or no functionality in current browsers #129

rpkyle opened this issue Aug 7, 2019 · 6 comments · Fixed by #178
Milestone

Comments

@rpkyle
Copy link
Contributor

rpkyle commented Aug 7, 2019

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. 🚫 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 (requires col 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 has data attribute but htmlObjectEl does not. There is an issue created earlier.
  • htmlOptgroup: Example working. However, labels are blank. Noted that optgroup should have label argument. Below is how it looks vs. how it is supposed to look:
    Screen Shot 2019-07-30 at 5 11 45 PM Screen Shot 2019-07-30 at 5 12 15 PM
  • 🚫 htmlOutput: Need oninput attribute of htmlForm & htmlInput(does not exist) to create a working example.
  • 🚫 htmlParam: Example added but not working. Depends on data attribute of htmlObjectEl
  • 🚫 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 minimal htmlScript 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 obsolete
  • htmlTitle: Because an app's title is set through Dash$new(name = "title"), I'm not sure how to show a meaningful example of htmlTitle.
  • 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 a vtt file from.

@alexcjohnson

@rpkyle
Copy link
Contributor Author

rpkyle commented Aug 9, 2019

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 here
  • htmlBlink: not supported by any widely used modern browser, see here
  • htmlCommand: not supported by any widely used modern browser, see here
  • htmlElement: does not appear to be supported by widely used modern browsers, see here
  • htmlIsindex: not supported by any widely used modern browser, see here
  • htmlListing: not supported by any widely used modern browser, see here
  • htmlMarquee: not supported by any widely used modern browser, see here
  • htmlMulticol: not supported by any widely used modern browser, see here
  • htmlNextid: not supported by any widely used modern browser, see here
  • htmlShadow: not supported by any widely used modern browser, see here
  • htmlSpacer: not supported by any widely used modern browser, see here

@Marc-Andre-Rivet @alexcjohnson @wbrgss

@rpkyle rpkyle closed this as completed Aug 9, 2019
@rpkyle rpkyle reopened this Aug 9, 2019
@HammadTheOne
Copy link
Contributor

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.

@rpkyle
Copy link
Contributor Author

rpkyle commented Jan 8, 2020

Following a discussion offline, we've made the decision to retain the above components. Closing this issue.

@mbauman
Copy link

mbauman commented Dec 4, 2020

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.

@alexcjohnson
Copy link
Collaborator

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.

@alexcjohnson alexcjohnson reopened this Dec 27, 2020
@rpkyle
Copy link
Contributor Author

rpkyle commented Jan 29, 2021

Possibly relevant to plotly/dashR#243, since we may want to document within the package also.

# for free to subscribe to this conversation on GitHub. Already have an account? #.
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants