tt-mp
Version:
一套组件化、可复用、易扩展的头条小程序 UI 组件库
78 lines (66 loc) • 2 kB
JavaScript
import computedBehavior from './computedBehavior'
import relationsBehavior from './relationsBehavior'
import safeAreaBehavior from './safeAreaBehavior'
import safeSetDataBehavior from './safeSetDataBehavior'
import funcBehavior from './funcBehavior'
import compareVersion from './compareVersion'
const { platform, SDKVersion } = tt.getSystemInfoSync()
const libVersion = '1.5.5'
// check SDKVersion
if (platform === 'devtools' && compareVersion(SDKVersion, libVersion) < 0) {
if (wx && tt.showModal) {
tt.showModal({
title: '提示',
content: `当前基础库版本(${SDKVersion})过低,无法使用 Wux Weapp 组件库,请更新基础库版本 >=${libVersion} 后重试。`,
})
}
}
const baseComponent = (options = {}) => {
// add default externalClasses
options.externalClasses = [
'wux-class',
'wux-hover-class',
...(options.externalClasses = options.externalClasses || []),
]
// add default behaviors
options.behaviors = [
relationsBehavior,
safeSetDataBehavior,
...(options.behaviors = options.behaviors || []),
computedBehavior, // make sure it's triggered
]
// use safeArea
if (options.useSafeArea) {
options.behaviors = [...options.behaviors, safeAreaBehavior]
delete options.useSafeArea
}
// use func
if (options.useFunc) {
options.behaviors = [...options.behaviors, funcBehavior]
delete options.useFunc
}
// use field
if (options.useField) {
options.behaviors = [...options.behaviors, 'wx://form-field']
delete options.useField
}
// use export
if (options.useExport) {
options.behaviors = [...options.behaviors, 'wx://component-export']
options.methods = {
export() {
return this
},
...options.methods,
}
delete options.useExport
}
// add default options
options.options = {
multipleSlots: true,
addGlobalClass: true,
...options.options,
}
return Component(options)
}
export default baseComponent