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.
77 lines
2.1 KiB
77 lines
2.1 KiB
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 } = wx.getSystemInfoSync() |
|
const libVersion = '2.6.6' |
|
|
|
// check SDKVersion |
|
if (platform === 'devtools' && compareVersion(SDKVersion, libVersion) < 0) { |
|
if (wx && wx.showModal) { |
|
wx.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
|
|
|