@tarojs/plugin-platform-harmony-ets 4.0.0-alpha.2 → 4.0.0-alpha.21

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.
Files changed (129) hide show
  1. package/dist/apis/base/system.ts +73 -20
  2. package/dist/apis/canvas/index.ts +10 -1
  3. package/dist/apis/device/clipboard.ts +16 -8
  4. package/dist/apis/framework/index.ts +1 -5
  5. package/dist/apis/index.ts +25 -17
  6. package/dist/apis/media/image/index.ts +1 -1
  7. package/dist/apis/storage/index.ts +146 -78
  8. package/dist/apis/ui/animation/animation.ts +71 -29
  9. package/dist/apis/ui/background.ts +2 -1
  10. package/dist/apis/ui/interaction/index.ts +42 -59
  11. package/dist/apis/ui/navigation-bar/index.ts +1 -1
  12. package/dist/apis/ui/pull-down-refresh.ts +9 -3
  13. package/dist/apis/ui/scroll/index.ts +5 -5
  14. package/dist/apis/ui/tab-bar.ts +3 -3
  15. package/dist/apis/utils/index.ts +2 -1
  16. package/dist/apis/wxml/IntersectionObserver.ts +18 -10
  17. package/dist/apis/wxml/selectorQuery.ts +26 -13
  18. package/dist/components-harmony-ets/button.ets +64 -34
  19. package/dist/components-harmony-ets/canvas.ets +51 -0
  20. package/dist/components-harmony-ets/checkbox.ets +72 -61
  21. package/dist/components-harmony-ets/form.ets +51 -29
  22. package/dist/components-harmony-ets/icon.ets +31 -19
  23. package/dist/components-harmony-ets/image.ets +34 -14
  24. package/dist/components-harmony-ets/index.ets +92 -0
  25. package/dist/components-harmony-ets/innerHtml.ets +11 -6
  26. package/dist/components-harmony-ets/input.ets +49 -41
  27. package/dist/components-harmony-ets/label.ets +71 -44
  28. package/dist/components-harmony-ets/listView.ets +26 -0
  29. package/dist/components-harmony-ets/movableArea.ets +126 -0
  30. package/dist/components-harmony-ets/movableView.ets +93 -0
  31. package/dist/components-harmony-ets/navigationBar.ets +65 -0
  32. package/dist/components-harmony-ets/pageMeta.ets +94 -0
  33. package/dist/components-harmony-ets/picker.ets +42 -38
  34. package/dist/components-harmony-ets/progress.ets +52 -0
  35. package/dist/components-harmony-ets/pseudo.ets +80 -0
  36. package/dist/components-harmony-ets/radio.ets +74 -64
  37. package/dist/components-harmony-ets/richText.ets +14 -30
  38. package/dist/components-harmony-ets/scrollList.ets +94 -0
  39. package/dist/components-harmony-ets/scrollView.ets +61 -57
  40. package/dist/components-harmony-ets/slider.ets +18 -14
  41. package/dist/components-harmony-ets/stickySection.ets +42 -0
  42. package/dist/components-harmony-ets/style.ets +381 -130
  43. package/dist/components-harmony-ets/swiper.ets +61 -20
  44. package/dist/components-harmony-ets/switch.ets +36 -32
  45. package/dist/components-harmony-ets/{index.ts → tag.ts} +6 -0
  46. package/dist/components-harmony-ets/text.ets +135 -49
  47. package/dist/components-harmony-ets/textArea.ets +50 -35
  48. package/dist/components-harmony-ets/utils/AttributeManager.ets +1 -1
  49. package/dist/components-harmony-ets/utils/DynamicCenter.ts +2 -2
  50. package/dist/components-harmony-ets/utils/flexManager.ets +49 -19
  51. package/dist/components-harmony-ets/utils/helper.ets +18 -5
  52. package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
  53. package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
  54. package/dist/components-harmony-ets/utils/index.ts +54 -50
  55. package/dist/components-harmony-ets/utils/styles.ets +170 -93
  56. package/dist/components-harmony-ets/video.ets +34 -21
  57. package/dist/components-harmony-ets/view.ets +63 -52
  58. package/dist/components-harmony-ets/webView.ets +40 -34
  59. package/dist/index.d.ts +152 -0
  60. package/dist/index.js +99 -55
  61. package/dist/index.js.map +1 -1
  62. package/dist/runtime-ets/bom/document.ts +6 -4
  63. package/dist/runtime-ets/bom/getComputedStyle.ts +2 -2
  64. package/dist/runtime-ets/bom/window.ts +7 -0
  65. package/dist/runtime-ets/current.ts +3 -0
  66. package/dist/runtime-ets/dom/bind.ts +28 -12
  67. package/dist/runtime-ets/dom/class-list.ts +2 -2
  68. package/dist/runtime-ets/dom/cssNesting.ts +419 -0
  69. package/dist/runtime-ets/dom/cssStyleDeclaration.ts +28 -42
  70. package/dist/runtime-ets/dom/document.ts +8 -11
  71. package/dist/runtime-ets/dom/element/canvas.ts +136 -0
  72. package/dist/runtime-ets/dom/element/element.ts +348 -57
  73. package/dist/runtime-ets/dom/element/form.ts +31 -26
  74. package/dist/runtime-ets/dom/element/index.ts +30 -2
  75. package/dist/runtime-ets/dom/element/movableArea.ts +11 -0
  76. package/dist/runtime-ets/dom/element/movableView.ts +244 -0
  77. package/dist/runtime-ets/dom/element/normal.ts +35 -8
  78. package/dist/runtime-ets/dom/element/progress.ts +11 -0
  79. package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
  80. package/dist/runtime-ets/dom/element/text.ts +1 -8
  81. package/dist/runtime-ets/dom/element/video.ts +5 -4
  82. package/dist/runtime-ets/dom/element/webView.ts +12 -5
  83. package/dist/runtime-ets/dom/event.ts +2 -4
  84. package/dist/runtime-ets/dom/eventTarget.ts +2 -3
  85. package/dist/runtime-ets/dom/node.ts +54 -29
  86. package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +416 -235
  87. package/dist/runtime-ets/dom/stylesheet/index.ts +29 -311
  88. package/dist/runtime-ets/dom/stylesheet/type.ts +51 -9
  89. package/dist/runtime-ets/dom/stylesheet/util.ts +33 -27
  90. package/dist/runtime-ets/index.ts +2 -1
  91. package/dist/runtime-ets/interface/event.ts +1 -1
  92. package/dist/runtime-ets/utils/index.ts +73 -13
  93. package/dist/runtime-ets/utils/info.ts +2 -2
  94. package/dist/runtime-framework/react/app.ts +9 -4
  95. package/dist/runtime-framework/react/hooks.ts +0 -1
  96. package/dist/runtime-framework/react/index.ts +0 -2
  97. package/dist/runtime-framework/react/native-page.ts +154 -77
  98. package/dist/runtime-framework/react/page.ts +3 -8
  99. package/dist/runtime-framework/solid/app.ts +25 -45
  100. package/dist/runtime-framework/solid/connect.ts +21 -3
  101. package/dist/runtime-framework/solid/hooks.ts +16 -11
  102. package/dist/runtime-framework/solid/index.ts +6 -2
  103. package/dist/runtime-framework/solid/page.ts +84 -30
  104. package/dist/runtime-framework/solid/reconciler/props.ts +70 -25
  105. package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
  106. package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
  107. package/dist/runtime-framework/solid/utils/index.ts +0 -2
  108. package/dist/runtime-utils.d.ts +827 -0
  109. package/dist/runtime-utils.js +435 -218
  110. package/dist/runtime-utils.js.map +1 -1
  111. package/dist/runtime.d.ts +1 -0
  112. package/dist/runtime.js +435 -218
  113. package/dist/runtime.js.map +1 -1
  114. package/index.js +3 -1
  115. package/package.json +14 -15
  116. package/static/media/cancel.svg +1 -1
  117. package/static/media/circle.svg +1 -1
  118. package/static/media/clear.svg +1 -1
  119. package/static/media/download.svg +1 -1
  120. package/static/media/info.svg +1 -1
  121. package/static/media/info_circle.svg +1 -1
  122. package/static/media/search.svg +1 -1
  123. package/static/media/success.svg +1 -1
  124. package/static/media/success_no_circle.svg +1 -1
  125. package/static/media/warn.svg +1 -1
  126. package/types/harmony.d.ts +4 -0
  127. package/types/index.d.ts +4 -0
  128. package/types/runtime.d.ts +1 -1
  129. /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
@@ -1,41 +1,25 @@
1
1
  import { eventHandler, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME } from '@tarojs/runtime'
2
2
 
3
3
  import commonStyleModify from './style'
4
+ import { generateText } from './utils'
4
5
  import { getNodeThresholds, shouldBindEvent } from './utils/helper'
5
6
 
6
- import type { RichTextProps } from '@tarojs/components/types/RichText'
7
7
  import type { TaroAny, TaroRichTextElement } from '@tarojs/runtime'
8
8
 
9
- function generateText (node: TaroRichTextElement): string {
10
- return parseHtmlNode(node._attrs.nodes || '')
11
- }
12
-
13
- @Builder
14
- export default function TaroRichText (node: TaroRichTextElement) {
15
- RichText(generateText(node))
16
- .attributeModifier(commonStyleModify.setNode(node))
17
- .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', node), node, ['click']))
18
- .onAreaChange(getComponentEventCallback(node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
19
- node._nodeInfo.areaInfo = res[1]
20
- }))
21
- .onVisibleAreaChange(getNodeThresholds(node) || [0.0, 1.0], getComponentEventCallback(node, VISIBLE_CHANGE_EVENT_NAME))
22
- }
9
+ @Component
10
+ export default struct TaroRichText {
11
+ @Builder customBuilder() {}
12
+ @BuilderParam createLazyChildren: (node: TaroRichTextElement) => void = this.customBuilder
13
+ @ObjectLink node: TaroRichTextElement
23
14
 
24
- // 将nodeTree转换成harmony需要的string结构
25
- function nodeToHtml(node: RichTextProps.Text | RichTextProps.HTMLElement): string {
26
- if (node.type === 'text') {
27
- return node.text;
15
+ build () {
16
+ RichText(generateText(this.node))
17
+ .attributeModifier(commonStyleModify.setNode(this.node))
18
+ .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', this.node), this.node, ['click']))
19
+ .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
20
+ this.node._nodeInfo.areaInfo = res[1]
21
+ }))
22
+ .onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
28
23
  }
29
- if (node.attrs) {
30
- const attributes = Object.entries(node.attrs)
31
- .map((item: [string, string]) => `${item[0]}="${item[1]}"`)
32
- .join(' ');
33
- const childrenHtml: string = typeof node.children === 'string' ? node.children : (node.children || []).map((child: RichTextProps.Text | RichTextProps.HTMLElement) => nodeToHtml(child)).join('');
34
- return `<${node.name}${attributes ? ' ' + attributes : ''}>${childrenHtml}</${node.name}>`;
35
- }
36
- return ''
37
24
  }
38
25
 
39
- function parseHtmlNode (nodes: Array<RichTextProps.Text | RichTextProps.HTMLElement> | string) {
40
- return typeof nodes === 'string' ? nodes: `<div>${nodes.map(node => nodeToHtml(node)).join('')}</div>`
41
- }
@@ -0,0 +1,94 @@
1
+ import { eventHandler, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME, createTaroEvent } from '@tarojs/runtime'
2
+
3
+ import commonStyleModify from './style'
4
+ import { TOUCH_EVENT_MAP } from './utils/constant/event'
5
+ import { getNodeThresholds, shouldBindEvent } from './utils/helper'
6
+
7
+ import type { TaroScrollViewElement, TaroAny, TaroEvent } from '@tarojs/runtime'
8
+
9
+ interface ScrollViewAttrs {
10
+ scrollBar: BarState
11
+ }
12
+ interface ScrollViewCurrentOffset {
13
+ xOffset: number
14
+ yOffset: number
15
+ }
16
+ interface ScrollViewEvent {
17
+ deltaX: number
18
+ deltaY: number
19
+ scrollLeft: number
20
+ scrollTop: number
21
+ scrollWidth: number
22
+ scrollHeight: number
23
+ }
24
+
25
+ function getAttributes (node: TaroScrollViewElement): ScrollViewAttrs {
26
+ const _attrs = node._attrs
27
+ const scrollAttrs: ScrollViewAttrs = {
28
+ scrollBar: typeof _attrs.showScrollbar === 'boolean'
29
+ ? _attrs.showScrollbar ? BarState.On : BarState.Off
30
+ : BarState.Auto
31
+ }
32
+ return scrollAttrs
33
+ }
34
+
35
+ function handleScrollEvent (node: TaroScrollViewElement, eventName = 'scroll', scrollOffset?: number) {
36
+ const currentOffset = node.scroller.currentOffset() as ScrollViewCurrentOffset
37
+ const currentXOffset = currentOffset?.xOffset || 0
38
+ const currentYOffset = currentOffset?.yOffset || 0
39
+ const value: ScrollViewEvent = {
40
+ deltaX: vp2px(node._attrs.scrollX ? scrollOffset : 0),
41
+ deltaY: vp2px(node._attrs.scrollX ? 0 : scrollOffset),
42
+ scrollLeft: vp2px(currentXOffset),
43
+ scrollTop: vp2px(currentYOffset),
44
+ scrollWidth: vp2px(Number(node._nodeInfo?._scroll?.width)),
45
+ scrollHeight: vp2px(Number(node._nodeInfo?._scroll?.height)),
46
+ }
47
+ const event: TaroEvent = createTaroEvent(eventName, { detail: value }, node)
48
+
49
+ eventHandler(event, eventName, node)
50
+ }
51
+
52
+ @Component
53
+ export default struct TaroScrollList {
54
+ @Builder customBuilder() {}
55
+ @BuilderParam createLazyChildren: (node: TaroScrollViewElement) => void = this.customBuilder
56
+ @ObjectLink node: TaroScrollViewElement
57
+ @State overwriteStyle: Record<string, TaroAny> = {}
58
+
59
+ aboutToAppear(): void {
60
+ if (this.node) {
61
+ this.node._instance = this
62
+ }
63
+ }
64
+
65
+ handleScroll = (scrollOffset: number) => {
66
+ handleScrollEvent(this.node, 'scroll', scrollOffset)
67
+ }
68
+
69
+ build() {
70
+ List({
71
+ scroller: this.node.scroller
72
+ }) {
73
+ this.createLazyChildren(this.node)
74
+ }
75
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
76
+ .sticky(StickyStyle.Header)
77
+ .listDirection(this.node.getAttribute('scrollX') ? Axis.Horizontal: Axis.Vertical)
78
+ .align(Alignment.TopStart)
79
+ .clip(true)
80
+ .scrollBar(getAttributes(this.node).scrollBar)
81
+ .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', this.node), this.node, ['click']))
82
+ .onTouch(shouldBindEvent((e: TouchEvent) => eventHandler(e, TOUCH_EVENT_MAP.get(e.type), this.node), this.node, TOUCH_EVENT_MAP.values()))
83
+ .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
84
+ this.node._nodeInfo.areaInfo = res[1]
85
+ }))
86
+ .onDidScroll(shouldBindEvent((scrollOffset: number) => { handleScrollEvent(this.node, 'scroll', scrollOffset) }, this.node, ['scroll']))
87
+ .onScrollStart(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollstart') }, this.node, ['scrollstart']))
88
+ .onScrollStop(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollend') }, this.node, ['scrollend']))
89
+ .onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
90
+ .onReachEnd(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrolltolower') }, this.node, ['scrolltolower']))
91
+ }
92
+ }
93
+
94
+
@@ -1,12 +1,12 @@
1
1
  import { eventHandler, getComponentEventCallback, AREA_CHANGE_EVENT_NAME, VISIBLE_CHANGE_EVENT_NAME, createTaroEvent } from '@tarojs/runtime'
2
2
 
3
3
  import commonStyleModify from './style'
4
- import { createLazyChildren } from './render'
5
- import { FlexManager } from './utils/FlexManager'
4
+ import PseduoChildren from './pseudo'
5
+ import { FlexManager } from './utils/flexManager'
6
6
  import { TOUCH_EVENT_MAP } from './utils/constant/event'
7
- import { getNodeThresholds, getNormalAttributes, shouldBindEvent } from './utils/helper'
7
+ import { getNodeThresholds, getStyleAttr, shouldBindEvent } from './utils/helper'
8
8
 
9
- import type { TaroAny, TaroStyleType, TaroScrollViewElement, TaroEvent } from '@tarojs/runtime'
9
+ import type { TaroAny, TaroScrollViewElement, TaroEvent } from '@tarojs/runtime'
10
10
 
11
11
  interface ScrollViewAttrs {
12
12
  scrollBar: BarState
@@ -49,79 +49,83 @@ function handleScrollEvent (node: TaroScrollViewElement, eventName = 'scroll', x
49
49
  deltaY: vp2px(yOffset),
50
50
  scrollLeft: vp2px(currentXOffset),
51
51
  scrollTop: vp2px(currentYOffset),
52
- scrollWidth: vp2px(Number(node._scroll?.width)),
53
- scrollHeight: vp2px(Number(node._scroll?.height)),
52
+ scrollWidth: vp2px(Number(node._nodeInfo?._scroll?.width)),
53
+ scrollHeight: vp2px(Number(node._nodeInfo?._scroll?.height)),
54
54
  }
55
55
  const event: TaroEvent = createTaroEvent(eventName, { detail: value }, node)
56
56
 
57
57
  eventHandler(event, eventName, node)
58
58
  }
59
59
 
60
- @Extend(Row)
61
- function rowAttrs (style: TaroStyleType) {
62
- .constraintSize({
63
- minWidth: style.minWidth || style.width,
64
- maxWidth: style.maxWidth,
65
- minHeight: style.minHeight,
66
- maxHeight: style.maxHeight
67
- })
68
- }
60
+ @Component
61
+ export default struct TaroScrollView {
62
+ @Builder customBuilder() {}
63
+ @BuilderParam createLazyChildren: (node: TaroScrollViewElement) => void = this.customBuilder
64
+ @ObjectLink node: TaroScrollViewElement
65
+ @State overwriteStyle: Record<string, TaroAny> = {}
69
66
 
70
- @Extend(Column)
71
- function columnAttrs (style: TaroStyleType) {
72
- .constraintSize({
73
- minWidth: style.minWidth,
74
- maxWidth: style.maxWidth,
75
- minHeight: style.minHeight || style.height,
76
- maxHeight: style.maxHeight
77
- })
78
- }
67
+ aboutToAppear(): void {
68
+ if (this.node) {
69
+ this.node._instance = this
70
+ }
71
+ }
79
72
 
80
- @Builder
81
- export default function TaroScrollView (node: TaroScrollViewElement) {
82
- Scroll(node.scroller) {
83
- if (node._attrs.scrollX) {
73
+ isScrollX() {
74
+ return this.node._attrs.scrollX || getStyleAttr(this.node, 'overflow') === 'scroll' && getStyleAttr(this.node, 'flexDirection') === FlexDirection.Row
75
+ }
76
+
77
+ build () {
78
+ Scroll(this.node.scroller) {
79
+ if (this.isScrollX()) {
84
80
  Row() {
85
- createLazyChildren(node)
81
+ if (this.node._pseudo_before || this.node._pseudo_after) {
82
+ PseduoChildren({ node: this.node, createLazyChildren: this.createLazyChildren })
83
+ } else {
84
+ this.createLazyChildren(this.node)
85
+ }
86
86
  }
87
- .attributeModifier(commonStyleModify.setNode(node))
88
- .rowAttrs(getNormalAttributes(node))
87
+ .alignItems(FlexManager.alignItems<VerticalAlign>(this.node))
88
+ .justifyContent(FlexManager.justifyContent(this.node))
89
+ .height(getStyleAttr(this.node, 'height'))
89
90
  .width(null)
90
91
  .onAreaChange(shouldBindEvent((_: Area, areaResult: Area) => {
91
- node._scroll = areaResult
92
- }, node, ['scroll', 'scrollstart', 'scrollend']))
93
- .alignItems(FlexManager.flexOptions(node).alignItems as VerticalAlign)
94
- .justifyContent(FlexManager.flexOptions(node).justifyContent)
92
+ this.node._nodeInfo._scroll = areaResult
93
+ }, this.node, ['scroll', 'scrollstart', 'scrollend']))
95
94
  .flexGrow(0).flexShrink(0)
96
95
  } else {
97
96
  Column() {
98
- createLazyChildren(node)
97
+ if (this.node._pseudo_before || this.node._pseudo_after) {
98
+ PseduoChildren({ node: this.node, createLazyChildren: this.createLazyChildren })
99
+ } else {
100
+ this.createLazyChildren(this.node)
101
+ }
99
102
  }
100
- .attributeModifier(commonStyleModify.setNode(node))
101
- .columnAttrs(getNormalAttributes(node))
103
+ .alignItems(FlexManager.alignItems<HorizontalAlign>(this.node))
104
+ .justifyContent(FlexManager.justifyContent(this.node))
105
+ .width(getStyleAttr(this.node, 'width'))
102
106
  .height(null)
103
- .alignItems(HorizontalAlign.Start)
104
107
  .onAreaChange(shouldBindEvent((_: Area, areaResult: Area) => {
105
- node._scroll = areaResult
106
- }, node, ['scroll', 'scrollstart', 'scrollend']))
107
- .alignItems(FlexManager.flexOptions(node).alignItems as HorizontalAlign)
108
- .justifyContent(FlexManager.flexOptions(node).justifyContent)
108
+ this.node._nodeInfo._scroll = areaResult
109
+ }, this.node, ['scroll', 'scrollstart', 'scrollend']))
109
110
  .flexGrow(0).flexShrink(0)
110
111
  }
111
112
  }
112
- .width(getNormalAttributes(node).width)
113
- .height(getNormalAttributes(node).height)
114
- .flexGrow(getNormalAttributes(node).flexGrow)
115
- .flexShrink(getNormalAttributes(node).flexShrink)
116
- .scrollable(getScrollable(node))
117
- .scrollBar(getAttributes(node).scrollBar)
118
- .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', node), node, ['click']))
119
- .onTouch(shouldBindEvent((e: TouchEvent) => eventHandler(e, TOUCH_EVENT_MAP.get(e.type), node), node, TOUCH_EVENT_MAP.values()))
120
- .onAreaChange(getComponentEventCallback(node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
121
- node._nodeInfo.areaInfo = res[1]
113
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
114
+ .width(this.isScrollX() ? getStyleAttr(this.node, 'width') : undefined)
115
+ .height(!this.isScrollX() ? getStyleAttr(this.node, 'height') : undefined)
116
+ .align(Alignment.TopStart)
117
+ .clip(true)
118
+ .scrollable(getScrollable(this.node))
119
+ .scrollBar(getAttributes(this.node).scrollBar)
120
+ .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', this.node), this.node, ['click']))
121
+ .onTouch(shouldBindEvent((e: TouchEvent) => eventHandler(e, TOUCH_EVENT_MAP.get(e.type), this.node), this.node, TOUCH_EVENT_MAP.values()))
122
+ .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
123
+ this.node._nodeInfo.areaInfo = res[1]
122
124
  }))
123
- .onScroll(shouldBindEvent(() => { handleScrollEvent(node, 'scroll') }, node, ['scroll']))
124
- .onScrollStart(shouldBindEvent(() => { handleScrollEvent(node, 'scrollstart') }, node, ['scrollstart']))
125
- .onScrollStop(shouldBindEvent(() => { handleScrollEvent(node, 'scrollend') }, node, ['scrollend']))
126
- .onVisibleAreaChange(getNodeThresholds(node) || [0.0, 1.0], getComponentEventCallback(node, VISIBLE_CHANGE_EVENT_NAME))
125
+ .onDidScroll(shouldBindEvent((xOffset: number, yOffset: number) => { handleScrollEvent(this.node, 'scroll', xOffset, yOffset) }, this.node, ['scroll']))
126
+ .onScrollStart(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollstart') }, this.node, ['scrollstart']))
127
+ .onScrollStop(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollend') }, this.node, ['scrollend']))
128
+ .onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
129
+ .onReachEnd(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrolltolower') }, this.node, ['scrolltolower']))
130
+ }
127
131
  }
@@ -10,6 +10,7 @@ interface SliderAttrs {
10
10
  trackColor?: ResourceColor
11
11
  trackThickness?: Length
12
12
  blockColor?: ResourceColor
13
+ disabled?: boolean
13
14
  }
14
15
 
15
16
  @Extend(Slider)
@@ -18,6 +19,7 @@ function attrs (attr: SliderAttrs) {
18
19
  .trackColor(attr.trackColor)
19
20
  .trackThickness(attr.trackThickness)
20
21
  .blockColor(attr.blockColor)
22
+ .enabled(!attr.disabled)
21
23
  }
22
24
 
23
25
  function getAttributes (node: TaroSliderElement): SliderAttrs {
@@ -27,6 +29,7 @@ function getAttributes (node: TaroSliderElement): SliderAttrs {
27
29
  sliderAttrs.trackColor = _attrs.backgroundColor || _attrs.color || '#e9e9e9'
28
30
  sliderAttrs.trackThickness = _attrs.blockSize
29
31
  sliderAttrs.blockColor = _attrs.blockColor || '#ffffff'
32
+ sliderAttrs.disabled = !!_attrs.disabled
30
33
  return sliderAttrs
31
34
  }
32
35
 
@@ -37,9 +40,12 @@ function themeStyles(isDisabled: boolean) {
37
40
 
38
41
  @Component
39
42
  export default struct TaroSlider {
40
- node: TaroSliderElement | null = null
43
+ @Builder customBuilder() {}
44
+ @BuilderParam createLazyChildren: (node: TaroSliderElement) => void = this.customBuilder
45
+ @ObjectLink node: TaroSliderElement
41
46
 
42
47
  @State value: number = 0
48
+ @State overwriteStyle: Record<string, TaroAny> = {}
43
49
 
44
50
  aboutToAppear () {
45
51
  if (this.node) {
@@ -62,7 +68,7 @@ export default struct TaroSlider {
62
68
  style: SliderStyle.OutSet,
63
69
  direction: Axis.Horizontal
64
70
  })
65
- .attributeModifier(commonStyleModify.setNode(node))
71
+ .attributeModifier(commonStyleModify.setNode(node).setAnimationStyle(this.overwriteStyle))
66
72
  .attrs(getAttributes(node))
67
73
  .width(!!node._attrs.showValue ? '90%' : '100%')
68
74
  .themeStyles(!!node._attrs.disabled)
@@ -74,7 +80,7 @@ export default struct TaroSlider {
74
80
  } else {
75
81
  this.value = value
76
82
  this.node?.updateFormWidgetValue(value)
77
-
83
+
78
84
  if (mode === SliderChangeMode.End) {
79
85
  const event: TaroEvent = createTaroEvent('change', { detail: { value: this.value } }, node)
80
86
  eventHandler(event, 'change', node)
@@ -94,18 +100,16 @@ export default struct TaroSlider {
94
100
  }
95
101
 
96
102
  build() {
97
- if (this.node) {
98
- if (!!this.node._attrs.showValue) {
99
- Row() {
100
- this.createSlider(this.node)
101
- Text(Number(this.value).toFixed(0))
102
- .width('10%')
103
- .textAlign(TextAlign.Center)
104
- .opacity(!!this.node._attrs.disabled ? 0.4 : 1)
105
- }
106
- } else {
103
+ if (!!this.node._attrs.showValue) {
104
+ Row() {
107
105
  this.createSlider(this.node)
106
+ Text(Number(this.value).toFixed(0))
107
+ .width('10%')
108
+ .textAlign(TextAlign.Center)
109
+ .opacity(!!this.node._attrs.disabled ? 0.4 : 1)
108
110
  }
111
+ } else {
112
+ this.createSlider(this.node)
109
113
  }
110
114
  }
111
- }
115
+ }
@@ -0,0 +1,42 @@
1
+ import commonStyleModify from './style'
2
+
3
+ import type { TaroViewElement, TaroElement, TaroAny } from '@tarojs/runtime'
4
+
5
+ @Component
6
+ export default struct TaroStickySection {
7
+ @Builder customBuilder() {}
8
+ @BuilderParam createLazyChildren: (node: TaroViewElement) => void = this.customBuilder
9
+ @ObjectLink node: TaroViewElement
10
+ @State overwriteStyle: Record<string, TaroAny> = {}
11
+
12
+ aboutToAppear(): void {
13
+ if (this.node) {
14
+ this.node._instance = this
15
+ }
16
+ }
17
+
18
+ @Builder
19
+ itemHead(header: TaroViewElement) {
20
+ Stack() {
21
+ LazyForEach(header, (item: TaroElement) => {
22
+ if (item.tagName === 'STICKY-HEADER') {
23
+ this.createLazyChildren(item as TaroViewElement)
24
+ }
25
+ }, (item: TaroElement) => `${item._nid}-${item._nodeInfo?.layer || 0}`)
26
+ }
27
+ }
28
+
29
+ build() {
30
+ ListItemGroup({
31
+ header: this.itemHead(this.node)
32
+ }) {
33
+ ForEach(this.node.children, (item: TaroElement) => {
34
+ if (item.tagName === 'LIST-VIEW') {
35
+ this.createLazyChildren(item as TaroViewElement)
36
+ }
37
+ }, (item: TaroElement) => `${item._nid}-${item._nodeInfo?.layer || 0}`)
38
+
39
+ }
40
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
41
+ }
42
+ }