You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.2 KiB
47 lines
1.2 KiB
3 years ago
|
import { getSystemInfo, checkIPhoneX } from './checkIPhoneX'
|
||
|
|
||
|
const defaultSafeArea = {
|
||
|
top: false,
|
||
|
bottom: false,
|
||
|
}
|
||
|
|
||
|
const setSafeArea = (params) => {
|
||
|
if (typeof params === 'boolean') {
|
||
|
return Object.assign({}, defaultSafeArea, {
|
||
|
top: params,
|
||
|
bottom: params,
|
||
|
})
|
||
|
} else if (params !== null && typeof params === 'object') {
|
||
|
return Object.assign({}, defaultSafeArea)
|
||
|
} else if (typeof params === 'string') {
|
||
|
return Object.assign({}, defaultSafeArea, {
|
||
|
[params]: true,
|
||
|
})
|
||
|
}
|
||
|
return defaultSafeArea
|
||
|
}
|
||
|
|
||
|
export default Behavior({
|
||
|
properties: {
|
||
|
safeArea: {
|
||
|
type: [Boolean, String, Object],
|
||
|
value: false,
|
||
|
},
|
||
|
},
|
||
|
observers: {
|
||
|
safeArea(newVal) {
|
||
|
this.setData({ safeAreaConfig: setSafeArea(newVal) })
|
||
|
},
|
||
|
},
|
||
|
definitionFilter(defFields) {
|
||
|
const { statusBarHeight } = getSystemInfo() || {}
|
||
|
const isIPhoneX = checkIPhoneX()
|
||
|
|
||
|
Object.assign(defFields.data = (defFields.data || {}), {
|
||
|
safeAreaConfig: defaultSafeArea,
|
||
|
statusBarHeight,
|
||
|
isIPhoneX,
|
||
|
})
|
||
|
},
|
||
|
})
|