weaver-e10-builder 1.2.3 → 1.2.5

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 (210) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +12 -25
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-css.d.ts +15 -0
  5. package/dist/commands/designer-css.d.ts.map +1 -0
  6. package/dist/commands/designer-css.js +205 -0
  7. package/dist/commands/designer-css.js.map +1 -0
  8. package/dist/commands/form-field-lang.d.ts.map +1 -1
  9. package/dist/commands/form-field-lang.js +4 -39
  10. package/dist/commands/form-field-lang.js.map +1 -1
  11. package/dist/commands/form-layout-init.d.ts.map +1 -1
  12. package/dist/commands/form-layout-init.js +15 -10
  13. package/dist/commands/form-layout-init.js.map +1 -1
  14. package/dist/commands/form-layout.js +24 -21
  15. package/dist/commands/form-layout.js.map +1 -1
  16. package/dist/commands/form-native.d.ts.map +1 -1
  17. package/dist/commands/form-native.js +181 -0
  18. package/dist/commands/form-native.js.map +1 -1
  19. package/dist/commands/form-validate.d.ts.map +1 -1
  20. package/dist/commands/form-validate.js +11 -3
  21. package/dist/commands/form-validate.js.map +1 -1
  22. package/dist/commands/form.d.ts.map +1 -1
  23. package/dist/commands/form.js +76 -19
  24. package/dist/commands/form.js.map +1 -1
  25. package/dist/commands/menu.d.ts.map +1 -1
  26. package/dist/commands/menu.js +170 -23
  27. package/dist/commands/menu.js.map +1 -1
  28. package/dist/commands/wf-form.d.ts +1 -0
  29. package/dist/commands/wf-form.d.ts.map +1 -1
  30. package/dist/commands/wf-form.js +44 -13
  31. package/dist/commands/wf-form.js.map +1 -1
  32. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  33. package/dist/commands/workflow-node-assign-flow.js +1 -2
  34. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  35. package/dist/commands/workflow-node.d.ts.map +1 -1
  36. package/dist/commands/workflow-node.js +147 -2
  37. package/dist/commands/workflow-node.js.map +1 -1
  38. package/dist/commands/workflow-odoc.d.ts.map +1 -1
  39. package/dist/commands/workflow-odoc.js +56 -56
  40. package/dist/commands/workflow-odoc.js.map +1 -1
  41. package/dist/commands/workflow-setting.d.ts.map +1 -1
  42. package/dist/commands/workflow-setting.js +77 -1
  43. package/dist/commands/workflow-setting.js.map +1 -1
  44. package/dist/commands/workflow.d.ts.map +1 -1
  45. package/dist/commands/workflow.js +36 -80
  46. package/dist/commands/workflow.js.map +1 -1
  47. package/dist/core/client.d.ts +14 -0
  48. package/dist/core/client.d.ts.map +1 -1
  49. package/dist/core/client.js +28 -12
  50. package/dist/core/client.js.map +1 -1
  51. package/dist/index.js +2 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/services/actionflow/command_output.d.ts +7 -0
  54. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  55. package/dist/services/actionflow/command_output.js +46 -0
  56. package/dist/services/actionflow/command_output.js.map +1 -1
  57. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  58. package/dist/services/actionflow/components/action_eb_add.js +14 -4
  59. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  60. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  61. package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
  62. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  63. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  64. package/dist/services/actionflow/components/action_eb_update.js +23 -8
  65. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  66. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  67. package/dist/services/actionflow/components/action_eb_update_compiler.js +239 -6
  68. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  69. package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
  70. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
  71. package/dist/services/actionflow/components/custom_set_form.js +65 -0
  72. package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
  73. package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
  74. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
  75. package/dist/services/actionflow/components/custom_trigger.js +7 -10
  76. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  77. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  78. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  79. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  80. package/dist/services/actionflow/components/output.js +6 -1
  81. package/dist/services/actionflow/components/output.js.map +1 -1
  82. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  83. package/dist/services/actionflow/context_preflight.js +13 -6
  84. package/dist/services/actionflow/context_preflight.js.map +1 -1
  85. package/dist/services/actionflow/context_provider.d.ts.map +1 -1
  86. package/dist/services/actionflow/context_provider.js +3 -2
  87. package/dist/services/actionflow/context_provider.js.map +1 -1
  88. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  89. package/dist/services/actionflow/dynamic_resources.js +1 -1
  90. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  91. package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
  92. package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
  93. package/dist/services/actionflow/ebuilder_source.js +78 -0
  94. package/dist/services/actionflow/ebuilder_source.js.map +1 -0
  95. package/dist/services/actionflow/form_source.d.ts +51 -10
  96. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  97. package/dist/services/actionflow/form_source.js +173 -29
  98. package/dist/services/actionflow/form_source.js.map +1 -1
  99. package/dist/services/actionflow/formula_service.d.ts +4 -1
  100. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  101. package/dist/services/actionflow/formula_service.js +46 -22
  102. package/dist/services/actionflow/formula_service.js.map +1 -1
  103. package/dist/services/actionflow/preflight_service.d.ts +6 -0
  104. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  105. package/dist/services/actionflow/preflight_service.js +211 -3
  106. package/dist/services/actionflow/preflight_service.js.map +1 -1
  107. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  108. package/dist/services/actionflow/workflow_compiler.js +83 -15
  109. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  110. package/dist/services/designer-css.d.ts +89 -0
  111. package/dist/services/designer-css.d.ts.map +1 -0
  112. package/dist/services/designer-css.js +163 -0
  113. package/dist/services/designer-css.js.map +1 -0
  114. package/dist/services/dom-structure.d.ts +42 -0
  115. package/dist/services/dom-structure.d.ts.map +1 -0
  116. package/dist/services/dom-structure.js +251 -0
  117. package/dist/services/dom-structure.js.map +1 -0
  118. package/dist/services/form-field-patch.d.ts +22 -0
  119. package/dist/services/form-field-patch.d.ts.map +1 -1
  120. package/dist/services/form-field-patch.js +29 -0
  121. package/dist/services/form-field-patch.js.map +1 -1
  122. package/dist/services/form-i18n-label.d.ts +48 -0
  123. package/dist/services/form-i18n-label.d.ts.map +1 -0
  124. package/dist/services/form-i18n-label.js +91 -0
  125. package/dist/services/form-i18n-label.js.map +1 -0
  126. package/dist/services/form-style-template.d.ts +6 -2
  127. package/dist/services/form-style-template.d.ts.map +1 -1
  128. package/dist/services/form-style-template.js +8 -4
  129. package/dist/services/form-style-template.js.map +1 -1
  130. package/dist/services/menu-catalog.d.ts +84 -0
  131. package/dist/services/menu-catalog.d.ts.map +1 -0
  132. package/dist/services/menu-catalog.js +183 -0
  133. package/dist/services/menu-catalog.js.map +1 -0
  134. package/dist/services/workflow-add-step.d.ts +45 -0
  135. package/dist/services/workflow-add-step.d.ts.map +1 -0
  136. package/dist/services/workflow-add-step.js +122 -0
  137. package/dist/services/workflow-add-step.js.map +1 -0
  138. package/dist/services/workflow-assign-flow.d.ts +1 -6
  139. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  140. package/dist/services/workflow-assign-flow.js +3 -8
  141. package/dist/services/workflow-assign-flow.js.map +1 -1
  142. package/dist/services/workflow-drawback.d.ts +19 -0
  143. package/dist/services/workflow-drawback.d.ts.map +1 -0
  144. package/dist/services/workflow-drawback.js +59 -0
  145. package/dist/services/workflow-drawback.js.map +1 -0
  146. package/dist/services/workflow-links.d.ts +51 -0
  147. package/dist/services/workflow-links.d.ts.map +1 -0
  148. package/dist/services/workflow-links.js +162 -0
  149. package/dist/services/workflow-links.js.map +1 -0
  150. package/dist/services/workflow-node-layout.d.ts +45 -4
  151. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  152. package/dist/services/workflow-node-layout.js +142 -41
  153. package/dist/services/workflow-node-layout.js.map +1 -1
  154. package/dist/services/workflow-odoc-setting.d.ts +43 -0
  155. package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
  156. package/dist/services/workflow-odoc-setting.js +100 -0
  157. package/dist/services/workflow-odoc-setting.js.map +1 -0
  158. package/dist/services/workflow-tab-config.d.ts +54 -0
  159. package/dist/services/workflow-tab-config.d.ts.map +1 -0
  160. package/dist/services/workflow-tab-config.js +137 -0
  161. package/dist/services/workflow-tab-config.js.map +1 -0
  162. package/dist/types.d.ts +5 -1
  163. package/dist/types.d.ts.map +1 -1
  164. package/package.json +48 -48
  165. package/skill-docs/SKILL.md +7 -7
  166. package/skill-docs/_catalog.md +2 -0
  167. package/skill-docs/actionflows/SKILL.md +2 -0
  168. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +38 -1
  169. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
  170. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
  171. package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
  172. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +16 -11
  173. package/skill-docs/assets/dom-structure/Bar.json +341 -0
  174. package/skill-docs/assets/dom-structure/BarStack.json +341 -0
  175. package/skill-docs/assets/dom-structure/Bubble.json +323 -0
  176. package/skill-docs/assets/dom-structure/Calendar.json +515 -0
  177. package/skill-docs/assets/dom-structure/Circular.json +337 -0
  178. package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
  179. package/skill-docs/assets/dom-structure/Comment.json +617 -0
  180. package/skill-docs/assets/dom-structure/CountDown.json +755 -0
  181. package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
  182. package/skill-docs/assets/dom-structure/EbButton.json +387 -0
  183. package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
  184. package/skill-docs/assets/dom-structure/Gauge.json +282 -0
  185. package/skill-docs/assets/dom-structure/HBar.json +336 -0
  186. package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
  187. package/skill-docs/assets/dom-structure/Line.json +341 -0
  188. package/skill-docs/assets/dom-structure/NList.json +712 -0
  189. package/skill-docs/assets/dom-structure/NavBar.json +274 -0
  190. package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
  191. package/skill-docs/assets/dom-structure/NewTab.json +606 -0
  192. package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
  193. package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
  194. package/skill-docs/assets/dom-structure/Picture.json +209 -0
  195. package/skill-docs/assets/dom-structure/Pie.json +338 -0
  196. package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
  197. package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
  198. package/skill-docs/assets/dom-structure/Slide.json +489 -0
  199. package/skill-docs/assets/dom-structure/Treemap.json +324 -0
  200. package/skill-docs/references/common/guide-plan-template.md +1 -1
  201. package/skill-docs/references/common/ref-cli-commands.md +21 -13
  202. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
  203. package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
  204. package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
  205. package/skill-docs/references/form/guide-create-form.md +1 -1
  206. package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
  207. package/skill-docs/references/form/guide-form-linkage.md +28 -2
  208. package/skill-docs/references/menu/system-menus.md +12 -0
  209. package/skill-docs/references/workflow/guide-workflow-odoc.md +22 -2
  210. package/skill-docs/references/workflow/guide-workflow.md +18 -3
@@ -0,0 +1,489 @@
1
+ {
2
+ "component": "slide 幻灯片/轮播组件(weapp-ebdbasecoms/src/components/slide,组件类型 Slide)",
3
+ "usage": "先按 config.styles 里 category==='8'(StyleType.SLIDE) 的 style.id 选分树:'11' 缩略图样式 / '12' 标题样式 / '13' 多图样式 / 其他或没配样式走默认树。选到树后,用 shared.carouselSwiper + shared.slideItem 里的类名写选择器。注意横切开关 switchEffect==='multiSlides'(多图展示效果)会把 11/12/13 三种样式全部拉回默认树。",
4
+ "legend": {
5
+ "[cls]": "条件class,满足业务条件才挂载",
6
+ "{a|b}": "多选一class(同一位置按配置换成其中一个)",
7
+ "a > b": "父子层级压缩写法,冒号左边的元素是右边的父级",
8
+ "ref": "引用 shared 中定义的复用片段:写成 ref:shared.xxx 或 {\"ref\":\"shared.xxx\"}",
9
+ "uncontrolled": "第三方组件渲染,内部结构不可控,只给挂载点",
10
+ "<comId>": "组件实例 id;引擎外壳的 id、组件根上的 data-id 都是它,官方样式作用域写成 #<comId>.ebcom",
11
+ "ebcoms-": "组件自己写的类名前缀(clsPrefix='ebcoms'),含大写字母的 ebcoms-Carousel / ebcoms-s-Carousel 是刻意区分的大小写",
12
+ "ebcom-": "引擎/框架层的类名前缀(ebcomPrefix='ebcom'),组件源码里不出现",
13
+ "ui- / swiper-": "@weapp/ui 与 swiper 6.x 产生的类名,组件只是传 className 拼接"
14
+ },
15
+ "pickTree": "styleId(config.styles 中 category==='8' 的 style.id,取最后一个;没有则回落主题里的 slideId):'11'→slide-thumbs,'12'→slide-title,'13'→slide-multi,其余(含未配样式)→slide-default。二次判断:switchEffect==='multiSlides' 时无视上面三种样式,一律渲染 slide-default 的结构(只是 slidesPerView 换成配置值)。",
16
+ "root": {
17
+ "tag": "div",
18
+ "id": "<comId>",
19
+ "class": [
20
+ "ebcom",
21
+ "ebcom-slide",
22
+ "{ebcom-grid|ebcom-flow|ebcom-excel}",
23
+ "[ebcom-m]",
24
+ "ebcom-view",
25
+ "[has-no-header]",
26
+ "[content-no-padding]",
27
+ "[event-action-click]"
28
+ ],
29
+ "desc": "引擎外壳,由 weapp-ebdcoms 的 createView.renderView 生成,不在 ebdbasecoms 源码里。类型名拼成 ebcom-slide,布局拼成 ebcom-grid/ebcom-flow/ebcom-excel,移动端多一个 ebcom-m;配了点击事件动作时挂 event-action-click,content-no-padding 需要组件声明 padding=false(slide 没声明,一般看不到)。官方样式作用域就是 #<comId>.ebcom(getSlideStyles 生成的自定义样式会被它限域)。",
30
+ "when": "运行态视图。设计态没有这层:design/Design.tsx 直接渲染 SlideContent,外面只有设计器自己的容器",
31
+ "children": [
32
+ {
33
+ "tag": "div",
34
+ "class": [
35
+ "header"
36
+ ],
37
+ "when": "config.titleEnabled===true 时才有;slide 默认 titleEnabled=false,所以通常没有 header,此时外壳上会多 has-no-header",
38
+ "children": [
39
+ {
40
+ "tag": "div",
41
+ "class": [
42
+ "ebcom-title"
43
+ ],
44
+ "desc": "引擎渲染的组件标题"
45
+ }
46
+ ]
47
+ },
48
+ {
49
+ "tag": "div",
50
+ "class": [
51
+ "content"
52
+ ],
53
+ "desc": "引擎内容槽(事件动作的点击绑定在这层)。⚠️ 它和组件根元素都叫 content,是两个不同元素:这层是引擎的,组件根是 div.content.ebcoms-slide-view-content。less 里 .ebcom-slide.ebcom-slide>.content{padding:0;height:150px} 说的就是这层,.content>.content{height:100%} 说的才是组件根",
54
+ "children": [
55
+ "ref:shared.comRoot"
56
+ ]
57
+ },
58
+ {
59
+ "tag": "div",
60
+ "class": [
61
+ "footer"
62
+ ],
63
+ "when": "config.footerEnabled===true 时才有;slide 默认 false",
64
+ "desc": "引擎底部按钮区"
65
+ }
66
+ ]
67
+ },
68
+ "shared": {
69
+ "comRoot": {
70
+ "tag": "div",
71
+ "class": [
72
+ "content",
73
+ "ebcoms-slide-view-content",
74
+ "[single-data]"
75
+ ],
76
+ "desc": "组件根(SlideContent.render 的最外层)。class 里的 content 是组件自己写的、不是引擎那层;single-data 在只有 1 张图时挂上,less 用它隐藏左右箭头和分页。运行时引擎会在这层加 data-id=<comId>。4 个分树的根都是它的直接子节点。",
77
+ "tips": [
78
+ "自己写的规则建议用 #<comId> .ebcoms-slide-view-content 限域,不要只写 .content(会同时命中引擎那层)",
79
+ "有 single-data 时别重复抄隐藏逻辑:less 已隐藏分页和箭头"
80
+ ]
81
+ },
82
+ "carouselSwiper": {
83
+ "desc": "轮播核心片段(@weapp/ui Carousel,内部再包 swiper 6.x 的 Swiper/SwiperSlide),4 个分树都复用;差别只在传入的 props(slidesPerView、effect、className)与外面那层容器。",
84
+ "chain": "div.ui-carousel[.ebcoms-multiPics-custombtn] > div.swiper-container.ui-carousel-swiper-content > div.swiper-wrapper > div.swiper-slide > div.swiper-zoom-container",
85
+ "children": [
86
+ {
87
+ "tag": "div",
88
+ "class": [
89
+ "ui-carousel",
90
+ "[ebcoms-multiPics-custombtn]",
91
+ "[ui-carousel-rtl]"
92
+ ],
93
+ "desc": "Carousel 根。ui-carousel 来自 prefixCls 默认值(不是 ebcoms- 前缀);ebcoms-multiPics-custombtn 只有多图样式且横向展示 3 张时由组件传入;RTL 语言加 ui-carousel-rtl",
94
+ "children": [
95
+ {
96
+ "tag": "div",
97
+ "class": [
98
+ "swiper-container",
99
+ "ui-carousel-swiper-content",
100
+ "ui-carousel-swiper-{horizontal|vertical}",
101
+ "ui-carousel-swiper-imgFill",
102
+ "[ui-carousel-swiper-ie]"
103
+ ],
104
+ "desc": "Swiper 自己渲染的容器:swiper-container + 组件传的 className(上面这三段)。swiper 运行时还会再追加 swiper-container-horizontal/-vertical、swiper-container-initialized 等状态类",
105
+ "children": [
106
+ {
107
+ "tag": "div",
108
+ "class": [
109
+ "swiper-wrapper"
110
+ ],
111
+ "desc": "swiper 的滑动轨道",
112
+ "children": [
113
+ {
114
+ "tag": "div",
115
+ "class": [
116
+ "swiper-slide",
117
+ "[swiper-slide-active]",
118
+ "[swiper-slide-visible]",
119
+ "[swiper-slide-thumb-active]",
120
+ "[swiper-slide-duplicate]"
121
+ ],
122
+ "desc": "一张图一个 slide;属性 data-swiper-slide-index 由 virtualIndex 写入。这些都是 swiper 运行时按状态加的类,不是组件写的",
123
+ "children": [
124
+ {
125
+ "tag": "div",
126
+ "class": [
127
+ "swiper-zoom-container"
128
+ ],
129
+ "desc": "每个 slide 内固定包的一层(fillWays='imgFill' 时才有),缩略图条和大图的图片都在里面",
130
+ "children": [
131
+ "ref:shared.slideItem"
132
+ ]
133
+ }
134
+ ]
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "tag": "div",
140
+ "class": [
141
+ "ui-carousel-pagination",
142
+ "swiper-pagination",
143
+ "[pagination-custom-vertical]"
144
+ ],
145
+ "when": "图片数 > 0 时渲染该容器;竖排方向(switchEffect==='verticalSlide')且未指定 pagination.type 时多一个 pagination-custom-vertical",
146
+ "desc": "分页器容器。圆点是 swiper 生成的 span.swiper-pagination-bullet-carousel,激活态 swiper-pagination-carousel-active(这两个类名是组件在 bulletClass/bulletActiveClass 里指定的)。组件会在 onSlideChange 里动态改它的 style.bottom / style.width",
147
+ "children": [
148
+ {
149
+ "tag": "span",
150
+ "class": [
151
+ "swiper-pagination-bullet-carousel",
152
+ "[swiper-pagination-carousel-active]"
153
+ ],
154
+ "desc": "分页圆点,一图一个,swiper 渲染"
155
+ }
156
+ ]
157
+ },
158
+ {
159
+ "tag": "div",
160
+ "class": [
161
+ "ui-carousel-swiper-button-next",
162
+ "swiper-button-next",
163
+ "swiper-button-white"
164
+ ],
165
+ "desc": "下一个按钮容器(swiper-button-next 是 swiper 自己的类,swiper.less 里有默认样式,组件用 ui-carousel- 前缀的类覆盖)",
166
+ "children": [
167
+ {
168
+ "tag": "span",
169
+ "class": [
170
+ "ui-icon",
171
+ "ui-icon-wrapper",
172
+ "ui-carousel-arrow-next"
173
+ ],
174
+ "desc": "@weapp/ui Icon,内部是 svg.ui-icon-svg;横向用 Icon-Right-arrow01,竖排用 Icon-Down-arrow01"
175
+ }
176
+ ]
177
+ },
178
+ {
179
+ "tag": "div",
180
+ "class": [
181
+ "ui-carousel-swiper-button-prev",
182
+ "swiper-button-prev",
183
+ "swiper-button-white"
184
+ ],
185
+ "children": [
186
+ {
187
+ "tag": "span",
188
+ "class": [
189
+ "ui-icon",
190
+ "ui-icon-wrapper",
191
+ "ui-carousel-arrow-prev"
192
+ ],
193
+ "desc": "同上;横向 Icon-left-arrow01,竖排 Icon-up-arrow01"
194
+ }
195
+ ]
196
+ }
197
+ ]
198
+ }
199
+ ]
200
+ }
201
+ ],
202
+ "tips": [
203
+ "effect(fade/cube/coverflow/flip/slide)只改 swiper 内部结构与行内样式,不改外层类名;只有 switchEffect==='verticalSlide' 会让容器多 ui-carousel-swiper-vertical",
204
+ "lazyLoad=true 时图片是 img.swiper-lazy[data-src],预加载类为 swiper-lazy-preloader",
205
+ "想改圆点/箭头就去 .ebcoms-slide-view-content .ui-carousel-pagination / .ui-carousel-swiper-button-next,别写 swiper-button-next(swiper 自带样式优先级低,但容易和别的轮播互相影响)"
206
+ ]
207
+ },
208
+ "slideItem": {
209
+ "desc": "幻灯片单项(SlideItem),图片 + 标题/描述遮罩。4 个分树都复用它,区别只在父级传的参数:className(active)、hoverCls、type、hideImg。",
210
+ "chain": "div.ebcoms-carousel-slide-item[{imageMode类}][条件类] > div.ebcoms-carousel-slide-item-img + div.ebcoms-mask-wraper[.hasPadding]",
211
+ "children": [
212
+ {
213
+ "tag": "div",
214
+ "class": [
215
+ "ebcoms-carousel-slide-item",
216
+ "{ebcoms-carousel-contain|ebcoms-carousel-fill|ebcoms-carousel-cover|ebcoms-carousel-none|ebcoms-carousel-adapt}",
217
+ "[ebcoms-carousel-hover]",
218
+ "[ebcoms-carousel-slide-item-hover]",
219
+ "[active]"
220
+ ],
221
+ "desc": "单项根元素。图片适应方式按 imageMode 换成 5 选 1 的类(stretch→fill、equalScale→contain、equalScaleCut→cover、original→none、adapt→adapt);有链接或事件时挂 ebcoms-carousel-hover(less 已给 cursor:pointer);标题样式下,右侧导航项由 SlideContainer 传 hoverCls=ebcoms-carousel-slide-item-hover、当前项传 className=active。根上还有行内 transitionDuration(轮播速度),别在样式里写死 transition",
222
+ "children": [
223
+ {
224
+ "tag": "div",
225
+ "class": [
226
+ "ebcoms-carousel-slide-item-img"
227
+ ],
228
+ "when": "hideImg 为 true 时不渲染(标题样式的右侧导航项就是这种)",
229
+ "desc": "图片容器(less 已设 line-height:0、height:100%、背景 #efefef)",
230
+ "children": [
231
+ {
232
+ "tag": "img",
233
+ "class": [
234
+ "ebcoms-assets-img",
235
+ "[lazyload]",
236
+ "[swiper-lazy]"
237
+ ],
238
+ "desc": "普通情况是 @weapp/ebdcoms 的 AssetsImg(img.ebcoms-assets-img);配了 lazyLoad 且非 noLazyLoad 时换成 img.swiper-lazy + data-src。imageMode==='tiling'(平铺)时不渲染 img,改成 div.ebcoms-tiling-box(背景图铺满);imgUrl 为空时整块只渲染一个空 div"
239
+ }
240
+ ]
241
+ },
242
+ {
243
+ "tag": "div",
244
+ "class": [
245
+ "ebcoms-mask-wraper",
246
+ "[hasPadding]"
247
+ ],
248
+ "when": "showPicTitle===true(默认)才有;标题样式不论 showPicTitle 都会渲染。hasPadding 在有标题或描述时挂上",
249
+ "desc": "标题/描述遮罩层,内部固定两个 span:第一个是标题、第二个是描述(dangerouslySetInnerHTML 注入,可能含 p 等标签)",
250
+ "children": [
251
+ {
252
+ "tag": "span",
253
+ "desc": "标题(title)"
254
+ },
255
+ {
256
+ "tag": "span",
257
+ "desc": "描述(description)"
258
+ }
259
+ ]
260
+ }
261
+ ]
262
+ },
263
+ {
264
+ "tag": "div",
265
+ "class": [
266
+ "ebcoms-carousel-slide-item-arrow",
267
+ "ebcoms-carousel-slide-item-arrow-top",
268
+ "ebcoms-carousel-slide-item-arrow-bottom"
269
+ ],
270
+ "when": "只有标题样式 + type==='title_active'(右侧导航的当前项)才渲染,是单项根的兄弟但视觉上贴在大图上",
271
+ "desc": "指向大图的小三角。JS 会按箭头容器高度动态写 borderTopWidth,三角形颜色写在 less 里(#0071E3)",
272
+ "children": [
273
+ {
274
+ "tag": "div",
275
+ "class": [
276
+ "ebcoms-carousel-slide-item-arrow-top"
277
+ ]
278
+ },
279
+ {
280
+ "tag": "div",
281
+ "class": [
282
+ "ebcoms-carousel-slide-item-arrow-bottom"
283
+ ]
284
+ }
285
+ ]
286
+ }
287
+ ],
288
+ "tips": [
289
+ "每个渲染出来的元素都带 weId(DOM 里属性名是小写 weid),是样式编辑器/DOM 定位用的,不要写进选择器",
290
+ "缩略图条里的缩略图也是同一套 slideItem:mask-wraper 被 less 隐藏了,不要在缩略图里再套一层自己的类",
291
+ "只有 main 轮播的图片会触发图片预览(PhotoView,外部组件,DOM 不在组件内);缩略图的点击是空实现"
292
+ ]
293
+ },
294
+ "placeholder": {
295
+ "desc": "三种「组件没渲染轮播」的情况,样式需求落到这里时别去找 ui-carousel",
296
+ "list": [
297
+ {
298
+ "when": "数据集模式下 store.loading===true",
299
+ "chain": "div.ui-spin > svg(@weapp/ui Spin)",
300
+ "note": "less 已给 .ui-spin 做居中"
301
+ },
302
+ {
303
+ "when": "picsData.length < 1(无图/数据集没数据)",
304
+ "chain": "div.ebcoms-empty.ebcoms-empty-noData",
305
+ "note": "来自 @weapp/ebdcoms 的 Empty(compName='Empty', type='noData')"
306
+ },
307
+ {
308
+ "when": "手动图片模式且图片地址还在转换中(非设计态)",
309
+ "chain": "不渲染任何节点(render 返回 null)",
310
+ "note": "另一个 null:缩略图样式下 slidesPerView 或数据来源变化时会先销毁重建,短暂整块为空"
311
+ }
312
+ ]
313
+ },
314
+ "state": {
315
+ "desc": "运行时由 JS 动态加/移除的 class(初始 render 里没有,写选择器时按「可能出现」对待)",
316
+ "list": [
317
+ {
318
+ "condition": "标题样式下切换到的当前项",
319
+ "targetSelector": ".ebcoms-slider-container .ebcoms-carousel-slide-item",
320
+ "addClass": "active",
321
+ "note": "大图区和右侧导航各自都有一份 active"
322
+ },
323
+ {
324
+ "condition": "底部缩略图条的 miniSwiper 实例就绪",
325
+ "targetSelector": ".ebcoms-s-Carousel",
326
+ "addClass": "show",
327
+ "note": "没挂上时 less 让整条 visibility:hidden"
328
+ },
329
+ {
330
+ "condition": "鼠标悬浮主轮播的分页圆点(第 n 个)",
331
+ "targetSelector": ".ebcoms-s-Carousel .swiper-wrapper > div.swiper-slide(第 n 个)",
332
+ "addClass": "ebcoms-s-Carousel-swiper-hoverstyle",
333
+ "note": "给对应缩略图加悬浮态;若该缩略图已有 swiper-slide-thumb-active 则跳过"
334
+ },
335
+ {
336
+ "condition": "鼠标悬浮缩略图条里的缩略图",
337
+ "targetSelector": ".ebcoms-Carousel .swiper-pagination 下第 n 个 span.swiper-pagination-bullet-carousel",
338
+ "addClass": "ebcoms-Carousel-swiper-pagination-hoverstyle",
339
+ "note": "给主轮播对应的分页圆点加悬浮态"
340
+ },
341
+ {
342
+ "condition": "缩略图样式下当前缩略图(swiper thumbs 模块同步)",
343
+ "targetSelector": "缩略图条的 div.swiper-slide",
344
+ "addClass": "swiper-slide-thumb-active"
345
+ },
346
+ {
347
+ "condition": "组件被事件动作隐藏",
348
+ "targetSelector": "引擎外壳 #<comId>",
349
+ "addClass": "ebcom-display-none",
350
+ "note": "同时写 style.display='none'"
351
+ },
352
+ {
353
+ "condition": "点击幻灯片(事件绑定标记)",
354
+ "targetSelector": "被点击的 div.ebcoms-carousel-slide-item",
355
+ "addClass": "ebsdk-bind-dom",
356
+ "note": "每次点击会先清掉全页其它 ebsdk-bind-dom"
357
+ }
358
+ ]
359
+ }
360
+ },
361
+ "slide-thumbs": {
362
+ "when": "styleId==='11'(SlideStyle.thumbs,样式库里的缩略图样式)且 switchEffect!=='multiSlides'",
363
+ "tree": [
364
+ {
365
+ "tag": "div",
366
+ "class": [
367
+ "ebcoms-Carousel"
368
+ ],
369
+ "when": "miniSwiper 实例就绪后才渲染(源码里用 When 包着),在此之前 DOM 里完全没有这个节点",
370
+ "desc": "主轮播容器。注意是大写 C 的 ebcoms-Carousel,和缩略图条的 ebcoms-s-Carousel 是两层不同容器;鼠标事件挂在这层,脚本会给对应缩略图加悬浮类",
371
+ "children": [
372
+ "ref:shared.carouselSwiper"
373
+ ]
374
+ },
375
+ {
376
+ "tag": "div",
377
+ "class": [
378
+ "ebcoms-s-Carousel",
379
+ "[show]"
380
+ ],
381
+ "desc": "底部缩略图条容器(less 已给 height:20%、padding、默认 visibility:hidden,show 后可见)。内部还是同一套 ui-carousel(SCarousel 传 slidesPerView=min(图片数,4)、spaceBetween=4、freeMode),但方向没有透传,所以缩略图条永远是横向",
382
+ "diffs": [
383
+ "缩略图条内的 .ebcoms-carousel-slide-item 不显示 mask-wraper(less 已隐藏),也不显示分页",
384
+ "缩略图项 onClick 是空函数,点缩略图只切换主图、不触发预览和事件动作",
385
+ "当前缩略图靠 swiper thumbs 模块的 swiper-slide-thumb-active 标记(less 里已经写好选中框)"
386
+ ]
387
+ }
388
+ ]
389
+ },
390
+ "slide-title": {
391
+ "when": "styleId==='12'(SlideStyle.title,标题样式)且 switchEffect!=='multiSlides'",
392
+ "tree": [
393
+ {
394
+ "tag": "div",
395
+ "class": [
396
+ "ebcoms-slider-container"
397
+ ],
398
+ "desc": "标题样式容器。⚠️ 它不是 swiper:自动播放是自己用 setTimeout 换 active 项,所以这里没有 ui-carousel / swiper-* 类名",
399
+ "children": [
400
+ {
401
+ "tag": "div",
402
+ "class": [
403
+ "slide-content"
404
+ ],
405
+ "desc": "左侧大图区。⚠️ slide-content / slide-nav 是源码里的裸类名(没加 ebcoms- 前缀),最容易和别处的同名类互相污染,写样式时务必用 #<comId> 或 .ebcoms-slider-container 限域",
406
+ "children": [
407
+ {
408
+ "tag": "div",
409
+ "class": [
410
+ "ebcoms-carousel-slide-item",
411
+ "[active]"
412
+ ],
413
+ "desc": "每个大图就是 shared.slideItem,当前项由 SlideContainer 传 className='active'(less 里位移+层级切换);type 为 title_active 时会多渲染箭头",
414
+ "children": [
415
+ "ref:shared.slideItem"
416
+ ]
417
+ }
418
+ ]
419
+ },
420
+ {
421
+ "tag": "div",
422
+ "class": [
423
+ "slide-nav"
424
+ ],
425
+ "desc": "右侧标题导航列(less 已给宽 150px、每项 40px、白底卡片)。每项都是 shared.slideItem 但传了 hideImg(不渲染 -img)、hoverCls=ebcoms-carousel-slide-item-hover、className='active'(当前项)、type='title_active'|'title_'",
426
+ "children": [
427
+ "ref:shared.slideItem"
428
+ ]
429
+ }
430
+ ]
431
+ }
432
+ ]
433
+ },
434
+ "slide-multi": {
435
+ "when": "styleId==='13'(SlideStyle.multi,多图样式)且 switchEffect!=='multiSlides'",
436
+ "tree": [
437
+ {
438
+ "tag": "div",
439
+ "class": [
440
+ "ebcoms-multiPics"
441
+ ],
442
+ "desc": "多图样式的专用外壳(less 里做中间大、两侧缩小的 transform 动画,并隐藏分页)。里面就是 shared.carouselSwiper",
443
+ "children": [
444
+ {
445
+ "tag": "div",
446
+ "class": [
447
+ "ui-carousel",
448
+ "[ebcoms-multiPics-custombtn]"
449
+ ],
450
+ "ref": "shared.carouselSwiper",
451
+ "desc": "传参固定为 slidesPerView=min(图片数,3)、freeMode、centeredSlides;横向且刚好 3 张时会再传 className=ebcoms-multiPics-custombtn(less 用它把左右箭头往内推)",
452
+ "children": []
453
+ }
454
+ ]
455
+ }
456
+ ]
457
+ },
458
+ "slide-default": {
459
+ "when": "styleId 不是 11/12/13(没配样式或用了其它样式),以及 switchEffect==='multiSlides'(多图展示效果)时的全部情况",
460
+ "tree": [
461
+ {
462
+ "tag": "div",
463
+ "class": [
464
+ "ui-carousel",
465
+ "[ebcoms-multiPics-custombtn]"
466
+ ],
467
+ "ref": "shared.carouselSwiper",
468
+ "desc": "组件根下直接就是轮播,没有额外外壳(对比:缩略图样式多一层 ebcoms-Carousel、标题样式换成 ebcoms-slider-container、多图样式多一层 ebcoms-multiPics)。ebcoms-multiPics-custombtn 只在多图样式('13')时出现,本树默认没有",
469
+ "children": []
470
+ }
471
+ ],
472
+ "diffs": [
473
+ "switchEffect==='multiSlides' 时:slidesPerView/slidesPerGroup 用 config 的配置,slidesPerGroupSkip=slidesPerView-slidesPerGroup,DOM 结构与其它情况完全一致(仍是这一棵树)",
474
+ "其余情况的 slidesPerView 走 Carousel 默认值 1(整屏一张图 + 分页 + 左右箭头)"
475
+ ]
476
+ },
477
+ "notes": [
478
+ "前缀三类要分清:ebcoms-* 是组件自己写的(含刻意的 ebcoms-Carousel / ebcoms-s-Carousel 大写区分);ebcom-* 是引擎外壳(组件源码里搜不到);ui-* 与 swiper-* 来自 @weapp/ui Carousel 和 swiper 6.x。",
479
+ "最常踩的定位错误是 .content:引擎内容槽和组件根都叫 content,且是父子关系。要改组件根必须写 .ebcoms-slide-view-content(或 #<comId> .content > .content);只写 .content 会打到引擎那层。",
480
+ "标题样式的 slide-content / slide-nav、缩略图样式的 ui-carousel 结构都含无前缀类名,写样式时统一用 #<comId> 或 .ebcoms-slide-view-content 限域。",
481
+ "样式库自定义样式(getSlideStyles 生成)的作用域是 #<comId>.ebcom,同时会把用户 CSS 里的 .ebcom-slide 去掉 —— 所以自定义样式直接用组件类名即可,不需要自己套外壳。",
482
+ "less 里已有这些钩子,不要重复写:.ebcoms-slide-view-content(flex 竖排/100% 高)、.ebcoms-Carousel(高 80%)/.ebcoms-s-Carousel(高 20% + visibility)、.ebcoms-mask-wraper(+.hasPadding) 遮罩、.ebcoms-carousel-slide-item-img 与 object-fit 映射、.ebcoms-multiPics 缩放动画、.ebcoms-slider-container 标题样式布局、.ebcoms-carousel-slide-item-arrow 三角。",
483
+ "less 里的 .swiper-paginations 是历史遗留写法,实际 DOM 上分页容器的类是 swiper-pagination,那几条规则不会生效,别照着抄。",
484
+ "图片元素两套:默认是 img.ebcoms-assets-img(@weapp/ebdcoms AssetsImg),开懒加载后变 img.swiper-lazy[data-src];改图片样式时建议写 .ebcoms-carousel-slide-item-img > img 兜住两种。",
485
+ "渲染时序坑:缩略图样式下切换 slidesPerView / 数据来源会 destroy 重建,中间会整块不渲染;数据集模式首次加载渲染 Spin,无数据渲染 Empty。调试样式时先确认当前处于哪种状态。",
486
+ "设计态(design/Design.tsx)直接渲染 SlideContent,没有引擎外壳和 .content 层;在页面运行态里验证选择器,不要用设计器里的结构当依据。",
487
+ "反查源码:分树逻辑在 view/SlideContent.tsx 的 render(styleId 判断与 getDefCarouselProps 传参);轮播类名在 common/carousel/Carousel.tsx;单项在 view/SlideItem.tsx;已有样式在 view/index.less;引擎外壳在 weapp-ebdcoms/src/components/core/view/createView.tsx 的 renderView/renderContent。"
488
+ ]
489
+ }