@tarojs/plugin-platform-harmony-ets 4.0.0-canary.9 → 4.0.0

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 (135) 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 +23 -8
  4. package/dist/apis/framework/index.ts +1 -5
  5. package/dist/apis/index.ts +27 -17
  6. package/dist/apis/media/image/index.ts +169 -17
  7. package/dist/apis/network/request.ts +5 -5
  8. package/dist/apis/route/index.ts +15 -0
  9. package/dist/apis/storage/index.ts +146 -78
  10. package/dist/apis/ui/animation/animation.ts +71 -29
  11. package/dist/apis/ui/background.ts +2 -1
  12. package/dist/apis/ui/interaction/index.ts +58 -59
  13. package/dist/apis/ui/navigation-bar/index.ts +1 -1
  14. package/dist/apis/ui/pull-down-refresh.ts +9 -3
  15. package/dist/apis/ui/scroll/index.ts +5 -5
  16. package/dist/apis/ui/tab-bar.ts +3 -3
  17. package/dist/apis/utils/index.ts +21 -2
  18. package/dist/apis/utils/permissions.ts +6 -0
  19. package/dist/apis/wxml/IntersectionObserver.ts +18 -10
  20. package/dist/apis/wxml/index.ts +2 -0
  21. package/dist/apis/wxml/selectorQuery.ts +26 -13
  22. package/dist/components-harmony-ets/button.ets +64 -34
  23. package/dist/components-harmony-ets/canvas.ets +51 -0
  24. package/dist/components-harmony-ets/checkbox.ets +73 -62
  25. package/dist/components-harmony-ets/form.ets +51 -29
  26. package/dist/components-harmony-ets/icon.ets +31 -19
  27. package/dist/components-harmony-ets/image.ets +34 -14
  28. package/dist/components-harmony-ets/index.ets +92 -0
  29. package/dist/components-harmony-ets/innerHtml.ets +11 -6
  30. package/dist/components-harmony-ets/input.ets +63 -41
  31. package/dist/components-harmony-ets/label.ets +71 -44
  32. package/dist/components-harmony-ets/listView.ets +31 -0
  33. package/dist/components-harmony-ets/movableArea.ets +126 -0
  34. package/dist/components-harmony-ets/movableView.ets +93 -0
  35. package/dist/components-harmony-ets/navigationBar.ets +65 -0
  36. package/dist/components-harmony-ets/pageMeta.ets +94 -0
  37. package/dist/components-harmony-ets/picker.ets +43 -39
  38. package/dist/components-harmony-ets/progress.ets +52 -0
  39. package/dist/components-harmony-ets/pseudo.ets +80 -0
  40. package/dist/components-harmony-ets/radio.ets +78 -68
  41. package/dist/components-harmony-ets/richText.ets +14 -30
  42. package/dist/components-harmony-ets/scrollList.ets +108 -0
  43. package/dist/components-harmony-ets/scrollView.ets +69 -30
  44. package/dist/components-harmony-ets/slider.ets +19 -15
  45. package/dist/components-harmony-ets/stickySection.ets +42 -0
  46. package/dist/components-harmony-ets/style.ets +386 -130
  47. package/dist/components-harmony-ets/swiper.ets +61 -20
  48. package/dist/components-harmony-ets/switch.ets +36 -32
  49. package/dist/components-harmony-ets/{index.ts → tag.ts} +6 -0
  50. package/dist/components-harmony-ets/text.ets +112 -50
  51. package/dist/components-harmony-ets/textArea.ets +50 -35
  52. package/dist/components-harmony-ets/utils/AttributeManager.ets +2 -2
  53. package/dist/components-harmony-ets/utils/DynamicCenter.ts +2 -2
  54. package/dist/components-harmony-ets/utils/flexManager.ets +50 -19
  55. package/dist/components-harmony-ets/utils/helper.ets +20 -8
  56. package/dist/components-harmony-ets/utils/htmlParser/HarmonyHTMLParser.ts +1 -2
  57. package/dist/components-harmony-ets/utils/htmlParser/index.ts +1 -1
  58. package/dist/components-harmony-ets/utils/index.ts +54 -50
  59. package/dist/components-harmony-ets/utils/styles.ets +172 -92
  60. package/dist/components-harmony-ets/video.ets +34 -21
  61. package/dist/components-harmony-ets/view.ets +62 -29
  62. package/dist/components-harmony-ets/webView.ets +40 -34
  63. package/dist/index.d.ts +152 -0
  64. package/dist/index.js +102 -56
  65. package/dist/index.js.map +1 -1
  66. package/dist/runtime-ets/bom/document.ts +6 -4
  67. package/dist/runtime-ets/bom/getComputedStyle.ts +2 -2
  68. package/dist/runtime-ets/bom/window.ts +7 -0
  69. package/dist/runtime-ets/current.ts +5 -1
  70. package/dist/runtime-ets/dom/bind.ts +28 -12
  71. package/dist/runtime-ets/dom/class-list.ts +2 -2
  72. package/dist/runtime-ets/dom/cssNesting.ts +419 -0
  73. package/dist/runtime-ets/dom/cssStyleDeclaration.ts +28 -42
  74. package/dist/runtime-ets/dom/document.ts +22 -8
  75. package/dist/runtime-ets/dom/element/canvas.ts +136 -0
  76. package/dist/runtime-ets/dom/element/element.ts +376 -57
  77. package/dist/runtime-ets/dom/element/form.ts +31 -26
  78. package/dist/runtime-ets/dom/element/index.ts +30 -2
  79. package/dist/runtime-ets/dom/element/movableArea.ts +11 -0
  80. package/dist/runtime-ets/dom/element/movableView.ts +248 -0
  81. package/dist/runtime-ets/dom/element/normal.ts +35 -8
  82. package/dist/runtime-ets/dom/element/progress.ts +11 -0
  83. package/dist/runtime-ets/dom/element/scrollView.ts +1 -0
  84. package/dist/runtime-ets/dom/element/text.ts +1 -8
  85. package/dist/runtime-ets/dom/element/video.ts +5 -4
  86. package/dist/runtime-ets/dom/element/webView.ts +12 -5
  87. package/dist/runtime-ets/dom/event.ts +3 -5
  88. package/dist/runtime-ets/dom/eventTarget.ts +2 -3
  89. package/dist/runtime-ets/dom/node.ts +65 -32
  90. package/dist/runtime-ets/dom/stylesheet/covertWeb2Hm.ts +418 -237
  91. package/dist/runtime-ets/dom/stylesheet/index.ts +29 -311
  92. package/dist/runtime-ets/dom/stylesheet/type.ts +53 -11
  93. package/dist/runtime-ets/dom/stylesheet/util.ts +33 -27
  94. package/dist/runtime-ets/index.ts +2 -2
  95. package/dist/runtime-ets/interface/event.ts +1 -1
  96. package/dist/runtime-ets/utils/index.ts +74 -13
  97. package/dist/runtime-ets/utils/info.ts +2 -2
  98. package/dist/runtime-framework/react/app.ts +15 -10
  99. package/dist/runtime-framework/react/hooks.ts +0 -1
  100. package/dist/runtime-framework/react/index.ts +0 -2
  101. package/dist/runtime-framework/react/native-page.ts +217 -80
  102. package/dist/runtime-framework/react/page.ts +4 -9
  103. package/dist/runtime-framework/react/utils/index.ts +3 -3
  104. package/dist/runtime-framework/solid/app.ts +30 -46
  105. package/dist/runtime-framework/solid/connect.ts +21 -3
  106. package/dist/runtime-framework/solid/hooks.ts +16 -11
  107. package/dist/runtime-framework/solid/index.ts +6 -2
  108. package/dist/runtime-framework/solid/page.ts +85 -31
  109. package/dist/runtime-framework/solid/reconciler/props.ts +70 -25
  110. package/dist/runtime-framework/solid/reconciler/render.ts +16 -6
  111. package/dist/runtime-framework/solid/reconciler/use.ts +0 -1
  112. package/dist/runtime-framework/solid/utils/index.ts +3 -5
  113. package/dist/runtime-utils.d.ts +827 -0
  114. package/dist/runtime-utils.js +618 -245
  115. package/dist/runtime-utils.js.map +1 -1
  116. package/dist/runtime.d.ts +1 -0
  117. package/dist/runtime.js +618 -245
  118. package/dist/runtime.js.map +1 -1
  119. package/index.js +3 -1
  120. package/package.json +14 -15
  121. package/static/media/cancel.svg +1 -1
  122. package/static/media/circle.svg +1 -1
  123. package/static/media/clear.svg +1 -1
  124. package/static/media/download.svg +1 -1
  125. package/static/media/info.svg +1 -1
  126. package/static/media/info_circle.svg +1 -1
  127. package/static/media/search.svg +1 -1
  128. package/static/media/success.svg +1 -1
  129. package/static/media/success_no_circle.svg +1 -1
  130. package/static/media/warn.svg +1 -1
  131. package/types/harmony.d.ts +5 -0
  132. package/types/index.d.ts +4 -0
  133. package/types/runtime.d.ts +1 -1
  134. package/dist/runtime-ets/utils/bind.ts +0 -24
  135. /package/dist/runtime-framework/solid/{contant.ts → constant.ts} +0 -0
@@ -0,0 +1,108 @@
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
+ if (!node || !node.scroller) return
37
+
38
+ const currentOffset = node.scroller.currentOffset() as ScrollViewCurrentOffset
39
+
40
+ if (!currentOffset) return
41
+
42
+ const currentXOffset = currentOffset?.xOffset || 0
43
+ const currentYOffset = currentOffset?.yOffset || 0
44
+ const value: ScrollViewEvent = {
45
+ deltaX: vp2px(node._attrs.scrollX ? scrollOffset : 0),
46
+ deltaY: vp2px(node._attrs.scrollX ? 0 : scrollOffset),
47
+ scrollLeft: vp2px(currentXOffset),
48
+ scrollTop: vp2px(currentYOffset),
49
+ scrollWidth: vp2px(Number(node._nodeInfo?._scroll?.width)),
50
+ scrollHeight: vp2px(Number(node._nodeInfo?._scroll?.height)),
51
+ }
52
+ const event: TaroEvent = createTaroEvent(eventName, { detail: value }, node)
53
+
54
+ eventHandler(event, eventName, node)
55
+ }
56
+
57
+ @Component
58
+ export default struct TaroScrollList {
59
+ @Builder customBuilder() {}
60
+ @BuilderParam createLazyChildren: (node: TaroScrollViewElement, layer?: number) => void = this.customBuilder
61
+ @ObjectLink node: TaroScrollViewElement
62
+ @State overwriteStyle: Record<string, TaroAny> = {}
63
+
64
+ aboutToAppear(): void {
65
+ if (this.node) {
66
+ this.node._instance = this
67
+ }
68
+ }
69
+
70
+ handleScroll = (scrollOffset: number) => {
71
+ handleScrollEvent(this.node, 'scroll', scrollOffset)
72
+ }
73
+
74
+ build() {
75
+ List({
76
+ scroller: this.node.scroller
77
+ }) {
78
+ this.createLazyChildren(this.node, 0)
79
+ }
80
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
81
+ .sticky(StickyStyle.Header)
82
+ .listDirection(this.node.getAttribute('scrollX') ? Axis.Horizontal: Axis.Vertical)
83
+ .align(Alignment.TopStart)
84
+ .clip(true)
85
+ .scrollBar(getAttributes(this.node).scrollBar)
86
+ .onScrollIndex((first: number, last: number) => {
87
+ const scrollindexfns = (this.node?.__listeners?.['scrollindex'] || []) as Function[]
88
+ scrollindexfns.forEach(fn => {
89
+ fn({
90
+ first,
91
+ last
92
+ })
93
+ })
94
+ })
95
+ .onClick(shouldBindEvent((e: ClickEvent) => { eventHandler(e, 'click', this.node) }, this.node, ['click']))
96
+ .onTouch(shouldBindEvent((e: TouchEvent) => { eventHandler(e, TOUCH_EVENT_MAP.get(e.type), this.node) }, this.node, TOUCH_EVENT_MAP.values()))
97
+ .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
98
+ this.node._nodeInfo.areaInfo = res[1]
99
+ }))
100
+ .onDidScroll(shouldBindEvent((scrollOffset: number) => { handleScrollEvent(this.node, 'scroll', scrollOffset) }, this.node, ['scroll']))
101
+ .onScrollStart(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollstart') }, this.node, ['scrollstart']))
102
+ .onScrollStop(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollend') }, this.node, ['scrollend']))
103
+ .onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
104
+ .onReachEnd(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrolltolower') }, this.node, ['scrolltolower']))
105
+ }
106
+ }
107
+
108
+
@@ -1,9 +1,10 @@
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'
4
+ import PseduoChildren from './pseudo'
5
+ import { FlexManager } from './utils/flexManager'
5
6
  import { TOUCH_EVENT_MAP } from './utils/constant/event'
6
- import { getNodeThresholds, getNormalAttributes, shouldBindEvent } from './utils/helper'
7
+ import { getNodeThresholds, getStyleAttr, shouldBindEvent } from './utils/helper'
7
8
 
8
9
  import type { TaroAny, TaroScrollViewElement, TaroEvent } from '@tarojs/runtime'
9
10
 
@@ -40,7 +41,12 @@ function getScrollable (node: TaroScrollViewElement) {
40
41
  }
41
42
 
42
43
  function handleScrollEvent (node: TaroScrollViewElement, eventName = 'scroll', xOffset?: number, yOffset?: number) {
44
+ if (!node || !node.scroller) return
45
+
43
46
  const currentOffset = node.scroller.currentOffset() as ScrollViewCurrentOffset
47
+
48
+ if (!currentOffset) return
49
+
44
50
  const currentXOffset = currentOffset.xOffset
45
51
  const currentYOffset = currentOffset.yOffset
46
52
  const value: ScrollViewEvent = {
@@ -48,50 +54,83 @@ function handleScrollEvent (node: TaroScrollViewElement, eventName = 'scroll', x
48
54
  deltaY: vp2px(yOffset),
49
55
  scrollLeft: vp2px(currentXOffset),
50
56
  scrollTop: vp2px(currentYOffset),
51
- scrollWidth: vp2px(Number(node._scroll?.width)),
52
- scrollHeight: vp2px(Number(node._scroll?.height)),
57
+ scrollWidth: vp2px(Number(node._nodeInfo?._scroll?.width)),
58
+ scrollHeight: vp2px(Number(node._nodeInfo?._scroll?.height)),
53
59
  }
54
60
  const event: TaroEvent = createTaroEvent(eventName, { detail: value }, node)
55
61
 
56
62
  eventHandler(event, eventName, node)
57
63
  }
58
64
 
59
- @Builder
60
- export default function TaroScrollView (node: TaroScrollViewElement) {
61
- Scroll(node.scroller) {
62
- if (node._attrs.scrollX) {
65
+ @Component
66
+ export default struct TaroScrollView {
67
+ @Builder customBuilder() {}
68
+ @BuilderParam createLazyChildren: (node: TaroScrollViewElement, layer?: number) => void = this.customBuilder
69
+ @ObjectLink node: TaroScrollViewElement
70
+ @State overwriteStyle: Record<string, TaroAny> = {}
71
+
72
+ aboutToAppear(): void {
73
+ if (this.node) {
74
+ this.node._instance = this
75
+ }
76
+ }
77
+
78
+ isScrollX() {
79
+ return this.node._attrs.scrollX || getStyleAttr(this.node, 'overflow') === 'scroll' && getStyleAttr(this.node, 'flexDirection') === FlexDirection.Row
80
+ }
81
+
82
+ build () {
83
+ Scroll(this.node.scroller) {
84
+ if (this.isScrollX()) {
63
85
  Row() {
64
- createLazyChildren(node)
86
+ if (this.node._pseudo_before || this.node._pseudo_after) {
87
+ PseduoChildren({ node: this.node, createLazyChildren: this.createLazyChildren })
88
+ } else {
89
+ this.createLazyChildren(this.node, 0)
90
+ }
65
91
  }
92
+ .alignItems(FlexManager.alignItems<VerticalAlign>(this.node))
93
+ .justifyContent(FlexManager.justifyContent(this.node))
94
+ .height(getStyleAttr(this.node, 'height'))
66
95
  .width(null)
67
- .attributeModifier(commonStyleModify.setNode(node))
68
96
  .onAreaChange(shouldBindEvent((_: Area, areaResult: Area) => {
69
- node._scroll = areaResult
70
- }, node, ['scroll', 'scrollstart', 'scrollend']))
97
+ this.node._nodeInfo._scroll = areaResult
98
+ }, this.node, ['scroll', 'scrollstart', 'scrollend']))
99
+ .flexGrow(0).flexShrink(0)
71
100
  } else {
72
101
  Column() {
73
- createLazyChildren(node)
102
+ if (this.node._pseudo_before || this.node._pseudo_after) {
103
+ PseduoChildren({ node: this.node, createLazyChildren: this.createLazyChildren })
104
+ } else {
105
+ this.createLazyChildren(this.node, 0)
106
+ }
74
107
  }
108
+ .alignItems(FlexManager.alignItems<HorizontalAlign>(this.node))
109
+ .justifyContent(FlexManager.justifyContent(this.node))
110
+ .width(getStyleAttr(this.node, 'width'))
75
111
  .height(null)
76
- .attributeModifier(commonStyleModify.setNode(node))
77
- .alignItems(HorizontalAlign.Start)
78
112
  .onAreaChange(shouldBindEvent((_: Area, areaResult: Area) => {
79
- node._scroll = areaResult
80
- }, node, ['scroll', 'scrollstart', 'scrollend']))
113
+ this.node._nodeInfo._scroll = areaResult
114
+ }, this.node, ['scroll', 'scrollstart', 'scrollend']))
115
+ .flexGrow(0).flexShrink(0)
81
116
  }
82
117
  }
83
- .width(getNormalAttributes(node).width)
84
- .height(getNormalAttributes(node).height)
85
- .flexGrow(getNormalAttributes(node).flexGrow)
86
- .scrollable(getScrollable(node))
87
- .scrollBar(getAttributes(node).scrollBar)
88
- .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', node), node, ['click']))
89
- .onTouch(shouldBindEvent((e: TouchEvent) => eventHandler(e, TOUCH_EVENT_MAP.get(e.type), node), node, TOUCH_EVENT_MAP.values()))
90
- .onAreaChange(getComponentEventCallback(node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
91
- node._nodeInfo.areaInfo = res[1]
118
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
119
+ .width(this.isScrollX() ? getStyleAttr(this.node, 'width') : undefined)
120
+ .height(!this.isScrollX() ? getStyleAttr(this.node, 'height') : undefined)
121
+ .align(Alignment.TopStart)
122
+ .clip(true)
123
+ .scrollable(getScrollable(this.node))
124
+ .scrollBar(getAttributes(this.node).scrollBar)
125
+ .onClick(shouldBindEvent((e: ClickEvent) => { eventHandler(e, 'click', this.node) }, this.node, ['click']))
126
+ .onTouch(shouldBindEvent((e: TouchEvent) => { eventHandler(e, TOUCH_EVENT_MAP.get(e.type), this.node) }, this.node, TOUCH_EVENT_MAP.values()))
127
+ .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
128
+ this.node._nodeInfo.areaInfo = res[1]
92
129
  }))
93
- .onScroll(shouldBindEvent(() => { handleScrollEvent(node, 'scroll') }, node, ['scroll']))
94
- .onScrollStart(shouldBindEvent(() => { handleScrollEvent(node, 'scrollstart') }, node, ['scrollstart']))
95
- .onScrollStop(shouldBindEvent(() => { handleScrollEvent(node, 'scrollend') }, node, ['scrollend']))
96
- .onVisibleAreaChange(getNodeThresholds(node) || [0.0, 1.0], getComponentEventCallback(node, VISIBLE_CHANGE_EVENT_NAME))
130
+ .onDidScroll(shouldBindEvent((xOffset: number, yOffset: number) => { handleScrollEvent(this.node, 'scroll', xOffset, yOffset) }, this.node, ['scroll']))
131
+ .onScrollStart(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollstart') }, this.node, ['scrollstart']))
132
+ .onScrollStop(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrollend') }, this.node, ['scrollend']))
133
+ .onVisibleAreaChange(getNodeThresholds(this.node) || [0.0, 1.0], getComponentEventCallback(this.node, VISIBLE_CHANGE_EVENT_NAME))
134
+ .onReachEnd(shouldBindEvent(() => { handleScrollEvent(this.node, 'scrolltolower') }, this.node, ['scrolltolower']))
135
+ }
97
136
  }
@@ -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, layer?: number) => 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)
@@ -84,7 +90,7 @@ export default struct TaroSlider {
84
90
  }
85
91
  }
86
92
  })
87
- .onClick(shouldBindEvent((e: ClickEvent) => eventHandler(e, 'click', this.node), this.node, ['click']))
93
+ .onClick(shouldBindEvent((e: ClickEvent) => { eventHandler(e, 'click', this.node) }, this.node, ['click']))
88
94
  .onAreaChange(getComponentEventCallback(this.node, AREA_CHANGE_EVENT_NAME, (res: TaroAny) => {
89
95
  if (this.node) {
90
96
  this.node._nodeInfo.areaInfo = res[1]
@@ -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, layer?: number) => 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, 0)
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, 0)
36
+ }
37
+ }, (item: TaroElement) => `${item._nid}-${item._nodeInfo?.layer || 0}`)
38
+
39
+ }
40
+ .attributeModifier(commonStyleModify.setNode(this.node).setAnimationStyle(this.overwriteStyle))
41
+ }
42
+ }