Skip to content

Commit

Permalink
feat(quickapp): 新增快应用的一些 api 及组件
Browse files Browse the repository at this point in the history
  • Loading branch information
jinjinjin0731 committed Jul 5, 2019
1 parent c3086ae commit ddf279b
Show file tree
Hide file tree
Showing 13 changed files with 724 additions and 19 deletions.
7 changes: 7 additions & 0 deletions packages/taro-cli/src/config/manifest.default.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,13 @@
{ "name": "system.geolocation" },
{ "name": "system.share" },
{ "name": "system.notification" }
{ "name": "system.device" },
{ "name": "system.webview" },
{ "name": "system.request" },
{ "name": "system.audio" },
{ "name": "system.record" },
{ "name": "system.contact" },
{ "name": "system.sms" }
],
"permissions": [
{ "origin": "*" }
Expand Down
70 changes: 70 additions & 0 deletions packages/taro-components-qa/src/components/scroll-view/index.ux
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
<template>
<list
@scroll="onScroll"
@scrollbottom="onScrollToLower"
@scrolltop="onScrollToUpper"
class="{{classname}}"
style="{{style}}"
flex-direction="{{flexDirection}}"
>
<list-item type='a'>
<slot></slot>
</list-item>
</list>
</template>

<script>
export default {
props: {
classname: {
type: String,
required: false,
default: ''
},
style: {
type: String,
required: false,
default: ''
},
scrollx: {
type: Boolean,
required: false,
default: true
},
scrolly: {
type: Boolean,
required: false,
default: false
}
},

onInit () {
if (scrolly) {
this.flexDirection = 'column'
} else {
this.flexDirection = 'row'
}
},

onScroll () {
this.$emit('scroll', e)
},

onScrollToLower() {
this.$emit('scrollToLower', e)
}

onScrollToUpper () {
this.$emit('scrollToLower', e)
}

handleClick (e) {
this.$emit('click', e)
}
}
</script>

<style>

</style>

42 changes: 42 additions & 0 deletions packages/taro-components-qa/src/components/swiper-item/index.ux
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<template>
<div
class="{{classname}}"
style="{{style}}"
itemId="{{itemid}}"
onclick="handleClick">
<slot></slot>
</div>
</template>

<script>
export default {
props: {
classname: {
type: String,
required: false,
default: ''
},
style: {
type: String,
required: false,
default: ''
},
itemid: {
type: String,
required: false,
default: ''
}
},

onInit () {
},
handleClick (e) {
this.$emit('click', e)
}
}
</script>

<style>

</style>

57 changes: 57 additions & 0 deletions packages/taro-components-qa/src/components/taro-webview/index.ux
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
<template>
<web
class="{{className}}"
style="{{style}}"
onclick="handleClick"
trustedurl="{{trustedurl}}"
allowthirdpartycookies="{{allowthirdpartycookies}}"
>
</web>
</template>

<script>
export default {
props: {
classname: {
type: String,
required: false,
},
src: {
type: String,
required: false,
default: ''
},
style: {
type: Object,
required: false,
default: {}
},
trustedurl: {
type: Array,
required: false,
default: {}
},
allowthirdpartycookies: {
type: Boolean,
required: false,
default: {}
}
},

data: () => ({

}),

onInit () {

},

handleClick (e) {
this.$emit('click', e)
}
}
</script>

<style>
</style>

7 changes: 6 additions & 1 deletion packages/taro-components/src/components/swiper/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,12 @@ class Swiper extends Nerv.Component {

componentWillReceiveProps (nextProps) {
if (this.mySwiper) {
const nextCurrent = nextProps.current || this._$current || 0
let nextCurrent = 0
if (nextProps.current === 0) {
nextCurrent = this._$current || 0
} else {
nextCurrent = nextProps.current || this._$current || 0
}
// 是否衔接滚动模式
if (nextProps.circular) {
this.mySwiper.slideToLoop(parseInt(nextCurrent, 10)) // 更新下标
Expand Down
95 changes: 95 additions & 0 deletions packages/taro-quickapp/src/api/device/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
import contact from '@system.contact'
import sms from '@system.sms'

export function getContactPick (opts = {}) {
const { success, fail, complete } = opts
const res = { errMsg: 'getContactPick:ok' }
return new Promise((resolve, reject) => {
contact.pick({
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export function getContactList (opts = {}) {
const { success, fail, complete } = opts
const res = { errMsg: 'getContactList:ok' }
return new Promise((resolve, reject) => {
contact.list({
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export function sendSms (opts = {}) {
const { address, content, success, fail, complete } = opts
const res = { errMsg: 'sendSms:ok' }
return new Promise((resolve, reject) => {
sms.send({
address,
content,
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export function readSmsSafely (opts = {}) {
const { timeout, success, fail, complete } = opts
const res = { errMsg: 'sendSms:ok' }
return new Promise((resolve, reject) => {
sms.readSafely({
timeout,
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export default {
getContactPick,
getContactList,
sendSms
}
14 changes: 14 additions & 0 deletions packages/taro-quickapp/src/api/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// 未实现

// 已实现 api
export * from './request'
export * from './storage'
export * from './router'
export * from './interactive'
export * from './equipment'
export * from './share'
export * from './notification'
export * from './system'
export * from './webview'
export * from './media'
export * from './device'
73 changes: 73 additions & 0 deletions packages/taro-quickapp/src/api/media/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import audio from '@system.audio'
import record from '@system.record'

export function createInnerAudioContext () {
return audio
}

export function getPlayState (opts = {}) {
const { success, fail, complete } = opts
const res = { errMsg: 'getPlayState:ok' }
return new Promise((resolve, reject) => {
device.getCpuInfo({
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export function startRecord (opts = {}) {
const {
duration,
sampleRate,
numberOfChannels,
encodeBitRate,
format,
success,
fail,
complete
} = opts
const res = { errMsg: 'startRecord:ok' }
return new Promise((resolve, reject) => {
record.start({
duration,
sampleRate,
numberOfChannels,
encodeBitRate,
format,
success (data) {
res.result = data
success && success(data)
resolve(res)
},
fail (data, code) {
res.errMsg = data
res.code = code
fail && fail(res)
complete && complete(res)
reject(res)
}
})
})
}

export function stopRecord () {
return record.stop()
}

export default {
createAudioContext,
getPlayState,
startRecord,
stopRecord
}
Loading

0 comments on commit ddf279b

Please sign in to comment.