提交 5cc644b3 编写于 作者: 雪洛's avatar 雪洛

feat: 适配web端

上级 923ebb5b
...@@ -64,4 +64,7 @@ ...@@ -64,4 +64,7 @@
<style> <style>
/*每个页面公共css */ /*每个页面公共css */
@import "./common/uni.css"; @import "./common/uni.css";
page {
background-color: #f8f8f8;
}
</style> </style>
...@@ -81,7 +81,7 @@ ...@@ -81,7 +81,7 @@
<text class="uni-title-text"> {{title}} </text> <text class="uni-title-text"> {{title}} </text>
</view> </view>
</view> </view>
<view class="uni-input-wrapper input-wrapper"> <view class="input-wrapper">
<input class="uni-input" :type="inputType" :value="inputClearValue" :placeholder="title" @input="input" @blur="blur" @focus="focus" /> <input class="uni-input" :type="inputType" :value="inputClearValue" :placeholder="title" @input="input" @blur="blur" @focus="focus" />
<image class="input-wrapper_image" src="/static/icons/clear.png" v-if="showClearIcon" @click="clearIcon"> <image class="input-wrapper_image" src="/static/icons/clear.png" v-if="showClearIcon" @click="clearIcon">
</image> </image>
...@@ -90,20 +90,15 @@ ...@@ -90,20 +90,15 @@
<style> <style>
.uni-input-wrapper {
padding: 8px 13px;
margin: 10rpx 0;
flex-direction: row;
flex-wrap: nowrap;
background-color: #ffffff;
}
.input-wrapper { .input-wrapper {
border: 1px solid rgba(0, 0, 0, .08); border: 1px solid rgba(0, 0, 0, .08);
flex-direction: row; flex-direction: row;
justify-content: center; justify-content: center;
padding: 0; padding: 0;
margin: 0 20rpx; margin: 0 20rpx;
flex-direction: row;
flex-wrap: nowrap;
background-color: #ffffff;
} }
.input-wrapper_image { .input-wrapper_image {
......
...@@ -35,8 +35,8 @@ ...@@ -35,8 +35,8 @@
return { return {
height: 0, height: 0,
is_open: this.open as boolean, is_open: this.open as boolean,
boxNode: null as Element | null, boxNode: null as UniElement | null,
contentNode: null as Element | null, contentNode: null as UniElement | null,
}; };
}, },
watch: { watch: {
...@@ -51,8 +51,8 @@ ...@@ -51,8 +51,8 @@
$dispatch(this, 'UniCollapse', 'init', this) $dispatch(this, 'UniCollapse', 'init', this)
}, },
mounted() { mounted() {
this.boxNode = this.$refs['boxRef'] as Element; this.boxNode = this.$refs['boxRef'] as UniElement;
this.contentNode = this.$refs['contentRef'] as Element; this.contentNode = this.$refs['contentRef'] as UniElement;
// this.openCollapse(this.open) // this.openCollapse(this.open)
}, },
methods: { methods: {
...@@ -68,7 +68,7 @@ ...@@ -68,7 +68,7 @@
const boxNode = this.boxNode?.style!; const boxNode = this.boxNode?.style!;
const contentNode = this.contentNode?.style!; const contentNode = this.contentNode?.style!;
let hide = open ? 'flex' : 'none'; let hide = open ? 'flex' : 'none';
const opacity = open ? 1 : 0 const opacity = open ? "1" : "0"
let ani_transform = open ? 'translateY(0)' : 'translateY(-100%)'; let ani_transform = open ? 'translateY(0)' : 'translateY(-100%)';
boxNode.setProperty('display', hide); boxNode.setProperty('display', hide);
this.$nextTick(() => { this.$nextTick(() => {
......
...@@ -6,11 +6,14 @@ describe('ExtApi-GetAppBaseInfo', () => { ...@@ -6,11 +6,14 @@ describe('ExtApi-GetAppBaseInfo', () => {
let res; let res;
const stringProperties = [ const stringProperties = [
'appId', 'appName', 'appVersion', 'appVersionCode', 'appLanguage', 'appId', 'appName', 'appVersion', 'appVersionCode', 'appLanguage',
'language', 'version', 'uniCompileVersion', 'uniPlatform', 'uniRuntimeVersion', 'language', 'uniCompileVersion', 'uniPlatform', 'uniRuntimeVersion',
] ]
const numberProperties = [ const numberProperties = [
'uniCompileVersionCode', 'uniRuntimeVersionCode' 'uniCompileVersionCode', 'uniRuntimeVersionCode'
] ]
if (process.env.uniTestPlatformInfo.indexOf('web') === -1) {
stringProperties.push('version')
}
beforeAll(async () => { beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH) page = await program.reLaunch(PAGE_PATH)
await page.waitFor(600); await page.waitFor(600);
......
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
} }
}, },
methods: { methods: {
getElementByNotExistId() : Element | null { getElementByNotExistId() : UniElement | null {
return uni.getElementById('not-exist-id') return uni.getElementById('not-exist-id')
}, },
changePageHeadBackgroundColor() { changePageHeadBackgroundColor() {
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
} }
}, },
methods: { methods: {
getElementByNotExistId() : Element | null { getElementByNotExistId() : UniElement | null {
return uni.getElementById('not-exist-id') return uni.getElementById('not-exist-id')
}, },
changePageHeadBackgroundColor() { changePageHeadBackgroundColor() {
......
...@@ -7,7 +7,7 @@ describe('ExtApi-GetSystemInfo', () => { ...@@ -7,7 +7,7 @@ describe('ExtApi-GetSystemInfo', () => {
const stringProperties = [ const stringProperties = [
'appId', 'appLanguage', 'appName', 'appVersion', 'appVersionCode', 'appId', 'appLanguage', 'appName', 'appVersion', 'appVersionCode',
'brand', 'deviceId', 'deviceBrand', 'deviceModel', 'deviceType', 'language', 'brand', 'deviceId', 'deviceBrand', 'deviceModel', 'deviceType', 'language',
'model', 'version', 'osName', 'osVersion', 'osLanguage', 'platform', 'system', 'ua', 'uniCompileVersion', 'model', 'osName', 'osVersion', 'osLanguage', 'platform', 'system', 'ua', 'uniCompileVersion',
'uniPlatform', 'uniRuntimeVersion', 'romName', 'romVersion', 'uniPlatform', 'uniRuntimeVersion', 'romName', 'romVersion',
] ]
const numberProperties = [ const numberProperties = [
...@@ -17,6 +17,11 @@ describe('ExtApi-GetSystemInfo', () => { ...@@ -17,6 +17,11 @@ describe('ExtApi-GetSystemInfo', () => {
'uniCompileVersionCode', 'uniRuntimeVersionCode' 'uniCompileVersionCode', 'uniRuntimeVersionCode'
] ]
if (process.env.uniTestPlatformInfo.indexOf('web') === -1) {
stringProperties.push('version')
}
beforeAll(async () => { beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH) page = await program.reLaunch(PAGE_PATH)
await page.waitFor(600); await page.waitFor(600);
......
...@@ -56,10 +56,12 @@ export default { ...@@ -56,10 +56,12 @@ export default {
// #ifdef WEB // #ifdef WEB
onUnload() { onUnload() {
// web 端页面销毁前,关闭 modal 和 actionsheet // web 端页面销毁前,关闭 modal 和 actionsheet
// @ts-ignore
const modalBtn = document.querySelector('.uni-modal__btn') const modalBtn = document.querySelector('.uni-modal__btn')
if (modalBtn) { if (modalBtn) {
modalBtn.click() modalBtn.click()
} }
// @ts-ignore
const actionSheetBtn = document.querySelector('.uni-actionsheet__action .uni-actionsheet__cell') const actionSheetBtn = document.querySelector('.uni-actionsheet__action .uni-actionsheet__cell')
if (actionSheetBtn) { if (actionSheetBtn) {
actionSheetBtn.click() actionSheetBtn.click()
......
...@@ -70,9 +70,11 @@ describe('ExtApi-Request', () => { ...@@ -70,9 +70,11 @@ describe('ExtApi-Request', () => {
it('Check PATCH', async () => { it('Check PATCH', async () => {
await request(page, 'PATCH'); await request(page, 'PATCH');
}); });
if (process.env.uniTestPlatformInfo.indexOf('web') === -1) {
it('Check OPTIONS', async () => { it('Check OPTIONS', async () => {
await request(page, 'OPTIONS'); await request(page, 'OPTIONS');
}); });
}
it('Check HEAD', async () => { it('Check HEAD', async () => {
await request(page, 'HEAD'); await request(page, 'HEAD');
}); });
......
<template> <template>
<!-- #ifdef APP -->
<view class="page" style="flex:1"> <view class="page" style="flex:1">
<!-- #endif -->
<view class="head"> <view class="head">
<text class="tip">下面有一个灰色区域,display默认值为flex</text> <text class="tip">下面有一个灰色区域,display默认值为flex</text>
<text class="tip">当前display值:{{display}}</text> <text class="tip">当前display值:{{display}}</text>
...@@ -10,9 +8,7 @@ ...@@ -10,9 +8,7 @@
<text style="background-color: aquamarine;">展示display区域</text> <text style="background-color: aquamarine;">展示display区域</text>
</view> </view>
<button @tap="switchDisplay">切换display属性</button> <button @tap="switchDisplay">切换display属性</button>
<!-- #ifdef APP -->
</view> </view>
<!-- #endif -->
</template> </template>
<script> <script>
......
<template> <template>
<!-- #ifdef APP -->
<view class="page" style="flex:1"> <view class="page" style="flex:1">
<!-- #endif -->
<view class="head"> <view class="head">
<text class="tip">下面有一个灰色区域,display默认值为none</text> <text class="tip">下面有一个灰色区域,display默认值为none</text>
<text class="tip">当前display值:{{display}}</text> <text class="tip">当前display值:{{display}}</text>
...@@ -10,9 +8,7 @@ ...@@ -10,9 +8,7 @@
<text style="background-color: aquamarine;">展示display区域</text> <text style="background-color: aquamarine;">展示display区域</text>
</view> </view>
<button @tap="switchDisplay">切换display属性</button> <button @tap="switchDisplay">切换display属性</button>
<!-- #ifdef APP -->
</view> </view>
<!-- #endif -->
</template> </template>
<script> <script>
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
methods: { methods: {
changeZIndex(zIndex : number) { changeZIndex(zIndex : number) {
this.zIndex = 20; this.zIndex = 20;
(this.$refs['view'] as Element).style.setProperty('z-index', zIndex); (this.$refs['view'] as UniElement).style.setProperty('z-index', zIndex);
} }
} }
} }
......
<template> <template>
<!-- #ifdef APP -->
<scroll-view class="page"> <scroll-view class="page">
<!-- #endif -->
<view class="trace"> <view class="trace">
<view class="base reserve"> <view class="base reserve">
...@@ -39,9 +37,7 @@ ...@@ -39,9 +37,7 @@
<text>转变后位置</text> <text>转变后位置</text>
</view> </view>
<!-- #ifdef APP -->
</scroll-view> </scroll-view>
<!-- #endif -->
</template> </template>
<script lang="uts"> <script lang="uts">
......
<template> <template>
<!-- #ifdef APP -->
<scroll-view class="page"> <scroll-view class="page">
<!-- #endif -->
<view class="trace"> <view class="trace">
<view class="base reserve"> <view class="base reserve">
<text class="reserve-text">scaleX(0.6)</text> <text class="reserve-text">scaleX(0.6)</text>
...@@ -30,10 +27,7 @@ ...@@ -30,10 +27,7 @@
<text>scale(1.2,1.2)</text> <text>scale(1.2,1.2)</text>
<text>转变后位置</text> <text>转变后位置</text>
</view> </view>
<!-- #ifdef APP -->
</scroll-view> </scroll-view>
<!-- #endif -->
</template> </template>
<script lang="uts"> <script lang="uts">
......
<template> <template>
<!-- #ifdef APP -->
<scroll-view class="page"> <scroll-view class="page">
<!-- #endif -->
<view class="trace"> <view class="trace">
<view class="base reserve"> <view class="base reserve">
<text class="reserve-text">translateX(80%)</text> <text class="reserve-text">translateX(80%)</text>
...@@ -30,10 +27,7 @@ ...@@ -30,10 +27,7 @@
<text>translate(-50%,50%)</text> <text>translate(-50%,50%)</text>
<text>转变后位置</text> <text>转变后位置</text>
</view> </view>
<!-- #ifdef APP -->
</scroll-view> </scroll-view>
<!-- #endif -->
</template> </template>
<script lang="uts"> <script lang="uts">
......
...@@ -52,24 +52,24 @@ ...@@ -52,24 +52,24 @@
data() { data() {
return { return {
isTranstionWidthOrHeight: false, isTranstionWidthOrHeight: false,
widthOrHeight: null as Element | null, widthOrHeight: null as UniElement | null,
isTranstionChangeMargin: false, isTranstionChangeMargin: false,
styleMargin: null as Element | null, styleMargin: null as UniElement | null,
isTransitionStylePadding: false, isTransitionStylePadding: false,
stylePadding: null as Element | null, stylePadding: null as UniElement | null,
isTransitionstyleBackground: false, isTransitionstyleBackground: false,
styleBackground: null as Element | null, styleBackground: null as UniElement | null,
isTransitionStyleTransform: false, isTransitionStyleTransform: false,
styleTransform: null as Element | null, styleTransform: null as UniElement | null,
isTransitionstyleBorder: false, isTransitionstyleBorder: false,
styleBorder: null as Element | null, styleBorder: null as UniElement | null,
isTransitionstylePosition: false, isTransitionstylePosition: false,
stylePosition: null as Element | null, stylePosition: null as UniElement | null,
isSetTransition: false, isSetTransition: false,
isTransitionpropertystyleBackground: false, isTransitionpropertystyleBackground: false,
propertyStyleBackground: null as Element | null, propertyStyleBackground: null as UniElement | null,
isTransitionStyleTransformWithOrigin: false, isTransitionStyleTransformWithOrigin: false,
styleTransformWithOrigin: null as Element | null, styleTransformWithOrigin: null as UniElement | null,
} }
}, },
onReady() { onReady() {
......
...@@ -42,26 +42,26 @@ describe('Checkbox.uvue', () => { ...@@ -42,26 +42,26 @@ describe('Checkbox.uvue', () => {
}) })
it('checked', async () => { it('checked', async () => {
const cb = await page.$('.cb') const cb = await page.$('.cb')
expect(await cb.property('checked')).toBe(true) expect(await cb.attribute('checked')).toBe(true)
await page.setData({ await page.setData({
checked: false, checked: false,
}) })
expect(await cb.property('checked')).toBe(false) expect(await cb.attribute('checked')).toBe(false)
}) })
it('color', async () => { it('color', async () => {
const cb = await page.$('.cb') const cb = await page.$('.cb')
expect(await cb.property('color')).toBe('#007aff') expect(await cb.attribute('color')).toBe('#007aff')
await page.setData({ await page.setData({
color: '#63acfc', color: '#63acfc',
}) })
expect(await cb.property('color')).toBe('#63acfc') expect(await cb.attribute('color')).toBe('#63acfc')
}) })
it('disabled', async () => { it('disabled', async () => {
const cb = await page.$('.cb2') const cb = await page.$('.cb2')
expect(await cb.property('disabled')).toBe(true) expect(await cb.attribute('disabled')).toBe(true)
await page.setData({ await page.setData({
disabled: false, disabled: false,
}) })
expect(await cb.property('disabled')).toBe(false) expect(await cb.attribute('disabled')).toBe(false)
}) })
}) })
<template> <template>
<!-- #ifdef APP -->
<scroll-view class="page"> <scroll-view class="page">
<!-- #endif -->
<form @submit="onFormSubmit" @reset="onFormReset"> <form @submit="onFormSubmit" @reset="onFormReset">
<view class="uni-form-item"> <view class="uni-form-item">
<view class="title">姓名</view> <view class="title">姓名</view>
...@@ -11,10 +9,10 @@ ...@@ -11,10 +9,10 @@
<view class="title">性别</view> <view class="title">性别</view>
<radio-group name="gender" class="flex-row"> <radio-group name="gender" class="flex-row">
<view class="group-item"> <view class="group-item">
<radio :value="0" :checked="gender=='0'" /><text>男</text> <radio value="0" :checked="gender=='0'" /><text>男</text>
</view> </view>
<view class="group-item"> <view class="group-item">
<radio :value="1" :checked="gender=='1'" /><text>女</text> <radio value="1" :checked="gender=='1'" /><text>女</text>
</view> </view>
</radio-group> </radio-group>
</view> </view>
...@@ -46,9 +44,7 @@ ...@@ -46,9 +44,7 @@
</form> </form>
<view class="result">提交的表单数据</view> <view class="result">提交的表单数据</view>
<textarea class="textarea" :value="formDataText"></textarea> <textarea class="textarea" :value="formDataText"></textarea>
<!-- #ifdef APP -->
</scroll-view> </scroll-view>
<!-- #endif -->
</template> </template>
<script> <script>
......
...@@ -70,7 +70,7 @@ export default { ...@@ -70,7 +70,7 @@ export default {
}, },
methods: { methods: {
validateGeneralAttributes() { validateGeneralAttributes() {
const generalTarget = this.$refs['general-target'] as Element const generalTarget = this.$refs['general-target'] as UniElement
const generalId = generalTarget.getAttribute('id') const generalId = generalTarget.getAttribute('id')
if (generalId != this.generalId) { if (generalId != this.generalId) {
this.validateGeneralAttrText = '基础属性 id 验证失败' this.validateGeneralAttrText = '基础属性 id 验证失败'
...@@ -103,7 +103,7 @@ export default { ...@@ -103,7 +103,7 @@ export default {
this.validateGeneralAttrText = '基础属性验证成功' this.validateGeneralAttrText = '基础属性验证成功'
}, },
changeHeight(){ changeHeight(){
const generalTarget = this.$refs['general-target'] as Element const generalTarget = this.$refs['general-target'] as UniElement
this.changeHeightByRefText = '已通过 ref 修改高度' this.changeHeightByRefText = '已通过 ref 修改高度'
generalTarget.style.setProperty('height', '200px') generalTarget.style.setProperty('height', '200px')
} }
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
lastX: 0, lastX: 0,
lastY: 0, lastY: 0,
touchEvent: null as TouchEvent | null, touchEvent: null as TouchEvent | null,
icon: null as Element | null icon: null as UniElement | null
} }
}, },
onReady() { onReady() {
......
// uni-app自动化测试教程: uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/ // uni-app自动化测试教程: uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/
describe('transition event', () => { describe('transition event', () => {
if (process.env.uniTestPlatformInfo.indexOf('web') > -1) {
it('dummyTest', () => {
expect(1).toBe(1)
})
return
}
let page; let page;
beforeAll(async () => { beforeAll(async () => {
page = await program.reLaunch('/pages/component/general-event/transition-event') page = await program.reLaunch('/pages/component/general-event/transition-event')
......
...@@ -15,7 +15,7 @@ ...@@ -15,7 +15,7 @@
data() { data() {
return { return {
times: 0, times: 0,
element: null as Element | null, element: null as UniElement | null,
isStart: false, isStart: false,
buttonValue: "开启图片旋转", buttonValue: "开启图片旋转",
onTransitionEndTriggr: false onTransitionEndTriggr: false
...@@ -57,7 +57,7 @@ ...@@ -57,7 +57,7 @@
height: 400rpx; height: 400rpx;
margin: 50rpx auto; margin: 50rpx auto;
border-radius: 200rpx; border-radius: 200rpx;
transition-duration: 2000; transition-duration: 2000ms;
transition-property: transform; transition-property: transform;
transition-timing-function: linear; transition-timing-function: linear;
transform: rotate(0deg); transform: rotate(0deg);
......
...@@ -17,24 +17,24 @@ describe('component-native-input', () => { ...@@ -17,24 +17,24 @@ describe('component-native-input', () => {
// 测试焦点及键盘弹起 // 测试焦点及键盘弹起
it('focus', async () => { it('focus', async () => {
const input = await page.$('#uni-input-focus'); const input = await page.$('#uni-input-focus');
expect(await input.property('focus')).toBe("true") expect(await input.attribute('focus')).toBe(true)
// expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(true) // expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(true)
await page.setData({ await page.setData({
focus: false, focus: false,
}) })
expect(await input.property('focus')).toBe("false") expect(await input.attribute('focus')).toBe(false)
// await page.waitFor(1000) // await page.waitFor(1000)
// expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(false) // expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(false)
// await page.setData({ // await page.setData({
// focus: true, // focus: true,
// }) // })
// expect(await input.property('focus')).toBe(true) // expect(await input.attribute('focus')).toBe(true)
// await page.waitFor(1000) // await page.waitFor(1000)
// expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(true) // expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(true)
// await page.setData({ // await page.setData({
// focus: false, // focus: false,
// }) // })
// expect(await input.property('focus')).toBe(false) // expect(await input.attribute('focus')).toBe(false)
// await page.waitFor(1000) // await page.waitFor(1000)
// expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(false) // expect(await page.data("inputFocusKeyBoardChangeValue")).toBe(false)
// await page.waitFor(1000) // await page.waitFor(1000)
...@@ -43,7 +43,7 @@ describe('component-native-input', () => { ...@@ -43,7 +43,7 @@ describe('component-native-input', () => {
// 测试修改value属性 // 测试修改value属性
it("value", async () => { it("value", async () => {
const input = await page.$('#uni-input-default'); const input = await page.$('#uni-input-default');
expect(await input.property('value')).toEqual("hello uni-app x") expect(await input.attribute('value')).toEqual("hello uni-app x")
}) })
//测试input的类型 //测试input的类型
...@@ -52,21 +52,21 @@ describe('component-native-input', () => { ...@@ -52,21 +52,21 @@ describe('component-native-input', () => {
const number = await page.$('#uni-input-type-number'); const number = await page.$('#uni-input-type-number');
const digit = await page.$('#uni-input-type-digit'); const digit = await page.$('#uni-input-type-digit');
const tel = await page.$('#uni-input-type-tel'); const tel = await page.$('#uni-input-type-tel');
expect(await text.property('type')).toEqual("text") expect(await text.attribute('type')).toEqual("text")
expect(await number.property('type')).toEqual("number") expect(await number.attribute('type')).toEqual("number")
expect(await digit.property('type')).toEqual("digit") expect(await digit.attribute('type')).toEqual("digit")
expect(await tel.property('type')).toEqual("tel") expect(await tel.attribute('type')).toEqual("tel")
}) })
// 测试密码属性 // 测试密码属性
// it("password", async () => { // it("password", async () => {
// const input = await page.$('.uni-input-password'); // const input = await page.$('.uni-input-password');
// expect(await input.property('password')).toBe(true) // expect(await input.attribute('password')).toBe(true)
// await page.setData({ // await page.setData({
// inputPassword: false, // inputPassword: false,
// inputPasswordValue: "inputPasswordValue" // inputPasswordValue: "inputPasswordValue"
// }) // })
// expect(await input.property('password')).toBe(false) // expect(await input.attribute('password')).toBe(false)
// await page.waitFor(500) // await page.waitFor(500)
// await page.setData({ // await page.setData({
// inputPassword: true // inputPassword: true
...@@ -75,21 +75,21 @@ describe('component-native-input', () => { ...@@ -75,21 +75,21 @@ describe('component-native-input', () => {
// 测试placeholder // 测试placeholder
// it("placeholder", async () => { // it("placeholder", async () => {
// const placeholder1 = await page.$('.uni-input-placeholder1'); // const placeholder1 = await page.$('.uni-input-placeholder1');
// expect(await placeholder1.property("placeholder-style")).toMatchObject({ // expect(await placeholder1.attribute("placeholder-style")).toMatchObject({
// "color": "red" // "color": "red"
// }) // })
// expect(await placeholder1.property("placeholder")).toEqual("占位符文字颜色为红色") // expect(await placeholder1.attribute("placeholder")).toEqual("占位符文字颜色为红色")
// await page.setData({ // await page.setData({
// inputPlaceHolderStyle: "color:#CC00CC", // inputPlaceHolderStyle: "color:#CC00CC",
// }) // })
// expect(await placeholder1.property("placeholder-style")).toMatchObject({ // expect(await placeholder1.attribute("placeholder-style")).toMatchObject({
// "color": "#CC00CC" // "color": "#CC00CC"
// }) // })
// await page.setData({ // await page.setData({
// inputPlaceHolderStyle: "color:#CC19CC;background-color:#00b1c0", // inputPlaceHolderStyle: "color:#CC19CC;background-color:#00b1c0",
// }) // })
// expect(await placeholder1.property("placeholder-style")).toMatchObject({ // expect(await placeholder1.attribute("placeholder-style")).toMatchObject({
// "color": "#CC19CC", // "color": "#CC19CC",
// "backgroundColor": "#00b1c0" // "backgroundColor": "#00b1c0"
// }) // })
...@@ -97,7 +97,7 @@ describe('component-native-input', () => { ...@@ -97,7 +97,7 @@ describe('component-native-input', () => {
// await page.setData({ // await page.setData({
// inputPlaceHolderStyle: "color:#CC19CC;background-color:#00b1c0;text-align:center;font-size:44px;font-weight:900", // inputPlaceHolderStyle: "color:#CC19CC;background-color:#00b1c0;text-align:center;font-size:44px;font-weight:900",
// }) // })
// expect(await placeholder1.property("placeholder-style")).toEqual({ // expect(await placeholder1.attribute("placeholder-style")).toEqual({
// "backgroundColor": "#00b1c0", // "backgroundColor": "#00b1c0",
// "color": "#CC19CC", // "color": "#CC19CC",
// "fontSize": "44px", // "fontSize": "44px",
...@@ -106,29 +106,29 @@ describe('component-native-input', () => { ...@@ -106,29 +106,29 @@ describe('component-native-input', () => {
// }) // })
// const placeholder2 = await page.$('.uni-input-placeholder2'); // const placeholder2 = await page.$('.uni-input-placeholder2');
// expect(await placeholder2.property("placeholder-class")).toMatchObject({ // expect(await placeholder2.attribute("placeholder-class")).toMatchObject({
// "backgroundColor": "#008000" // "backgroundColor": "#008000"
// }) // })
// await page.setData({ // await page.setData({
// inputPlaceHolderClass: "uni-input-placeholder-class-ts", // inputPlaceHolderClass: "uni-input-placeholder-class-ts",
// }) // })
// expect(await placeholder2.property("placeholder-class")).toMatchObject({ // expect(await placeholder2.attribute("placeholder-class")).toMatchObject({
// "backgroundColor": "#FFA500" // "backgroundColor": "#FFA500"
// }) // })
// expect(await placeholder2.property("placeholder")).toEqual("占位符背景色为绿色") // expect(await placeholder2.attribute("placeholder")).toEqual("占位符背景色为绿色")
// }) // })
it("disable", async () => { it("disable", async () => {
const input = await page.$('#uni-input-disable'); const input = await page.$('#uni-input-disable');
expect(await input.property("disabled")).toBe("true") expect(await input.attribute("disabled")).toBe("true")
}) })
it("confirm-type", async () => { it("confirm-type", async () => {
expect(await (await page.$('#uni-input-confirm-send')).property("confirmType")).toEqual("send") expect(await (await page.$('#uni-input-confirm-send')).attribute("confirmType")).toEqual("send")
expect(await (await page.$('#uni-input-confirm-search')).property("confirmType")).toEqual("search") expect(await (await page.$('#uni-input-confirm-search')).attribute("confirmType")).toEqual("search")
expect(await (await page.$('#uni-input-confirm-next')).property("confirmType")).toEqual("next") expect(await (await page.$('#uni-input-confirm-next')).attribute("confirmType")).toEqual("next")
expect(await (await page.$('#uni-input-confirm-go')).property("confirmType")).toEqual("go") expect(await (await page.$('#uni-input-confirm-go')).attribute("confirmType")).toEqual("go")
expect(await (await page.$('#uni-input-confirm-done')).property("confirmType")).toEqual("done") expect(await (await page.$('#uni-input-confirm-done')).attribute("confirmType")).toEqual("done")
}) })
// it("maxlength", async () => { // it("maxlength", async () => {
...@@ -144,7 +144,7 @@ describe('component-native-input', () => { ...@@ -144,7 +144,7 @@ describe('component-native-input', () => {
cursor_color: "transparent", cursor_color: "transparent",
}) })
await page.waitFor(500) await page.waitFor(500)
expect(await (await page.$('#uni-input-cursor-color')).property("cursor-color")).toBe("transparent") expect(await (await page.$('#uni-input-cursor-color')).attribute("cursor-color")).toBe("transparent")
}) })
it("afterAllTestScreenshot", async () => { it("afterAllTestScreenshot", async () => {
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">设置输入框的初始内容</text> <text class="uni-title-text">设置输入框的初始内容</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-default" class="uni-input" value="hello uni-app x" /> <input id="uni-input-default" class="uni-input" value="hello uni-app x" />
</view> </view>
</view> </view>
...@@ -17,16 +17,16 @@ ...@@ -17,16 +17,16 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">type取值(不同输入法表现可能不一致)</text> <text class="uni-title-text">type取值(不同输入法表现可能不一致)</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-type-text" class="uni-input" type="text" placeholder="文本输入键盘" /> <input id="uni-input-type-text" class="uni-input" type="text" placeholder="文本输入键盘" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-type-number" class="uni-input" type="number" placeholder="数字输入键盘" /> <input id="uni-input-type-number" class="uni-input" type="number" placeholder="数字输入键盘" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-type-digit" class="uni-input" type="digit" placeholder="带小数点的数字输入键盘" /> <input id="uni-input-type-digit" class="uni-input" type="digit" placeholder="带小数点的数字输入键盘" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-type-tel" class="uni-input" :type="inputTypeTel" placeholder="电话输入键盘" /> <input id="uni-input-type-tel" class="uni-input" :type="inputTypeTel" placeholder="电话输入键盘" />
</view> </view>
</view> </view>
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">密码输入框</text> <text class="uni-title-text">密码输入框</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-password" class="uni-input" :password="inputPassword" :value="inputPasswordValue" /> <input id="uni-input-password" class="uni-input" :password="inputPassword" :value="inputPasswordValue" />
</view> </view>
</view> </view>
...@@ -44,10 +44,10 @@ ...@@ -44,10 +44,10 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">占位符样式</text> <text class="uni-title-text">占位符样式</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-placeholder1" class="uni-input" :placeholder-style="inputPlaceHolderStyle" placeholder="占位符文字颜色为红色" /> <input id="uni-input-placeholder1" class="uni-input" :placeholder-style="inputPlaceHolderStyle" placeholder="占位符文字颜色为红色" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-placeholder2" class="uni-input" :placeholder-class="inputPlaceHolderClass" placeholder="占位符背景色为绿色" /> <input id="uni-input-placeholder2" class="uni-input" :placeholder-class="inputPlaceHolderClass" placeholder="占位符背景色为绿色" />
</view> </view>
</view> </view>
...@@ -56,7 +56,7 @@ ...@@ -56,7 +56,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">设置禁用输入框</text> <text class="uni-title-text">设置禁用输入框</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-disable" class="uni-input" :disabled="true" /> <input id="uni-input-disable" class="uni-input" :disabled="true" />
</view> </view>
</view> </view>
...@@ -65,7 +65,7 @@ ...@@ -65,7 +65,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">设置最大输入长度</text> <text class="uni-title-text">设置最大输入长度</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-maxlength" class="uni-input" :maxlength="10" placeholder="最大输入长度为10" :value="inputMaxLengthValue" @input="onMaxLengthInput" :focus="inputMaxLengthFocus" /> <input id="uni-input-maxlength" class="uni-input" :maxlength="10" placeholder="最大输入长度为10" :value="inputMaxLengthValue" @input="onMaxLengthInput" :focus="inputMaxLengthFocus" />
</view> </view>
</view> </view>
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">设置光标与键盘的距离</text> <text class="uni-title-text">设置光标与键盘的距离</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" :cursor-spacing="1000" placeholder="光标与键盘的距离为1000px" /> <input class="uni-input" :cursor-spacing="1000" placeholder="光标与键盘的距离为1000px" />
</view> </view>
</view> </view>
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">自动获取焦点</text> <text class="uni-title-text">自动获取焦点</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-focus" class="uni-input" :focus="focus" @keyboardheightchange="inputFocusKeyBoardChange"/> <input id="uni-input-focus" class="uni-input" :focus="focus" @keyboardheightchange="inputFocusKeyBoardChange"/>
</view> </view>
</view> </view>
...@@ -92,19 +92,19 @@ ...@@ -92,19 +92,19 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">confirm-type取值(不同输入法表现可能不一致)</text> <text class="uni-title-text">confirm-type取值(不同输入法表现可能不一致)</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-confirm-send" class="uni-input" confirmType="send" placeholder="键盘右下角按钮显示为发送" /> <input id="uni-input-confirm-send" class="uni-input" confirmType="send" placeholder="键盘右下角按钮显示为发送" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-confirm-search" class="uni-input" confirmType="search" placeholder="键盘右下角按钮显示为搜索" /> <input id="uni-input-confirm-search" class="uni-input" confirmType="search" placeholder="键盘右下角按钮显示为搜索" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-confirm-next" class="uni-input" confirmType="next" placeholder="键盘右下角按钮显示为下一个" /> <input id="uni-input-confirm-next" class="uni-input" confirmType="next" placeholder="键盘右下角按钮显示为下一个" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-confirm-go" class="uni-input" confirmType="go" placeholder="键盘右下角按钮显示为前往" /> <input id="uni-input-confirm-go" class="uni-input" confirmType="go" placeholder="键盘右下角按钮显示为前往" />
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-confirm-done" class="uni-input" confirmType="done" placeholder="键盘右下角按钮显示为完成" /> <input id="uni-input-confirm-done" class="uni-input" confirmType="done" placeholder="键盘右下角按钮显示为完成" />
</view> </view>
</view> </view>
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">点击键盘右下角按钮时保持键盘不收起</text> <text class="uni-title-text">点击键盘右下角按钮时保持键盘不收起</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" :confirm-hold="true" /> <input class="uni-input" :confirm-hold="true" />
</view> </view>
</view> </view>
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
<view class="uni-title" @click="setCursor(4)"> <view class="uni-title" @click="setCursor(4)">
<text class="uni-title-text">设置输入框聚焦时光标的位置(点击生效)</text> <text class="uni-title-text">设置输入框聚焦时光标的位置(点击生效)</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input ref="input" class="uni-input" value="0123456789" :cursor="cursor" /> <input ref="input" class="uni-input" value="0123456789" :cursor="cursor" />
</view> </view>
</view> </view>
...@@ -131,7 +131,7 @@ ...@@ -131,7 +131,7 @@
<view class="uni-title" @click="setSelection(0, 4)"> <view class="uni-title" @click="setSelection(0, 4)">
<text class="uni-title-text">设置输入框聚焦时光标的起始位置和结束位置(点击生效)</text> <text class="uni-title-text">设置输入框聚焦时光标的起始位置和结束位置(点击生效)</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input ref="input2" class="uni-input" value="0123456789" :selection-start="selectionStart" :selection-end="selectionEnd" /> <input ref="input2" class="uni-input" value="0123456789" :selection-start="selectionStart" :selection-end="selectionEnd" />
</view> </view>
</view> </view>
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
<view class="uni-title" @click="changeCursorColor"> <view class="uni-title" @click="changeCursorColor">
<text class="uni-title-text">设置光标颜色为透明(点击本行文字生效,再点复位)</text> <text class="uni-title-text">设置光标颜色为透明(点击本行文字生效,再点复位)</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input id="uni-input-cursor-color" class="uni-input" :cursor-color="cursor_color" value="光标颜色" /> <input id="uni-input-cursor-color" class="uni-input" :cursor-color="cursor_color" value="光标颜色" />
</view> </view>
</view> </view>
...@@ -149,7 +149,7 @@ ...@@ -149,7 +149,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">键盘弹起时,自动上推页面</text> <text class="uni-title-text">键盘弹起时,自动上推页面</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" :adjust-position="true" /> <input class="uni-input" :adjust-position="true" />
</view> </view>
</view> </view>
...@@ -159,7 +159,7 @@ ...@@ -159,7 +159,7 @@
<text class="uni-title-text">input事件</text> <text class="uni-title-text">input事件</text>
<text class="uni-subtitle-text" v-if="inputEventDetail">{{inputEventDetail}}</text> <text class="uni-subtitle-text" v-if="inputEventDetail">{{inputEventDetail}}</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" @input="onInput" /> <input class="uni-input" @input="onInput" />
</view> </view>
</view> </view>
...@@ -169,7 +169,7 @@ ...@@ -169,7 +169,7 @@
<text class="uni-title-text">focus事件和blur事件</text> <text class="uni-title-text">focus事件和blur事件</text>
<text class="uni-subtitle-text" v-if="focusAndBlurEventDetail">{{focusAndBlurEventDetail}}</text> <text class="uni-subtitle-text" v-if="focusAndBlurEventDetail">{{focusAndBlurEventDetail}}</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" @focus="onFocus" @blur="onBlur" /> <input class="uni-input" @focus="onFocus" @blur="onBlur" />
</view> </view>
</view> </view>
...@@ -179,7 +179,7 @@ ...@@ -179,7 +179,7 @@
<text class="uni-title-text">confirm事件</text> <text class="uni-title-text">confirm事件</text>
<text class="uni-subtitle-text" v-if="confirmEventDetail">{{confirmEventDetail}}</text> <text class="uni-subtitle-text" v-if="confirmEventDetail">{{confirmEventDetail}}</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" @confirm="onConfirm" /> <input class="uni-input" @confirm="onConfirm" />
</view> </view>
</view> </view>
...@@ -189,7 +189,7 @@ ...@@ -189,7 +189,7 @@
<text class="uni-title-text">keyboardheightchange事件</text> <text class="uni-title-text">keyboardheightchange事件</text>
<text class="uni-subtitle-text" v-if="keyboardHeightChangeEventDetail">{{keyboardHeightChangeEventDetail}}</text> <text class="uni-subtitle-text" v-if="keyboardHeightChangeEventDetail">{{keyboardHeightChangeEventDetail}}</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" @keyboardheightchange="onKeyborardHeightChange" /> <input class="uni-input" @keyboardheightchange="onKeyborardHeightChange" />
</view> </view>
</view> </view>
...@@ -198,7 +198,7 @@ ...@@ -198,7 +198,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">带清除按钮的输入框</text> <text class="uni-title-text">带清除按钮的输入框</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" placeholder="带清除按钮的输入框" :value="inputClearValue" @input="clearInput" /> <input class="uni-input" placeholder="带清除按钮的输入框" :value="inputClearValue" @input="clearInput" />
<image class="uni-icon" src="/static/icons/clear.png" v-if="showClearIcon" @click="clearIcon"> <image class="uni-icon" src="/static/icons/clear.png" v-if="showClearIcon" @click="clearIcon">
</image> </image>
...@@ -209,7 +209,7 @@ ...@@ -209,7 +209,7 @@
<view class="uni-title"> <view class="uni-title">
<text class="uni-title-text">可查看密码的输入框</text> <text class="uni-title-text">可查看密码的输入框</text>
</view> </view>
<view class="uni-input-wrapper"> <view class="input-wrapper">
<input class="uni-input" placeholder="请输入密码" :password="showPassword" /> <input class="uni-input" placeholder="请输入密码" :password="showPassword" />
<image class="uni-icon" :src="!showPassword ? '/static/icons/eye-active.png' : '/static/icons/eye.png'" @click="changePassword"></image> <image class="uni-icon" :src="!showPassword ? '/static/icons/eye-active.png' : '/static/icons/eye.png'" @click="changePassword"></image>
</view> </view>
...@@ -255,11 +255,11 @@ ...@@ -255,11 +255,11 @@
this.onMaxLengthInputValue = event.detail.value this.onMaxLengthInputValue = event.detail.value
}, },
setCursor: function (cursor : number) { setCursor: function (cursor : number) {
(this.$refs['input'] as Element).focus(); (this.$refs['input'] as UniElement).focus();
this.cursor = cursor; this.cursor = cursor;
}, },
setSelection: function (selectionStart : number, selectionEnd : number) { setSelection: function (selectionStart : number, selectionEnd : number) {
(this.$refs['input2'] as Element).focus(); (this.$refs['input2'] as UniElement).focus();
this.selectionStart = selectionStart; this.selectionStart = selectionStart;
this.selectionEnd = selectionEnd; this.selectionEnd = selectionEnd;
}, },
...@@ -313,7 +313,7 @@ ...@@ -313,7 +313,7 @@
</script> </script>
<style scoped> <style scoped>
.uni-input-wrapper { .input-wrapper {
display: flex; display: flex;
padding: 8px 13px; padding: 8px 13px;
margin: 10rpx 0; margin: 10rpx 0;
......
...@@ -92,7 +92,7 @@ ...@@ -92,7 +92,7 @@
item_change_size_enum(index : number) { this.scrollIntoView = "item---"+index }, item_change_size_enum(index : number) { this.scrollIntoView = "item---"+index },
//自动化测试例专用 //自动化测试例专用
check_scroll_height(): Boolean { check_scroll_height(): Boolean {
var listElement = this.$refs["listview"] as Element var listElement = this.$refs["listview"] as UniElement
console.log("check_scroll_height--"+listElement.scrollHeight) console.log("check_scroll_height--"+listElement.scrollHeight)
if(listElement.scrollHeight > 2000) { if(listElement.scrollHeight > 2000) {
return true return true
...@@ -101,7 +101,7 @@ ...@@ -101,7 +101,7 @@
}, },
//自动化测试例专用 //自动化测试例专用
check_scroll_width(): Boolean { check_scroll_width(): Boolean {
var listElement = this.$refs["listview"] as Element var listElement = this.$refs["listview"] as UniElement
console.log("check_scroll_width"+listElement.scrollWidth) console.log("check_scroll_width"+listElement.scrollWidth)
if(listElement.scrollWidth > 2000) { if(listElement.scrollWidth > 2000) {
return true return true
......
const PAGE_PATH = '/pages/component/mixin-datacom/mixin-datacom' const PAGE_PATH = '/pages/component/mixin-datacom/mixin-datacom'
describe('mixin-datacom', () => { describe('mixin-datacom', () => {
if (process.env.uniTestPlatformInfo.startsWith('web')) {
it('dummyTest', async () => {
expect(1).toBe(1)
})
return
}
let page let page
beforeAll(async () => { beforeAll(async () => {
page = await program.reLaunch(PAGE_PATH) page = await program.reLaunch(PAGE_PATH)
......
...@@ -16,14 +16,14 @@ describe('PickerView.uvue', () => { ...@@ -16,14 +16,14 @@ describe('PickerView.uvue', () => {
const el = await page.$('.picker-view') const el = await page.$('.picker-view')
await page.callMethod('setValue') await page.callMethod('setValue')
await page.waitFor(1000) await page.waitFor(1000)
expect(await el.property('value')).toEqual([0, 0, 0]) expect(await el.attribute('value')).toEqual([0, 0, 0])
if (process.env.UNI_PLATFORM === 'app-android') { if (process.env.UNI_PLATFORM === 'app-android') {
expect(await getData('result')).toEqual([0, 0, 0]) expect(await getData('result')).toEqual([0, 0, 0])
} }
await page.callMethod('setValue1') await page.callMethod('setValue1')
await page.waitFor(1000) await page.waitFor(1000)
expect(await el.property('value')).toEqual([10, 10, 10]) expect(await el.attribute('value')).toEqual([10, 10, 10])
if (process.env.UNI_PLATFORM === 'app-android') { if (process.env.UNI_PLATFORM === 'app-android') {
expect(await getData('result')).toEqual([10, 10, 10]) expect(await getData('result')).toEqual([10, 10, 10])
} }
...@@ -41,20 +41,20 @@ describe('PickerView.uvue', () => { ...@@ -41,20 +41,20 @@ describe('PickerView.uvue', () => {
indicatorStyle: 'height: 100px;', indicatorStyle: 'height: 100px;',
}) })
await page.waitFor(500) await page.waitFor(500)
expect(await el.property('indicatorStyle')).toBe('height: 100px;') expect(await el.attribute('indicatorStyle')).toBe('height: 100px;')
}) })
it('mask-top-style', async () => { it('mask-top-style', async () => {
const el = await page.$('.picker-view') const el = await page.$('.picker-view')
await page.setData({ await page.setData({
maskTopStyle: 'background: #ffffff;', maskTopStyle: 'background: #ffffff;',
}) })
expect(await el.property('mask-top-style')).toBe('background: #ffffff;') expect(await el.attribute('mask-top-style')).toBe('background: #ffffff;')
}) })
it('mask-bottom-style', async () => { it('mask-bottom-style', async () => {
const el = await page.$('.picker-view') const el = await page.$('.picker-view')
await page.setData({ await page.setData({
maskBottomStyle: 'background: #ffffff;', maskBottomStyle: 'background: #ffffff;',
}) })
expect(await el.property('mask-bottom-style')).toBe('background: #ffffff;') expect(await el.attribute('mask-bottom-style')).toBe('background: #ffffff;')
}) })
}) })
...@@ -16,22 +16,22 @@ describe('Progress.uvue', () => { ...@@ -16,22 +16,22 @@ describe('Progress.uvue', () => {
await page.callMethod('setProgress') await page.callMethod('setProgress')
await page.waitFor(1000); await page.waitFor(1000);
const p = await page.$('.p') const p = await page.$('.p')
expect(await p.property('percent')).toEqual(20) expect(await p.attribute('percent')).toEqual(20)
const p1 = await page.$('.p1') const p1 = await page.$('.p1')
expect(await p1.property('percent')).toEqual(40) expect(await p1.attribute('percent')).toEqual(40)
const p2 = await page.$('.p2') const p2 = await page.$('.p2')
expect(await p2.property('percent')).toEqual(60) expect(await p2.attribute('percent')).toEqual(60)
const p3 = await page.$('.p3') const p3 = await page.$('.p3')
expect(await p3.property('percent')).toEqual(80) expect(await p3.attribute('percent')).toEqual(80)
if (process.env.UNI_PLATFORM === 'app-android') { if (process.env.UNI_PLATFORM === 'app-android') {
expect(await getData('curPercent')).toEqual(20) expect(await getData('curPercent')).toEqual(20)
} }
await page.callMethod('clearProgress') await page.callMethod('clearProgress')
await page.waitFor(1000) await page.waitFor(1000)
expect(await p.property('percent')).toEqual(0) expect(await p.attribute('percent')).toEqual(0)
expect(await p1.property('percent')).toEqual(0) expect(await p1.attribute('percent')).toEqual(0)
expect(await p2.property('percent')).toEqual(0) expect(await p2.attribute('percent')).toEqual(0)
expect(await p3.property('percent')).toEqual(0) expect(await p3.attribute('percent')).toEqual(0)
if (process.env.UNI_PLATFORM === 'app-android') { if (process.env.UNI_PLATFORM === 'app-android') {
expect(await getData('curPercent')).toEqual(0) expect(await getData('curPercent')).toEqual(0)
} }
...@@ -42,42 +42,42 @@ describe('Progress.uvue', () => { ...@@ -42,42 +42,42 @@ describe('Progress.uvue', () => {
}) })
it('show-info', async () => { it('show-info', async () => {
const el = await page.$('.p') const el = await page.$('.p')
expect(await el.property('show-info')).toEqual(true) expect(await el.attribute('show-info')).toEqual(true)
await page.setData({ await page.setData({
showInfo: false showInfo: false
}) })
expect(await el.property('show-info')).toEqual(false) expect(await el.attribute('show-info')).toEqual(false)
}) })
it('border-radius', async () => { it('border-radius', async () => {
const el = await page.$('.p') const el = await page.$('.p')
expect(await el.property('border-radius')).toEqual(0) expect(await el.attribute('border-radius')).toEqual(0)
await page.setData({ await page.setData({
borderRadius: 5 borderRadius: 5
}) })
expect(await el.property('border-radius')).toEqual(5) expect(await el.attribute('border-radius')).toEqual(5)
}) })
it('font-size', async () => { it('font-size', async () => {
const el = await page.$('.p') const el = await page.$('.p')
expect(await el.property('font-size')).toEqual(16) expect(await el.attribute('font-size')).toEqual(16)
await page.setData({ await page.setData({
fontSize: 18 fontSize: 18
}) })
expect(await el.property('font-size')).toEqual(18) expect(await el.attribute('font-size')).toEqual(18)
}) })
it('stroke-width', async () => { it('stroke-width', async () => {
const el = await page.$('.p') const el = await page.$('.p')
expect(await el.property('stroke-width')).toEqual(3) expect(await el.attribute('stroke-width')).toEqual(3)
await page.setData({ await page.setData({
strokeWidth: 6 strokeWidth: 6
}) })
expect(await el.property('stroke-width')).toEqual(6) expect(await el.attribute('stroke-width')).toEqual(6)
}) })
it('backgroundColor', async () => { it('backgroundColor', async () => {
const el = await page.$('.p') const el = await page.$('.p')
expect(await el.property('background-color')).toEqual('#EBEBEB') expect(await el.attribute('background-color')).toEqual('#EBEBEB')
await page.setData({ await page.setData({
backgroundColor: "#007aff" backgroundColor: "#007aff"
}) })
expect(await el.property('background-color')).toEqual('#007aff') expect(await el.attribute('background-color')).toEqual('#007aff')
}) })
}) })
\ No newline at end of file
...@@ -40,26 +40,26 @@ describe('Radio.uvue', () => { ...@@ -40,26 +40,26 @@ describe('Radio.uvue', () => {
}) })
it('checked', async () => { it('checked', async () => {
const radio = await page.$('.r') const radio = await page.$('.r')
expect(await radio.property('checked')).toBe(true) expect(await radio.attribute('checked')).toBe(true)
await page.setData({ await page.setData({
checked: false, checked: false,
}) })
expect(await radio.property('checked')).toBe(false) expect(await radio.attribute('checked')).toBe(false)
}) })
it('color', async () => { it('color', async () => {
const radio = await page.$('.r') const radio = await page.$('.r')
expect(await radio.property('color')).toBe('#007aff') expect(await radio.attribute('color')).toBe('#007aff')
await page.setData({ await page.setData({
color: '#63acfc', color: '#63acfc',
}) })
expect(await radio.property('color')).toBe('#63acfc') expect(await radio.attribute('color')).toBe('#63acfc')
}) })
it('disabled', async () => { it('disabled', async () => {
const radio = await page.$('.r2') const radio = await page.$('.r2')
expect(await radio.property('disabled')).toBe(true) expect(await radio.attribute('disabled')).toBe(true)
await page.setData({ await page.setData({
disabled: false, disabled: false,
}) })
expect(await radio.property('disabled')).toBe(false) expect(await radio.attribute('disabled')).toBe(false)
}) })
}) })
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
<!-- 暂时分成两个方向不同的滚动视图,原因为:scroll-x或scroll-y属性一经设置不能动态改变。 --> <!-- 暂时分成两个方向不同的滚动视图,原因为:scroll-x或scroll-y属性一经设置不能动态改变。 -->
<scroll-view v-if="scrollX" :scroll-x="true" :scroll-y="false" :scroll-top="scrollTop" :scroll-left="scrollLeft" <scroll-view v-if="scrollX" :scroll-x="true" :scroll-y="false" :scroll-top="scrollTop" :scroll-left="scrollLeft"
:upper-threshold="upperThreshold" :lower-threshold="lowerThreshold" :scroll-into-view="scrollIntoView" :upper-threshold="upperThreshold" :lower-threshold="lowerThreshold" :scroll-into-view="scrollIntoView"
:enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation" style="flex-direction: row;" :enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation" style="flex-direction: row;width: 100%;height: 100%;"
:show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper" :show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper"
@scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewX" id="scrollViewX"> @scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewX" id="scrollViewX">
<view class="item" :id="'horizontal_'+item.id" v-for="(item,_) in items"> <view class="item" :id="'horizontal_'+item.id" v-for="(item,_) in items">
...@@ -17,7 +17,7 @@ ...@@ -17,7 +17,7 @@
:enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation" :enable-back-to-top="enableBackToTop" :scroll-with-animation="scrollWithAnimation"
:show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper" :show-scrollbar="showScrollbar" :rebound="rebound" @scrolltoupper="scrolltoupper"
@touchmove="onTouchMove" @touchmove="onTouchMove"
@scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewY" id="scrollViewY"> @scrolltolower="scrolltolower" @scroll="scroll" @scrollend="scrollend" ref="scrollViewY" id="scrollViewY" style="width: 100%;height: 100%;">
<view class="item" :id="item.id" v-for="(item,_) in items"> <view class="item" :id="item.id" v-for="(item,_) in items">
<text class="uni-text">{{item.label}}</text> <text class="uni-text">{{item.label}}</text>
</view> </view>
...@@ -184,7 +184,7 @@ ...@@ -184,7 +184,7 @@
checkScrollHeight(): Boolean { checkScrollHeight(): Boolean {
var element = this.$refs["scrollViewY"] var element = this.$refs["scrollViewY"]
if(element != null) { if(element != null) {
var scrollHeight = (element as Element).scrollHeight var scrollHeight = (element as UniElement).scrollHeight
console.log("checkScrollHeight"+scrollHeight) console.log("checkScrollHeight"+scrollHeight)
if(scrollHeight > 1900) { if(scrollHeight > 1900) {
return true return true
...@@ -196,7 +196,7 @@ ...@@ -196,7 +196,7 @@
checkScrollWidth(): Boolean { checkScrollWidth(): Boolean {
var element = this.$refs["scrollViewX"] var element = this.$refs["scrollViewX"]
if(element != null) { if(element != null) {
var scrollWidth = (element as Element).scrollWidth var scrollWidth = (element as UniElement).scrollWidth
console.log("checkScrollWidth---"+scrollWidth) console.log("checkScrollWidth---"+scrollWidth)
if(scrollWidth > 1900) { if(scrollWidth > 1900) {
return true return true
......
...@@ -2,11 +2,11 @@ ...@@ -2,11 +2,11 @@
<view style="flex:1;"> <view style="flex:1;">
<page-head title="下拉刷新的scroll-view属性示例"></page-head> <page-head title="下拉刷新的scroll-view属性示例"></page-head>
<view class="uni-margin-wrap"> <view class="uni-margin-wrap">
<scroll-view :refresher-enabled="refresherEnabled" :refresher-threshold="refresherThreshold" <scroll-view scroll-y="true" :refresher-enabled="refresherEnabled" :refresher-threshold="refresherThreshold"
:refresher-default-style="refresherDefaultStyle" :refresher-background="refresherBackground" :refresher-default-style="refresherDefaultStyle" :refresher-background="refresherBackground"
:refresher-triggered="refresherTriggered" @refresherpulling="refresherpulling" :refresher-triggered="refresherTriggered" @refresherpulling="refresherpulling"
@refresherrefresh="refresherrefresh" @refresherrestore="refresherrestore" @refresherrefresh="refresherrefresh" @refresherrestore="refresherrestore"
@refresherabort="refresherabort"> @refresherabort="refresherabort" style="width: 100%;height: 100%;">
<view class="item" :id="item.id" v-for="(item,_) in items"> <view class="item" :id="item.id" v-for="(item,_) in items">
<text class="uni-text">{{item.label}}</text> <text class="uni-text">{{item.label}}</text>
</view> </view>
......
...@@ -15,12 +15,12 @@ describe('slider', () => { ...@@ -15,12 +15,12 @@ describe('slider', () => {
// TODO 暂时仅获取第一个 // TODO 暂时仅获取第一个
const slider1 = await page.$('.slider') const slider1 = await page.$('.slider')
expect(await slider1.property('value')).toBe(sliderValue) expect(await slider1.attribute('value')).toBe(sliderValue)
// const slider100 = await page.$$('.slider') // const slider100 = await page.$$('.slider')
// for (let i = 0; i < slider100.length; i++) { // for (let i = 0; i < slider100.length; i++) {
// const slider = slider100[i]; // const slider = slider100[i];
// expect(await slider.property('value')).toBe(sliderValue) // expect(await slider.attribute('value')).toBe(sliderValue)
// } // }
}) })
}) })
<template> <template>
<!-- #ifdef APP -->
<scroll-view class="page"> <scroll-view class="page">
<!-- #endif -->
<page-head :title="title"></page-head> <page-head :title="title"></page-head>
<view class="flex-row"> <view class="flex-row">
<view class="flex-fill"> <view class="flex-fill">
...@@ -21,9 +19,7 @@ ...@@ -21,9 +19,7 @@
@change="sliderChange" :value="sliderValue" :block-size="20" :show-value="true" /> @change="sliderChange" :value="sliderValue" :block-size="20" :show-value="true" />
</view> </view>
</view> </view>
<!-- #ifdef APP -->
</scroll-view> </scroll-view>
<!-- #endif -->
</template> </template>
<script> <script>
......
...@@ -15,13 +15,13 @@ describe('slider', () => { ...@@ -15,13 +15,13 @@ describe('slider', () => {
sliderValue: sliderValue, sliderValue: sliderValue,
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await slider.property('value')).toBe(sliderValue) expect(await slider.attribute('value')).toBe(sliderValue)
}) })
it('color', async () => { it('color', async () => {
const slider = await page.$('.slider-custom-color-and-size') const slider = await page.$('.slider-custom-color-and-size')
expect(await slider.property('backgroundColor')).toBe('#000000') expect(await slider.attribute('backgroundColor')).toBe('#000000')
expect(await slider.property('activeColor')).toBe('#FFCC33') expect(await slider.attribute('activeColor')).toBe('#FFCC33')
expect(await slider.property('blockColor')).toBe('#8A6DE9') expect(await slider.attribute('blockColor')).toBe('#8A6DE9')
const backgroundColor = '#008000' const backgroundColor = '#008000'
const activeColor = '#00FF00' const activeColor = '#00FF00'
...@@ -33,19 +33,19 @@ describe('slider', () => { ...@@ -33,19 +33,19 @@ describe('slider', () => {
sliderBlockColor: blockColor, sliderBlockColor: blockColor,
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await slider.property('backgroundColor')).toBe(backgroundColor) expect(await slider.attribute('backgroundColor')).toBe(backgroundColor)
expect(await slider.property('activeColor')).toBe(activeColor) expect(await slider.attribute('activeColor')).toBe(activeColor)
expect(await slider.property('blockColor')).toBe(blockColor) expect(await slider.attribute('blockColor')).toBe(blockColor)
}) })
it('block-size', async () => { it('block-size', async () => {
const slider = await page.$('.slider-custom-color-and-size') const slider = await page.$('.slider-custom-color-and-size')
expect(await slider.property('blockSize')).toBe(20) expect(await slider.attribute('blockSize')).toBe(20)
const blockSize = 18 const blockSize = 18
await page.setData({ await page.setData({
sliderBlockSize: blockSize, sliderBlockSize: blockSize,
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await slider.property('blockSize')).toBe(blockSize) expect(await slider.attribute('blockSize')).toBe(blockSize)
}) })
}) })
\ No newline at end of file
...@@ -37,7 +37,7 @@ ...@@ -37,7 +37,7 @@
}, },
//用于自动化测试 //用于自动化测试
listViewScrollByY(y : number) { listViewScrollByY(y : number) {
const listview = this.$refs["list-view"] as Element const listview = this.$refs["list-view"] as UniElement
listview.scrollBy(0, y) listview.scrollBy(0, y)
}, },
gotoStickyHeader(id : string) { gotoStickyHeader(id : string) {
......
...@@ -39,7 +39,7 @@ describe('test swiper', () => { ...@@ -39,7 +39,7 @@ describe('test swiper', () => {
expect(await getData('currentValChange')).toEqual(1) expect(await getData('currentValChange')).toEqual(1)
await page.waitFor(5000) await page.waitFor(5000)
expect(await getData('currentValChange')).toEqual(2) expect(await getData('currentValChange')).toEqual(2)
await page.waitFor(300)
await page.setData({ await page.setData({
circularSelect: true circularSelect: true
}) })
...@@ -50,6 +50,7 @@ describe('test swiper', () => { ...@@ -50,6 +50,7 @@ describe('test swiper', () => {
circularSelect: false, circularSelect: false,
autoplaySelect: false autoplaySelect: false
}) })
await page.waitFor(300)
}); });
......
...@@ -198,7 +198,6 @@ ...@@ -198,7 +198,6 @@
.uni-margin-wrap { .uni-margin-wrap {
width: 690rpx; width: 690rpx;
width: 100%; width: 100%;
;
} }
.swiper { .swiper {
......
...@@ -29,17 +29,17 @@ describe('switch', () => { ...@@ -29,17 +29,17 @@ describe('switch', () => {
checked: false, checked: false,
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await switch_element.property('checked')).toBe(false) expect(await switch_element.attribute('checked')).toBe(false)
await page.setData({ await page.setData({
checked: true, checked: true,
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await switch_element.property('checked')).toBe(true) expect(await switch_element.attribute('checked')).toBe(true)
}) })
it('color', async () => { it('color', async () => {
const switch_element = await page.$('.switch-color') const switch_element = await page.$('.switch-color')
expect(await switch_element.property('color')).toBe('#FFCC33') expect(await switch_element.attribute('color')).toBe('#FFCC33')
const color = '#00ff00' const color = '#00ff00'
...@@ -47,6 +47,6 @@ describe('switch', () => { ...@@ -47,6 +47,6 @@ describe('switch', () => {
color: color color: color
}) })
await page.waitFor(100) await page.waitFor(100)
expect(await switch_element.property('color')).toBe(color) expect(await switch_element.attribute('color')).toBe(color)
}) })
}) })
\ No newline at end of file
...@@ -12,12 +12,12 @@ describe('component-native-textarea', () => { ...@@ -12,12 +12,12 @@ describe('component-native-textarea', () => {
}); });
it('focus', async () => { it('focus', async () => {
expect(await textarea.property("focus")).toBe("false") expect(await textarea.attribute("focus")).toBe("false")
await page.setData({ await page.setData({
focus_boolean: true, focus_boolean: true,
}) })
await page.waitFor(500) await page.waitFor(500)
expect(await textarea.property("focus")).toBe("true") expect(await textarea.attribute("focus")).toBe("true")
}); });
/* it("auto-height", async () => { /* it("auto-height", async () => {
await page.setData({ await page.setData({
...@@ -66,7 +66,7 @@ describe('component-native-textarea', () => { ...@@ -66,7 +66,7 @@ describe('component-native-textarea', () => {
cursor_color: "transparent", cursor_color: "transparent",
}) })
await page.waitFor(500) await page.waitFor(500)
expect(await textarea.property("cursor-color")).toBe("transparent") expect(await textarea.attribute("cursor-color")).toBe("transparent")
}) })
it("inputmode", async () => { it("inputmode", async () => {
...@@ -76,7 +76,7 @@ describe('component-native-textarea', () => { ...@@ -76,7 +76,7 @@ describe('component-native-textarea', () => {
console.log(x['value'], x['name']) console.log(x['value'], x['name'])
await page.callMethod("radio_change_inputmode_enum", x['value']); await page.callMethod("radio_change_inputmode_enum", x['value']);
await page.waitFor(500) await page.waitFor(500)
expect(await textarea.property("inputmode")).toEqual(x['name']) expect(await textarea.attribute("inputmode")).toEqual(x['name'])
await page.waitFor(500) await page.waitFor(500)
} }
}) })
......
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
return { return {
title: 'video-format', title: 'video-format',
supportFormats: [ supportFormats: [
// TODO web本地运行时本地服务返回的content-type不对,导致本地视频无法播放。此外web端原生video不支持flv、m3u8、avi格式,但是和app端相比多了ogg格式的支持
{ {
format: 'mp4', format: 'mp4',
src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.mp4' src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.mp4'
...@@ -47,6 +48,7 @@ ...@@ -47,6 +48,7 @@
format: '3gp', format: '3gp',
src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.3gp' src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.3gp'
}, },
// #ifndef WEB
{ {
format: 'flv', format: 'flv',
src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.flv' src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.flv'
...@@ -59,16 +61,19 @@ ...@@ -59,16 +61,19 @@
format: '本地m3u8', format: '本地m3u8',
src: '/static/test-video/2minute-demo.m3u8' src: '/static/test-video/2minute-demo.m3u8'
}, },
// #endif
{ {
format: '错误路径', format: '错误路径',
src: 'https://www.dcloud.net.cn/errorpath.mp4' src: 'https://www.dcloud.net.cn/errorpath.mp4'
}, },
] as Array<VideoFormat>, ] as Array<VideoFormat>,
notSupportFormats: [ notSupportFormats: [
// #ifndef WEB
{ {
format: 'ogg', format: 'ogg',
src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.ogg' src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.ogg'
}, },
// #endif
{ {
format: 'avi', format: 'avi',
src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.avi' src: 'https://qiniu-web-assets.dcloud.net.cn/video/sample/2minute-demo.avi'
...@@ -79,7 +84,7 @@ ...@@ -79,7 +84,7 @@
}, },
methods: { methods: {
onError: function (format: string, e : VideoErrorEvent) { onError: function (format: string, e : VideoErrorEvent) {
console.log(format + ":" + e.detail); console.log(format + ":" + JSON.stringify(e));
if (format != "错误路径") { if (format != "错误路径") {
this.isError = true; this.isError = true;
} }
......
// uni-app自动化测试教程: uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/ // uni-app自动化测试教程: uni-app自动化测试教程: https://uniapp.dcloud.net.cn/worktile/auto/hbuilderx-extension/
jest.setTimeout(10000); jest.setTimeout(20000);
describe('component-native-video', () => { describe('component-native-video', () => {
let page; let page;
beforeAll(async () => { beforeAll(async () => {
page = await program.reLaunch('/pages/component/video/video'); page = await program.reLaunch('/pages/component/video/video');
await page.waitFor('video'); await page.waitFor('video');
await page.waitFor(300)
}); });
it('test API', async () => { it('test API', async () => {
......
...@@ -220,6 +220,11 @@ ...@@ -220,6 +220,11 @@
isFullScreen: false isFullScreen: false
} }
}, },
onLoad() {
// #ifdef WEB
this.muted = true // web端非静音视频不可自动播放
// #endif
},
methods: { methods: {
// API // API
play: function () { play: function () {
...@@ -228,7 +233,7 @@ ...@@ -228,7 +233,7 @@
}, },
pause: function () { pause: function () {
console.log("pause"); console.log("pause");
(uni.getElementById("video") as UniVideoElement).pause(); //as写法测试。注意id不对时as会崩溃 (uni.getElementById("video") as unknown as UniVideoElement).pause(); //as写法测试。注意id不对时as会崩溃
// this.videoContext?.pause(); // this.videoContext?.pause();
}, },
seek: function (pos : number) { seek: function (pos : number) {
......
...@@ -37,7 +37,10 @@ ...@@ -37,7 +37,10 @@
} }
}, },
onReady() { onReady() {
// #ifdef APP
// TODO web 实现createWebviewContext
this.webviewContext = uni.createWebviewContext('web-view', this) this.webviewContext = uni.createWebviewContext('web-view', this)
// #endif
}, },
methods: { methods: {
back() { back() {
......
...@@ -66,6 +66,10 @@ ...@@ -66,6 +66,10 @@
{ {
name: 'getCurrentPages', name: 'getCurrentPages',
url: 'get-current-pages', url: 'get-current-pages',
},
{
name: 'globalProperties',
url: 'globalProperties',
} }
] as Page[], ] as Page[],
}, },
...@@ -154,11 +158,11 @@ ...@@ -154,11 +158,11 @@
{ {
name: 'element draw', name: 'element draw',
url: 'element-draw', url: 'element-draw',
api: ["Element.getDrawableContext"] api: ["UniElement.getDrawableContext"]
},{ },{
name: 'element截图', name: 'element截图',
url: 'element-takesnapshot', url: 'element-takesnapshot',
api: ["Element.takeSnapshot"] api: ["UniElement.takeSnapshot"]
}, },
{ {
name: 'node节点', name: 'node节点',
...@@ -518,10 +522,10 @@ ...@@ -518,10 +522,10 @@
}) })
}, },
showPop: function () { showPop: function () {
(this.$refs["pop"] as Element).style.setProperty("display", "flex") (this.$refs["pop"] as UniElement).style.setProperty("display", "flex")
}, },
hidePop: function () { hidePop: function () {
(this.$refs["pop"] as Element).style.setProperty("display", "none") (this.$refs["pop"] as UniElement).style.setProperty("display", "none")
}, },
stopClickPop: function (e : MouseEvent) { stopClickPop: function (e : MouseEvent) {
e.stopPropagation() //点击到pop的非灰色区域,拦截点击事件 e.stopPropagation() //点击到pop的非灰色区域,拦截点击事件
......
...@@ -93,9 +93,12 @@ export default { ...@@ -93,9 +93,12 @@ export default {
enable: false enable: false
}, },
*/ */
// #ifdef APP
// TODO web 实现list-view
{ {
name: 'list-view', name: 'list-view',
}, },
// #endif
{ {
name: 'sticky-header', name: 'sticky-header',
}, },
......
...@@ -70,7 +70,7 @@ export default { ...@@ -70,7 +70,7 @@ export default {
// 触发整个日历的点击事件,需要计算点击位置 // 触发整个日历的点击事件,需要计算点击位置
select (event: TouchEvent) { select (event: TouchEvent) {
const refs = this.$refs['draw-weeks'] as Element const refs = this.$refs['draw-weeks'] as UniElement
const rect = refs.getBoundingClientRect(); const rect = refs.getBoundingClientRect();
const dom_x = rect.left; // 元素左上角相对于视口的 X 坐标 const dom_x = rect.left; // 元素左上角相对于视口的 X 坐标
const dom_y = rect.top; // 元素左上角相对于视口的 Y 坐标 const dom_y = rect.top; // 元素左上角相对于视口的 Y 坐标
...@@ -144,7 +144,7 @@ export default { ...@@ -144,7 +144,7 @@ export default {
// 绘制日历顶部信息 // 绘制日历顶部信息
drawHeader () { drawHeader () {
const refs = this.$refs['draw-header'] as Element const refs = this.$refs['draw-header'] as UniElement
let ctx = refs.getDrawableContext() let ctx = refs.getDrawableContext()
if (ctx == null) return if (ctx == null) return
const date_header_map = ['一', '二', '三', '四', '五', '六', '日'] const date_header_map = ['一', '二', '三', '四', '五', '六', '日']
...@@ -172,7 +172,7 @@ export default { ...@@ -172,7 +172,7 @@ export default {
// 绘制日历主体 // 绘制日历主体
drawWeek (weeks: Array<Array<DateType>>, time: string) { drawWeek (weeks: Array<Array<DateType>>, time: string) {
const start_time = Date.now() const start_time = Date.now()
const refs = this.$refs['draw-weeks'] as Element const refs = this.$refs['draw-weeks'] as UniElement
let ctx = refs.getDrawableContext() let ctx = refs.getDrawableContext()
if (ctx == null) return if (ctx == null) return
const dom = refs.getBoundingClientRect() const dom = refs.getBoundingClientRect()
......
...@@ -35,7 +35,7 @@ ...@@ -35,7 +35,7 @@
uni.$emit('tabchange', e.detail.scrollTop) uni.$emit('tabchange', e.detail.scrollTop)
}, },
scrollTop(top : number) { scrollTop(top : number) {
(this.$refs["listView"] as Element).scrollTop = top (this.$refs["listView"] as UniElement).scrollTop = top
} }
} }
} }
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
}, },
onReady() { onReady() {
this.setSelectedIndex(0) this.setSelectedIndex(0)
this.$tabViewHeight = (this.$refs["tabview"] as Element).getBoundingClientRect().height this.$tabViewHeight = (this.$refs["tabview"] as UniElement).getBoundingClientRect().height
}, },
onUnload() { onUnload() {
uni.$off('tabchange', this.onTabPageEvent) uni.$off('tabchange', this.onTabPageEvent)
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
export default { export default {
data() { data() {
return { return {
$elementMap: new Map<string, Element>(), $elementMap: new Map<string, UniElement>(),
x: 0 as number, x: 0 as number,
y: 0 as number, y: 0 as number,
// 飘走的卡片计数 // 飘走的卡片计数
...@@ -78,12 +78,12 @@ ...@@ -78,12 +78,12 @@
this.setElementStyle('card', 'margin-top', screenHeight * 0.15 - 30 * _index + 'px'); this.setElementStyle('card', 'margin-top', screenHeight * 0.15 - 30 * _index + 'px');
this.setElementStyle('card', 'transform', 'scale(' + (0.9 + 0.05 * _index) + ')') this.setElementStyle('card', 'transform', 'scale(' + (0.9 + 0.05 * _index) + ')')
}, },
// 工具方法,用于快速设置 Element 的 style // 工具方法,用于快速设置 UniElement 的 style
setElementStyle(refName : string, propertyName : string, propertyStyle : any) : void { setElementStyle(refName : string, propertyName : string, propertyStyle : any) : void {
const elementMap = this.$data['$elementMap'] as Map<string, Element> const elementMap = this.$data['$elementMap'] as Map<string, UniElement>
let element : Element | null = elementMap.get(refName) let element : UniElement | null = elementMap.get(refName)
if (element == null) { if (element == null) {
element = this.$refs[refName] as Element; element = this.$refs[refName] as UniElement;
elementMap.set(refName, element) elementMap.set(refName, element)
} else { } else {
// console.log('直接拿'); // console.log('直接拿');
......
...@@ -28,8 +28,8 @@ ...@@ -28,8 +28,8 @@
lastY: 0, //上次 lastY: 0, //上次
lastY2: 0, // lastY2: 0, //
bAnimation: false, //是否动画 bAnimation: false, //是否动画
halfNode: null as Element | null, halfNode: null as UniElement | null,
scrollNode: null as Element | null scrollNode: null as UniElement | null
} }
}, },
methods: { methods: {
......
...@@ -79,21 +79,21 @@ ...@@ -79,21 +79,21 @@
} as SwiperViewItem } as SwiperViewItem
] as SwiperViewItem[], ] as SwiperViewItem[],
swiperIndex: -1, swiperIndex: -1,
$pageScrollView: null as null | Element, $pageScrollView: null as null | UniElement,
$headerHeight: 0, $headerHeight: 0,
$animationFinishIndex: 0, $animationFinishIndex: 0,
$tabScrollView: null as null | Element, $tabScrollView: null as null | UniElement,
$indicatorNode: null as null | Element, $indicatorNode: null as null | UniElement,
$swiperWidth: 0, $swiperWidth: 0,
$swiperTabsRect: [] as SwiperTabsItem[] $swiperTabsRect: [] as SwiperTabsItem[]
} }
}, },
onReady() { onReady() {
this.$pageScrollView = this.$refs['pageScrollView'] as Element; this.$pageScrollView = this.$refs['pageScrollView'] as UniElement;
this.$headerHeight = (this.$refs['header'] as Element).offsetHeight this.$headerHeight = (this.$refs['header'] as UniElement).offsetHeight
this.$swiperWidth = (this.$refs['swiper'] as Element).getBoundingClientRect().width this.$swiperWidth = (this.$refs['swiper'] as UniElement).getBoundingClientRect().width
this.$tabScrollView = this.$refs['tabScroll'] as Element this.$tabScrollView = this.$refs['tabScroll'] as UniElement
this.$indicatorNode = this.$refs['indicator'] as Element this.$indicatorNode = this.$refs['indicator'] as UniElement
this.cacheTabItemsSize() this.cacheTabItemsSize()
this.setSwiperIndex(0, true) this.setSwiperIndex(0, true)
}, },
...@@ -173,7 +173,7 @@ ...@@ -173,7 +173,7 @@
}, },
cacheTabItemsSize() { cacheTabItemsSize() {
this.$swiperTabsRect.length = 0 this.$swiperTabsRect.length = 0
const tabs = this.$refs["swipertab"] as Element[] const tabs = this.$refs["swipertab"] as UniElement[]
tabs.forEach((node) => { tabs.forEach((node) => {
this.$swiperTabsRect.push({ this.$swiperTabsRect.push({
x: node.offsetLeft, x: node.offsetLeft,
......
...@@ -89,22 +89,22 @@ ...@@ -89,22 +89,22 @@
} as SwiperViewItem } as SwiperViewItem
] as SwiperViewItem[], ] as SwiperViewItem[],
swiperIndex: -1, swiperIndex: -1,
$pageScrollView: null as null | Element, $pageScrollView: null as null | UniElement,
$headerHeight: 0, $headerHeight: 0,
$animationFinishIndex: 0, $animationFinishIndex: 0,
$tabScrollView: null as null | Element, $tabScrollView: null as null | UniElement,
$indicatorNode: null as null | Element, $indicatorNode: null as null | UniElement,
$swiperWidth: 0, $swiperWidth: 0,
$swiperTabsRect: [] as SwiperTabsItem[], $swiperTabsRect: [] as SwiperTabsItem[],
nestedScrollChildId: "" nestedScrollChildId: ""
} }
}, },
onReady() { onReady() {
this.$pageScrollView = this.$refs['pageScrollView'] as Element; this.$pageScrollView = this.$refs['pageScrollView'] as UniElement;
this.$headerHeight = (this.$refs['header'] as Element).offsetHeight this.$headerHeight = (this.$refs['header'] as UniElement).offsetHeight
this.$swiperWidth = (this.$refs['swiper'] as Element).getBoundingClientRect().width this.$swiperWidth = (this.$refs['swiper'] as UniElement).getBoundingClientRect().width
this.$tabScrollView = this.$refs['tabScroll'] as Element this.$tabScrollView = this.$refs['tabScroll'] as UniElement
this.$indicatorNode = this.$refs['indicator'] as Element this.$indicatorNode = this.$refs['indicator'] as UniElement
this.cacheTabItemsSize() this.cacheTabItemsSize()
this.setSwiperIndex(0, true) this.setSwiperIndex(0, true)
}, },
...@@ -176,7 +176,7 @@ ...@@ -176,7 +176,7 @@
}, },
cacheTabItemsSize() { cacheTabItemsSize() {
this.$swiperTabsRect.length = 0 this.$swiperTabsRect.length = 0
const tabs = this.$refs["swipertab"] as Element[] const tabs = this.$refs["swipertab"] as UniElement[]
tabs.forEach((node) => { tabs.forEach((node) => {
this.$swiperTabsRect.push({ this.$swiperTabsRect.push({
x: node.offsetLeft, x: node.offsetLeft,
......
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
export default { export default {
data() { data() {
return { return {
$elementMap: new Map<string, Element>() $elementMap: new Map<string, UniElement>()
} }
}, },
methods: { methods: {
...@@ -60,12 +60,12 @@ ...@@ -60,12 +60,12 @@
this.setElementStyle("head-img-1", 'transform', `scale(${pullingDistance / 200 + 1})`) this.setElementStyle("head-img-1", 'transform', `scale(${pullingDistance / 200 + 1})`)
this.setElementStyle("head-img-2", 'transform', `scale(${pullingDistance / 200 + 1})`) this.setElementStyle("head-img-2", 'transform', `scale(${pullingDistance / 200 + 1})`)
}, },
// 工具方法,用于快速设置 Element 的 style // 工具方法,用于快速设置 UniElement 的 style
setElementStyle(refName : string, propertyName : string, propertyStyle : any) : void { setElementStyle(refName : string, propertyName : string, propertyStyle : any) : void {
let element : Element | null = (this.$data['$elementMap'] as Map<string, Element>).get(refName) let element : UniElement | null = (this.$data['$elementMap'] as Map<string, UniElement>).get(refName)
if (element == null) { if (element == null) {
element = this.$refs[refName] as Element; element = this.$refs[refName] as UniElement;
(this.$data['$elementMap'] as Map<string, Element>).set(refName, element) (this.$data['$elementMap'] as Map<string, UniElement>).set(refName, element)
} }
element.style.setProperty(propertyName, propertyStyle); element.style.setProperty(propertyName, propertyStyle);
}, },
......
...@@ -41,17 +41,17 @@ ...@@ -41,17 +41,17 @@
statusBarHeight: 35, statusBarHeight: 35,
scrollTop: 0, scrollTop: 0,
searchWidth: 700, searchWidth: 700,
searchNode: null as Element | null, searchNode: null as UniElement | null,
boxNode: null as Element | null, boxNode: null as UniElement | null,
navNode: null as Element | null navNode: null as UniElement | null
} }
}, },
onLoad() { }, onLoad() { },
onReady() { onReady() {
this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight ?? 35; this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight ?? 35;
this.searchNode = this.$refs['search'] as Element; this.searchNode = this.$refs['search'] as UniElement;
this.boxNode = this.$refs['top-box'] as Element; this.boxNode = this.$refs['top-box'] as UniElement;
this.navNode = this.$refs['scroll-fold-nav'] as Element; this.navNode = this.$refs['scroll-fold-nav'] as UniElement;
}, },
methods: { methods: {
onScroll(e : ScrollEvent) { onScroll(e : ScrollEvent) {
......
...@@ -34,7 +34,7 @@ ...@@ -34,7 +34,7 @@
stickyTop: 0, stickyTop: 0,
stickyTran: 0, stickyTran: 0,
scrollTop: 0, scrollTop: 0,
stickyNode: null as Element | null stickyNode: null as UniElement | null
} }
}, },
methods: { methods: {
...@@ -67,11 +67,11 @@ ...@@ -67,11 +67,11 @@
onLoad() { onLoad() {
}, },
onReady() { onReady() {
this.stickyNode = this.$refs['sticky'] as Element; this.stickyNode = this.$refs['sticky'] as UniElement;
// let rect = this.stickyNode?.getBoundingClientRect(); // let rect = this.stickyNode?.getBoundingClientRect();
// this.stickyTop = rect?.top; // this.stickyTop = rect?.top;
//this.stickyTop = this.stickyNode?.getBoundingClientRect()?.top; //this.stickyTop = this.stickyNode?.getBoundingClientRect()?.top;
let rect = (this.$refs['sticky'] as Element).getBoundingClientRect(); let rect = (this.$refs['sticky'] as UniElement).getBoundingClientRect();
this.stickyTop = rect.top; this.stickyTop = rect.top;
} }
} }
......
...@@ -46,8 +46,8 @@ ...@@ -46,8 +46,8 @@
return { return {
swiperList: [] as SwiperViewItem[], swiperList: [] as SwiperViewItem[],
swiperIndex: -1, swiperIndex: -1,
$tabScrollView: null as null | Element, $tabScrollView: null as null | UniElement,
$indicatorNode: null as null | Element, $indicatorNode: null as null | UniElement,
$animationFinishIndex: 0, $animationFinishIndex: 0,
$swiperWidth: 0, $swiperWidth: 0,
$swiperTabsRect: [] as SwiperTabsItem[] $swiperTabsRect: [] as SwiperTabsItem[]
...@@ -63,9 +63,9 @@ ...@@ -63,9 +63,9 @@
} }
}, },
onReady() { onReady() {
this.$tabScrollView = this.$refs['tabScroll'] as Element this.$tabScrollView = this.$refs['tabScroll'] as UniElement
this.$indicatorNode = this.$refs['indicator'] as Element this.$indicatorNode = this.$refs['indicator'] as UniElement
this.$swiperWidth = (this.$refs["swiper"] as Element).getBoundingClientRect().width this.$swiperWidth = (this.$refs["swiper"] as UniElement).getBoundingClientRect().width
this.cacheTabItemsSize() this.cacheTabItemsSize()
this.setSwiperIndex(0, true) this.setSwiperIndex(0, true)
}, },
...@@ -119,7 +119,7 @@ ...@@ -119,7 +119,7 @@
*/ */
cacheTabItemsSize() { cacheTabItemsSize() {
this.$swiperTabsRect.length = 0; this.$swiperTabsRect.length = 0;
const tabs = this.$refs["swipertab"] as Element[] const tabs = this.$refs["swipertab"] as UniElement[]
tabs.forEach((node) => { tabs.forEach((node) => {
this.$swiperTabsRect.push({ this.$swiperTabsRect.push({
x: node.offsetLeft, x: node.offsetLeft,
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
return { return {
swiperList: [] as SwiperViewItem[], swiperList: [] as SwiperViewItem[],
swiperIndex: -1, swiperIndex: -1,
$tabScrollView: null as null | Element, $tabScrollView: null as null | UniElement,
$animationFinishIndex: 0, $animationFinishIndex: 0,
$swiperWidth: 0 $swiperWidth: 0
} }
...@@ -53,8 +53,8 @@ ...@@ -53,8 +53,8 @@
} }
}, },
onReady() { onReady() {
this.$tabScrollView = this.$refs['tabScroll'] as Element this.$tabScrollView = this.$refs['tabScroll'] as UniElement
this.$swiperWidth = (this.$refs["swiper"] as Element).getBoundingClientRect().width this.$swiperWidth = (this.$refs["swiper"] as UniElement).getBoundingClientRect().width
this.setSwiperIndex(0, true) this.setSwiperIndex(0, true)
}, },
methods: { methods: {
...@@ -108,7 +108,7 @@ ...@@ -108,7 +108,7 @@
const min_ratio = 1 const min_ratio = 1
const max_ratio = 1.3 const max_ratio = 1.3
const tabs = this.$refs['swipertab'] as Element[] const tabs = this.$refs['swipertab'] as UniElement[]
const current_node = tabs[current_index]! const current_node = tabs[current_index]!
const move_to_node = tabs[move_to_index]! const move_to_node = tabs[move_to_index]!
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册