@tarojs/plugin-platform-harmony-ets 4.0.0-alpha.0 → 4.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apis/base/system.ts +73 -20
- package/dist/apis/canvas/index.ts +10 -1
- package/dist/apis/device/clipboard.ts +16 -8
- package/dist/apis/device/memory.ts +10 -3
- package/dist/apis/framework/index.ts +1 -5
- package/dist/apis/index.ts +27 -17
- package/dist/apis/media/image/index.ts +1 -1
- package/dist/apis/media/video/VideoContext.ts +56 -7
- package/dist/apis/media/video/index.ts +3 -2
- package/dist/apis/network/request.ts +5 -5
- package/dist/apis/route/index.ts +15 -0
- package/dist/apis/storage/index.ts +146 -78
- package/dist/apis/ui/animation/animation.ts +71 -29
- package/dist/apis/ui/background.ts +2 -1
- package/dist/apis/ui/interaction/index.ts +42 -59
- package/dist/apis/ui/navigation-bar/index.ts +1 -1
- package/dist/apis/ui/pull-down-refresh.ts +9 -3
- package/dist/apis/ui/scroll/index.ts +5 -5
- package/dist/apis/ui/tab-bar.ts +3 -3
- package/dist/apis/utils/index.ts +1 -1
- package/dist/apis/wxml/IntersectionObserver.ts +18 -10
- package/dist/apis/wxml/index.ts +2 -0
- package/dist/apis/wxml/selectorQuery.ts +26 -13
- package/dist/components-harmony-ets/button.ets +68 -68
- package/dist/components-harmony-ets/canvas.ets +51 -0
- package/dist/components-harmony-ets/checkbox.ets +81 -102
- package/dist/components-harmony-ets/form.ets +54 -45
- package/dist/components-harmony-ets/icon.ets +34 -50
- package/dist/components-harmony-ets/image.ets +35 -45
- package/dist/components-harmony-ets/index.ets +92 -0
- package/dist/components-harmony-ets/innerHtml.ets +11 -6
- package/dist/components-harmony-ets/input.ets +51 -67
- package/dist/components-harmony-ets/label.ets +73 -53
- package/dist/components-harmony-ets/listView.ets +26 -0
- package/dist/components-harmony-ets/movableArea.ets +124 -0
- package/dist/components-harmony-ets/movableView.ets +93 -0
- package/dist/components-harmony-ets/navigationBar.ets +65 -0
- package/dist/components-harmony-ets/pageMeta.ets +94 -0
- package/dist/components-harmony-ets/picker.ets +74 -77
- package/dist/components-harmony-ets/progress.ets +52 -0
- package/dist/components-harmony-ets/pseudo.ets +80 -0
- package/dist/components-harmony-ets/radio.ets +82 -104
- package/dist/components-harmony-ets/richText.ets +20 -68
- package/dist/components-harmony-ets/scrollList.ets +94 -0
- package/dist/components-harmony-ets/scrollView.ets +67 -103
- package/dist/components-harmony-ets/slider.ets +23 -47
- package/dist/components-harmony-ets/stickySection.ets +42 -0
- package/dist/components-harmony-ets/style.ets +396 -0
- package/dist/components-harmony-ets/swiper.ets +64 -53
- package/dist/components-harmony-ets/switch.ets +44 -55
- package/dist/components-harmony-ets/{index.ts → tag.ts} +6 -0
- package/dist/components-harmony-ets/text.ets +134 -75
- package/dist/components-harmony-ets/textArea.ets +54 -62
- package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
- package/dist/components-harmony-ets/utils/DynamicCenter.ts +4 -13
- package/dist/components-harmony-ets/utils/flexManager.ets +76 -8
- package/dist/components-harmony-ets/utils/helper.ets +20 -7
- package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
- package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
- package/dist/components-harmony-ets/utils/index.ts +54 -50
- package/dist/components-harmony-ets/utils/styles.ets +178 -63
- package/dist/components-harmony-ets/video.ets +37 -54
- package/dist/components-harmony-ets/view.ets +63 -94
- package/dist/components-harmony-ets/webView.ets +56 -0
- package/dist/index.d.ts +152 -0
- package/dist/index.js +199 -58
- package/dist/index.js.map +1 -1
- package/dist/runtime-ets/bom/document.ts +6 -4
- package/dist/runtime-ets/bom/getComputedStyle.ts +2 -2
- package/dist/runtime-ets/bom/window.ts +9 -2
- package/dist/runtime-ets/current.ts +3 -0
- package/dist/runtime-ets/dom/bind.ts +28 -12
- package/dist/runtime-ets/dom/class-list.ts +2 -2
- package/dist/runtime-ets/dom/cssNesting.ts +409 -0
- package/dist/runtime-ets/dom/cssStyleDeclaration.ts +29 -19
- package/dist/runtime-ets/dom/document.ts +22 -8
- package/dist/runtime-ets/dom/element/canvas.ts +136 -0
- package/dist/runtime-ets/dom/element/element.ts +334 -57
- package/dist/runtime-ets/dom/element/form.ts +32 -26
- package/dist/runtime-ets/dom/element/index.ts +33 -2
- package/dist/runtime-ets/dom/element/movableArea.ts +11 -0
- package/dist/runtime-ets/dom/element/movableView.ts +242 -0
- package/dist/runtime-ets/dom/element/normal.ts +36 -8
- package/dist/runtime-ets/dom/element/progress.ts +11 -0
- package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
- package/dist/runtime-ets/dom/element/text.ts +1 -8
- package/dist/runtime-ets/dom/element/video.ts +5 -4
- package/dist/runtime-ets/dom/element/webView.ts +68 -0
- package/dist/runtime-ets/dom/event.ts +2 -4
- package/dist/runtime-ets/dom/eventTarget.ts +2 -3
- package/dist/runtime-ets/dom/node.ts +62 -27
- package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +805 -0
- package/dist/runtime-ets/dom/stylesheet/index.ts +98 -518
- package/dist/runtime-ets/dom/stylesheet/type.ts +92 -17
- package/dist/runtime-ets/dom/stylesheet/util.ts +74 -16
- package/dist/runtime-ets/index.ts +2 -2
- package/dist/runtime-ets/interface/event.ts +3 -2
- package/dist/runtime-ets/utils/index.ts +77 -12
- package/dist/runtime-ets/utils/info.ts +4 -2
- package/dist/runtime-framework/react/app.ts +17 -22
- package/dist/runtime-framework/react/hooks.ts +3 -4
- package/dist/runtime-framework/react/index.ts +1 -2
- package/dist/runtime-framework/react/native-page.ts +421 -0
- package/dist/runtime-framework/react/page.ts +4 -9
- package/dist/runtime-framework/solid/app.ts +25 -45
- package/dist/runtime-framework/solid/connect.ts +21 -3
- package/dist/runtime-framework/solid/hooks.ts +17 -12
- package/dist/runtime-framework/solid/index.ts +6 -2
- package/dist/runtime-framework/solid/page.ts +84 -30
- package/dist/runtime-framework/solid/reconciler/props.ts +70 -25
- package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
- package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
- package/dist/runtime-framework/solid/utils/index.ts +0 -2
- package/dist/runtime-utils.d.ts +827 -0
- package/dist/runtime-utils.js +510 -237
- package/dist/runtime-utils.js.map +1 -1
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.js +510 -237
- package/dist/runtime.js.map +1 -1
- package/index.js +3 -1
- package/package.json +14 -15
- package/static/media/cancel.svg +1 -0
- package/static/media/circle.svg +1 -0
- package/static/media/clear.svg +1 -0
- package/static/media/download.svg +1 -0
- package/static/media/info.svg +1 -0
- package/static/media/info_circle.svg +1 -0
- package/static/media/search.svg +1 -0
- package/static/media/success.svg +1 -0
- package/static/media/success_no_circle.svg +1 -0
- package/static/media/taro_arrow_left.svg +1 -0
- package/static/media/taro_home.svg +1 -0
- package/static/media/waiting.svg +1 -0
- package/static/media/warn.svg +1 -0
- package/types/harmony.d.ts +4 -0
- package/types/index.d.ts +4 -0
- package/types/runtime.d.ts +3 -1
- package/dist/runtime-ets/utils/bind.ts +0 -24
- /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
import { Current } from '@tarojs/runtime'
|
|
2
2
|
|
|
3
|
-
import { callAsyncSuccess } from '../utils'
|
|
3
|
+
import { callAsyncFail, callAsyncSuccess } from '../utils'
|
|
4
4
|
|
|
5
5
|
import type Taro from '@tarojs/taro/types'
|
|
6
6
|
|
|
7
7
|
export const startPullDownRefresh: typeof Taro.startPullDownRefresh = function (options) {
|
|
8
|
-
return new Promise(resolve => {
|
|
8
|
+
return new Promise((resolve, reject) => {
|
|
9
9
|
const taro = (Current as any).taro
|
|
10
10
|
const page = taro.getCurrentInstance().page
|
|
11
11
|
|
|
12
|
+
if (!page) {
|
|
13
|
+
return callAsyncFail(reject, { errMsg: 'stopPullDownRefresh:fail' }, options)
|
|
14
|
+
}
|
|
12
15
|
if (page.isRefreshing instanceof Array) {
|
|
13
16
|
const index = page.tabBarCurrentIndex || 0
|
|
14
17
|
page.isRefreshing[index] = true
|
|
@@ -23,10 +26,13 @@ export const startPullDownRefresh: typeof Taro.startPullDownRefresh = function (
|
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
export const stopPullDownRefresh: typeof Taro.stopPullDownRefresh = function (options) {
|
|
26
|
-
return new Promise(resolve => {
|
|
29
|
+
return new Promise((resolve, reject) => {
|
|
27
30
|
const taro = (Current as any).taro
|
|
28
31
|
const page = taro.getCurrentInstance().page
|
|
29
32
|
|
|
33
|
+
if (!page) {
|
|
34
|
+
return callAsyncFail(reject, { errMsg: 'stopPullDownRefresh:fail' }, options)
|
|
35
|
+
}
|
|
30
36
|
if (page.isRefreshing instanceof Array) {
|
|
31
37
|
const index = page.tabBarCurrentIndex || 0
|
|
32
38
|
page.isRefreshing[index] = false
|
|
@@ -34,8 +34,8 @@ export const pageScrollTo: typeof Taro.pageScrollTo = (options) => {
|
|
|
34
34
|
const page = taro.getCurrentInstance().page
|
|
35
35
|
|
|
36
36
|
let scrollValue = -1
|
|
37
|
-
let scroller = page
|
|
38
|
-
const currentPageNode = getPageScrollerOrNode(page
|
|
37
|
+
let scroller = getPageScrollerOrNode(page?.scroller, page)
|
|
38
|
+
const currentPageNode = getPageScrollerOrNode(page?.node, page)
|
|
39
39
|
|
|
40
40
|
if (scrollTop || typeof scrollTop === 'number') {
|
|
41
41
|
scrollValue = scrollTop
|
|
@@ -66,14 +66,14 @@ export const pageScrollTo: typeof Taro.pageScrollTo = (options) => {
|
|
|
66
66
|
scrollValue = areaInfo.globalPosition.y + yOffset + pxTransformHelper(offsetTop, 'px', true)
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
if (scrollValue === -1) {
|
|
69
|
+
if (!scroller || scrollValue === -1) {
|
|
72
70
|
return handle.fail({
|
|
73
71
|
errMsg: '请检查传入的 scrollTop 或 selector 是否合法'
|
|
74
72
|
}, { resolve, reject })
|
|
75
73
|
}
|
|
76
74
|
|
|
75
|
+
const { xOffset } = scroller.currentOffset()
|
|
76
|
+
|
|
77
77
|
try {
|
|
78
78
|
scroller.scrollTo({
|
|
79
79
|
xOffset,
|
package/dist/apis/ui/tab-bar.ts
CHANGED
|
@@ -22,7 +22,7 @@ const toggleTabBar = function<T extends ToggleAPIs['type']> (type: T): Extract<T
|
|
|
22
22
|
return new Promise((resolve, reject) => {
|
|
23
23
|
const taro = (Current as any).taro
|
|
24
24
|
const page = taro.getCurrentInstance().page
|
|
25
|
-
const currentData = page
|
|
25
|
+
const currentData = page?._data?.taroTabBar || page?.tabBar
|
|
26
26
|
const res = { errMsg: `${type}TabBar:ok` }
|
|
27
27
|
const error = { errMsg: `${type}TabBar:fail not TabBar page` }
|
|
28
28
|
|
|
@@ -49,7 +49,7 @@ export const setTabBarStyle: typeof Taro.setTabBarStyle = function (options = {}
|
|
|
49
49
|
return new Promise((resolve, reject) => {
|
|
50
50
|
const taro = (Current as any).taro
|
|
51
51
|
const page = taro.getCurrentInstance().page
|
|
52
|
-
const currentData = page
|
|
52
|
+
const currentData = page?._data?.taroTabBar || page?.tabBar
|
|
53
53
|
const res = { errMsg: 'setTabBarStyle:ok' }
|
|
54
54
|
const error = { errMsg: 'setTabBarStyle:fail not TabBar page' }
|
|
55
55
|
|
|
@@ -74,7 +74,7 @@ export const setTabBarItem: typeof Taro.setTabBarItem = function (options) {
|
|
|
74
74
|
return new Promise((resolve, reject) => {
|
|
75
75
|
const taro = (Current as any).taro
|
|
76
76
|
const page = taro.getCurrentInstance().page
|
|
77
|
-
const currentData = page
|
|
77
|
+
const currentData = page?._data?.taroTabBar || page?.tabBar
|
|
78
78
|
const res = { errMsg: 'setTabBarItem:ok' }
|
|
79
79
|
const error = { errMsg: 'setTabBarItem:fail not TabBar page' }
|
|
80
80
|
|
package/dist/apis/utils/index.ts
CHANGED
|
@@ -19,7 +19,7 @@ export function temporarilyNotSupport (name: string, recommended?: string) {
|
|
|
19
19
|
return (option = {}, ...args) => {
|
|
20
20
|
const { success, fail, complete } = option as any
|
|
21
21
|
const handle = new MethodHandler({ name, success, fail, complete })
|
|
22
|
-
let errMsg =
|
|
22
|
+
let errMsg = `暂时不支持 API ${name}`
|
|
23
23
|
if (recommended) {
|
|
24
24
|
errMsg += `, 请使用 ${recommended}`
|
|
25
25
|
}
|
|
@@ -19,31 +19,33 @@ export class IntersectionObserver implements Taro.IntersectionObserver {
|
|
|
19
19
|
constructor(component: any, options: Taro.createIntersectionObserver.Option = {}) {
|
|
20
20
|
const taro = (Current as any).taro
|
|
21
21
|
const page = taro.getCurrentInstance().page
|
|
22
|
-
|
|
23
|
-
this._component = component ||
|
|
22
|
+
|
|
23
|
+
this._component = component || getPageScrollerOrNode(page?.node, page)
|
|
24
24
|
Object.assign(this._options, options)
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
public disconnect (): void {
|
|
28
|
-
if (this._observerNodes) {
|
|
28
|
+
if (this._observerNodes && this._component) {
|
|
29
29
|
if (this._observerNodes instanceof Array) {
|
|
30
30
|
this._observerNodes.forEach((n: TaroElement & any) => {
|
|
31
31
|
disconnectEvent(n, VISIBLE_CHANGE_EVENT_NAME)
|
|
32
32
|
// @ts-ignore
|
|
33
|
-
n._nodeInfo
|
|
33
|
+
n._nodeInfo.thresholds = null
|
|
34
34
|
})
|
|
35
35
|
} else {
|
|
36
36
|
disconnectEvent(this._observerNodes, VISIBLE_CHANGE_EVENT_NAME)
|
|
37
37
|
// @ts-ignore
|
|
38
38
|
if (this._observerNodes._nodeInfo) {
|
|
39
39
|
// @ts-ignore
|
|
40
|
-
this._observerNodes._nodeInfo
|
|
40
|
+
this._observerNodes._nodeInfo.thresholds = null
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
45
|
|
|
46
46
|
public observe (targetSelector: string, callback: Taro.IntersectionObserver.ObserveCallback): void {
|
|
47
|
+
if (!this._component) return
|
|
48
|
+
|
|
47
49
|
const { observeAll, thresholds } = this._options
|
|
48
50
|
const node = findChildNodeWithDFS(this._component, targetSelector, observeAll)
|
|
49
51
|
this._observerNodes = node
|
|
@@ -52,20 +54,24 @@ export class IntersectionObserver implements Taro.IntersectionObserver {
|
|
|
52
54
|
if (node instanceof Array) {
|
|
53
55
|
node.forEach(n => {
|
|
54
56
|
// @ts-ignore
|
|
55
|
-
n._nodeInfo
|
|
57
|
+
n._nodeInfo.thresholds = thresholds
|
|
56
58
|
|
|
57
59
|
setNodeEventCallbackAndTriggerComponentUpdate(n, VISIBLE_CHANGE_EVENT_NAME, (isVisible: boolean, currentRatio: number) => {
|
|
58
|
-
callback(this.handleResult(isVisible, currentRatio))
|
|
60
|
+
callback(this.handleResult(isVisible, currentRatio, n))
|
|
59
61
|
})
|
|
60
62
|
})
|
|
61
63
|
} else {
|
|
62
64
|
// @ts-ignore
|
|
63
|
-
node._nodeInfo
|
|
65
|
+
node._nodeInfo.thresholds = thresholds
|
|
64
66
|
|
|
65
67
|
setNodeEventCallbackAndTriggerComponentUpdate(node, VISIBLE_CHANGE_EVENT_NAME, (isVisible: boolean, currentRatio: number) => {
|
|
66
|
-
callback(this.handleResult(isVisible, currentRatio))
|
|
68
|
+
callback(this.handleResult(isVisible, currentRatio, node))
|
|
67
69
|
})
|
|
68
70
|
}
|
|
71
|
+
} else {
|
|
72
|
+
callback({
|
|
73
|
+
errMsg: 'IntersectionObserver.observe:fail cannot find the node for selector.'
|
|
74
|
+
})
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
|
|
@@ -80,8 +86,10 @@ export class IntersectionObserver implements Taro.IntersectionObserver {
|
|
|
80
86
|
}
|
|
81
87
|
|
|
82
88
|
// @ts-ignore
|
|
83
|
-
private handleResult (isVisible: boolean, currentRatio: number): Taro.IntersectionObserver.ObserveCallbackResult {
|
|
89
|
+
private handleResult (isVisible: boolean, currentRatio: number, node: TaroElement): Taro.IntersectionObserver.ObserveCallbackResult {
|
|
84
90
|
const result = {
|
|
91
|
+
id: node.id,
|
|
92
|
+
dataset: node.dataset,
|
|
85
93
|
intersectionRatio: currentRatio,
|
|
86
94
|
// TODO 未做,等待能拿到element的info信息
|
|
87
95
|
boundingClientRect: {
|
package/dist/apis/wxml/index.ts
CHANGED
|
@@ -112,7 +112,7 @@ function filter (fields, dom) {
|
|
|
112
112
|
return res
|
|
113
113
|
}
|
|
114
114
|
if (context) {
|
|
115
|
-
// TODO: 暂未实现获取
|
|
115
|
+
// TODO: 暂未实现获取 context
|
|
116
116
|
// const typeName = dom.type
|
|
117
117
|
// if (/^video/i.test(typeName)) {
|
|
118
118
|
// return { context: dom }
|
|
@@ -179,37 +179,50 @@ function filter (fields, dom) {
|
|
|
179
179
|
|
|
180
180
|
function querySelector (selector, selectAll) {
|
|
181
181
|
if (typeof selector === 'string') {
|
|
182
|
-
return
|
|
182
|
+
return selector.split(',').reduce((prev, current) => {
|
|
183
|
+
const item = current.trim()
|
|
184
|
+
|
|
185
|
+
return prev.concat(parseHandler(item, selectAll))
|
|
186
|
+
}, [])
|
|
183
187
|
}
|
|
184
|
-
return
|
|
188
|
+
return []
|
|
185
189
|
}
|
|
186
190
|
|
|
187
191
|
function queryBat (queue, cb) {
|
|
188
192
|
const result: any = []
|
|
189
193
|
const taro = (Current as any).taro
|
|
190
194
|
const page = taro.getCurrentInstance().page
|
|
191
|
-
const element = getPageScrollerOrNode(page
|
|
195
|
+
const element = getPageScrollerOrNode(page?.node, page)
|
|
192
196
|
|
|
193
|
-
if (element
|
|
197
|
+
if (!element) return null
|
|
194
198
|
|
|
195
199
|
arr = []
|
|
196
200
|
traversalDFSDom(element)
|
|
197
|
-
queue.forEach(item => {
|
|
201
|
+
queue.forEach((item) => {
|
|
198
202
|
const { selector, single, fields } = item
|
|
199
|
-
const nodeList = querySelector(selector, !single)
|
|
200
203
|
|
|
201
|
-
|
|
204
|
+
if (single) {
|
|
205
|
+
const dom = querySelector(selector, !single)[0]
|
|
202
206
|
// eslint-disable-next-line no-async-promise-executor
|
|
203
|
-
|
|
207
|
+
result.push(new Promise(async resolve => {
|
|
204
208
|
await setNodeEventCallbackAndTriggerComponentUpdate(dom, AREA_CHANGE_EVENT_NAME, null, true)
|
|
205
|
-
|
|
206
209
|
resolve(filter(fields, dom))
|
|
207
|
-
})
|
|
208
|
-
}
|
|
210
|
+
}))
|
|
211
|
+
} else {
|
|
212
|
+
const nodeList = querySelector(selector, !single)
|
|
213
|
+
result.push(nodeList.map(dom => {
|
|
214
|
+
// eslint-disable-next-line no-async-promise-executor
|
|
215
|
+
return new Promise(async resolve => {
|
|
216
|
+
await setNodeEventCallbackAndTriggerComponentUpdate(dom, AREA_CHANGE_EVENT_NAME, null, true)
|
|
217
|
+
|
|
218
|
+
resolve(filter(fields, dom))
|
|
219
|
+
})
|
|
220
|
+
}))
|
|
221
|
+
}
|
|
209
222
|
})
|
|
210
223
|
|
|
211
224
|
Promise.all(result.map(item => {
|
|
212
|
-
return Promise.all(item)
|
|
225
|
+
return item instanceof Array ? Promise.all(item) : item
|
|
213
226
|
})).then(data => {
|
|
214
227
|
cb(data)
|
|
215
228
|
})
|
|
@@ -1,41 +1,11 @@
|
|
|
1
1
|
import { eventHandler, createTaroEvent, convertNumber2VP, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME } from '@tarojs/runtime'
|
|
2
|
-
import
|
|
2
|
+
import commonStyleModify from './style'
|
|
3
3
|
import { BUTTON_THEME_COLOR } from './utils/constant/style'
|
|
4
4
|
import { TOUCH_EVENT_MAP } from './utils/constant/event'
|
|
5
|
-
import {
|
|
5
|
+
import { shouldBindEvent, getNodeThresholds } from './utils/helper'
|
|
6
6
|
|
|
7
7
|
import type { TaroAny, TaroEvent, TaroButtonElement, TaroStyleType } from '@tarojs/runtime'
|
|
8
8
|
|
|
9
|
-
@Extend(Button)
|
|
10
|
-
function attrs (style: TaroStyleType) {
|
|
11
|
-
.id(style.id)
|
|
12
|
-
.key(style.id)
|
|
13
|
-
.width(style.width)
|
|
14
|
-
.height(style.height)
|
|
15
|
-
.padding({
|
|
16
|
-
top: style.padding?.top,
|
|
17
|
-
left: style.padding?.left || 10,
|
|
18
|
-
right: style.padding?.right || 10,
|
|
19
|
-
bottom: style.padding?.bottom,
|
|
20
|
-
})
|
|
21
|
-
.margin(style.margin)
|
|
22
|
-
.flexGrow(style.flexGrow)
|
|
23
|
-
.flexShrink(style.flexShrink)
|
|
24
|
-
.flexBasis(style.flexBasis)
|
|
25
|
-
.alignSelf(style.alignSelf)
|
|
26
|
-
.backgroundImage(style.backgroundImage, style.backgroundRepeat)
|
|
27
|
-
.backgroundImageSize(style.backgroundImageSize)
|
|
28
|
-
.backgroundImagePosition(style.backgroundImagePosition)
|
|
29
|
-
.rotate(style.rotate)
|
|
30
|
-
.scale(style.scale)
|
|
31
|
-
.translate(style.translate)
|
|
32
|
-
.transform(style.transform)
|
|
33
|
-
.borderStyle(style.borderStyle)
|
|
34
|
-
.linearGradient(style.linearGradient)
|
|
35
|
-
.zIndex(style.zIndex)
|
|
36
|
-
.clip(style.clip)
|
|
37
|
-
}
|
|
38
|
-
|
|
39
9
|
@Extend(Button)
|
|
40
10
|
function themeStyles(style: TaroStyleType) {
|
|
41
11
|
.fontColor(style.color)
|
|
@@ -71,22 +41,37 @@ function getThemeAttributes (node: TaroButtonElement): TaroStyleType {
|
|
|
71
41
|
const type: string = _attrs.type || 'default'
|
|
72
42
|
|
|
73
43
|
return {
|
|
74
|
-
borderColor:
|
|
75
|
-
|
|
76
|
-
|
|
44
|
+
borderColor: {
|
|
45
|
+
top: hmStyle.borderTopColor || getButtonColor(node, BUTTON_THEME_COLOR.get(type).background),
|
|
46
|
+
right: hmStyle.borderRightColor || getButtonColor(node, BUTTON_THEME_COLOR.get(type).background),
|
|
47
|
+
bottom: hmStyle.borderBottomColor || getButtonColor(node, BUTTON_THEME_COLOR.get(type).background),
|
|
48
|
+
left: hmStyle.borderLeftColor || getButtonColor(node, BUTTON_THEME_COLOR.get(type).background)
|
|
49
|
+
},
|
|
50
|
+
borderWidth: {
|
|
51
|
+
top: hmStyle.borderTopWidth || 1,
|
|
52
|
+
right: hmStyle.borderRightWidth || 1,
|
|
53
|
+
bottom: hmStyle.borderBottomWidth || 1,
|
|
54
|
+
left: hmStyle.borderLeftWidth || 1
|
|
55
|
+
},
|
|
56
|
+
borderRadius: {
|
|
57
|
+
topLeft: hmStyle.borderTopLeftRadius || convertNumber2VP(10),
|
|
58
|
+
topRight: hmStyle.borderTopRightRadius || convertNumber2VP(10),
|
|
59
|
+
bottomLeft: hmStyle.borderBottomLeftRadius || convertNumber2VP(10),
|
|
60
|
+
bottomRight: hmStyle.borderBottomRightRadius || convertNumber2VP(10)
|
|
61
|
+
},
|
|
77
62
|
opacity: isDisabled ? 0.4 : hmStyle.opacity,
|
|
78
63
|
backgroundColor: isPlain ? Color.Transparent : (hmStyle.backgroundColor || BUTTON_THEME_COLOR.get(type).background),
|
|
79
64
|
color: hmStyle.color || getButtonColor(node, BUTTON_THEME_COLOR.get(type).text),
|
|
80
65
|
}
|
|
81
66
|
}
|
|
82
67
|
|
|
83
|
-
function getButtonWidth (node: TaroButtonElement) {
|
|
68
|
+
function getButtonWidth (node: TaroButtonElement): string | number {
|
|
84
69
|
const isMini = node._attrs.size === 'mini'
|
|
85
70
|
|
|
86
71
|
return isMini ? convertNumber2VP(120) : '100%'
|
|
87
72
|
}
|
|
88
73
|
|
|
89
|
-
function getButtonHeight (node: TaroButtonElement) {
|
|
74
|
+
function getButtonHeight (node: TaroButtonElement): string | number {
|
|
90
75
|
const isMini = node._attrs.size === 'mini'
|
|
91
76
|
|
|
92
77
|
return isMini ? convertNumber2VP(60) : convertNumber2VP(92)
|
|
@@ -108,38 +93,53 @@ function getButtonMinHeight (node: TaroButtonElement): string | number | undefin
|
|
|
108
93
|
return getButtonHeight(node)
|
|
109
94
|
}
|
|
110
95
|
|
|
111
|
-
@
|
|
112
|
-
export default
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
96
|
+
@Component
|
|
97
|
+
export default struct TaroButton {
|
|
98
|
+
@Builder customBuilder() {}
|
|
99
|
+
@BuilderParam createLazyChildren: (node: TaroButtonElement) => void = this.customBuilder
|
|
100
|
+
@ObjectLink node: TaroButtonElement
|
|
101
|
+
@State overwriteStyle: Record<string, TaroAny> = {}
|
|
102
|
+
|
|
103
|
+
aboutToAppear(): void {
|
|
104
|
+
if (this.node) {
|
|
105
|
+
this.node._instance = this
|
|
121
106
|
}
|
|
122
107
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
eventHandler(event, eventName, node)
|
|
108
|
+
|
|
109
|
+
build() {
|
|
110
|
+
Button({ stateEffect: !this.node._attrs.disabled }) {
|
|
111
|
+
if (this.node._attrs.loading) {
|
|
112
|
+
Row() {
|
|
113
|
+
LoadingProgress()
|
|
114
|
+
.width(20).height(20)
|
|
115
|
+
.color(getThemeAttributes(this.node).color)
|
|
116
|
+
this.createLazyChildren(this.node)
|
|
117
|
+
}
|
|
118
|
+
} else {
|
|
119
|
+
this.createLazyChildren(this.node)
|
|
120
|
+
}
|
|
137
121
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
122
|
+
.themeStyles(getThemeAttributes(this.node))
|
|
123
|
+
.attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
|
|
124
|
+
.constraintSize({
|
|
125
|
+
minWidth: this.node.hmStyle?.minWidth || getButtonMinWidth(this.node),
|
|
126
|
+
minHeight: this.node.hmStyle?.minHeight || getButtonMinHeight(this.node),
|
|
127
|
+
maxWidth: this.node.hmStyle?.maxWidth,
|
|
128
|
+
maxHeight: this.node.hmStyle?.maxHeight,
|
|
129
|
+
})
|
|
130
|
+
.type(ButtonType.Normal)
|
|
131
|
+
.onClick((e: ClickEvent) => {
|
|
132
|
+
if (this.node._attrs.formType && ['submit', 'reset'].includes(this.node._attrs.formType)) {
|
|
133
|
+
const eventName = this.node._attrs.formType + '-btn'
|
|
134
|
+
const event: TaroEvent = createTaroEvent(eventName, {}, this.node)
|
|
135
|
+
eventHandler(event, eventName, this.node)
|
|
136
|
+
}
|
|
137
|
+
eventHandler(e, 'click', this.node)
|
|
138
|
+
})
|
|
139
|
+
.onTouch(shouldBindEvent((e: TouchEvent) => eventHandler(e, TOUCH_EVENT_MAP.get(e.type), this.node), this.node, TOUCH_EVENT_MAP.values()))
|
|
140
|
+
.onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
|
|
141
|
+
this.node._nodeInfo.areaInfo = res[1]
|
|
142
|
+
}))
|
|
143
|
+
.onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
|
|
144
|
+
}
|
|
145
145
|
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { TaroAny, TaroCanvasElement } from '@tarojs/runtime'
|
|
2
|
+
import { cancelAnimationFrame, requestAnimationFrame } from '@tarojs/runtime'
|
|
3
|
+
import commonStyleModify from './style'
|
|
4
|
+
|
|
5
|
+
@Component
|
|
6
|
+
export default struct TaroCanvas {
|
|
7
|
+
@ObjectLink node: TaroCanvasElement
|
|
8
|
+
rafId: number = 0
|
|
9
|
+
@State overwriteStyle: Record<string, TaroAny> = {}
|
|
10
|
+
|
|
11
|
+
aboutToAppear(): void {
|
|
12
|
+
if (this.node) {
|
|
13
|
+
this.node._instance = this
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
aboutToDisappear() {
|
|
18
|
+
if(this.rafId) {
|
|
19
|
+
cancelAnimationFrame(this.rafId)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
build() {
|
|
24
|
+
Canvas(this.node._context)
|
|
25
|
+
.attributeModifier(commonStyleModify.setNode(this.node as TaroAny, {
|
|
26
|
+
width: '100%',
|
|
27
|
+
height: '100%',
|
|
28
|
+
backgroundColor: '#ffff00'
|
|
29
|
+
}).setAnimationStyle(this.overwriteStyle))
|
|
30
|
+
.onReady(() => {
|
|
31
|
+
const context = this.node._context
|
|
32
|
+
|
|
33
|
+
const draw = () => {
|
|
34
|
+
if (this.node._drawList.length) {
|
|
35
|
+
while (this.node._drawList.length) {
|
|
36
|
+
const item = this.node._drawList.shift()
|
|
37
|
+
if (item) {
|
|
38
|
+
if (typeof context[item.key] === 'function') {
|
|
39
|
+
context[item.key](...[].concat(item.value))
|
|
40
|
+
} else {
|
|
41
|
+
context[item.key] = item.value
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.rafId = requestAnimationFrame(draw)
|
|
47
|
+
}
|
|
48
|
+
draw()
|
|
49
|
+
})
|
|
50
|
+
}
|
|
51
|
+
}
|