Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix IE11 #1932

Merged
merged 10 commits into from
Feb 18, 2022
Merged

Fix IE11 #1932

merged 10 commits into from
Feb 18, 2022

Conversation

alexcjohnson
Copy link
Collaborator

@alexcjohnson alexcjohnson commented Feb 17, 2022

  • Fixes dash >= 1.21.0 doesn't load on IE 11 #1925 - Main purpose of this PR is to re-establish Dash compatibility with IE11 (5b3745d). Unfortunately as part of this I had to pin fontawesome versions back a bit, as the newest ones use a feature (regexp u flag) that IE does not support. Some of this will only be caught in manual tests with IE, but I did improve our es-check coverage by changing the sourcemap method away from eval which puts all the dev bundle code in strings - since the dash-renderer dev bundle is much bigger than its prod bundle (it contains all the devtools) that was a pretty big blind spot.

While I was at it I tackled two other small bugs:

style_header={{textAlign: alignment}}
{...actionProps}
{...common}
/>
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is the one new test, to 🔒 header text alignment.

These percy storybook tests are really great for performance, when we're just testing visuals. But I don't like the way most of them were written, to give a separate screenshot for every case. This means we end up with a ton of very similar-looking screenshots. This makes it hard to tell what things should be the same or different, encourages reviewers to gloss over them all if there's a small change, and uses an unnecessarily large fraction of our Percy quota.

So I started a pattern here of merging a bunch of cases into one screenshot:
Screen Shot 2022-02-18 at 09 02 04

The rest of the changes in the percy-storybook dir are me continuing this pattern with a few more tests. Some of the other changes also label each case separately, which helps reviewers know what they're looking at. I didn't do that above because it seemed self-explanatory.

@archmoj
Copy link
Contributor

archmoj commented Feb 18, 2022

Looking great to me.

@alexcjohnson alexcjohnson merged commit 62cf1df into dev Feb 18, 2022
@alexcjohnson alexcjohnson deleted the fix-ie11 branch February 18, 2022 14:09
"🟢 Finished updating the following component packages {} (status={}) 🟢".format(
source_glob, status
),
f"🚨 Finished updating component packages: {source_glob} (status={status}) 🚨",
Copy link
Contributor

@archmoj archmoj Feb 21, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

npm run build fails on my machine after this commit as well as on dev branch with the following error:

lerna ERR! npm run build exited 1 in 'dash-core-components'
lerna ERR! npm run build exited 1 in 'dash-core-components'

🚨 Finished updating component packages: dash-core-components|dash-html-components|dash-table (status=1) 🚨
ERROR: "private::build.components" exited with 1.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And what if you call npm run build from components/dash-core-components?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

~/plotly/dash/components/dash-core-components (dev)$ npm run build

> dash-core-components@2.2.0 build
> run-s prepublishOnly build:js build:backends


> dash-core-components@2.2.0 prepublishOnly
> rm -rf lib && babel src --out-dir lib --copy-files && rm -rf lib/jl/ lib/*.jl

Successfully compiled 57 files with Babel (2102ms).

> dash-core-components@2.2.0 prebuild:js
> cp node_modules/plotly.js-dist-min/plotly.min.js dash_core_components_base/plotly.min.js


> dash-core-components@2.2.0 build:js
> webpack --mode production

assets by chunk 4.32 MiB (id hint: async)
  assets by status 3.74 MiB [big]
    asset async-plotlyjs.js 3.49 MiB [compared for emit] [minimized] [big] (name: async-plotlyjs) (id hint: async) 1 related asset
    asset async-datepicker.js 258 KiB [compared for emit] [minimized] [big] (name: async-datepicker) (id hint: async) 1 related asset
  asset async-markdown.js 189 KiB [compared for emit] [minimized] (name: async-markdown) (id hint: async) 2 related assets
  asset async-dropdown.js 139 KiB [compared for emit] [minimized] (name: async-dropdown) (id hint: async) 2 related assets
  asset async-slider.js 129 KiB [compared for emit] [minimized] (name: async-slider) (id hint: async) 1 related asset
  asset async-highlight.js 102 KiB [compared for emit] [minimized] (name: async-highlight) (id hint: async) 1 related asset
  asset async-upload.js 19 KiB [compared for emit] [minimized] (name: async-upload) (id hint: async) 1 related asset
  asset async-graph.js 16.6 KiB [compared for emit] [minimized] (name: async-graph) (id hint: async) 1 related asset
asset dash_core_components.js 730 KiB [emitted] [compared for emit] [minimized] [big] (name: main) 2 related assets
asset dash_core_components-shared.js 14.3 KiB [compared for emit] [minimized] (name: dash_core_components-shared) (id hint: shared) 2 related assets
orphan modules 1.22 MiB [orphan] 477 modules
runtime modules 10.2 KiB 13 modules
modules by path ./node_modules/ 6.14 MiB
  javascript modules 6.14 MiB 709 modules
  json modules 2.03 KiB 3 modules
modules by path ./src/ 961 KiB
  modules by path ./src/components/ 123 KiB 16 modules
  modules by path ./src/fragments/*.js 123 KiB 8 modules
  modules by path ./src/utils/*.js 29.4 KiB 5 modules
  + 2 modules
external "PropTypes" 42 bytes [built] [code generated]
external "React" 42 bytes [built] [code generated]
external "ReactDOM" 42 bytes [built] [code generated]
./util.inspect (ignored) 15 bytes [built] [code generated]

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).
This can impact web performance.
Assets: 
  dash_core_components.js (730 KiB)
  async-datepicker.js (258 KiB)
  async-plotlyjs.js (3.49 MiB)

WARNING in entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 KiB). This can impact web performance.
Entrypoints:
  main (730 KiB)
      dash_core_components.js


webpack 5.69.0 compiled with 2 warnings in 44207 ms

> dash-core-components@2.2.0 build:backends
> dash-generate-components ./src/components dash_core_components -p package-info.json  && cp dash_core_components_base/** dash_core_components/ && dash-generate-components ./src/components dash_core_components -p package-info.json -k RangeSlider,Slider,Dropdown,RadioItems,Checklist,DatePickerSingle,DatePickerRange,Input,Link --r-prefix 'dcc' --r-suggests 'dash,dashHtmlComponents,jsonlite,plotly' --jl-prefix 'dcc' && black dash_core_components

Generated Checklist.py
Generated Clipboard.py
Generated ConfirmDialog.py
Generated ConfirmDialogProvider.py
Generated DatePickerRange.py
Generated DatePickerSingle.py
Generated Download.py
Generated Dropdown.py
Generated Graph.py
Generated Input.py
Generated Interval.py
Generated Link.py
Generated Loading.py
Generated Location.py
Generated LogoutButton.py
Generated Markdown.py
Generated RadioItems.py
Generated RangeSlider.py
Generated Slider.py
Generated Store.py
Generated Tab.py
Generated Tabs.py
Generated Textarea.py
Generated Tooltip.py
Generated Upload.py
Generated Checklist.py
Generated dccChecklist.R
Generated dcc_checklist.jl
Generated Clipboard.py
Generated dccClipboard.R
Generated dcc_clipboard.jl
Generated ConfirmDialog.py
Generated dccConfirmDialog.R
Generated dcc_confirmdialog.jl
Generated ConfirmDialogProvider.py
Generated dccConfirmDialogProvider.R
Generated dcc_confirmdialogprovider.jl
Generated DatePickerRange.py
Generated dccDatePickerRange.R
Generated dcc_datepickerrange.jl
Generated DatePickerSingle.py
Generated dccDatePickerSingle.R
Generated dcc_datepickersingle.jl
Generated Download.py
Generated dccDownload.R
Generated dcc_download.jl
Generated Dropdown.py
Generated dccDropdown.R
Generated dcc_dropdown.jl
Generated Graph.py
Generated dccGraph.R
Generated dcc_graph.jl
Generated Input.py
Generated dccInput.R
Generated dcc_input.jl
Generated Interval.py
Generated dccInterval.R
Generated dcc_interval.jl
Generated Link.py
Generated dccLink.R
Generated dcc_link.jl
Generated Loading.py
Generated dccLoading.R
Generated dcc_loading.jl
Generated Location.py
Generated dccLocation.R
Generated dcc_location.jl
Generated LogoutButton.py
Generated dccLogoutButton.R
Generated dcc_logoutbutton.jl
Generated Markdown.py
Generated dccMarkdown.R
Generated dcc_markdown.jl
Generated RadioItems.py
Generated dccRadioItems.R
Generated dcc_radioitems.jl
Generated RangeSlider.py
Generated dccRangeSlider.R
Generated dcc_rangeslider.jl
Generated Slider.py
Generated dccSlider.R
Generated dcc_slider.jl
Generated Store.py
Generated dccStore.R
Generated dcc_store.jl
Generated Tab.py
Generated dccTab.R
Generated dcc_tab.jl
Generated Tabs.py
Generated dccTabs.R
Generated dcc_tabs.jl
Generated Textarea.py
Generated dccTextarea.R
Generated dcc_textarea.jl
Generated Tooltip.py
Generated dccTooltip.R
Generated dcc_tooltip.jl
Generated Upload.py
Generated dccUpload.R
Generated dcc_upload.jl
Generated src/DashCoreComponents.jl
Generated Project.toml
reformatted dash_core_components/Download.py
reformatted dash_core_components/ConfirmDialog.py
reformatted dash_core_components/Clipboard.py
reformatted dash_core_components/ConfirmDialogProvider.py
reformatted dash_core_components/Checklist.py
reformatted dash_core_components/DatePickerSingle.py
reformatted dash_core_components/Interval.py
reformatted dash_core_components/Dropdown.py
reformatted dash_core_components/Link.py
reformatted dash_core_components/DatePickerRange.py
reformatted dash_core_components/Graph.py
reformatted dash_core_components/Loading.py
reformatted dash_core_components/Location.py
reformatted dash_core_components/LogoutButton.py
reformatted dash_core_components/Markdown.py
reformatted dash_core_components/RadioItems.py
reformatted dash_core_components/Store.py
reformatted dash_core_components/Input.py
reformatted dash_core_components/RangeSlider.py
reformatted dash_core_components/Slider.py
reformatted dash_core_components/Tab.py
reformatted dash_core_components/Tabs.py
reformatted dash_core_components/_imports_.py
reformatted dash_core_components/Tooltip.py
reformatted dash_core_components/Upload.py
reformatted dash_core_components/Textarea.py
All done! ✨ 🍰 ✨
26 files reformatted, 2 files left unchanged.

> dash-core-components@2.2.0 postbuild
> es-check es5 dash_core_components/*.js


error: ES-Check: there were 3 ES version matching errors.

info: 
          ES-Check Error:
          ----
          · erroring file: dash_core_components/async-mathjax.js
          · error: SyntaxError: Unexpected token (1:2543)
          · see the printed err.stack below for context
          ----

          SyntaxError: Unexpected token (1:2543)
    at Parser.pp$4.raise (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:3460:15)
    at Parser.pp$9.unexpected (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:756:10)
    at Parser.pp$5.parseExprAtom (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2835:12)
    at Parser.pp$5.parseExprSubscripts (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2627:21)
    at Parser.pp$5.parseMaybeUnary (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2593:19)
    at Parser.pp$5.parseExprOps (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2520:21)
    at Parser.pp$5.parseMaybeConditional (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2503:21)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2470:21)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2488:25)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2488:25)
        
info: 
          ES-Check Error:
          ----
          · erroring file: dash_core_components/async-mathjaxjs.js
          · error: SyntaxError: Unexpected token (1:2543)
          · see the printed err.stack below for context
          ----

          SyntaxError: Unexpected token (1:2543)
    at Parser.pp$4.raise (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:3460:15)
    at Parser.pp$9.unexpected (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:756:10)
    at Parser.pp$5.parseExprAtom (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2835:12)
    at Parser.pp$5.parseExprSubscripts (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2627:21)
    at Parser.pp$5.parseMaybeUnary (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2593:19)
    at Parser.pp$5.parseExprOps (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2520:21)
    at Parser.pp$5.parseMaybeConditional (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2503:21)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2470:21)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2488:25)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2488:25)
        
info: 
          ES-Check Error:
          ----
          · erroring file: dash_core_components/mathjax.js
          · error: SyntaxError: The keyword 'import' is reserved (1:0)
          · see the printed err.stack below for context
          ----

          SyntaxError: The keyword 'import' is reserved (1:0)
    at Parser.pp$4.raise (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:3460:15)
    at Parser.pp$5.checkUnreserved (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:3367:12)
    at Parser.pp$5.parseIdent (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:3396:12)
    at Parser.pp$5.parseExprAtom (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2759:21)
    at Parser.pp$5.parseExprSubscripts (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2627:21)
    at Parser.pp$5.parseMaybeUnary (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2593:19)
    at Parser.pp$5.parseExprOps (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2520:21)
    at Parser.pp$5.parseMaybeConditional (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2503:21)
    at Parser.pp$5.parseMaybeAssign (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2470:21)
    at Parser.pp$5.parseExpression (/home/plotly/dash/components/dash-core-components/node_modules/acorn/dist/acorn.js:2433:21)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK. It looks like we need to empty some .gitignored directories when switching between different dev branches.
In this case:

./components/dash-core-components/lib/utils/LazyLoader/mathjax.js
./components/dash-core-components/deps/mathjax.js
./components/dash-core-components/inst/deps/mathjax.js
./components/dash-core-components/dash_core_components_base/mathjax.js
./components/dash-core-components/node_modules/mathjax-full/js/mathjax.js
./components/dash-core-components/node_modules/mathjax-full/components/src/core/lib/mathjax.js
./components/dash-core-components/dash_core_components/mathjax.js
./dash/dcc/mathjax.js

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants