@shwfed/config 1.1.5 → 2.0.1

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 (286) hide show
  1. package/dist/module.d.mts +2 -19
  2. package/dist/module.json +1 -1
  3. package/dist/module.mjs +15 -34
  4. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.d.vue.ts +36 -4
  5. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.vue +45 -8
  6. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/config.vue.d.ts +36 -4
  7. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/runtime.vue +15 -9
  8. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.d.ts +17 -1
  9. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json/schema.js +23 -4
  10. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.d.vue.ts +36 -4
  11. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.vue +39 -5
  12. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/config.vue.d.ts +36 -4
  13. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/runtime.vue +15 -9
  14. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/schema.d.ts +17 -1
  15. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.http.request.json.confirm/schema.js +23 -5
  16. package/dist/runtime/components/actions/buttons/2026-04-18/com.shwfed.actions.button.prototype/config.vue +1 -0
  17. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/config.d.vue.ts +2 -2
  18. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/config.vue.d.ts +2 -2
  19. package/dist/runtime/components/actions/buttons/2026-04-21/com.shwfed.actions.button.navigation/runtime.vue +2 -3
  20. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/config.d.vue.ts +1 -1
  21. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/config.vue +44 -10
  22. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/config.vue.d.ts +1 -1
  23. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/runtime.vue +24 -7
  24. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.d.ts +6 -1
  25. package/dist/runtime/components/actions/buttons/2026-05-11/com.shwfed.actions.button.modal.layout/schema.js +6 -3
  26. package/dist/runtime/components/actions/buttons/{2026-04-27/com.shwfed.actions.button.table.reset → 2026-05-15/com.shwfed.actions.button.event.dispatch}/config.d.vue.ts +13 -5
  27. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/config.vue +32 -0
  28. package/dist/runtime/components/actions/buttons/{2026-04-27/com.shwfed.actions.button.table.reset → 2026-05-15/com.shwfed.actions.button.event.dispatch}/config.vue.d.ts +13 -5
  29. package/dist/runtime/components/actions/buttons/{2026-04-27/com.shwfed.actions.button.table.search → 2026-05-15/com.shwfed.actions.button.event.dispatch}/runtime.vue +5 -7
  30. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.d.ts +17 -0
  31. package/dist/runtime/components/actions/buttons/2026-05-15/com.shwfed.actions.button.event.dispatch/schema.js +18 -0
  32. package/dist/runtime/components/actions/components/group.vue +2 -3
  33. package/dist/runtime/components/actions/components/triggers-field.d.vue.ts +17 -0
  34. package/dist/runtime/components/actions/components/triggers-field.vue +209 -0
  35. package/dist/runtime/components/actions/components/triggers-field.vue.d.ts +17 -0
  36. package/dist/runtime/components/actions/config.vue +51 -1
  37. package/dist/runtime/components/actions/schema.d.ts +4 -0
  38. package/dist/runtime/components/actions/schema.js +6 -0
  39. package/dist/runtime/components/actions/utils/resolve.d.ts +25 -1
  40. package/dist/runtime/components/actions/utils/resolve.js +37 -9
  41. package/dist/runtime/components/app.vue +1 -1
  42. package/dist/runtime/components/block-layout-editor/index.vue +11 -11
  43. package/dist/runtime/components/block-layout-editor/sidebar.vue +0 -4
  44. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.d.vue.ts +2 -0
  45. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/config.vue.d.ts +2 -0
  46. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.d.vue.ts +2 -0
  47. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/runtime.vue.d.ts +2 -0
  48. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.form/schema.d.ts +2 -0
  49. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.d.vue.ts +6 -0
  50. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/config.vue.d.ts +6 -0
  51. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.d.vue.ts +6 -0
  52. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/runtime.vue.d.ts +6 -0
  53. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.table/schema.d.ts +7 -0
  54. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/config.d.vue.ts +1 -1
  55. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/config.vue +16 -2
  56. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/config.vue.d.ts +1 -1
  57. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/runtime.vue +1 -0
  58. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/schema.d.ts +18 -9
  59. package/dist/runtime/components/config/blocks/2026-05-06/com.shwfed.block.tabs/schema.js +8 -4
  60. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/config.d.vue.ts +77 -0
  61. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/config.vue +535 -0
  62. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/config.vue.d.ts +77 -0
  63. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/runtime.d.vue.ts +77 -0
  64. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/runtime.vue +233 -0
  65. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/runtime.vue.d.ts +77 -0
  66. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/schema.d.ts +134 -0
  67. package/dist/runtime/components/config/blocks/2026-05-17/com.shwfed.block.chart.line/schema.js +142 -0
  68. package/dist/runtime/components/config/index.vue +1 -1
  69. package/dist/runtime/components/config/use-editor.js +4 -3
  70. package/dist/runtime/components/form/DerivedValueEditor.d.vue.ts +19 -0
  71. package/dist/runtime/components/form/DerivedValueEditor.vue +77 -0
  72. package/dist/runtime/components/form/DerivedValueEditor.vue.d.ts +19 -0
  73. package/dist/runtime/components/form/config.vue +58 -24
  74. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.d.vue.ts +8 -0
  75. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue +21 -0
  76. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/config.vue.d.ts +8 -0
  77. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +29 -31
  78. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.d.ts +4 -0
  79. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/schema.js +3 -2
  80. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.d.vue.ts +8 -0
  81. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.vue +21 -0
  82. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/config.vue.d.ts +8 -0
  83. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue +24 -26
  84. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.d.ts +4 -0
  85. package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/schema.js +3 -2
  86. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.d.vue.ts +10 -2
  87. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.vue +21 -0
  88. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/config.vue.d.ts +10 -2
  89. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/runtime.vue +15 -7
  90. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.d.ts +4 -0
  91. package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/schema.js +2 -1
  92. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.d.vue.ts +10 -2
  93. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.vue +21 -0
  94. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/config.vue.d.ts +10 -2
  95. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue +14 -6
  96. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.d.ts +4 -0
  97. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/schema.js +2 -1
  98. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.d.vue.ts +10 -2
  99. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue +21 -0
  100. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/config.vue.d.ts +10 -2
  101. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue +14 -6
  102. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.d.ts +4 -0
  103. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/schema.js +2 -1
  104. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.d.vue.ts +12 -4
  105. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue +21 -0
  106. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/config.vue.d.ts +12 -4
  107. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue +14 -6
  108. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.d.ts +4 -0
  109. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/schema.js +2 -1
  110. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.d.vue.ts +12 -4
  111. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue +21 -0
  112. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/config.vue.d.ts +12 -4
  113. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/runtime.vue +14 -6
  114. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.d.ts +4 -0
  115. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/schema.js +2 -1
  116. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.d.vue.ts +12 -4
  117. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.vue +21 -0
  118. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/config.vue.d.ts +12 -4
  119. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/runtime.vue +14 -6
  120. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.d.ts +4 -0
  121. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/schema.js +2 -1
  122. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.d.vue.ts +12 -4
  123. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue +21 -0
  124. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/config.vue.d.ts +12 -4
  125. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/runtime.vue +14 -6
  126. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.d.ts +4 -0
  127. package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/schema.js +2 -1
  128. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.d.vue.ts +8 -0
  129. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue +21 -0
  130. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/config.vue.d.ts +8 -0
  131. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +37 -38
  132. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.d.ts +4 -0
  133. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/schema.js +2 -1
  134. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.d.vue.ts +10 -2
  135. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue +21 -0
  136. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/config.vue.d.ts +10 -2
  137. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/runtime.vue +33 -22
  138. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.d.ts +4 -0
  139. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/schema.js +2 -1
  140. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.d.vue.ts +8 -0
  141. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue +21 -0
  142. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/config.vue.d.ts +8 -0
  143. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/runtime.vue +14 -6
  144. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.d.ts +4 -0
  145. package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/schema.js +3 -2
  146. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/config.d.vue.ts +8 -0
  147. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/config.vue +21 -0
  148. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/config.vue.d.ts +8 -0
  149. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/runtime.vue +14 -7
  150. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.d.ts +4 -0
  151. package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/schema.js +2 -1
  152. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/config.vue +1 -0
  153. package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/runtime.vue +13 -8
  154. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.d.vue.ts +10 -2
  155. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.vue +25 -1
  156. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/config.vue.d.ts +10 -2
  157. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/runtime.vue +102 -44
  158. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.d.ts +14 -0
  159. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/schema.js +14 -5
  160. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/config.vue +1 -0
  161. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/row.vue +22 -5
  162. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/runtime.vue +7 -4
  163. package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/schema.js +7 -1
  164. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/config.d.vue.ts +113 -0
  165. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/config.vue +426 -0
  166. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/config.vue.d.ts +113 -0
  167. package/dist/runtime/components/{actions/buttons/2026-04-27/com.shwfed.actions.button.table.search → form/fields/2026-05-17/com.shwfed.form.field.checkbox.group}/runtime.d.vue.ts +1 -1
  168. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/runtime.vue +176 -0
  169. package/dist/runtime/components/{actions/buttons/2026-04-27/com.shwfed.actions.button.table.search → form/fields/2026-05-17/com.shwfed.form.field.checkbox.group}/runtime.vue.d.ts +1 -1
  170. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.d.ts +121 -0
  171. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/schema.js +78 -0
  172. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/config.d.vue.ts +113 -0
  173. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/config.vue +426 -0
  174. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/config.vue.d.ts +113 -0
  175. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.d.vue.ts +8 -0
  176. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue +159 -0
  177. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue.d.ts +8 -0
  178. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.d.ts +121 -0
  179. package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/schema.js +78 -0
  180. package/dist/runtime/components/form/index.d.vue.ts +6 -0
  181. package/dist/runtime/components/form/index.vue +41 -6
  182. package/dist/runtime/components/form/index.vue.d.ts +6 -0
  183. package/dist/runtime/components/form/schema.d.ts +5 -1
  184. package/dist/runtime/components/form/schema.js +13 -1
  185. package/dist/runtime/components/form/unit-config.d.vue.ts +0 -3
  186. package/dist/runtime/components/form/unit-config.vue +4 -10
  187. package/dist/runtime/components/form/unit-config.vue.d.ts +0 -3
  188. package/dist/runtime/components/form/utils/commit-bus.d.ts +26 -0
  189. package/dist/runtime/components/form/utils/commit-bus.js +27 -0
  190. package/dist/runtime/components/form/utils/common.d.ts +27 -0
  191. package/dist/runtime/components/form/utils/common.js +31 -0
  192. package/dist/runtime/components/form/utils/derived.d.ts +72 -0
  193. package/dist/runtime/components/form/utils/derived.js +116 -0
  194. package/dist/runtime/components/form/utils/field-value.d.ts +35 -0
  195. package/dist/runtime/components/form/utils/field-value.js +40 -0
  196. package/dist/runtime/components/form/utils/history.d.ts +36 -0
  197. package/dist/runtime/components/form/utils/history.js +74 -0
  198. package/dist/runtime/components/form/utils/readonly.d.ts +8 -0
  199. package/dist/runtime/components/form/utils/readonly.js +9 -0
  200. package/dist/runtime/components/form/utils/state.d.ts +27 -1
  201. package/dist/runtime/components/form/utils/state.js +16 -8
  202. package/dist/runtime/components/table/ai/columns-button.vue +3 -4
  203. package/dist/runtime/components/table/ai/data-source-button.vue +3 -4
  204. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.icon/runtime.vue +2 -3
  205. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.markdown/runtime.vue +2 -3
  206. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.select/runtime.vue +2 -3
  207. package/dist/runtime/components/table/columns/2026-04-14/com.shwfed.table.column.text/runtime.vue +2 -3
  208. package/dist/runtime/components/table/columns/2026-05-13/com.shwfed.table.column.switch/runtime.vue +11 -6
  209. package/dist/runtime/components/table/config.vue +46 -2
  210. package/dist/runtime/components/table/index.d.vue.ts +4 -0
  211. package/dist/runtime/components/table/index.vue +28 -22
  212. package/dist/runtime/components/table/index.vue.d.ts +4 -0
  213. package/dist/runtime/components/table/schema.d.ts +33 -0
  214. package/dist/runtime/components/table/schema.js +21 -0
  215. package/dist/runtime/components/table/utils/instance.d.ts +2 -0
  216. package/dist/runtime/components/table/utils/instance.js +8 -0
  217. package/dist/runtime/components/ui/date-picker/DatePickerInput.vue +2 -2
  218. package/dist/runtime/components/ui/date-picker/DatePickerTimeInput.vue +2 -2
  219. package/dist/runtime/components/ui/date-range-picker/DateRangePickerInput.vue +2 -2
  220. package/dist/runtime/components/ui/date-range-picker/DateRangePickerTimeInput.vue +2 -2
  221. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.d.vue.ts +13 -1
  222. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue +11 -3
  223. package/dist/runtime/components/ui/expression-editor/ExpressionEditor.vue.d.ts +13 -1
  224. package/dist/runtime/components/ui/locale/Locale.vue +2 -2
  225. package/dist/runtime/components/ui/radio-group/RadioGroup.d.vue.ts +22 -0
  226. package/dist/runtime/components/ui/radio-group/RadioGroup.vue +32 -0
  227. package/dist/runtime/components/ui/radio-group/RadioGroup.vue.d.ts +22 -0
  228. package/dist/runtime/components/ui/radio-group/RadioGroupItem.d.vue.ts +8 -0
  229. package/dist/runtime/components/ui/radio-group/RadioGroupItem.vue +36 -0
  230. package/dist/runtime/components/ui/radio-group/RadioGroupItem.vue.d.ts +8 -0
  231. package/dist/runtime/components/ui/radio-group/index.d.ts +2 -0
  232. package/dist/runtime/components/ui/radio-group/index.js +2 -0
  233. package/dist/runtime/composables/useOverlay.d.ts +1 -5
  234. package/dist/runtime/composables/useOverlay.js +4 -3
  235. package/dist/runtime/composables/useTranslateLocale.js +1 -2
  236. package/dist/runtime/share/event-bus.d.ts +118 -0
  237. package/dist/runtime/share/event-bus.js +55 -0
  238. package/dist/runtime/share/expression.d.ts +7 -0
  239. package/dist/runtime/share/expression.js +3 -1
  240. package/dist/runtime/share/layout.d.ts +1 -0
  241. package/dist/runtime/share/layout.js +3 -2
  242. package/dist/runtime/share/slot-renderer.vue +6 -4
  243. package/dist/runtime/{plugins → utils}/ai/cel-prompt.d.ts +1 -1
  244. package/dist/runtime/{plugins → utils}/ai/index.d.ts +1 -6
  245. package/dist/runtime/{plugins → utils}/ai/index.js +5 -14
  246. package/dist/runtime/utils/cel.d.ts +5 -0
  247. package/dist/runtime/utils/cel.js +42 -0
  248. package/dist/runtime/vendor/cel-js/CLAUDE.md +8 -2
  249. package/dist/runtime/vendor/cel-js/PROMPT.md +35 -10
  250. package/dist/runtime/vendor/cel-js/lib/functions.js +63 -1
  251. package/dist/runtime/vendor/cel-js/lib/http-builder.d.ts +35 -0
  252. package/dist/runtime/{plugins/http/builder.js → vendor/cel-js/lib/http-builder.js} +25 -23
  253. package/dist/runtime/vendor/cel-js/lib/http-builtins.d.ts +9 -10
  254. package/dist/runtime/vendor/cel-js/lib/http-builtins.js +53 -13
  255. package/dist/types.d.mts +7 -1
  256. package/package.json +1 -1
  257. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.reset/config.vue +0 -10
  258. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.reset/runtime.vue +0 -25
  259. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.reset/schema.d.ts +0 -13
  260. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.reset/schema.js +0 -16
  261. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.search/config.d.vue.ts +0 -17
  262. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.search/config.vue +0 -10
  263. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.search/config.vue.d.ts +0 -17
  264. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.search/schema.d.ts +0 -13
  265. package/dist/runtime/components/actions/buttons/2026-04-27/com.shwfed.actions.button.table.search/schema.js +0 -16
  266. package/dist/runtime/components/table/utils/host.d.ts +0 -9
  267. package/dist/runtime/components/table/utils/host.js +0 -8
  268. package/dist/runtime/composables/useCel.d.ts +0 -16
  269. package/dist/runtime/composables/useCel.js +0 -8
  270. package/dist/runtime/middleware/token.d.ts +0 -2
  271. package/dist/runtime/middleware/token.js +0 -20
  272. package/dist/runtime/plugins/cel/http.d.ts +0 -8
  273. package/dist/runtime/plugins/cel/http.js +0 -49
  274. package/dist/runtime/plugins/cel/index.d.ts +0 -9
  275. package/dist/runtime/plugins/cel/index.js +0 -59
  276. package/dist/runtime/plugins/http/builder.d.ts +0 -14
  277. package/dist/runtime/plugins/http/index.d.ts +0 -19
  278. package/dist/runtime/plugins/http/index.js +0 -35
  279. package/dist/runtime/plugins/toast/index.d.ts +0 -108
  280. package/dist/runtime/plugins/toast/index.js +0 -10
  281. package/dist/runtime/types.d.ts +0 -25
  282. /package/dist/runtime/components/actions/buttons/{2026-04-27/com.shwfed.actions.button.table.reset → 2026-05-15/com.shwfed.actions.button.event.dispatch}/runtime.d.vue.ts +0 -0
  283. /package/dist/runtime/components/actions/buttons/{2026-04-27/com.shwfed.actions.button.table.reset → 2026-05-15/com.shwfed.actions.button.event.dispatch}/runtime.vue.d.ts +0 -0
  284. /package/dist/runtime/{plugins → utils}/ai/cel-prompt.js +0 -0
  285. /package/dist/runtime/{plugins/cel/context.d.ts → utils/cel-context.d.ts} +0 -0
  286. /package/dist/runtime/{plugins/cel/context.js → utils/cel-context.js} +0 -0
@@ -4,10 +4,16 @@ type __VLS_ModelProps = {
4
4
  };
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
+ readonly onError?: readonly {
8
+ readonly target: string;
9
+ readonly operation: string;
10
+ }[] | undefined;
7
11
  readonly type: "com.shwfed.actions.button.http.request.json.confirm";
8
12
  readonly icon?: string | undefined;
9
13
  readonly color?: string | undefined;
10
14
  readonly compatibilityDate: "2026-04-18";
15
+ readonly messageExpression?: string | undefined;
16
+ readonly resultExpression?: string | undefined;
11
17
  readonly markdown: readonly [{
12
18
  readonly locale: "zh";
13
19
  readonly message: string;
@@ -16,15 +22,31 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
16
22
  readonly message: string;
17
23
  }[]];
18
24
  readonly expression: string;
19
- readonly messageExpression?: string | undefined;
20
- readonly styleExpression?: string | undefined;
25
+ readonly onSuccess?: readonly {
26
+ readonly target: string;
27
+ readonly operation: string;
28
+ }[] | undefined;
29
+ readonly onWarning?: readonly {
30
+ readonly target: string;
31
+ readonly operation: string;
32
+ }[] | undefined;
33
+ readonly onInfo?: readonly {
34
+ readonly target: string;
35
+ readonly operation: string;
36
+ }[] | undefined;
21
37
  }) => any;
22
38
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
23
39
  "onUpdate:modelValue"?: ((value: {
40
+ readonly onError?: readonly {
41
+ readonly target: string;
42
+ readonly operation: string;
43
+ }[] | undefined;
24
44
  readonly type: "com.shwfed.actions.button.http.request.json.confirm";
25
45
  readonly icon?: string | undefined;
26
46
  readonly color?: string | undefined;
27
47
  readonly compatibilityDate: "2026-04-18";
48
+ readonly messageExpression?: string | undefined;
49
+ readonly resultExpression?: string | undefined;
28
50
  readonly markdown: readonly [{
29
51
  readonly locale: "zh";
30
52
  readonly message: string;
@@ -33,8 +55,18 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
33
55
  readonly message: string;
34
56
  }[]];
35
57
  readonly expression: string;
36
- readonly messageExpression?: string | undefined;
37
- readonly styleExpression?: string | undefined;
58
+ readonly onSuccess?: readonly {
59
+ readonly target: string;
60
+ readonly operation: string;
61
+ }[] | undefined;
62
+ readonly onWarning?: readonly {
63
+ readonly target: string;
64
+ readonly operation: string;
65
+ }[] | undefined;
66
+ readonly onInfo?: readonly {
67
+ readonly target: string;
68
+ readonly operation: string;
69
+ }[] | undefined;
38
70
  }) => any) | undefined;
39
71
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
40
72
  declare const _default: typeof __VLS_export;
@@ -1,10 +1,11 @@
1
1
  <script setup>
2
- import { useNuxtApp } from "#app";
3
2
  import { Effect } from "effect";
4
3
  import { useI18n } from "vue-i18n";
4
+ import { cel as _rawCel } from "../../../../../utils/cel";
5
5
  import { reject } from "../../../../../composables/useOverlay";
6
- import { celBindings, injectCELContext } from "../../../../../plugins/cel/context";
6
+ import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
7
7
  import { getLocalizedText } from "../../../../../share/locale";
8
+ import { useEventChannel } from "../../../../../share/event-bus";
8
9
  import ShwfedActionDefinition from "../../../components/definition.vue";
9
10
  import { executeHttpRequest, interpolateMarkdown } from "../../../utils/resolve";
10
11
  defineOptions({ name: "ShwfedHttpRequestConfirmActionRuntime" });
@@ -13,19 +14,24 @@ const props = defineProps({
13
14
  config: { type: null, required: true }
14
15
  });
15
16
  const { locale } = useI18n();
16
- const { $cel: _rawCel } = useNuxtApp();
17
17
  const inherited = injectCELContext();
18
18
  const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
19
+ const channel = useEventChannel();
19
20
  const effect = Effect.gen(function* () {
20
21
  const raw = getLocalizedText(props.config.markdown, locale.value) ?? "";
21
22
  const content = interpolateMarkdown(raw, $cel);
22
23
  if (yield* reject({ content, icon: props.config.icon, color: props.config.color })) return;
23
- yield* executeHttpRequest(
24
- props.config.expression,
25
- $cel,
26
- props.config.messageExpression,
27
- props.config.styleExpression
28
- );
24
+ yield* executeHttpRequest(props.config.expression, $cel, {
25
+ messageExpression: props.config.messageExpression,
26
+ resultExpression: props.config.resultExpression,
27
+ channel,
28
+ triggers: {
29
+ success: props.config.onSuccess,
30
+ warning: props.config.onWarning,
31
+ error: props.config.onError,
32
+ info: props.config.onInfo
33
+ }
34
+ });
29
35
  });
30
36
  </script>
31
37
 
@@ -20,6 +20,22 @@ export declare function schema(configure: (env: Environment) => void): Schema.St
20
20
  icon: Schema.optional<Schema.SchemaClass<string, string, never>>;
21
21
  color: Schema.optional<Schema.SchemaClass<string, string, never>>;
22
22
  messageExpression: Schema.optional<Schema.Schema<string, string, never>>;
23
- styleExpression: Schema.optional<Schema.Schema<string, string, never>>;
23
+ resultExpression: Schema.optional<Schema.Schema<string, string, never>>;
24
+ onSuccess: Schema.optional<Schema.Array$<Schema.Struct<{
25
+ target: Schema.refine<string, typeof Schema.String>;
26
+ operation: Schema.SchemaClass<string, string, never>;
27
+ }>>>;
28
+ onWarning: Schema.optional<Schema.Array$<Schema.Struct<{
29
+ target: Schema.refine<string, typeof Schema.String>;
30
+ operation: Schema.SchemaClass<string, string, never>;
31
+ }>>>;
32
+ onError: Schema.optional<Schema.Array$<Schema.Struct<{
33
+ target: Schema.refine<string, typeof Schema.String>;
34
+ operation: Schema.SchemaClass<string, string, never>;
35
+ }>>>;
36
+ onInfo: Schema.optional<Schema.Array$<Schema.Struct<{
37
+ target: Schema.refine<string, typeof Schema.String>;
38
+ operation: Schema.SchemaClass<string, string, never>;
39
+ }>>>;
24
40
  }>;
25
41
  export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
@@ -1,5 +1,6 @@
1
1
  import { Schema } from "effect";
2
2
  import { Expression } from "../../../../../share/expression.js";
3
+ import { Triggers } from "../../../../../share/event-bus.js";
3
4
  import { Locale } from "../../../../../share/locale.js";
4
5
  import { md } from "../../../../../share/markdown.js";
5
6
  export const type = "com.shwfed.actions.button.http.request.json.confirm";
@@ -47,13 +48,30 @@ export function schema(configure) {
47
48
  不配置则不显示。
48
49
  `
49
50
  })),
50
- styleExpression: Schema.optional(CelMessage.annotations({
51
- title: "\u6D88\u606F\u6837\u5F0F",
51
+ resultExpression: Schema.optional(CelMessage.annotations({
52
+ title: "\u6267\u884C\u7ED3\u679C",
52
53
  description: md`
53
- 决定 toast 样式,返回 \`string\`。
54
- 支持 \`'success' | 'error' | 'warning' | 'info'\`;其他值按 \`success\` 处理。
55
- 不配置则使用 \`success\`。
54
+ 在响应体解析为 JSON 后对其求值,返回 \`string\`。
55
+ 支持 \`'success' | 'warning' | 'error' | 'info'\`;其他值按 \`success\` 处理。不配置则按 \`success\` 处理。
56
+
57
+ 它同时决定 toast 的样式,以及请求完成后执行下方哪一组操作。
56
58
  `
59
+ })),
60
+ onSuccess: Schema.optional(Triggers.annotations({
61
+ title: "\u6210\u529F",
62
+ description: "\u300C\u6267\u884C\u7ED3\u679C\u300D\u4E3A `success` \u65F6\uFF0C\u8BF7\u6C42\u5B8C\u6210\u540E\u6267\u884C\u7684\u64CD\u4F5C"
63
+ })),
64
+ onWarning: Schema.optional(Triggers.annotations({
65
+ title: "\u8B66\u544A",
66
+ description: "\u300C\u6267\u884C\u7ED3\u679C\u300D\u4E3A `warning` \u65F6\uFF0C\u8BF7\u6C42\u5B8C\u6210\u540E\u6267\u884C\u7684\u64CD\u4F5C"
67
+ })),
68
+ onError: Schema.optional(Triggers.annotations({
69
+ title: "\u9519\u8BEF",
70
+ description: "\u300C\u6267\u884C\u7ED3\u679C\u300D\u4E3A `error` \u65F6\uFF0C\u8BF7\u6C42\u5B8C\u6210\u540E\u6267\u884C\u7684\u64CD\u4F5C"
71
+ })),
72
+ onInfo: Schema.optional(Triggers.annotations({
73
+ title: "\u4FE1\u606F",
74
+ description: "\u300C\u6267\u884C\u7ED3\u679C\u300D\u4E3A `info` \u65F6\uFF0C\u8BF7\u6C42\u5B8C\u6210\u540E\u6267\u884C\u7684\u64CD\u4F5C"
57
75
  }))
58
76
  }).annotations({
59
77
  title: "HttpRequestConfirmAction",
@@ -14,6 +14,7 @@ const PICKER_ENTRIES = (() => {
14
14
  const byType = /* @__PURE__ */ new Map();
15
15
  for (const a of BUTTONS) {
16
16
  if (a.type === prototypeType) continue;
17
+ if (a.deprecated) continue;
17
18
  const prev = byType.get(a.type);
18
19
  if (!prev || a.compatibilityDate > prev.compatibilityDate) {
19
20
  byType.set(a.type, {
@@ -6,15 +6,15 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
6
6
  "update:modelValue": (value: {
7
7
  readonly type: "com.shwfed.actions.button.navigation";
8
8
  readonly mode: "_blank" | "_self";
9
- readonly compatibilityDate: "2026-04-21";
10
9
  readonly url: string;
10
+ readonly compatibilityDate: "2026-04-21";
11
11
  }) => any;
12
12
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: {
14
14
  readonly type: "com.shwfed.actions.button.navigation";
15
15
  readonly mode: "_blank" | "_self";
16
- readonly compatibilityDate: "2026-04-21";
17
16
  readonly url: string;
17
+ readonly compatibilityDate: "2026-04-21";
18
18
  }) => any) | undefined;
19
19
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
20
  declare const _default: typeof __VLS_export;
@@ -6,15 +6,15 @@ declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {},
6
6
  "update:modelValue": (value: {
7
7
  readonly type: "com.shwfed.actions.button.navigation";
8
8
  readonly mode: "_blank" | "_self";
9
- readonly compatibilityDate: "2026-04-21";
10
9
  readonly url: string;
10
+ readonly compatibilityDate: "2026-04-21";
11
11
  }) => any;
12
12
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
13
13
  "onUpdate:modelValue"?: ((value: {
14
14
  readonly type: "com.shwfed.actions.button.navigation";
15
15
  readonly mode: "_blank" | "_self";
16
- readonly compatibilityDate: "2026-04-21";
17
16
  readonly url: string;
17
+ readonly compatibilityDate: "2026-04-21";
18
18
  }) => any) | undefined;
19
19
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
20
20
  declare const _default: typeof __VLS_export;
@@ -1,14 +1,13 @@
1
1
  <script setup>
2
- import { useNuxtApp } from "#app";
3
2
  import { Effect } from "effect";
4
- import { celBindings, injectCELContext } from "../../../../../plugins/cel/context";
3
+ import { cel as _rawCel } from "../../../../../utils/cel";
4
+ import { celBindings, injectCELContext } from "../../../../../utils/cel-context";
5
5
  import ShwfedActionDefinition from "../../../components/definition.vue";
6
6
  defineOptions({ name: "ShwfedNavigationActionRuntime" });
7
7
  const props = defineProps({
8
8
  buttonId: { type: String, required: true },
9
9
  config: { type: null, required: true }
10
10
  });
11
- const { $cel: _rawCel } = useNuxtApp();
12
11
  const inherited = injectCELContext();
13
12
  const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
14
13
  const effect = Effect.suspend(
@@ -1,5 +1,5 @@
1
1
  import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
2
- import type { Value } from './schema.js';
2
+ import { type Value } from './schema.js';
3
3
  type __VLS_Props = {
4
4
  configure?: (env: Environment) => void;
5
5
  };
@@ -10,11 +10,13 @@ import { ScrollArea } from "../../../../ui/scroll-area";
10
10
  import { Field, FieldLabel } from "../../../../ui/field";
11
11
  import { Input } from "../../../../ui/input";
12
12
  import { Locale as LocaleField } from "../../../../ui/locale";
13
- import { hasVisibleLocaleValue } from "../../../../../share/locale";
13
+ import { Markdown } from "../../../../ui/markdown";
14
14
  import { BREADCRUMB_EXTENSION_KEY } from "../../../../config/breadcrumb-extension";
15
15
  import { SIDEBAR_TAKEOVER_KEY } from "../../../../sidebar-takeover";
16
16
  import { lookupFindBlock } from "../../../../config/utils/block-ref-cache";
17
17
  import { useSlotEditor } from "../../../../config/use-editor";
18
+ import { getStructFieldDescription, getStructFieldTitle } from "../../../schema";
19
+ import { schema } from "./schema";
18
20
  defineOptions({ name: "ShwfedModalLayoutActionConfig" });
19
21
  const value = defineModel({ type: null, ...{ required: true } });
20
22
  const props = defineProps({
@@ -22,6 +24,10 @@ const props = defineProps({
22
24
  });
23
25
  const configure = computed(() => props.configure ?? (() => {
24
26
  }));
27
+ const actionSchema = schema(() => {
28
+ });
29
+ const fieldTitle = (f) => getStructFieldTitle(actionSchema, f) ?? f;
30
+ const fieldDescription = (f) => getStructFieldDescription(actionSchema, f);
25
31
  const slot = computed({
26
32
  get: () => value.value.slot ?? defaultSlot(),
27
33
  set: (next) => {
@@ -30,10 +36,7 @@ const slot = computed({
30
36
  });
31
37
  const editor = useSlotEditor(slot, { configure: configure.value });
32
38
  function setModalTitle(next) {
33
- const draft = { ...value.value };
34
- if (hasVisibleLocaleValue(next)) draft.modalTitle = next;
35
- else Reflect.deleteProperty(draft, "modalTitle");
36
- value.value = draft;
39
+ value.value = { ...value.value, modalTitle: next };
37
40
  }
38
41
  function setOptional(key, next) {
39
42
  const trimmed = next.trim();
@@ -181,11 +184,22 @@ onBeforeUnmount(() => {
181
184
  >
182
185
  <Field orientation="vertical">
183
186
  <FieldLabel class="text-xs text-zinc-500">
184
- 弹窗标题
187
+ <template
188
+ v-if="fieldDescription('modalTitle')"
189
+ #tooltip
190
+ >
191
+ <Markdown
192
+ :source="fieldDescription('modalTitle')"
193
+ block
194
+ class="prose prose-sm prose-zinc"
195
+ />
196
+ </template>
197
+ {{ fieldTitle("modalTitle") }}
185
198
  </FieldLabel>
186
199
  <LocaleField
187
- :model-value="value.modalTitle ?? []"
188
- translate-hint="弹窗标题"
200
+ markdown
201
+ :model-value="value.modalTitle"
202
+ :translate-hint="fieldTitle('modalTitle')"
189
203
  @update:model-value="setModalTitle"
190
204
  />
191
205
  </Field>
@@ -193,7 +207,17 @@ onBeforeUnmount(() => {
193
207
  <div class="grid grid-cols-2 gap-4">
194
208
  <Field orientation="vertical">
195
209
  <FieldLabel class="text-xs text-zinc-500">
196
- 弹窗宽度
210
+ <template
211
+ v-if="fieldDescription('modalWidth')"
212
+ #tooltip
213
+ >
214
+ <Markdown
215
+ :source="fieldDescription('modalWidth')"
216
+ block
217
+ class="prose prose-sm prose-zinc"
218
+ />
219
+ </template>
220
+ {{ fieldTitle("modalWidth") }}
197
221
  </FieldLabel>
198
222
  <Input
199
223
  :model-value="value.modalWidth ?? ''"
@@ -204,7 +228,17 @@ onBeforeUnmount(() => {
204
228
 
205
229
  <Field orientation="vertical">
206
230
  <FieldLabel class="text-xs text-zinc-500">
207
- 最小高度
231
+ <template
232
+ v-if="fieldDescription('modalMinHeight')"
233
+ #tooltip
234
+ >
235
+ <Markdown
236
+ :source="fieldDescription('modalMinHeight')"
237
+ block
238
+ class="prose prose-sm prose-zinc"
239
+ />
240
+ </template>
241
+ {{ fieldTitle("modalMinHeight") }}
208
242
  </FieldLabel>
209
243
  <Input
210
244
  :model-value="value.modalMinHeight ?? ''"
@@ -1,5 +1,5 @@
1
1
  import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
2
- import type { Value } from './schema.js';
2
+ import { type Value } from './schema.js';
3
3
  type __VLS_Props = {
4
4
  configure?: (env: Environment) => void;
5
5
  };
@@ -1,11 +1,16 @@
1
1
  <script setup>
2
- import { defineComponent } from "vue";
2
+ import { defineComponent, provide, ref } from "vue";
3
3
  import { Effect } from "effect";
4
4
  import { useI18n } from "vue-i18n";
5
5
  import { openModal } from "../../../../../composables/useOverlay";
6
6
  import { getLocalizedText } from "../../../../../share/locale";
7
7
  import { lookupFindBlock } from "../../../../config/utils/block-ref-cache";
8
- import { injectCELContext, provideCELContext } from "../../../../../plugins/cel/context";
8
+ import { injectCELContext, provideCELContext } from "../../../../../utils/cel-context";
9
+ import {
10
+ EVENT_CHANNEL_KEY,
11
+ createEventChannel,
12
+ useEventChannel
13
+ } from "../../../../../share/event-bus";
9
14
  import ShwfedActionDefinition from "../../../components/definition.vue";
10
15
  import ShwfedSlotRenderer from "../../../../../share/slot-renderer.vue";
11
16
  defineOptions({ name: "ShwfedModalLayoutActionRuntime" });
@@ -18,21 +23,33 @@ const { locale } = useI18n();
18
23
  const configure = (_env) => {
19
24
  };
20
25
  const inheritedCelContext = injectCELContext();
21
- const InheritedCelContextProvider = defineComponent({
22
- name: "InheritedCelContextProvider",
26
+ const outerEventChannel = useEventChannel();
27
+ const currentClose = ref(null);
28
+ const eventChannelNode = createEventChannel(
29
+ props.buttonId,
30
+ { close: () => Effect.sync(() => {
31
+ currentClose.value?.();
32
+ }) },
33
+ outerEventChannel
34
+ );
35
+ const ModalBoundaryBridge = defineComponent({
36
+ name: "ModalBoundaryBridge",
23
37
  setup(_, { slots }) {
24
38
  provideCELContext(inheritedCelContext);
39
+ provide(EVENT_CHANNEL_KEY, eventChannelNode);
25
40
  return () => slots.default?.();
26
41
  }
27
42
  });
28
43
  const findBlock = (type, compatibilityDate) => lookupFindBlock()?.(type, compatibilityDate);
29
44
  const effect = Effect.gen(function* () {
30
45
  const title = getLocalizedText(props.config.modalTitle, locale.value) ?? getLocalizedText(props.buttonTitle, locale.value) ?? "";
31
- const { modal } = yield* openModal({
46
+ const { modal, close } = yield* openModal({
32
47
  title,
33
48
  width: props.config.modalWidth
34
49
  });
50
+ currentClose.value = () => Effect.runSync(close());
35
51
  yield* modal;
52
+ currentClose.value = null;
36
53
  });
37
54
  </script>
38
55
 
@@ -43,13 +60,13 @@ const effect = Effect.gen(function* () {
43
60
  >
44
61
  <template #default>
45
62
  <div :style="config.modalMinHeight ? `min-height: ${config.modalMinHeight}` : void 0">
46
- <InheritedCelContextProvider>
63
+ <ModalBoundaryBridge>
47
64
  <ShwfedSlotRenderer
48
65
  :slot-value="config.slot"
49
66
  :configure="configure"
50
67
  :find-entry="findBlock"
51
68
  />
52
- </InheritedCelContextProvider>
69
+ </ModalBoundaryBridge>
53
70
  </div>
54
71
  </template>
55
72
  </ShwfedActionDefinition>
@@ -3,9 +3,14 @@ import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
3
3
  export declare const type: "com.shwfed.actions.button.modal.layout";
4
4
  export declare const compatibilityDate: "2026-05-11";
5
5
  export declare const metadata: {
6
- readonly name: "弹窗布局";
6
+ readonly name: "模态窗口";
7
7
  readonly icon: "fluent:window-edit-20-regular";
8
8
  readonly drillable: true;
9
+ readonly operations: readonly [{
10
+ readonly id: "close";
11
+ readonly name: "关闭弹窗";
12
+ readonly icon: "fluent:dismiss-20-regular";
13
+ }];
9
14
  };
10
15
  export declare function schema(configure: (env: Environment) => void): Schema.Struct<{
11
16
  type: Schema.Literal<["com.shwfed.actions.button.modal.layout"]>;
@@ -5,9 +5,12 @@ import { lookupBlockRef } from "../../../../config/utils/block-ref-cache.js";
5
5
  export const type = "com.shwfed.actions.button.modal.layout";
6
6
  export const compatibilityDate = "2026-05-11";
7
7
  export const metadata = {
8
- name: "\u5F39\u7A97\u5E03\u5C40",
8
+ name: "\u6A21\u6001\u7A97\u53E3",
9
9
  icon: "fluent:window-edit-20-regular",
10
- drillable: true
10
+ drillable: true,
11
+ operations: [
12
+ { id: "close", name: "\u5173\u95ED\u5F39\u7A97", icon: "fluent:dismiss-20-regular" }
13
+ ]
11
14
  };
12
15
  const CssLength = Schema.String.pipe(
13
16
  Schema.filter((s) => s.trim().length > 0 || "\u4E0D\u80FD\u4E3A\u7A7A\u5B57\u7B26\u4E32")
@@ -20,7 +23,7 @@ export function schema(configure) {
20
23
  compatibilityDate: Schema.Literal(compatibilityDate),
21
24
  modalTitle: Schema.optional(Locale.annotations({
22
25
  title: "\u5F39\u7A97\u6807\u9898",
23
- description: "\u5F39\u7A97\u9876\u90E8\u5C55\u793A\u7684\u672C\u5730\u5316\u6807\u9898\uFF1B\u4E0D\u586B\u5219\u56DE\u9000\u4F7F\u7528\u6309\u94AE\u81EA\u8EAB\u7684\u540D\u79F0"
26
+ description: "\u5F39\u7A97\u9876\u90E8\u5C55\u793A\u7684\u672C\u5730\u5316\u6807\u9898\uFF0C\u652F\u6301\u884C\u5185 Markdown\uFF1B\u4E0D\u586B\u5219\u56DE\u9000\u4F7F\u7528\u6309\u94AE\u81EA\u8EAB\u7684\u540D\u79F0"
24
27
  })),
25
28
  modalWidth: Schema.optional(CssLength.annotations({
26
29
  title: "\u5F39\u7A97\u5BBD\u5EA6",
@@ -1,16 +1,24 @@
1
- import type { Value } from './schema.js';
1
+ import { type Value } from './schema.js';
2
2
  type __VLS_ModelProps = {
3
3
  modelValue: Value;
4
4
  };
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
- readonly type: "com.shwfed.actions.button.table.reset";
8
- readonly compatibilityDate: "2026-04-27";
7
+ readonly type: "com.shwfed.actions.button.event.dispatch";
8
+ readonly compatibilityDate: "2026-05-15";
9
+ readonly triggers?: readonly {
10
+ readonly target: string;
11
+ readonly operation: string;
12
+ }[] | undefined;
9
13
  }) => any;
10
14
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
11
15
  "onUpdate:modelValue"?: ((value: {
12
- readonly type: "com.shwfed.actions.button.table.reset";
13
- readonly compatibilityDate: "2026-04-27";
16
+ readonly type: "com.shwfed.actions.button.event.dispatch";
17
+ readonly compatibilityDate: "2026-05-15";
18
+ readonly triggers?: readonly {
19
+ readonly target: string;
20
+ readonly operation: string;
21
+ }[] | undefined;
14
22
  }) => any) | undefined;
15
23
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
24
  declare const _default: typeof __VLS_export;
@@ -0,0 +1,32 @@
1
+ <script setup>
2
+ import { computed } from "vue";
3
+ import { schema } from "./schema";
4
+ import { getStructFieldTitle } from "../../../schema";
5
+ import { Field, FieldLabel } from "../../../../ui/field";
6
+ import TriggersField from "../../../components/triggers-field.vue";
7
+ defineOptions({ name: "ShwfedEventDispatchActionConfig" });
8
+ const value = defineModel({ type: null, ...{ required: true } });
9
+ const triggersTitle = getStructFieldTitle(schema(() => {
10
+ }), "triggers") ?? "\u89E6\u53D1\u7684\u64CD\u4F5C";
11
+ const triggers = computed(() => value.value.triggers ?? []);
12
+ function updateTriggers(next) {
13
+ const draft = { ...value.value };
14
+ if (next.length === 0) Reflect.deleteProperty(draft, "triggers");
15
+ else draft.triggers = next;
16
+ value.value = draft;
17
+ }
18
+ </script>
19
+
20
+ <template>
21
+ <div class="flex flex-col gap-3">
22
+ <Field orientation="vertical">
23
+ <FieldLabel class="text-xs text-zinc-500">
24
+ {{ triggersTitle }}
25
+ </FieldLabel>
26
+ <TriggersField
27
+ :triggers="triggers"
28
+ @update:triggers="updateTriggers"
29
+ />
30
+ </Field>
31
+ </div>
32
+ </template>
@@ -1,16 +1,24 @@
1
- import type { Value } from './schema.js';
1
+ import { type Value } from './schema.js';
2
2
  type __VLS_ModelProps = {
3
3
  modelValue: Value;
4
4
  };
5
5
  declare const __VLS_export: import("vue").DefineComponent<__VLS_ModelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
6
6
  "update:modelValue": (value: {
7
- readonly type: "com.shwfed.actions.button.table.reset";
8
- readonly compatibilityDate: "2026-04-27";
7
+ readonly type: "com.shwfed.actions.button.event.dispatch";
8
+ readonly compatibilityDate: "2026-05-15";
9
+ readonly triggers?: readonly {
10
+ readonly target: string;
11
+ readonly operation: string;
12
+ }[] | undefined;
9
13
  }) => any;
10
14
  }, string, import("vue").PublicProps, Readonly<__VLS_ModelProps> & Readonly<{
11
15
  "onUpdate:modelValue"?: ((value: {
12
- readonly type: "com.shwfed.actions.button.table.reset";
13
- readonly compatibilityDate: "2026-04-27";
16
+ readonly type: "com.shwfed.actions.button.event.dispatch";
17
+ readonly compatibilityDate: "2026-05-15";
18
+ readonly triggers?: readonly {
19
+ readonly target: string;
20
+ readonly operation: string;
21
+ }[] | undefined;
14
22
  }) => any) | undefined;
15
23
  }>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
16
24
  declare const _default: typeof __VLS_export;
@@ -1,16 +1,14 @@
1
1
  <script setup>
2
2
  import { Effect } from "effect";
3
3
  import ShwfedActionDefinition from "../../../components/definition.vue";
4
- import { useTableHost } from "../../../../table/utils/host";
5
- defineOptions({ name: "ShwfedTableSearchButtonRuntime" });
6
- defineProps({
4
+ import { dispatchTriggers, useEventChannel } from "../../../../../share/event-bus";
5
+ defineOptions({ name: "ShwfedEventDispatchActionRuntime" });
6
+ const props = defineProps({
7
7
  buttonId: { type: String, required: true },
8
8
  config: { type: null, required: true }
9
9
  });
10
- const host = useTableHost();
11
- const effect = Effect.suspend(
12
- () => host ? Effect.promise(() => host.search()) : Effect.void
13
- );
10
+ const channel = useEventChannel();
11
+ const effect = Effect.suspend(() => dispatchTriggers(channel, props.config.triggers));
14
12
  </script>
15
13
 
16
14
  <template>
@@ -0,0 +1,17 @@
1
+ import { Schema } from 'effect';
2
+ import type { Environment } from '../../../../../vendor/cel-js/lib/index.js';
3
+ export declare const type: "com.shwfed.actions.button.event.dispatch";
4
+ export declare const compatibilityDate: "2026-05-15";
5
+ export declare const metadata: {
6
+ readonly name: "触发事件";
7
+ readonly icon: "fluent:flash-20-regular";
8
+ };
9
+ export declare function schema(_configure: (env: Environment) => void): Schema.Struct<{
10
+ type: Schema.Literal<["com.shwfed.actions.button.event.dispatch"]>;
11
+ compatibilityDate: Schema.Literal<["2026-05-15"]>;
12
+ triggers: Schema.optional<Schema.Array$<Schema.Struct<{
13
+ target: Schema.refine<string, typeof Schema.String>;
14
+ operation: Schema.SchemaClass<string, string, never>;
15
+ }>>>;
16
+ }>;
17
+ export type Value = Schema.Schema.Type<ReturnType<typeof schema>>;
@@ -0,0 +1,18 @@
1
+ import { Schema } from "effect";
2
+ import { Triggers } from "../../../../../share/event-bus.js";
3
+ export const type = "com.shwfed.actions.button.event.dispatch";
4
+ export const compatibilityDate = "2026-05-15";
5
+ export const metadata = {
6
+ name: "\u89E6\u53D1\u4E8B\u4EF6",
7
+ icon: "fluent:flash-20-regular"
8
+ };
9
+ export function schema(_configure) {
10
+ return Schema.Struct({
11
+ type: Schema.Literal(type),
12
+ compatibilityDate: Schema.Literal(compatibilityDate),
13
+ // This button's entire behaviour: the op-requests it bubbles up the
14
+ // component tree on click. Stored on the button itself — there is no
15
+ // host-level trigger field any more.
16
+ triggers: Schema.optional(Triggers)
17
+ });
18
+ }