weaver-work-cli 0.1.24 → 0.1.25

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 (337) hide show
  1. package/README.md +10 -1
  2. package/dist/core/output.js +53 -1
  3. package/dist/internal/e10/auth/commands.js +17 -2
  4. package/dist/internal/e10/auth/crypto.js +52 -12
  5. package/dist/internal/e10/auth/xiaoe.js +112 -39
  6. package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
  7. package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
  8. package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
  9. package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
  10. package/dist/shortcuts/workflow/index.js +55 -1
  11. package/dist/shortcuts/workflow/operations/form.js +1252 -109
  12. package/dist/shortcuts/workflow/operations/read.js +75 -35
  13. package/dist/shortcuts/workflow/operations/shared.js +25 -0
  14. package/dist/shortcuts/workflow/stdout-compact.js +33 -0
  15. package/docs/caizhilian.md +4 -3
  16. package/docs/e10-auth.md +8 -1
  17. package/node_modules/@napi-rs/keyring/LICENSE +21 -0
  18. package/node_modules/@napi-rs/keyring/README.md +19 -0
  19. package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
  20. package/node_modules/@napi-rs/keyring/index.js +514 -0
  21. package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
  22. package/node_modules/@napi-rs/keyring/keytar.js +26 -0
  23. package/node_modules/@napi-rs/keyring/package.json +125 -0
  24. package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
  25. package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
  26. package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
  27. package/node_modules/commander/LICENSE +22 -0
  28. package/node_modules/commander/Readme.md +1149 -0
  29. package/node_modules/commander/esm.mjs +16 -0
  30. package/node_modules/commander/index.js +24 -0
  31. package/node_modules/commander/lib/argument.js +149 -0
  32. package/node_modules/commander/lib/command.js +2662 -0
  33. package/node_modules/commander/lib/error.js +39 -0
  34. package/node_modules/commander/lib/help.js +709 -0
  35. package/node_modules/commander/lib/option.js +367 -0
  36. package/node_modules/commander/lib/suggestSimilar.js +101 -0
  37. package/node_modules/commander/package-support.json +16 -0
  38. package/node_modules/commander/package.json +82 -0
  39. package/node_modules/commander/typings/esm.d.mts +3 -0
  40. package/node_modules/commander/typings/index.d.ts +1045 -0
  41. package/package.json +5 -1
  42. package/skills/weaver-e10-builder/SKILL.md +281 -0
  43. package/skills/weaver-e10-builder/_catalog.md +94 -0
  44. package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
  45. package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
  46. package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
  47. package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
  48. package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
  49. package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
  50. package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
  51. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
  52. package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
  53. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
  54. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
  55. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
  56. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
  57. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
  58. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
  59. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
  60. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
  61. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
  62. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
  63. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
  64. package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
  65. package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
  66. package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
  67. package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
  68. package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
  69. package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
  70. package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
  71. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
  72. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
  73. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
  74. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
  75. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
  76. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
  77. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
  78. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
  79. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
  80. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
  81. package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
  82. package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
  83. package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
  84. package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
  85. package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
  86. package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
  87. package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
  88. package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
  89. package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
  90. package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
  91. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
  92. package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
  93. package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
  94. package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
  95. package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
  96. package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
  97. package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
  98. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
  99. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
  100. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
  101. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
  102. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
  103. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
  104. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
  105. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
  106. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
  107. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
  108. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
  109. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
  110. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
  111. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
  112. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
  113. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
  114. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
  115. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
  116. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
  117. package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
  118. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
  119. package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
  120. package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
  121. package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
  122. package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
  123. package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
  124. package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
  125. package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
  126. package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
  127. package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
  128. package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
  129. package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
  130. package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
  131. package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
  132. package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
  133. package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
  134. package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
  135. package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
  136. package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
  137. package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
  138. package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
  139. package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
  140. package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
  141. package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
  142. package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
  143. package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
  144. package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
  145. package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
  146. package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
  147. package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
  148. package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
  149. package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
  150. package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
  151. package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
  152. package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
  153. package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
  154. package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
  155. package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
  156. package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
  157. package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
  158. package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
  159. package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
  160. package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
  161. package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
  162. package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
  163. package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
  164. package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
  165. package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
  166. package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
  167. package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
  168. package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
  169. package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
  170. package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
  171. package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
  172. package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
  173. package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
  174. package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
  175. package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
  176. package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
  177. package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
  178. package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
  179. package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
  180. package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
  181. package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
  182. package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
  183. package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
  184. package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
  185. package/skills/weaver-e10-builder/assets/icons.db +0 -0
  186. package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
  187. package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
  188. package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
  189. package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
  190. package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
  191. package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
  192. package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
  193. package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
  194. package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
  195. package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
  196. package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
  197. package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
  198. package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
  199. package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
  200. package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
  201. package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
  202. package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
  203. package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
  204. package/skills/weaver-e10-builder/references/common/map.md +153 -0
  205. package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
  206. package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
  207. package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
  208. package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
  209. package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
  210. package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
  211. package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
  212. package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
  213. package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
  214. package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
  215. package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
  216. package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
  217. package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
  218. package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
  219. package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
  220. package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
  221. package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
  222. package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
  223. package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
  224. package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
  225. package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
  226. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
  227. package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
  228. package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
  229. package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
  230. package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
  231. package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
  232. package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
  233. package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
  234. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
  235. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
  236. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
  237. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
  238. package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
  239. package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
  240. package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
  241. package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
  242. package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
  243. package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
  244. package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
  245. package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
  246. package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
  247. package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
  248. package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
  249. package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
  250. package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
  251. package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
  252. package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
  253. package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
  254. package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
  255. package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
  256. package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
  257. package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
  258. package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
  259. package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
  260. package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
  261. package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
  262. package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
  263. package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
  264. package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
  265. package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
  266. package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
  267. package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
  268. package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
  269. package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
  270. package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
  271. package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
  272. package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
  273. package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
  274. package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
  275. package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
  276. package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
  277. package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
  278. package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
  279. package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
  280. package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  281. package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
  282. package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
  283. package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
  284. package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
  285. package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
  286. package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
  287. package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
  288. package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
  289. package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
  290. package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
  291. package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
  292. package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
  293. package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
  294. package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
  295. package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
  296. package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
  297. package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
  298. package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
  299. package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
  300. package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
  301. package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
  302. package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
  303. package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
  304. package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
  305. package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
  306. package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
  307. package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
  308. package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
  309. package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
  310. package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
  311. package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
  312. package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
  313. package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
  314. package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
  315. package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
  316. package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
  317. package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
  318. package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
  319. package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
  320. package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
  321. package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
  322. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
  323. package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
  324. package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
  325. package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
  326. package/skills/weaver-e10-caizhilian/SKILL.md +7 -2
  327. package/skills/weaver-e10-caizhilian/references/files.md +15 -0
  328. package/skills/weaver-e10-caizhilian/references/setting-attach.md +48 -3
  329. package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
  330. package/skills/weaver-e10-shared/SKILL.md +8 -4
  331. package/skills/weaver-e10-shared/references/e10-auth-and-session.md +7 -5
  332. package/skills/weaver-e10-workflow/SKILL.md +23 -44
  333. package/skills/weaver-e10-workflow/references/source-manifest.json +27 -22
  334. package/skills/weaver-e10-workflow/references/workflow-create.md +238 -85
  335. package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
  336. package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
  337. package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
@@ -0,0 +1,606 @@
1
+ {
2
+ "component": "new-tab 选项卡组件(weapp-ebdnavcoms/src/components/tab,目录名 tab,组件类型 NewTab,口语常叫 new-tab)",
3
+ "usage": "NewTab 的「组件根」不是一个元素,而是同级的两个块:.ebcoms-tab-header(选项栏)+ .ebcoms-tab-content(内容区),两者都挂在引擎外壳的 .content 里,都带一个 <comId> 的 class。先按 page.client 选分树:PC → shared.tabHeader + shared.tabContent;移动端 → mobile。再按 config 的 more / mode / 下级页签独立展示开关去看 tab-more 与 sub-tab。写选择器一定用 .ebcoms-tab-header / .ebcoms-tab-content / #<comId> 限域 —— 组件内部有 header / content / text / tab-name / count / main / left / right 这类无前缀裸类名,不限域必然误伤。",
4
+ "legend": {
5
+ "[cls]": "条件class,满足业务/配置条件才挂载",
6
+ "{a|b}": "多选一class(同一位置按配置或客户端换成其中一个)",
7
+ "a > b": "父子层级压缩写法,冒号左边是右边的父级",
8
+ "ref:shared.xxx": "引用 shared 中定义的复用片段",
9
+ "uncontrolled": "第三方组件(@weapp/ui 的 Menu/Trigger/Popover/Empty、@weapp/ebdcoms 的 OperationBtns/TransformContent、@weapp/designer 的 DroppableView)渲染,内部结构不可控,只给挂载点",
10
+ "<comId>": "组件实例 id。引擎外壳的 id、.ebcoms-tab-header 与 .ebcoms-tab-content 上拼的 class 都是它;官方样式作用域写成 #<comId>.ebcom",
11
+ "ebcoms-": "组件自己写的类名前缀(clsPrefix='ebcoms')",
12
+ "ebcom-": "引擎/框架层的类名前缀(ebcomPrefix='ebcom'),组件源码里搜不到",
13
+ "weapp-ebdnavcoms-": "组件库对外容器前缀(ebdNavComsClsPrefix),只出现在独立容器 TabViewCommon / SubTabViewContainer 的根上",
14
+ "ui- / ui-m-": "@weapp/ui 的 Menu 系列类名(ui-m- 是它的移动端变体),组件只传 className 与 type/position 拼接",
15
+ "裸类名": "header / main / left / right / content / text / text-container / tab-name / count / tab-dot / active-icon / separator 这些没有前缀的类名都是组件自己写的,最容易被通用样式误伤"
16
+ },
17
+ "pickTree": "1. 状态:View.state.loading===true → state-loading(整棵被 Spin 替换)。\n2. 客户端:page.client==='MOBILE' → mobile(类名整体换成 ebcoms-m-* / ui-m-*),PC → shared.tabHeader + shared.tabContent。\n3. PC 下再看样式配置 config.styles 里 category 为选项卡(NEWTAB)那条的 tab.mode:horizontal / vertical 只改选项栏内部的条件类名(vertical / isverticalStyle3/4/5 / positionRight …)和引擎 .content 上的布局类名,DOM 骨架不变;topDropdown 会把选项栏里的选项列表整段换成顶部下拉触发器(见 shared.selectTrigger)。\n4. 再看 tab.more:'2' → more-shrink(自动换行+收缩图标)、'4' → more-dropdown、'5'/'6' → more-drawer,这三类弹出层结构见 tab-more。\n5. 下级页签独立展示(tab.subItemDisplayMode==='1' 且 addChildAfterSelect==='notAllow')→ 页面里会多出一个 #sub-tab-<comId> 独立容器,见 sub-tab。\n6. 编辑器画布(设计态)→ design,只有差异清单。",
18
+ "root": {
19
+ "tag": "div",
20
+ "id": "<comId>",
21
+ "class": [
22
+ "ebcom",
23
+ "ebcom-newtab",
24
+ "{ebcom-grid|ebcom-flow|ebcom-excel}",
25
+ "[ebcom-m]",
26
+ "ebcom-view",
27
+ "[has-no-header]",
28
+ "[content-no-padding]",
29
+ "[event-action-click]",
30
+ "[standalone]"
31
+ ],
32
+ "desc": "引擎外壳,由 weapp-ebdcoms 的 createView 生成,不在本组件源码里。类型名拼成 ebcom-newtab,布局拼成 ebcom-grid/ebcom-flow/ebcom-excel(grid 与 flow 决定内容区里是 .content-box 还是 .flow-content-box);配了点击事件动作挂 event-action-click。⚠️ has-no-header 在 NewTab 上恒为真且不能反推有没有标题栏:组件声明了 static renderHeader,引擎就不渲染自己那层 .header,但仍会把 has-no-header 加上(和 nav-bar / picture 的判断逻辑正好相反)。官方样式作用域是 #<comId>.ebcom(getTabStyles 生成的自定义样式被它 + pretreatCssCode 限域)。",
33
+ "when": "运行态视图。设计态外壳由 createDesign 拼(ebcom-newtab … ebcom-design),结构差异见 design",
34
+ "children": [
35
+ {
36
+ "tag": "div",
37
+ "class": [
38
+ "header",
39
+ "[hideLabelBar]"
40
+ ],
41
+ "when": "config.titleEnabled===true 时才有(本组件 config 默认标题栏关闭,设计态 children.onBeforeCreate 还会强制置 false)。这层不是引擎写的:组件用 static renderHeader 把 TabTitle 交回引擎,引擎把返回值直接放在外壳下,所以它和 .content 是平级兄弟,不是 .content 的子元素",
42
+ "desc": "组件标题栏(TabTitle 的输出)。整块结构见 ref:shared.tabTitleHeader"
43
+ },
44
+ {
45
+ "tag": "div",
46
+ "class": [
47
+ "content",
48
+ "ebcoms-newtab-{tab|menu|select}-{top|bottom|left|right}",
49
+ "ebcoms-newtab-{left|center|right|cover|top|bottom}",
50
+ "[ebcoms-newtab-more-{wrap|shrink|dropdown|drawer}]",
51
+ "[ebcoms-newtab-verticalStyle]",
52
+ "[ebcoms-m-newtab]",
53
+ "[titleEnabled]"
54
+ ],
55
+ "desc": "引擎内容槽。⚠️ 这串布局类名不是组件 render 里写的,是引擎读组件 static defaultOpts.render.contentClass = getTabContentClass(props) 拼上来的,所以「选项栏在上/在左」「更多用什么方式收」「纵向样式四五」这些定位类名都在这一层(.content 上),不在 .ebcoms-tab-content 上。取值规则:type 由 mode 决定(horizontal→tab / vertical→menu / topDropdown→select,移动端 topDropdown→menu 且多一个 -m 中缀),position 由 mode+position 决定(horizontal 时 1/2→top/bottom,其余→left/right),align 段为 left/center/right/cover(vertical 时是 top/bottom,topDropdown 时整段消失)。⚠️ 它和组件里的 .ebcoms-tab-content 同名不同层,隔着一层父子关系,是本组件最容易打错的一处",
56
+ "children": [
57
+ "ref:shared.tabHeader",
58
+ "ref:shared.tabContent"
59
+ ]
60
+ },
61
+ {
62
+ "tag": "div",
63
+ "class": [
64
+ "footer"
65
+ ],
66
+ "when": "config.footerEnabled===true 时才有;NewTab 默认 false,正常看不到",
67
+ "desc": "引擎底部按钮区,来自 createView.renderFooter"
68
+ }
69
+ ],
70
+ "tips": [
71
+ "本组件没有「组件自己的根 div」:Content.render 返回的是一个 Fragment(.ebcoms-tab-header 与 .ebcoms-tab-content 并列)。想整块限域就用 #<comId> 或这两个类名,别假设存在单一根",
72
+ "TabViewCommon(组件库导出的 NewTabView,独立预览用)会自己渲染一套同样的外壳:div#<comId>.ebcom.ebcom-newtab.ebcom-grid.ebcom-view.weapp-ebdnavcoms-newtab-viewContainer[.isVertical][.verticalStyleFour] > div.<布局类>.content。它没有 has-no-header,且不渲染 TabTitle(标题栏交给宿主 PageHeader 的插槽),结构与规则页一致"
73
+ ]
74
+ },
75
+ "shared": {
76
+ "tabTitleHeader": {
77
+ "tag": "div",
78
+ "class": [
79
+ "header",
80
+ "[hideLabelBar]"
81
+ ],
82
+ "desc": "组件标题栏(TabTitle),由 static renderHeader 交给引擎渲染,位置在外壳第一个子节点、与 .content 平级。⚠️ header / main / left / right / more-icon 都是无前缀裸类名。已有钩子:common/index.less 的 `.ebcom-newtab > .header.hideLabelBar` 那一大段(.main/.left/.right/.more-icon/.ebcoms-header-btns 的布局与间距),以及 body[page-rtl='true'] 下的镜像规则",
83
+ "when": "config.titleEnabled===true;titleEnabled 为 false 时整块不渲染",
84
+ "children": [
85
+ {
86
+ "tag": "div",
87
+ "class": [
88
+ "main"
89
+ ],
90
+ "when": "hideLabelBar===true(config.titleEnabled && config.hideLabelBar 且 enableHideLabelBar 判定通过)时才走这一支",
91
+ "desc": "hideLabelBar 分支:标题与操作按钮分列左右",
92
+ "chain": "div.header.hideLabelBar > div.main > div.left + div.right",
93
+ "children": [
94
+ {
95
+ "tag": "div",
96
+ "class": [
97
+ "left"
98
+ ],
99
+ "desc": "标题区",
100
+ "children": [
101
+ "ref:shared.tabTitleText"
102
+ ]
103
+ },
104
+ {
105
+ "tag": "div",
106
+ "class": [
107
+ "right"
108
+ ],
109
+ "when": "父组件不是 PageHeader 时才有",
110
+ "desc": "右侧按钮区",
111
+ "children": [
112
+ "ref:shared.headerBtns"
113
+ ]
114
+ }
115
+ ]
116
+ },
117
+ "ref:shared.tabTitleText",
118
+ "ref:shared.headerBtns"
119
+ ],
120
+ "tips": [
121
+ "非 hideLabelBar 分支没有 main/left/right:.header 的直接子节点就是「标题图标 + .ebcom-title + 顶部操作按钮」。所以写 .header 的布局要按分支分别处理",
122
+ "enableHideLabelBar 在只有 0~1 个可见页签时会返回 true;此时标题栏换成 .main 那一支"
123
+ ]
124
+ },
125
+ "tabTitleText": {
126
+ "tag": "div",
127
+ "class": [
128
+ "ebcom-title",
129
+ "[ebcom-title-design]"
130
+ ],
131
+ "when": "config.title 有内容时",
132
+ "desc": "标题文字。运行态由 @weapp/ebdcoms 的 TransformContent 渲染并拼上 ebcom-title(所以会带 ebcoms-transform-content-readonly 等类);设计态直接渲染 div.ebcom-title.ebcom-title-design + dangerouslySetInnerHTML。它前面可能还有一个由 TitleIconComP 渲染的标题图标(@weapp/ebdcoms,不可控)"
133
+ },
134
+ "headerBtns": {
135
+ "tag": "div",
136
+ "class": [
137
+ "ebcoms-header-btns"
138
+ ],
139
+ "when": "顶部操作按钮开启且有可用按钮、且 extra-content 没声明隐藏时才渲染",
140
+ "desc": "标题栏右侧的操作按钮容器,由 TabTitle 的 ComBtns 渲染:里面是 @weapp/ebdcoms 的 OperationBtns(wrapClass 传的是 ebcoms-header-btns,内部结构不可控)。另有 ExtraContent(默认返回空、无 DOM)、移动端改用 span.ui-icon.more-icon,以及设计/运行态的筛选搜索(FilterSearch / CommonFilter)",
141
+ "tips": [
142
+ "这个 ebcoms-header-btns 是「标题栏」按钮;选项栏里还有另一个同名 wrapClass 的按钮容器(见 shared.operations 里的 OperationBtns),两者最容易混",
143
+ "已有钩子:common/index.less 里 `.ebcom-newtab > .header.hideLabelBar .right .ebcoms-header-btns` 那段"
144
+ ]
145
+ },
146
+ "tabHeader": {
147
+ "tag": "div",
148
+ "class": [
149
+ "ebcoms-tab-header",
150
+ "<comId>",
151
+ "[ebcoms-tab-header-title-enabled]",
152
+ "[ebcoms-tab-header-titleleft-iconafter]",
153
+ "[ebcoms-tab-header-preset]",
154
+ "[vertical]",
155
+ "[topDropdown]",
156
+ "[new-tab-style]",
157
+ "[isBreadFirst]",
158
+ "[isBreadSec]",
159
+ "[isBreadThi]",
160
+ "[beforeLogin]",
161
+ "[positionRight]",
162
+ "[isverticalStyle4]",
163
+ "[isverticalTree]",
164
+ "[textAlignHorizontal]",
165
+ "[isverticalStyle3]",
166
+ "[customStyle<样式id>]",
167
+ "[moreModeClass_<mode>_<more>]",
168
+ "[unlockIconWidth]",
169
+ "[rightAndOverflow]"
170
+ ],
171
+ "id": "ebcoms-tab-header-weight",
172
+ "desc": "选项栏(Content.renderHeader 的最外层,组件渲染的第一个块)。类名三段:固定前缀 ebcoms-tab-header;class 里再拼一个 <comId>(getTabStyles 生成的选择器写成 .ebcoms-tab-header.<comId>,官方样式靠它限域);其余全是条件类。⚠️ 带下划线的大驼峰类名(moreModeClass_horizontal_4、customStyle1101998774837403648)也在这层。⚠️ id 是固定字符串 ebcoms-tab-header-weight,不是唯一 id,别用它做单实例定位(已有多处 less 用它提优先级)",
173
+ "when": "运行态始终渲染这个 div(即使内容是空的),除非配置隐藏标题栏逻辑命中——见下面 tips",
174
+ "children": [
175
+ {
176
+ "tag": "div",
177
+ "class": [
178
+ "ui-menu",
179
+ "ui-menu-{tab|menu|select}",
180
+ "[ui-menu-limit]",
181
+ "[ui-menu-hasmore]",
182
+ "ui-menu-{tab|select}-{top|bottom|left|right}",
183
+ "[ui-menu-{tab|menu|select}-rtl]",
184
+ "ebcoms-tab-menu-{top|bottom|left|right}",
185
+ "[hasChild]"
186
+ ],
187
+ "desc": "@weapp/ui Menu(uncontrolled,内部结构不可控,只给挂载点)。className 由组件传 ebcoms-tab-menu-<position> + [hasChild];ui-menu-* 由 Menu 自己按 type/position/overflowType 拼。type 由选项栏布局决定:horizontal→tab、vertical→menu、topDropdown→select(移动端 horizontal/vertical→tab、topDropdown→menu)。当前页签的选项就是在 Menu 里通过 customRenderItem / customRenderItemIcon / customRenderItemContent 三个回调渲染出来的,见 ref:shared.tabItem 与 ref:shared.selectTrigger",
188
+ "tips": [
189
+ "Menu 里还有这些被本组件样式复用的类:ui-menu-list-item、ui-menu-list-item-active、ui-menu-list-item-content-wrap、ui-menu-list-item-overflow、ui-menu-tab-top-container、ui-menu-nav-container-scrolling、ui-menu-nav-scroll、ui-menu-hasmore、ui-menu-overflow-more-text、ui-menu-select-title(-text/-count/-icon)、ui-trigger",
190
+ "overflowType:more 为 '4'/'5'/'6' 时是 'more'(挂 ui-menu-hasmore),否则 'scroll'(挂滚动容器)"
191
+ ]
192
+ },
193
+ "ref:shared.tabItem",
194
+ {
195
+ "tag": "span",
196
+ "class": [
197
+ "ebcoms-newtab-shrink",
198
+ "[active]"
199
+ ],
200
+ "when": "shouldShowShrinkIcon(config, client) 为真:horizontal 且 more==='2',或移动端 horizontal 且 more 为 '4'/'5'/'6'(源码在 common/tab-dropdown/ShrinkIcon.tsx)",
201
+ "desc": "折叠/展开图标(收缩图标),点击切换自动换行。组件给它传 className=ebcoms-newtab-shrink,active 时内部 svg 旋转 180°。已有钩子:common/style.less 的 .ebcoms-newtab-shrink(flex 居中、宽 20px、cursor:pointer、&.active .ui-icon 旋转)与 `.ebcoms-newtab-shrink + .ui-menu`(右侧留 20px)"
202
+ },
203
+ "ref:shared.operations",
204
+ {
205
+ "tag": "div",
206
+ "class": [
207
+ "nav-panel-btn"
208
+ ],
209
+ "when": "isPanel===true 且 mode==='topDropdown'",
210
+ "desc": "导航面板按钮(面包屑场景),内容来自 Menu 的 extraContent"
211
+ }
212
+ ],
213
+ "tips": [
214
+ "三个「整块变空/消失」的开关,光看类名分不出来,要看是否 :empty:1) hideMenu(运行时接口下发)→ 整个选项栏内容不渲染;2) enableHideLabelBar(titleEnabled+hideLabelBar 且可见页签 ≤1)→ 同上;3) noMenuDataHiding 且菜单数据 ≤0 → 同上。这些情况下 .ebcoms-tab-header 这个 div 仍然存在但没有子元素",
215
+ "同一层还有 from PageHeader 场景:父组件 type==='PageHeader' 且 underTheTitle 且容器位置靠左时,整个选项栏不渲染"
216
+ ]
217
+ },
218
+ "tabItem": {
219
+ "tag": "div",
220
+ "class": [
221
+ "ui-menu-list-item",
222
+ "ui-menu-list-item-tab",
223
+ "ui-menu-parent-icon",
224
+ "[ui-menu-list-item-active]",
225
+ "[ui-menu-list-item-tab-active]",
226
+ "[ebcoms-tab-select-content]",
227
+ "[ui-menu-list-item-flex]"
228
+ ],
229
+ "id": "<页签项 id>",
230
+ "desc": "一个页签项(customRenderItem 返回的根)。id 直接写的是页签数据 id(但注意 shared.tabItemContent 里的文字节点会带同一个 id,见其 tips)。active 时同时挂 ui-menu-list-item-active 与 ui-menu-list-item-tab-active;横向铺满(align==='4' 且 horizontal)时挂 ui-menu-list-item-flex;顶部下拉模式时挂 ebcoms-tab-select-content。⚠️ 这层还被 @weapp/ui 当 Menu 的选项容器用,ui-* 前缀那段是 Menu 的,ebcoms-tab-select-content 是本组件加的",
231
+ "when": "菜单数据里的每个可见页签各一份(含子项;纵向样式四会用 Trigger 包一层,见 tips)",
232
+ "children": [
233
+ {
234
+ "tag": "div",
235
+ "class": [
236
+ "ui-menu-list-item-content-wrap",
237
+ "[ui-menu-list-item-overflow]",
238
+ "[tab-history-width]",
239
+ "[isverticalStyle3]"
240
+ ],
241
+ "desc": "选项内容外层(customRenderItem 里的 menuContent)。如果传了 customRenderItemContent 回调,这一整块会被换成 div.ebcoms-tab-header-customRenderItemContent —— 那是插件口子,默认没有",
242
+ "children": [
243
+ {
244
+ "tag": "div",
245
+ "class": [
246
+ "ui-menu-list-item-content"
247
+ ],
248
+ "children": [
249
+ {
250
+ "tag": "div",
251
+ "class": [
252
+ "text-container",
253
+ "[text-overflow]"
254
+ ],
255
+ "desc": "文字/图标的横向容器;align==='4'(铺满)时多 text-overflow",
256
+ "children": [
257
+ {
258
+ "tag": "span",
259
+ "class": [
260
+ "ebcoms-assets-icon"
261
+ ],
262
+ "when": "页签配了图标时(可能是 @weapp/ui AssetsItem,也可能是 customRenderItemIcon 回调给的自定义图标)",
263
+ "desc": "页签图标挂载点。⚠️ ebcoms-assets-icon 是 @weapp/ui AssetsItem 的类名,内部还有 ui-icon-wrapper / ui-icon-svg 等,不可控。已有钩子:common/style.less 的 .text() mixin 里 `.ebcoms-assets-icon{margin-right:calc(3*var(--hd))}`"
264
+ },
265
+ {
266
+ "tag": "div",
267
+ "class": [
268
+ "text",
269
+ "pc",
270
+ "[hasIcon]"
271
+ ],
272
+ "desc": "页签文字块。⚠️ text / pc / hasIcon 都是裸类名。pc 是固定类;图标路径或图片存在时加 hasIcon(less 用它把宽度收成 calc(100% - 24*var(--hd)))。纵向样式五会额外有 isverticalStyle5 相关处理",
273
+ "children": [
274
+ "ref:shared.tabItemContent",
275
+ {
276
+ "tag": "span",
277
+ "class": [
278
+ "count"
279
+ ],
280
+ "when": "displayCounts 里该页签 displayCount > -1 且 showCount",
281
+ "desc": "角标计数,内容形如 (12)。来自 Count 组件,可被插件 renderMenuItemCount 整体替换",
282
+ "tips": [
283
+ "已有钩子:common/style.less 的 .text() mixin 里 .count{padding-left:calc(3*var(--hd))},是裸类名,必须限域"
284
+ ]
285
+ },
286
+ {
287
+ "tag": "span",
288
+ "class": [
289
+ "tab-dot"
290
+ ],
291
+ "when": "displayCounts 里该页签 displayCount==='*' 且 showCount",
292
+ "desc": "红点角标(无数字)。已有钩子:common/style.less 里 `.text > span.tab-dot{width:5px;height:5px;background:#ff666a;border-radius:50%;margin-left:3px}`"
293
+ }
294
+ ]
295
+ }
296
+ ]
297
+ }
298
+ ]
299
+ },
300
+ {
301
+ "tag": "div",
302
+ "class": [
303
+ "active-icon",
304
+ "[active]"
305
+ ],
306
+ "desc": "选中态装饰(下划线/竖条之类的动画元素)。⚠️ 它在 ui-menu-list-item-content-wrap 里、是 ui-menu-list-item-content 的兄弟,不是它的子元素;激活态挂 active。裸类名,必须限域"
307
+ }
308
+ ]
309
+ },
310
+ {
311
+ "tag": "div",
312
+ "class": [
313
+ "separator",
314
+ "ebcoms-tab-separator"
315
+ ],
316
+ "when": "isBreadFirst(面包屑样式一)时",
317
+ "desc": "页签之间的分隔符,内容是配置里的 separator 文本。⚠️ separator 是裸类名,ebcoms-tab-separator 是组件加的"
318
+ }
319
+ ],
320
+ "tips": [
321
+ "纵向样式四(VER_D)且页签有子项:这一层外面再包 @weapp/ui Trigger,子级菜单在弹层里,DOM 不在选项栏内。纵向样式五(VER_E):有子项时包 Popover(popupClassName=ebcoms-tab-style5-popover)+ Trigger(额外拼 weapp-ebdnavcoms-tab-verticalItem-isverticalStyle5),无子项的非子级只用 Popover 包一层。两者源码都在 common/tab-verticalItem/VerticalFiveItem.tsx",
322
+ "子页签(data.childrenList 有值)在默认分支下走的是 Menu 自己渲染的 itemNode,结构由 Menu 决定(不可控)"
323
+ ]
324
+ },
325
+ "tabItemContent": {
326
+ "tag": "div",
327
+ "class": [
328
+ "tab-name"
329
+ ],
330
+ "desc": "页签文字的包裹层(ItemContent),带 title 属性(截断时原生 tooltip)",
331
+ "chain": "div.text.pc > div.tab-name > div.ebcoms-tab-menu-item.tab-name[.ebcoms-transform-content-readonly]",
332
+ "children": [
333
+ {
334
+ "tag": "div",
335
+ "class": [
336
+ "ebcoms-tab-menu-item",
337
+ "tab-name",
338
+ "[ebcoms-transform-content-readonly]"
339
+ ],
340
+ "desc": "@weapp/ebdcoms 的 TransformContent 根节点:组件传的 className(ebcoms-tab-menu-item tab-name)拼在它的 div 上,富文本/字段内容由 dangerouslySetInnerHTML 注入(内部 p/span 等不可控)"
341
+ }
342
+ ],
343
+ "tips": [
344
+ "⚠️ tab-name 出现两次:外层 div 和 TransformContent 根节点都叫 tab-name(`.text .tab-name` 这类 less 就是按嵌套写的)。已有钩子:common/style.less 的 .text() mixin 里 .tab-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}",
345
+ "⚠️ 同一个页签 id 会出现在两个元素上(外层 .ui-menu-list-item 和 TransformContent 根节点都写 id=页签id),别用 #id 定位单个元素",
346
+ "页面多语言/字段替换由 TransformContent 完成,写样式只需要管好 .ebcoms-tab-menu-item 这层,别改注入的内容结构"
347
+ ]
348
+ },
349
+ "operations": {
350
+ "tag": "div",
351
+ "class": [
352
+ "ebcoms-tab-operations-wrap",
353
+ "[vertical]",
354
+ "[topDropdown]",
355
+ "[hasTabBtns]",
356
+ "[isSignal]"
357
+ ],
358
+ "desc": "选项栏右侧的操作按钮区(Content.renderComBtns)。两个来源:直接 dom() 分支就是这一层 div;有子组件操作按钮时由 view/ComBtns.tsx 渲染,最外层仍是同一个 ebcoms-tab-operations-wrap。里面依次是 renderHeaderEx、renderOwnBtns(@weapp/ebdcoms OperationBtns,wrapClass=ebcoms-header-btns)、以及 FilterSearch(ebcoms-charts-main-filtertotal-mask 挂载点)",
359
+ "when": "showChildOpBtns 为真(horizontal 或 topDropdown),且没走 PageHeader 的 underTheTitle 分支、没有自定义内容",
360
+ "chain": "div.ebcoms-tab-operations-wrap > (div.ebcoms-header-btns 内的 @weapp/ebdcoms OperationBtns) + (FilterSearch 挂载点)",
361
+ "tips": [
362
+ "子选项卡选择「操作按钮显示在中间」(BtnShowType.Middle)时,这层会被挪到内容区,并被 div.ebcoms-tab-content-container-right 包一层",
363
+ "optionShowType 为 ChildEX 且父组件不是 PageHeader 时,renderComBtns 会作为子选项卡头部的一部分渲染(子选项卡自己调)",
364
+ "hasTabBtns 条件:(顶部操作按钮开启且 titleEnabled 为 false) 或 optionShowType 为 Middle"
365
+ ]
366
+ },
367
+ "selectTrigger": {
368
+ "tag": "div",
369
+ "class": [
370
+ "ebcoms-newtab-tab-dropdown-header-select",
371
+ "[spreadMenu]"
372
+ ],
373
+ "when": "mode==='topDropdown'(PC),或移动端 topDropdown 时的对应结构(ebcoms-newtab-tab-m-dropdown-header-select)",
374
+ "desc": "顶部下拉模式下,选项栏里显示的当前页签触发器(customSelectContent 返回的根)。真正的内容来自 view/CustomSelectContent.tsx",
375
+ "children": [
376
+ {
377
+ "tag": "span",
378
+ "class": [
379
+ "ui-menu-select-title"
380
+ ],
381
+ "desc": "下拉触发器内容,可能是 .ebcoms-assets-icon + .ui-menu-select-title 的顺序(图标前置/后置),也可能只此一层",
382
+ "children": [
383
+ {
384
+ "tag": "span",
385
+ "class": [
386
+ "ui-menu-select-title-text"
387
+ ],
388
+ "desc": "当前页签文字(值同页签文字),后面可能跟插件 renderMenuInnerContent 追加的内容"
389
+ },
390
+ {
391
+ "tag": "span",
392
+ "class": [
393
+ "ui-menu-select-title-count"
394
+ ],
395
+ "when": "有计数角标时",
396
+ "desc": "形如 (12) 的计数"
397
+ },
398
+ {
399
+ "tag": "span",
400
+ "class": [
401
+ "ui-menu-select-title-icon"
402
+ ],
403
+ "desc": "下拉箭头容器,内部是 @weapp/ui Icon(Icon-Down-arrow04,size=sm)。图标前置的分支里这一层是 .ui-menu-select-title 的兄弟"
404
+ }
405
+ ]
406
+ }
407
+ ],
408
+ "tips": [
409
+ "已有钩子:common/style.less 有一整段针对 .ui-menu-select-title / -text / -count / -icon 的规则,以及 `>.ebcoms-assets-icon + .ui-menu-select-title`(图标前置)与 `.ui-menu-select-title + .ebcoms-assets-icon`(图标后置)两个位置差异规则",
410
+ "getTabStyles 里还有一条专门的:.ebcoms-tab-header.<comId> .ebcoms-newtab-tab-dropdown-header-select .ui-menu-select-title-text"
411
+ ]
412
+ },
413
+ "tabContent": {
414
+ "tag": "div",
415
+ "class": [
416
+ "ebcoms-tab-content-{top|bottom|left|right}",
417
+ "ebcoms-tab-content",
418
+ "<comId>",
419
+ "[ebcoms-tab-content-childs-bg]",
420
+ "[ebcoms-tab-flow-content]",
421
+ "[isNotEmpty]",
422
+ "[ebcoms-subTab-position-{top|bottom|left|right}]",
423
+ "[ebcoms-subTab-children-vertical]",
424
+ "[ebcoms-subTab-children-drop]",
425
+ "[ebcoms-subTab-children-dropDown]",
426
+ "[ebcoms-subTab-children]"
427
+ ],
428
+ "desc": "内容区(Content.render 的第二个块,与 .ebcoms-tab-header 平级)。⚠️ 它和引擎的 .content 同名但不同层/不同元素:引擎那层是父级(还挂着 ebcoms-newtab-* 布局类)。类名里 position 取的是归一化后的值(bottom 会变成 top,与 .content 上的 ebcoms-newtab-tab-bottom 不同名,这是刻意留的两个钩子)。rerender 为 On 时挂 ebcoms-tab-content-childs-bg,flow 布局挂 ebcoms-tab-flow-content;独立展示的下级页签会挂 ebcoms-subTab-* 那一串;内联 style 里 padding 只在 rerender=On 且 GRID 布局时由 getTabPaddding 给(高度自动填充时只有 height:auto)",
429
+ "when": "config.hideMenuContent!==true 时;否则整块不渲染",
430
+ "children": [
431
+ {
432
+ "tag": "div",
433
+ "class": [
434
+ "ebcoms-tab-content-container-right"
435
+ ],
436
+ "when": "有下级页签且 optionShowType 为 Middle(操作按钮显示在中间)",
437
+ "desc": "把「中间操作按钮 + 页签内容」重新包一层的 flex 容器;里面的结构就是下面的操作按钮区与内容盒子",
438
+ "children": [
439
+ "ref:shared.operations"
440
+ ]
441
+ },
442
+ {
443
+ "tag": "div",
444
+ "class": [
445
+ "content-box",
446
+ "ebcom",
447
+ "[show]"
448
+ ],
449
+ "id": "<droppableId>",
450
+ "when": "page.layoutType 为 GRID 且 rerender==='Off'(一次性渲染所有页签内容);每个页签一个盒子",
451
+ "desc": "一个页签的内容盒子(GRID 布局)。id 是 config.flow.linkedNodes[页签id] 对应的拖拽节点 id;只有当前选中页签的盒子带 show(非 show 的显隐由宿主运行时的全局样式控制,本组件仓库里没有 .content-box 的显隐规则,组件只负责挂/去 show)。内部是 @weapp/designer 的 DroppableView(comId=组件id、id=页签id),真实业务组件 DOM 全部不可控",
452
+ "tips": [
453
+ "写样式只针对 .content-box.show 分支,别给 .content-box 写 display,会跟宿主的页签切换机制打架",
454
+ "GRID 布局下子组件是绝对定位层叠的:design/index.less 里 `.flow-content-box, > .content-box{height:100%;width:100%;position:absolute;z-index:-999}`,show 才抬起来",
455
+ "已有钩子:body[page-rtl='true'] 下 .ebcom-newtab.ebcom-view .content-box.ebcom 会 scaleX(-1)"
456
+ ]
457
+ },
458
+ {
459
+ "tag": "div",
460
+ "class": [
461
+ "content-box",
462
+ "ebcom",
463
+ "[show]"
464
+ ],
465
+ "id": "<droppableId>",
466
+ "when": "rerender!=='Off'(每次只渲染当前页签)时,只有一个盒子,且 key 带 refresh 计数用于强制重建",
467
+ "desc": "同上,只是渲染策略不同:weight 无关,显隐靠 show === (页签id 命中当前选中 且 tabKey!=='all')"
468
+ },
469
+ {
470
+ "tag": "div",
471
+ "class": [
472
+ "flow-content-box",
473
+ "[show]"
474
+ ],
475
+ "when": "page.layoutType 为 FLOW",
476
+ "desc": "FLOW 布局下的页签内容盒子,没有 ebcom 与 id,内容由 renderFlowComs 渲染(流水式排布,不用拖拽容器)"
477
+ },
478
+ {
479
+ "tag": "iframe",
480
+ "class": [
481
+ "ebcoms-m-tab-content-container-iframe"
482
+ ],
483
+ "when": "该页签 type==='dataset'(数据源页签)",
484
+ "desc": "数据源页签用 iframe 承载整站页面(类名带 -m- 但 PC 也是这个类,是历史命名);未配置/取不到时退化成 @weapp/ui 的空态。iframe 内部完全不可控"
485
+ },
486
+ {
487
+ "tag": "div",
488
+ "class": [
489
+ "ebcoms-subTab-header",
490
+ "[ebcoms-subTab-header-titleleft-iconafter]",
491
+ "[vertical]",
492
+ "[topDropdown]",
493
+ "[positionRight]",
494
+ "[ebcoms-subTab-header{left|center|right|top|bottom}]",
495
+ "[moreModeClass_<mode>_<more>]",
496
+ "[rightAndOverflow]"
497
+ ],
498
+ "id": "<comId>",
499
+ "when": "getIsIndependSub() 为真(下级页签独立展示)且当前有选中的下级页签",
500
+ "desc": "下级页签的选项栏(common/sub-tab/index.tsx)。里面的 Menu 与 tabItem 的渲染逻辑和主选项栏同源(customRenderItemChild),所以 .ui-menu-list-item 那一套类名同样适用;type 为 select 时页签项会多 ebcoms-tab-select-content。renderHeaderEx / renderComBtns 会以兄弟节点形式追加在后面",
501
+ "tips": [
502
+ "已有钩子:getTabStyles 里有 `.ebcoms-subTab-header.<sub-tab-<comId>>…` 与 `.ebcoms-subTab-header.<comId>…` 两组限域规则"
503
+ ]
504
+ }
505
+ ],
506
+ "tips": [
507
+ "还有另一个「下级页签独立展示」的形态:页面里单独挂一个 #sub-tab-<comId> 容器(SubTabViewContainer),见 sub-tab 树。两者可以同时存在:主内容区里是 .ebcoms-subTab-header + 内容盒子,独立容器里是完整的一套外壳",
508
+ "isNotEmpty 条件类只在纵向排列且(有中间操作按钮 或 有自身顶部按钮)时挂"
509
+ ]
510
+ },
511
+ "contentContainerRight": {
512
+ "tag": "div",
513
+ "class": [
514
+ "ebcoms-tab-content-container-right"
515
+ ],
516
+ "desc": "Content.renderContentWithBtn 在「有下级页签 + 操作按钮显示在中间」时把(操作按钮区 + 页签内容)重新包的一层,用于横向排列这两块"
517
+ }
518
+ },
519
+ "state-loading": {
520
+ "when": "View.state.loading===true(组件初始化取数/插件未就绪阶段)",
521
+ "tree": [
522
+ "div#<comId>.ebcom.ebcom-newtab.ebcom-view.has-no-header(外壳照常渲染)",
523
+ "> .content(引擎内容槽)",
524
+ "> span.ui-spin / @weapp/ui Spin(View.render 里直接 return,选项栏与内容区都不渲染)"
525
+ ],
526
+ "diffs": [
527
+ "loading 期间没有 .ebcoms-tab-header 也没有 .ebcoms-tab-content,整块只有一个 Spin;切换加载态不需要写任何选择器",
528
+ "Spin 的具体类名由 @weapp/ui 决定(ui-spin 系列),不可控"
529
+ ]
530
+ },
531
+ "tab-more": {
532
+ "when": "样式配置里 tab.mode==='horizontal' 时按 tab.more 分支:'1' → ebcoms-newtab-more-wrap(自动换行,无收缩图标)、'2' → ebcoms-newtab-more-shrink(自动换行 + 收缩图标)、'3'(默认)→ 滚动、'4' → ebcoms-newtab-more-dropdown、'5'/'6' → ebcoms-newtab-more-drawer",
533
+ "tree": [
534
+ "该模式类名挂在引擎 .content 上(getTabLayoutClsNames 产出 ebcoms-newtab-more-{wrap|shrink|dropdown|drawer}),不在 .ebcoms-tab-header 上",
535
+ "收缩图标见 shared.tabHeader 里的 span.ebcoms-newtab-shrink",
536
+ "下拉形态:moreTriggerProps.popupClassName 为 weapp-ebdnavcoms-tab-more-trigger,弹层内容由 common/tab-dropdown/TabDropdownIconAndList.tsx 渲染",
537
+ "抽屉形态:common/tab-dropdown/TabDrawerIconAndList.tsx 渲染"
538
+ ],
539
+ "diffs": [
540
+ "more==='2':选项栏里多一个 ebcoms-newtab-shrink(active 时旋转箭头),超出的页签换行显示,没有弹层",
541
+ "more==='4':超出部分进下拉弹层。弹层类名 ebcoms-newtab-dropdown,内部 ebcoms-newtab-dropdown-list、ebcoms-newtab-dropdown-list-item(禁用态 ebcoms-newtab-dropdown-list-item-disabled);另有一组 ebcoms-newtab-j-wrap-list / ebcoms-newtab-j-wrap-list-split。触发器是 ebcoms-tab-menu-<position> 之外的独立 moreTrigger(弹层类 weapp-ebdnavcoms-tab-more-trigger)",
542
+ "more==='5'/'6':抽屉形态。弹层类名 ebcoms-newtab-drawer、ebcoms-newtab-drawer-list、ebcoms-newtab-drawer-list-container、ebcoms-newtab-drawer-list-footer、ebcoms-newtab-drawer-list-item、ebcoms-newtab-j-wrap-list-item",
543
+ "已有钩子:view/index.less 里针对 subViewContainer 的 .ebcoms-newtab-more-dropdown.ebcoms-newtab-right(隐藏自带的更多文字)与 .ebcoms-newtab-more-dropdown.ebcoms-newtab-left(限制 .ui-menu-hasmore .ui-menu-list 宽度)",
544
+ "设计态(design/index.less、design-m/index.less)另有 showShrinkIcon、.ebcoms-newtab-more-drawer > .showShrinkIcon > .ui-m-menu 等规则,仅画布用"
545
+ ]
546
+ },
547
+ "sub-tab": {
548
+ "when": "下级页签配置为独立展示(样式里 tab.subItemDisplayMode==='1' 且 config.addChildAfterSelect==='notAllow')时,页面会通过 SubTabViewContainer 渲染一个 id 为 sub-tab-<comId> 的独立容器;必须与同 comId 的 TabViewCommon 搭配才有内容,否则返回空 Fragment",
549
+ "tree": [
550
+ "div#sub-tab-<comId>.ebcom.ebcom-newtab.ebcom-grid.ebcom-view.weapp-ebdnavcoms-newtab-subViewContainer.ebcoms-tab-content[.isVertical][.verticalStyleFour][.ebcoms-subTab-position-<pos>][.ebcoms-subTab-children-vertical][.ebcoms-subTab-children-drop]",
551
+ "> div.<getTabContentClass 产出的布局类>.content",
552
+ "> SubTab(common/sub-tab/index.tsx)→ div.ebcoms-subTab-header.<sub-tab-<comId>>…(结构同 shared.tabContent 里的 ebcoms-subTab-header)"
553
+ ],
554
+ "diffs": [
555
+ "根是独立外壳(id 以 sub-tab- 前缀),不是主组件的 #<comId>;类名里同时有 ebcom 系列(外壳)、weapp-ebdnavcoms-newtab-subViewContainer(库容器)、ebcoms-tab-content 与 ebcoms-subTab-*(组件条件类)",
556
+ "已有钩子:view/index.less 针对 .weapp-ebdnavcoms-newtab-subViewContainer 的 border-radius:0、verticalStyleFour 定宽定高去背景去阴影、isVertical.ebcom.ebcom-grid 改 inline-flex、.ebcom.ebcom-grid:empty{border:0}、isVertical .ui-menu-menu{min-width:calc(100*var(--hd))}",
557
+ "移动端对应容器是 weapp-ebdnavcoms-newtab-subViewContainer 的 m 版本(MTabViewCommon/MSubTabViewCommon),头部类 names 换成 ebcoms-m-subTab-header 系列"
558
+ ]
559
+ },
560
+ "mobile": {
561
+ "when": "page.client==='MOBILE'",
562
+ "tree": [
563
+ "div#<comId>.ebcom.ebcom-newtab.ebcom-grid.ebcom-view.ebcom-m[.has-no-header](外壳多 ebcom-m,独立容器版是 weapp-ebdnavcoms-newtab-viewContainer-m,并带 [isVertical][isBottom])",
564
+ "> .content(布局类同上,topDropdown 时多 -m 中缀:ebcoms-newtab-m-select-<pos>;horizontal/vertical 的 type 都变成 tab)",
565
+ "> div.ebcoms-m-tab-header[大量条件类,如 ebcoms-m-tab-header-title-enabled / -preset / horizontal / vertical / topDropdown / isBreadFirst / isBreadSec / isBreadThi / isMoreAuto / isDesign / positionRight / textAlignHorizontal / isverticalStyle4/5 / isverticalStyleTree / showShrinkIcon / allowSelectParent / showChildOpBtn / unlockIconWidth],id 同样是固定串 ebcoms-m-tab-header-weight",
566
+ "> div.ebcoms-m-tab-content-<pos>.ebcoms-m-tab-content[.mobile][.ebcoms-m-tab-content-childs-bg][.ebcoms-m-tab-flow-content][.vertical][.showChildMask][.ebcoms-m-subTab-position-<pos>][.ebcoms-m-subTab-children-vertical][.ebcoms-m-subTab-children-drop][.ebcoms-m-subTab-children]",
567
+ "> div.ebcoms-m-tab-content-container > SubTabContent + 内容盒子"
568
+ ],
569
+ "diffs": [
570
+ "整体是「有前缀替换」而不是换实现:组件自己写的类一律 ebcoms-m-*,@weapp/ui 的 Menu 换成移动端实现、类名 ui-* → ui-m-*(ui-m-menu、ui-m-menu-list、ui-m-menu-list-item、ui-m-menu-list-item-content、ui-m-menu-content、ui-m-menu-top-text、ui-m-menu-wrap…)",
571
+ "页签项:ui-m-menu-list-item 系列,组件额外挂 ebcoms-m-tab-menu-item;选中态类名是 ui-m-menu-list-item-tab-active;顶部下拉模式下是 ebcoms-m-tab-menu-<pos>",
572
+ "内容盒子比 PC 多一个 tab-content-box 类:flow-content-box.tab-content-box[.show] 与 content-box.tab-content-box.ebcom[.show],且内容区多一层 div.ebcoms-m-tab-content-container",
573
+ "操作按钮区类名为 ebcoms-m-tab-operations-wrap,弹层容器 ebcoms-m-popup-wrapper,按钮 wrapClass 仍是 ebcoms-header-btns;中间操作按钮的容器是 ebcoms-m-tab-content-container-right",
574
+ "图标位置差异由 ebcoms-newtab-tab-m-icon-after / ebcoms-newtab-tab-m-icon-left 控制;分隔符仍是 separator + ebcoms-tab-separator",
575
+ "移动端 topDropdown 的触发器是 ebcoms-newtab-tab-m-dropdown-header-select(PC 是 ebcoms-newtab-tab-dropdown-header-select)",
576
+ "移动端 more==='4'/'5'/'6' 也会渲染收缩图标(shouldShowShrinkIcon 的 MOBILE 分支)",
577
+ "移动端还有轮播形态(common/tab-carousel,swiper)与下拉/抽屉头部(design-m/index.less 的 showShrinkIcon 系列仅画布用)",
578
+ "已有钩子:view-m/index.less 与 common/style.less 里的 ui-m-* 规则(含 ui-m-menu-list-item-wrap、ui-m-menu-list-subitem-title、ui-m-menu-top-text 等),改移动端样式优先复用这些限域写法"
579
+ ]
580
+ },
581
+ "design": {
582
+ "when": "编辑器画布(design/Design.tsx、design-m/Design.tsx,由 createDesign 挂载)",
583
+ "tree": [
584
+ "外壳由 createDesign 拼(ebcom-newtab … ebcom-design),没有 createView 那套 has-no-header / footer 逻辑",
585
+ "组件内部结构与运行态基本同源:design/Content.tsx 同样输出 div.ebcoms-tab-header[id=ebcoms-tab-header-weight]、div.ebcoms-tab-content 与 tabItem 的 ui-menu-list-item 系列"
586
+ ],
587
+ "diffs": [
588
+ "Design 也声明 static renderHeader(TabTitle 传 isDesign=true):标题改用 div.ebcom-title.ebcom-title-design + dangerouslySetInnerHTML;TabTitle 的 ComBtns 在设计态会把 CommonFilter / SearchContent 直接渲染出来(运行态是 FilterSearch)",
589
+ "tabs 为空时 design/Content.tsx 直接 return <div style={height:100%, flex:1}><EmptyNavTab/></div>,渲染 div.ebcoms-tab-emptyPage(内含 @weapp/ui Empty:ui-empty-image / ui-empty-description / ui-empty-icon)与「添加」按钮。⚠️ 这个空态只在设计态出现,运行态没有",
590
+ "设计态内容盒子额外有 tabEmpty、datasetTabContent、tab-content-box 等标记类,配合 design/index.less 里 `.content-box.tabEmpty`、`.content-box.tab-content-box`、`:not(.more-coms-content-box)`、`.weapp-ebpv-com-placeholder`、拖拽占位(.weapp-ebde-droparea-m 等)等规则;design-m 另有 .more-coms-content-box 的绝对定位层叠写法",
591
+ "设计态的显隐不走 show 的运行时机制:画布上 flow-content-box / content-box 是 position:absolute + z-index:-999 全量铺开,靠 .show 抬层级",
592
+ "校验样式请到运行态页面做:设计态外壳、空态、拖拽占位都是画布专有"
593
+ ]
594
+ },
595
+ "notes": [
596
+ "前缀之外还有两族要认得:ebcoms-transform-content-* 来自 @weapp/ebdcoms 的 TransformContent(页签文字与标题文字都用它),ebcoms-assets-icon / ui-icon-* 来自 @weapp/ui 的 AssetsItem / Icon(页签图标与下拉箭头)。ebcoms-charts-main-filtertotal-mask 是 FilterSearch 的挂载点。",
597
+ "最容易打错的三处:1) .content —— 引擎内容槽,组件自己的内容区叫 .ebcoms-tab-content,两者隔一层父子关系;2) .header —— 组件标题栏(TabTitle 输出,和 .content 平级),不是引擎的 header(引擎那层在 NewTab 上根本不存在);3) .ebcoms-header-btns —— 标题栏与选项栏各有一个同名 wrapClass 的按钮容器,要按祖先(.header 还是 .ebcoms-tab-header)区分。",
598
+ "has-no-header 在 NewTab 上恒为真,不能用来判断有没有标题栏:组件用 static renderHeader 接管了 header 渲染,所以引擎不渲染自己的 .header,但仍会把 has-no-header 加上。判断标题栏只看 .header 存不存在(config.titleEnabled)与 .hideLabelBar。",
599
+ "comId 有三重身份,别混:作为 id 出现在引擎外壳(div#<comId>)和独立容器(div#sub-tab-<comId>);作为 class 同时拼在 .ebcoms-tab-header 与 .ebcoms-tab-content 上(getTabStyles 生成的选择器全靠它限域,形如 .ebcoms-tab-header.<comId>);作为属性出现在 createView 写到组件实例首个 DOM 上的 data-id=<comId>(NewTab 里通常落在 .ebcoms-tab-header)。另有固定 id ebcoms-tab-header-weight 与 ebcoms-m-tab-header-weight,都不是唯一的。",
600
+ "官方样式生成器 getTabStyles 的作用域统一是 #<comId>.ebcom 加 pretreatCssCode 限域,产出的选择器就这些:.ebcoms-tab-header.<comId> 及其后代(.ui-menu-list-item、.ui-menu-list-item-active、.ui-menu-list-item-active .ui-menu-list-item-content-wrap、.ui-menu-list-item:hover、.ebcoms-newtab-tab-dropdown-header-select .ui-menu-select-title-text、.ebcoms-tab-header-customRenderItemContent)、.ebcoms-tab-content.<comId>(含 :not(.ebcoms-subTab-children) 的容器高度、.ebcoms-subTab-children > .content-box.show)、.ebcoms-tab-flow-content.<comId>、移动端 .ebcoms-m-tab-header.<comId> / .ebcoms-m-tab-content.<comId>、下级 .ebcoms-subTab-header.<sub-tab-<comId>>。要精准覆盖这些点,直接照抄对应选择器即可。",
601
+ "组件自己 less 里已有、不要重复写的钩子:common/style.less 的 .text() mixin(.text / .tab-name / .count / .ebcoms-assets-icon / .text-container)与 .text>span.tab-dot 红点;.ebcoms-newtab-tab-dropdown-header-select 系;.ebcoms-newtab-menu-select-width-by-tabcontent / -by-tabwidth;.ebcoms-newtab-shrink / -dropdown / -drawer;.ebcoms-tab-emptyPage;.ebcom-newtab 的圆角与阴影、.ebcom-newtab > .content.ebcoms-newtab-tab-bottom 等四个方向的反转 flex;.ebcoms-newtab-tab-top/.ebcoms-newtab-tab-bottom > .ebcoms-tab-header 的 flex 排布;.ebcom-newtab .ui-menu-nav-container-scrolling .ui-menu-nav-scroll 的对齐;.ebcoms-newtab-shrink + .ui-menu 的右留白。common/index.less 的 .ebcom-newtab > .header.hideLabelBar 系、RTL 镜像、.ebcom-newtab .ebcoms-empty-text .ui-empty-description 与 .ui-menu-tab-top .ui-menu-tab-top-container{bottom:0}。",
602
+ "裸类名清单(不限域必误伤):header、main、left、right、content、text、text-container、tab-name、count、tab-dot、active-icon、separator、nav-panel-btn、flow-content-box、show、isNotEmpty、vertical、topDropdown、hasChild、hasIcon、pc。写规则请至少带上 .ebcoms-tab-header / .ebcoms-tab-content / #<comId> 之一。",
603
+ "配置开关对结构的影响:titleEnabled 决定标题栏是否有;hideLabelBar 决定标题栏走 .main 分支还是平铺(还需 enableHideLabelBar 与页签数判定);hideMenuContent 关内容区;hideMenu / noMenuDataHiding 会把选项栏内容清空但保留 .ebcoms-tab-header;page.layoutType 决定 GRID 的 .content-box 还是 FLOW 的 .flow-content-box;config.highlyAutomaticFilling 会让内容区只有 height:auto 的内联样式;isPanel 会加 div.nav-panel-btn 并把 tabItem 内容换成面板。",
604
+ "反查源码位置:引擎外壳与内容槽在 weapp-ebdcoms/src/components/core/view/createView.tsx(getContainerClass / renderHeader / renderContent / renderFooter);标题栏在 weapp-ebdnavcoms/src/components/tab/common/tab-title/TabTitle.tsx 与 ComBtns.tsx;选项栏与内容区在 .../tab/view/Content.tsx(renderHeader / customRenderItem / showContent / renderComBtns / renderChildCom / render);页签文字与角标在 .../tab/view/ItemContent.tsx、Count.tsx;顶部下拉触发器在 .../tab/view/CustomSelectContent.tsx;布局类名与更多模式在 .../tab/common/utils.ts(getTabLayoutClsNames / getTabContentClass / getTabPosition / getTabType);下级页签在 .../tab/common/sub-tab/index.tsx;独立容器在 .../tab/view/ViewContainer.tsx、SubTabViewContainer.tsx;样式生成器在 .../tab/view/getTabStyles.ts;已有样式在 .../tab/common/style.less、common/index.less、view/index.less、design/index.less、view-m/index.less。"
605
+ ]
606
+ }