fix(web): support for older browsers like Safari 11 on iOS 13.7

This commit is contained in:
Mo
2022-10-31 10:58:55 -05:00
parent 50182fad4f
commit fef1bdf799
8 changed files with 51 additions and 11 deletions

View File

@@ -60,7 +60,12 @@ export class ThemeManager extends AbstractService {
}
case ApplicationEvent.Launched: {
if (!this.application.isNativeMobileWeb()) {
window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', this.colorSchemeEventHandler)
const mq = window.matchMedia('(prefers-color-scheme: dark)')
if (mq.addEventListener != undefined) {
mq.addEventListener('change', this.colorSchemeEventHandler)
} else {
mq.addListener(this.colorSchemeEventHandler)
}
}
break
}
@@ -131,7 +136,13 @@ export class ThemeManager extends AbstractService {
;(this.unregisterDesktop as unknown) = undefined
;(this.unregisterStream as unknown) = undefined
window.matchMedia('(prefers-color-scheme: dark)').removeEventListener('change', this.colorSchemeEventHandler)
const mq = window.matchMedia('(prefers-color-scheme: dark)')
if (mq.removeEventListener != undefined) {
mq.removeEventListener('change', this.colorSchemeEventHandler)
} else {
mq.removeListener(this.colorSchemeEventHandler)
}
;(this.application as unknown) = undefined
this.unsubApp()

View File

@@ -1,4 +1,4 @@
{
"presets": ["@babel/preset-typescript", "@babel/preset-env"],
"plugins": [["@babel/plugin-transform-react-jsx"]]
"plugins": [["@babel/plugin-transform-react-jsx"], "@babel/plugin-proposal-class-properties"]
}

View File

@@ -4,3 +4,5 @@ last 2 Edge versions
last 2 Safari versions
last 2 Opera versions
Firefox ESR
safari 11
safari 13

View File

@@ -26,6 +26,7 @@
},
"devDependencies": {
"@babel/core": "*",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-transform-react-jsx": "^7.19.0",
"@babel/preset-env": "*",
"@babel/preset-typescript": "^7.18.6",

View File

@@ -21,11 +21,21 @@ export class PaneController {
setIsInMobileView: action,
})
window.matchMedia(MediaQueryBreakpoints.md).addEventListener('change', this.mediumScreenMQHandler)
const mediaQuery = window.matchMedia(MediaQueryBreakpoints.md)
if (mediaQuery?.addEventListener != undefined) {
mediaQuery.addEventListener('change', this.mediumScreenMQHandler)
} else {
mediaQuery.addListener(this.mediumScreenMQHandler)
}
}
deinit() {
window.matchMedia(MediaQueryBreakpoints.md).removeEventListener('change', this.mediumScreenMQHandler)
const mq = window.matchMedia(MediaQueryBreakpoints.md)
if (mq?.removeEventListener != undefined) {
mq.removeEventListener('change', this.mediumScreenMQHandler)
} else {
mq.removeListener(this.mediumScreenMQHandler)
}
}
mediumScreenMQHandler = (event: MediaQueryListEvent) => {

View File

@@ -18,9 +18,21 @@ export const useMediaQuery = (mediaQuery: string) => {
setMatches(event.matches)
}
window.matchMedia(mediaQuery).addEventListener('change', handler)
const mq = window.matchMedia(mediaQuery)
if (mq.addEventListener != undefined) {
mq.addEventListener('change', handler)
} else {
mq.addListener(handler)
}
return () => window.matchMedia(mediaQuery).removeEventListener('change', handler)
return () => {
const mq = window.matchMedia(mediaQuery)
if (mq.removeEventListener != undefined) {
mq.removeEventListener('change', handler)
} else {
mq.removeListener(handler)
}
}
}, [mediaQuery])
return matches

View File

@@ -47,9 +47,9 @@ module.exports = (env) => {
{ from: 'src/500.html' },
{ from: 'src/index.html' },
{ from: 'src/manifest.webmanifest' },
{ from: 'src/robots.txt' }
]
})
{ from: 'src/robots.txt' },
],
}),
],
resolve: {
extensions: ['.ts', '.tsx', '.js'],
@@ -67,7 +67,10 @@ module.exports = (env) => {
rules: [
{
test: /\.(js|tsx?)$/,
exclude: /(node_modules)/,
/**
* @standardnotes/common uses class properties which we need to run through our babel rules.
*/
exclude: /node_modules\/(?!(@standardnotes\/common))/,
use: [
'babel-loader',
{

View File

@@ -7521,6 +7521,7 @@ __metadata:
resolution: "@standardnotes/web@workspace:packages/web"
dependencies:
"@babel/core": "*"
"@babel/plugin-proposal-class-properties": ^7.18.6
"@babel/plugin-transform-react-jsx": ^7.19.0
"@babel/preset-env": "*"
"@babel/preset-typescript": ^7.18.6