@limetech/lime-crm-building-blocks 2.3.1 → 2.4.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 (293) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/cjs/{condition-tree-translate-B_qIQz9s.js → condition-tree-translate-BQwKtiNZ.js} +1 -1
  3. package/dist/cjs/{filter-group-logic-Bt5tIbfP.js → filter-group-logic-CeGmYgsu.js} +1 -1
  4. package/dist/cjs/{filter-operators-CzIq9qKC.js → filter-operators-C3T2czC_.js} +1 -1
  5. package/dist/cjs/{index-mDIvByXc.js → index-Du4GyM0Y.js} +13 -8
  6. package/dist/cjs/index.cjs.js +3 -3
  7. package/dist/cjs/{index.esm-D1EzGa8X.js → index.esm-C2zw0QJK.js} +2 -2
  8. package/dist/cjs/lime-crm-building-blocks.cjs.js +3 -3
  9. package/dist/cjs/{lime-query-validation-Df4GZRGm.js → lime-query-validation-CzYkphmi.js} +1 -1
  10. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/limebb-browser.cjs.entry.js +2 -2
  12. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +2 -2
  13. package/dist/cjs/limebb-chat-list.cjs.entry.js +2 -2
  14. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +1 -1
  15. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +1 -1
  16. package/dist/cjs/limebb-component-config.cjs.entry.js +3 -3
  17. package/dist/cjs/limebb-component-picker.cjs.entry.js +2 -2
  18. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +2 -2
  19. package/dist/cjs/limebb-condition-tree-editor.cjs.entry.js +24 -9
  20. package/dist/cjs/limebb-condition-tree.cjs.entry.js +121 -34
  21. package/dist/cjs/limebb-currency-picker.cjs.entry.js +2 -2
  22. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  23. package/dist/cjs/limebb-data-cells.cjs.entry.js +2 -2
  24. package/dist/cjs/limebb-date-picker.cjs.entry.js +2 -2
  25. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  26. package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
  27. package/dist/cjs/limebb-document-item.cjs.entry.js +1 -1
  28. package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
  29. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  30. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +2 -2
  32. package/dist/cjs/limebb-feed.cjs.entry.js +2 -2
  33. package/dist/cjs/limebb-filter-chip_6.cjs.entry.js +4 -4
  34. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-info-tile-currency-format.cjs.entry.js +1 -1
  36. package/dist/cjs/limebb-info-tile-date-format.cjs.entry.js +1 -1
  37. package/dist/cjs/limebb-info-tile-decimal-format.cjs.entry.js +1 -1
  38. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
  39. package/dist/cjs/limebb-info-tile-relative-date-format.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-info-tile-unit-format.cjs.entry.js +1 -1
  41. package/dist/cjs/limebb-info-tile.cjs.entry.js +3 -3
  42. package/dist/cjs/limebb-inline-image.cjs.entry.js +2 -2
  43. package/dist/cjs/limebb-kanban-group.cjs.entry.js +2 -2
  44. package/dist/cjs/limebb-kanban-item.cjs.entry.js +2 -2
  45. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  46. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +3 -3
  47. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +3 -3
  48. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +4 -4
  49. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +3 -3
  50. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +1 -1
  51. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +3 -3
  52. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
  53. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  54. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +1 -1
  55. package/dist/cjs/limebb-loader.cjs.entry.js +2 -2
  56. package/dist/cjs/limebb-locale-picker.cjs.entry.js +2 -2
  57. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +1 -1
  58. package/dist/cjs/limebb-mention.cjs.entry.js +2 -2
  59. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +1 -1
  60. package/dist/cjs/limebb-notification-item.cjs.entry.js +2 -2
  61. package/dist/cjs/limebb-notification-list.cjs.entry.js +2 -2
  62. package/dist/cjs/limebb-object-chip.cjs.entry.js +3 -3
  63. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  64. package/dist/cjs/limebb-property-selector.cjs.entry.js +3 -3
  65. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +2 -2
  66. package/dist/cjs/limebb-rule-condition-chip.cjs.entry.js +71 -0
  67. package/dist/cjs/limebb-rule-condition-editor-CHWTMOmi.js +285 -0
  68. package/dist/cjs/limebb-rule-condition-editor.cjs.entry.js +9 -0
  69. package/dist/cjs/limebb-rule-editor.cjs.entry.js +217 -573
  70. package/dist/cjs/limebb-rule-gate.cjs.entry.js +3 -3
  71. package/dist/cjs/limebb-text-editor-picker.cjs.entry.js +1 -1
  72. package/dist/cjs/limebb-text-editor.cjs.entry.js +3 -3
  73. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +2 -2
  74. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +3 -3
  75. package/dist/cjs/{limetype-BPuuRLtH.js → limetype-BzVDjAKS.js} +1 -1
  76. package/dist/cjs/loader.cjs.js +2 -2
  77. package/dist/cjs/{web-component-template-DRMW9wHN.js → web-component-template-C-AkY5as.js} +1 -1
  78. package/dist/collection/collection-manifest.json +3 -2
  79. package/dist/collection/components/condition-tree/condition-tree-editor/condition-tree-editor.js +46 -5
  80. package/dist/collection/components/condition-tree/condition-tree-nodes.js +13 -6
  81. package/dist/collection/components/condition-tree/condition-tree.js +69 -18
  82. package/dist/collection/components/condition-tree/group-node-view.js +41 -5
  83. package/dist/collection/components/condition-tree/leaf-node-view.js +19 -2
  84. package/dist/collection/components/rule-editor/condition-tree-adapter.js +229 -0
  85. package/dist/collection/components/rule-editor/rule-condition-chip/rule-condition-chip.css +4 -0
  86. package/dist/collection/components/rule-editor/rule-condition-chip/rule-condition-chip.js +322 -0
  87. package/dist/collection/components/rule-editor/rule-condition-editor/rule-condition-editor.css +5 -0
  88. package/dist/collection/components/rule-editor/rule-condition-editor/rule-condition-editor.js +259 -0
  89. package/dist/collection/components/rule-editor/rule-editor.css +1 -73
  90. package/dist/collection/components/rule-editor/rule-editor.js +143 -153
  91. package/dist/collection/components/rule-editor/rule-issues.js +89 -0
  92. package/dist/collection/components/rule-editor/view-helpers.js +19 -41
  93. package/dist/collection/components/rule-gate/rule-gate.css +3 -3
  94. package/dist/components/condition-tree-adapter.js +1 -0
  95. package/dist/components/condition-tree-editor.js +1 -1
  96. package/dist/components/condition-tree.js +1 -0
  97. package/dist/components/limebb-condition-tree.js +1 -1
  98. package/dist/components/limebb-rule-condition-chip.d.ts +11 -0
  99. package/dist/components/limebb-rule-condition-chip.js +1 -0
  100. package/dist/components/limebb-rule-condition-editor.d.ts +11 -0
  101. package/dist/components/limebb-rule-condition-editor.js +1 -0
  102. package/dist/components/limebb-rule-editor.js +1 -1
  103. package/dist/components/limebb-rule-gate.js +1 -1
  104. package/dist/esm/{condition-tree-translate-CBeXbZ_z.js → condition-tree-translate-ZQptbaXF.js} +1 -1
  105. package/dist/esm/{filter-group-logic-CzThKf85.js → filter-group-logic-nqCMmV0e.js} +1 -1
  106. package/dist/esm/{filter-operators-u3T1PKhm.js → filter-operators-QbKK26m2.js} +1 -1
  107. package/dist/esm/{index-COtSgrC5.js → index-BK566_jX.js} +13 -8
  108. package/dist/esm/{index.esm-B9D_MXA6.js → index.esm-C__n3hug.js} +1 -1
  109. package/dist/esm/index.js +3 -3
  110. package/dist/esm/lime-crm-building-blocks.js +4 -4
  111. package/dist/esm/{lime-query-validation-dGoN_93p.js → lime-query-validation-BvB2v-yP.js} +1 -1
  112. package/dist/esm/limebb-alert-dialog.entry.js +1 -1
  113. package/dist/esm/limebb-browser.entry.js +2 -2
  114. package/dist/esm/limebb-chat-icon-list_3.entry.js +2 -2
  115. package/dist/esm/limebb-chat-list.entry.js +2 -2
  116. package/dist/esm/limebb-color-palette-picker.entry.js +1 -1
  117. package/dist/esm/limebb-color-palette-swatches.entry.js +1 -1
  118. package/dist/esm/limebb-component-config.entry.js +3 -3
  119. package/dist/esm/limebb-component-picker.entry.js +2 -2
  120. package/dist/esm/limebb-composer-toolbar.entry.js +2 -2
  121. package/dist/esm/limebb-condition-tree-editor.entry.js +24 -9
  122. package/dist/esm/limebb-condition-tree.entry.js +121 -34
  123. package/dist/esm/limebb-currency-picker.entry.js +2 -2
  124. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  125. package/dist/esm/limebb-data-cells.entry.js +2 -2
  126. package/dist/esm/limebb-date-picker.entry.js +2 -2
  127. package/dist/esm/limebb-date-range.entry.js +1 -1
  128. package/dist/esm/limebb-document-chips.entry.js +1 -1
  129. package/dist/esm/limebb-document-item.entry.js +1 -1
  130. package/dist/esm/limebb-document-picker.entry.js +1 -1
  131. package/dist/esm/limebb-empty-state.entry.js +1 -1
  132. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
  133. package/dist/esm/limebb-feed-timeline-item.entry.js +2 -2
  134. package/dist/esm/limebb-feed.entry.js +2 -2
  135. package/dist/esm/limebb-filter-chip_6.entry.js +4 -4
  136. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  137. package/dist/esm/limebb-info-tile-currency-format.entry.js +1 -1
  138. package/dist/esm/limebb-info-tile-date-format.entry.js +1 -1
  139. package/dist/esm/limebb-info-tile-decimal-format.entry.js +1 -1
  140. package/dist/esm/limebb-info-tile-format.entry.js +1 -1
  141. package/dist/esm/limebb-info-tile-relative-date-format.entry.js +1 -1
  142. package/dist/esm/limebb-info-tile-unit-format.entry.js +1 -1
  143. package/dist/esm/limebb-info-tile.entry.js +3 -3
  144. package/dist/esm/limebb-inline-image.entry.js +2 -2
  145. package/dist/esm/limebb-kanban-group.entry.js +2 -2
  146. package/dist/esm/limebb-kanban-item.entry.js +2 -2
  147. package/dist/esm/limebb-kanban.entry.js +1 -1
  148. package/dist/esm/limebb-lime-query-builder.entry.js +3 -3
  149. package/dist/esm/limebb-lime-query-filter-builder.entry.js +3 -3
  150. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +4 -4
  151. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +3 -3
  152. package/dist/esm/limebb-lime-query-order-by-item.entry.js +1 -1
  153. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +3 -3
  154. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
  155. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  156. package/dist/esm/limebb-live-docs-info.entry.js +1 -1
  157. package/dist/esm/limebb-loader.entry.js +2 -2
  158. package/dist/esm/limebb-locale-picker.entry.js +2 -2
  159. package/dist/esm/limebb-mention-group-counter.entry.js +1 -1
  160. package/dist/esm/limebb-mention.entry.js +2 -2
  161. package/dist/esm/limebb-navigation-button_2.entry.js +1 -1
  162. package/dist/esm/limebb-notification-item.entry.js +2 -2
  163. package/dist/esm/limebb-notification-list.entry.js +2 -2
  164. package/dist/esm/limebb-object-chip.entry.js +3 -3
  165. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  166. package/dist/esm/limebb-property-selector.entry.js +3 -3
  167. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +2 -2
  168. package/dist/esm/limebb-rule-condition-chip.entry.js +69 -0
  169. package/dist/esm/limebb-rule-condition-editor-DeY758N-.js +281 -0
  170. package/dist/esm/limebb-rule-condition-editor.entry.js +3 -0
  171. package/dist/esm/limebb-rule-editor.entry.js +217 -573
  172. package/dist/esm/limebb-rule-gate.entry.js +3 -3
  173. package/dist/esm/limebb-text-editor-picker.entry.js +1 -1
  174. package/dist/esm/limebb-text-editor.entry.js +3 -3
  175. package/dist/esm/limebb-trend-indicator.entry.js +2 -2
  176. package/dist/esm/limebb-value-comparison-editor.entry.js +3 -3
  177. package/dist/esm/{limetype-BcELY1NF.js → limetype-Muf9VutX.js} +1 -1
  178. package/dist/esm/loader.js +3 -3
  179. package/dist/esm/{web-component-template-DxbwHsvw.js → web-component-template-D1JpeNy_.js} +1 -1
  180. package/dist/lime-crm-building-blocks/index.esm.js +1 -1
  181. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  182. package/dist/lime-crm-building-blocks/p-0621e884.entry.js +1 -0
  183. package/dist/lime-crm-building-blocks/{p-ab0f8170.entry.js → p-087d5651.entry.js} +1 -1
  184. package/dist/lime-crm-building-blocks/{p-ce2755a0.entry.js → p-1917956c.entry.js} +1 -1
  185. package/dist/lime-crm-building-blocks/{p-07a9c8f2.entry.js → p-1ae4962d.entry.js} +1 -1
  186. package/dist/lime-crm-building-blocks/{p-021e452a.entry.js → p-23d2632b.entry.js} +1 -1
  187. package/dist/lime-crm-building-blocks/{p-ffca266e.entry.js → p-251784bf.entry.js} +1 -1
  188. package/dist/lime-crm-building-blocks/{p-635a45ad.entry.js → p-27240bb0.entry.js} +1 -1
  189. package/dist/lime-crm-building-blocks/p-2adeac66.entry.js +1 -0
  190. package/dist/lime-crm-building-blocks/{p-6a8422d2.entry.js → p-32339f09.entry.js} +1 -1
  191. package/dist/lime-crm-building-blocks/{p-1990e369.entry.js → p-3446290c.entry.js} +1 -1
  192. package/dist/lime-crm-building-blocks/{p-d495cc19.entry.js → p-35d9b3ad.entry.js} +1 -1
  193. package/dist/lime-crm-building-blocks/{p-eed0b2c2.entry.js → p-3865eec4.entry.js} +1 -1
  194. package/dist/lime-crm-building-blocks/{p-dacf9e77.entry.js → p-394b521a.entry.js} +1 -1
  195. package/dist/lime-crm-building-blocks/{p-8c36b847.entry.js → p-39a36450.entry.js} +1 -1
  196. package/dist/lime-crm-building-blocks/{p-97e75dee.entry.js → p-3b672249.entry.js} +1 -1
  197. package/dist/lime-crm-building-blocks/{p-ad5dcefd.entry.js → p-47b56a75.entry.js} +1 -1
  198. package/dist/lime-crm-building-blocks/{p-402a9c97.entry.js → p-4af3ea2c.entry.js} +1 -1
  199. package/dist/lime-crm-building-blocks/{p-0cc47cad.entry.js → p-4bdaf436.entry.js} +1 -1
  200. package/dist/lime-crm-building-blocks/{p-cf66256a.entry.js → p-4f60b7bc.entry.js} +1 -1
  201. package/dist/lime-crm-building-blocks/{p-90f0c96b.entry.js → p-4fd9d615.entry.js} +1 -1
  202. package/dist/lime-crm-building-blocks/{p-28550961.entry.js → p-53b44865.entry.js} +1 -1
  203. package/dist/lime-crm-building-blocks/{p-7ae27308.entry.js → p-550606f6.entry.js} +1 -1
  204. package/dist/lime-crm-building-blocks/p-573f9e95.entry.js +1 -0
  205. package/dist/lime-crm-building-blocks/{p-a5f3913d.entry.js → p-5c541d0c.entry.js} +1 -1
  206. package/dist/lime-crm-building-blocks/{p-ce723c21.entry.js → p-612c6b28.entry.js} +1 -1
  207. package/dist/lime-crm-building-blocks/{p-6f923112.entry.js → p-621ab65a.entry.js} +1 -1
  208. package/dist/lime-crm-building-blocks/{p-5f682c06.entry.js → p-627b0c79.entry.js} +1 -1
  209. package/dist/lime-crm-building-blocks/{p-49d042aa.entry.js → p-6303201b.entry.js} +1 -1
  210. package/dist/lime-crm-building-blocks/{p-8e9fcf3c.entry.js → p-6bd61290.entry.js} +1 -1
  211. package/dist/lime-crm-building-blocks/{p-dcb49a62.entry.js → p-6d2dba20.entry.js} +1 -1
  212. package/dist/lime-crm-building-blocks/{p-0193ed83.entry.js → p-6e2553b4.entry.js} +1 -1
  213. package/dist/lime-crm-building-blocks/{p-Cz5s8qGk.js → p-7DQ7qvMa.js} +1 -1
  214. package/dist/lime-crm-building-blocks/p-7c3d3e06.entry.js +1 -0
  215. package/dist/lime-crm-building-blocks/{p-dd02821e.entry.js → p-7d53756b.entry.js} +1 -1
  216. package/dist/lime-crm-building-blocks/{p-79d743bb.entry.js → p-895c8966.entry.js} +1 -1
  217. package/dist/lime-crm-building-blocks/{p-da35bcc7.entry.js → p-8c0455e4.entry.js} +1 -1
  218. package/dist/lime-crm-building-blocks/{p-a201df35.entry.js → p-8f80d024.entry.js} +1 -1
  219. package/dist/lime-crm-building-blocks/{p-32a81271.entry.js → p-949ed056.entry.js} +1 -1
  220. package/dist/lime-crm-building-blocks/{p-cf03a756.entry.js → p-985ae787.entry.js} +1 -1
  221. package/dist/lime-crm-building-blocks/p-9959019d.entry.js +1 -0
  222. package/dist/lime-crm-building-blocks/{p-DLec4QaM.js → p-B7whyaAL.js} +1 -1
  223. package/dist/lime-crm-building-blocks/{p-COtSgrC5.js → p-BK566_jX.js} +1 -1
  224. package/dist/lime-crm-building-blocks/p-ClYOFrOo.js +1 -0
  225. package/dist/lime-crm-building-blocks/{p-DVypQWZ4.js → p-Cve-3L4y.js} +1 -1
  226. package/dist/lime-crm-building-blocks/p-DOULPRTn.js +1 -0
  227. package/dist/lime-crm-building-blocks/{p-Cj_3f9vm.js → p-DhGRAeCH.js} +1 -1
  228. package/dist/lime-crm-building-blocks/p-DjoMDjMo.js +1 -0
  229. package/dist/lime-crm-building-blocks/p-DuWEcQ7n.js +1 -0
  230. package/dist/lime-crm-building-blocks/{p-dfaef740.entry.js → p-a1052482.entry.js} +1 -1
  231. package/dist/lime-crm-building-blocks/{p-3babfbe0.entry.js → p-a14bed52.entry.js} +1 -1
  232. package/dist/lime-crm-building-blocks/{p-cc53a8ca.entry.js → p-a2e291b4.entry.js} +1 -1
  233. package/dist/lime-crm-building-blocks/{p-8a17a7ea.entry.js → p-a2ebd5a4.entry.js} +1 -1
  234. package/dist/lime-crm-building-blocks/{p-0cbe2180.entry.js → p-a4556649.entry.js} +1 -1
  235. package/dist/lime-crm-building-blocks/{p-f5c1ed0c.entry.js → p-a598f92f.entry.js} +1 -1
  236. package/dist/lime-crm-building-blocks/{p-b44b9dbc.entry.js → p-a938384f.entry.js} +1 -1
  237. package/dist/lime-crm-building-blocks/{p-f3539042.entry.js → p-ab0210b2.entry.js} +1 -1
  238. package/dist/lime-crm-building-blocks/{p-c0d49532.entry.js → p-b272730c.entry.js} +1 -1
  239. package/dist/lime-crm-building-blocks/{p-0370200d.entry.js → p-b4571d32.entry.js} +1 -1
  240. package/dist/lime-crm-building-blocks/{p-551a36f6.entry.js → p-b72c748b.entry.js} +1 -1
  241. package/dist/lime-crm-building-blocks/{p-0ed9a7cc.entry.js → p-bac9d3a9.entry.js} +1 -1
  242. package/dist/lime-crm-building-blocks/p-bd6c12bc.entry.js +1 -0
  243. package/dist/lime-crm-building-blocks/{p-81783bd4.entry.js → p-bf693702.entry.js} +1 -1
  244. package/dist/lime-crm-building-blocks/{p-e6cc320a.entry.js → p-c58067ec.entry.js} +1 -1
  245. package/dist/lime-crm-building-blocks/{p-08797129.entry.js → p-c7bfa2e4.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/{p-a953d48e.entry.js → p-d4635a39.entry.js} +1 -1
  247. package/dist/lime-crm-building-blocks/{p-d3c58bc1.entry.js → p-d6099dc7.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/{p-bf05d9de.entry.js → p-d6c7cf0f.entry.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-1ebe45b8.entry.js → p-da79c5fc.entry.js} +1 -1
  250. package/dist/lime-crm-building-blocks/p-e18a2cef.entry.js +1 -0
  251. package/dist/lime-crm-building-blocks/{p-f9991c35.entry.js → p-e19f4b3b.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/{p-46aec244.entry.js → p-eb95767a.entry.js} +1 -1
  253. package/dist/lime-crm-building-blocks/{p-ddc4ede8.entry.js → p-ec9b5e30.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/{p-95ba7a84.entry.js → p-f49250f3.entry.js} +1 -1
  255. package/dist/types/components/condition-tree/condition-tree-editor/condition-tree-editor.d.ts +20 -3
  256. package/dist/types/components/condition-tree/condition-tree-nodes.d.ts +11 -4
  257. package/dist/types/components/condition-tree/condition-tree-view-context.d.ts +3 -2
  258. package/dist/types/components/condition-tree/condition-tree.d.ts +41 -8
  259. package/dist/types/components/condition-tree/condition-tree.types.d.ts +21 -2
  260. package/dist/types/components/rule-editor/condition-tree-adapter.d.ts +67 -0
  261. package/dist/types/components/rule-editor/rule-condition-chip/rule-condition-chip.d.ts +82 -0
  262. package/dist/types/components/rule-editor/rule-condition-editor/rule-condition-editor.d.ts +61 -0
  263. package/dist/types/components/rule-editor/rule-editor.d.ts +105 -47
  264. package/dist/types/components/rule-editor/rule-issues.d.ts +12 -0
  265. package/dist/types/components/rule-editor/view-helpers.d.ts +16 -35
  266. package/dist/types/components.d.ts +304 -79
  267. package/dist/types/stencil-public-runtime.d.ts +61 -55
  268. package/package.json +4 -4
  269. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +0 -82
  270. package/dist/collection/components/rule-editor/chip-picker-view.js +0 -148
  271. package/dist/collection/components/rule-editor/group-node-view.js +0 -79
  272. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.css +0 -36
  273. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +0 -344
  274. package/dist/collection/components/rule-editor/rule-editor-views.js +0 -43
  275. package/dist/collection/components/rule-editor/rule-operations.js +0 -145
  276. package/dist/components/limebb-rule-chip-popover.d.ts +0 -11
  277. package/dist/components/limebb-rule-chip-popover.js +0 -1
  278. package/dist/components/rule-chip-popover.js +0 -1
  279. package/dist/esm/limebb-rule-chip-popover.entry.js +0 -80
  280. package/dist/lime-crm-building-blocks/p-1578c8f0.entry.js +0 -1
  281. package/dist/lime-crm-building-blocks/p-229d018c.entry.js +0 -1
  282. package/dist/lime-crm-building-blocks/p-6331f9c5.entry.js +0 -1
  283. package/dist/lime-crm-building-blocks/p-705c53c0.entry.js +0 -1
  284. package/dist/lime-crm-building-blocks/p-84ad9159.entry.js +0 -1
  285. package/dist/lime-crm-building-blocks/p-BxCq236x.js +0 -1
  286. package/dist/lime-crm-building-blocks/p-Css8537O.js +0 -1
  287. package/dist/lime-crm-building-blocks/p-a58c9e1e.entry.js +0 -1
  288. package/dist/lime-crm-building-blocks/p-hsyotUav.js +0 -1
  289. package/dist/types/components/rule-editor/chip-picker-view.d.ts +0 -35
  290. package/dist/types/components/rule-editor/group-node-view.d.ts +0 -11
  291. package/dist/types/components/rule-editor/rule-chip-popover/rule-chip-popover.d.ts +0 -43
  292. package/dist/types/components/rule-editor/rule-editor-views.d.ts +0 -58
  293. package/dist/types/components/rule-editor/rule-operations.d.ts +0 -70
@@ -6,9 +6,9 @@
6
6
  */
7
7
  import { HTMLStencilElement, JSXBase } from "./stencil-public-runtime";
8
8
  import { AlertType } from "./components/alert-dialog/alert-dialog.types";
9
- import { AggregateOperator, ComponentDescriptor, ContextMap, ContextScope, Expression, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, PropertyType, Rule, RuleRef } from "@limetech/lime-web-components";
9
+ import { AggregateOperator, ComponentDescriptor, ContextMap, ContextScope, Expression, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PropertyType, Rule } from "@limetech/lime-web-components";
10
10
  import { BrowserItem } from "./components/browser/browser-item.types";
11
- import { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, OpenDirection } from "@limetech/lime-elements";
11
+ import { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, MenuSearcher, OpenDirection } from "@limetech/lime-elements";
12
12
  import { ChatIconList } from "./components/chat-list/chat-icon-list/chat-icon-list.types";
13
13
  import { ChatItem } from "./components/chat-list/chat-item/chat-item.types";
14
14
  import { ChatListItem } from "./components/chat-list/chat-list.types";
@@ -38,9 +38,9 @@ import { RuleEditorMode } from "./components/rule-editor/rule-editor.types";
38
38
  import { TriggerMap } from "./components/text-editor/text-editor.types";
39
39
  import { ValueComparisonEditorValue } from "./components/rule-editor/value-comparison-editor/value-comparison-editor";
40
40
  export { AlertType } from "./components/alert-dialog/alert-dialog.types";
41
- export { AggregateOperator, ComponentDescriptor, ContextMap, ContextScope, Expression, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, PropertyType, Rule, RuleRef } from "@limetech/lime-web-components";
41
+ export { AggregateOperator, ComponentDescriptor, ContextMap, ContextScope, Expression, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PropertyType, Rule } from "@limetech/lime-web-components";
42
42
  export { BrowserItem } from "./components/browser/browser-item.types";
43
- export { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, OpenDirection } from "@limetech/lime-elements";
43
+ export { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, MenuSearcher, OpenDirection } from "@limetech/lime-elements";
44
44
  export { ChatIconList } from "./components/chat-list/chat-icon-list/chat-icon-list.types";
45
45
  export { ChatItem } from "./components/chat-list/chat-item/chat-item.types";
46
46
  export { ChatListItem } from "./components/chat-list/chat-list.types";
@@ -537,6 +537,10 @@ export namespace Components {
537
537
  * The kinds of condition a user can add, offered as a menu when the add button is pressed. The chosen item is passed to `adapter.createLeaf`. Leave it unset when every condition in the tree is of the same kind: a blank one can simply be inserted, and its editor settles the rest, so pressing the button is the whole interaction. Set it when conditions come in kinds that have nothing in common — "the deal is worth more than 100 000", "the user belongs to a group", "it is the first day of the month" — where nothing can be inserted until the user says which. The menu has to be rendered here rather than by the consumer, because the button it hangs from lives inside this component.
538
538
  */
539
539
  "addOptions"?: Array<MenuItem | ListSeparator>;
540
+ /**
541
+ * How to narrow `addOptions` as the user types, which is what puts a search field at the top of the add menu. Worth setting as soon as the kinds on offer stop fitting on a screen — and a consumer whose kinds are contributed by add-ons cannot know that they still do. `addOptions` is still what the menu opens on, so an unsearched menu reads exactly as it did before.
542
+ */
543
+ "addSearcher"?: MenuSearcher;
540
544
  /**
541
545
  * Which combinators to offer in the group dropdowns, in the order given. All four are offered by default. "Not all of the following" and "None of the following" are harder to reason about than the two they negate, so a consumer whose users would be better served without them passes `['all', 'any']`. A group that already uses a combinator left off this list still shows it, rather than misrepresenting itself as using one of the offered ones.
542
546
  * @default [ ...CONDITION_TREE_COMBINATORS, ]
@@ -591,6 +595,10 @@ export namespace Components {
591
595
  * Title of the condition, shown above the editor when there is a header to show at all.
592
596
  */
593
597
  "heading"?: string;
598
+ /**
599
+ * The condition's glyph, shown beside the heading. The same one the chip carries, so that the popover reads as the chip opened up rather than as somewhere else.
600
+ */
601
+ "icon"?: IconName;
594
602
  /**
595
603
  * Whether the condition is negated. `undefined` means the condition expresses its own polarity and no switch is offered.
596
604
  */
@@ -2527,47 +2535,116 @@ export namespace Components {
2527
2535
  "value": RuleArgFilterEditorValue;
2528
2536
  }
2529
2537
  /**
2530
- * Popover content for a rule-editor chip. Carries its own styles so
2531
- * they travel with the element when `limel-popover` portals it out of
2532
- * the rule-editor's shadow DOM.
2538
+ * A rule condition as a chip, in place of the `limebb-filter-chip` the tree
2539
+ * draws by default.
2540
+ * A filter condition is a sentence and that chip lays it out as one, with the
2541
+ * property captioned above the value. A rule condition is a name with no value
2542
+ * under it, so the name is the whole chip. Implements `ConditionChip`.
2533
2543
  * @private
2534
2544
  */
2535
- interface LimebbRuleChipPopover {
2545
+ interface LimebbRuleConditionChip {
2536
2546
  /**
2537
- * Bridges the rule editor's context across the `limel-popover` portal.
2547
+ * @inheritdoc
2548
+ * @default false
2538
2549
  */
2539
- "context": LimeWebComponentContext;
2550
+ "disabled": boolean;
2540
2551
  /**
2552
+ * The condition's glyph.
2553
+ */
2554
+ "icon"?: IconName;
2555
+ /**
2556
+ * The glyph's colour, which travels beside the name because `ConditionTreeChip.icon` has no room for it.
2557
+ */
2558
+ "iconColor"?: string;
2559
+ /**
2560
+ * @inheritdoc
2541
2561
  * @default false
2542
2562
  */
2543
- "disabled": boolean;
2563
+ "invalid": boolean;
2564
+ /**
2565
+ * The name of the condition.
2566
+ */
2567
+ "label": string;
2544
2568
  /**
2545
- * Forwarded to the embedded config component so it can pull focus when this popover opens. The rule editor sets it only when the chip was just added via the picker, so clicking an existing chip does not steal focus. The component decides when it is ready to receive focus (e.g. after loading its own data).
2569
+ * Whether the condition is negated. The chip has to say so: the switch that sets it is out of sight inside the editor.
2546
2570
  * @default false
2547
2571
  */
2548
- "focusOnOpen": boolean;
2572
+ "negated": boolean;
2573
+ /**
2574
+ * Platform service provider. Unread, but declared so that the tree setting it does not leave it in the DOM as an attribute.
2575
+ */
2576
+ "platform": LimeWebComponentPlatform;
2549
2577
  /**
2578
+ * Deliberately not passed on to `limel-chip`, which would render it as a disabled button. A condition's arguments live behind this chip and nowhere else, so a chip that cannot be opened is a rule that cannot be read. It takes the delete control away instead — see `removable`.
2579
+ * @inheritdoc
2580
+ * @default false
2581
+ */
2582
+ "readonly": boolean;
2583
+ /**
2584
+ * Whether the chip offers a control that deletes the condition. `readonly` overrules it here rather than in the caller, since withholding `readonly` from `limel-chip` also withholds the lock it puts on the cross.
2550
2585
  * @default true
2551
2586
  */
2552
- "isMutable": boolean;
2587
+ "removable": boolean;
2553
2588
  /**
2589
+ * Whether this condition's editor is the one currently open.
2554
2590
  * @default false
2555
2591
  */
2556
- "isNegated": boolean;
2557
- "metadata"?: PrimitiveMetadata;
2592
+ "selected": boolean;
2593
+ }
2594
+ /**
2595
+ * The editor `limebb-condition-tree` opens for one rule condition: whatever
2596
+ * component the primitive named as its `configComponent`.
2597
+ * The two sides speak about different things. The tree passes a whole condition
2598
+ * and listens for `conditionChange`; a config component edits the reference's
2599
+ * `args` and reports a plain `change`. Config components are registered by
2600
+ * add-ons this repo does not own, so this side is the one that translates.
2601
+ * @alpha
2602
+ * @private
2603
+ */
2604
+ interface LimebbRuleConditionEditor {
2605
+ /**
2606
+ * The component the primitive declared for editing its args.
2607
+ */
2608
+ "configComponent": ComponentDescriptor;
2609
+ /**
2610
+ * Component context
2611
+ */
2612
+ "context": LimeWebComponentContext;
2613
+ /**
2614
+ * @inheritdoc
2615
+ * @default false
2616
+ */
2617
+ "disabled": boolean;
2618
+ /**
2619
+ * Forwarded so that component can take focus as it appears. Set only for a condition the author has just added.
2620
+ * @default false
2621
+ */
2622
+ "focusOnOpen": boolean;
2623
+ /**
2624
+ * Platform service provider
2625
+ */
2558
2626
  "platform": LimeWebComponentPlatform;
2559
2627
  /**
2628
+ * @inheritdoc
2560
2629
  * @default false
2561
2630
  */
2562
2631
  "readonly": boolean;
2563
- "refNode": RuleRef;
2632
+ /**
2633
+ * The condition being edited: a reference to a primitive, or the `not` around one.
2634
+ */
2635
+ "value": Rule;
2564
2636
  }
2565
2637
  /**
2566
2638
  * Tree editor for {@link Rule}.
2567
- * Renders a `Rule` value as a tree of nodes. Lets an author pick
2568
- * primitive refs in `all` / `any` groups, toggle negation, delete
2569
- * nodes, and edit per-primitive args via the editor declared on each
2570
- * primitive's metadata.
2639
+ * Renders a `Rule` value as a `limebb-condition-tree`. Lets an author
2640
+ * add primitive refs to `all` / `any` groups and to the negations of
2641
+ * those two, nest groups, negate a single ref, delete nodes, and edit
2642
+ * per-primitive args via the editor declared on each primitive's
2643
+ * metadata.
2644
+ * The tree owns every structural edit, and knows nothing about rules. A
2645
+ * `Rule` reaches it through an adapter — see `condition-tree-adapter.ts`
2646
+ * — which is also where the group negation the rule model writes as a
2647
+ * `not` wrapper is folded into the combinator the tree shows.
2571
2648
  * The component is value-in / value-out. Pass `value` and listen for
2572
2649
  * `change`; persistence is the caller's concern.
2573
2650
  * Pass `availableContexts` to forward the list of context keys the
@@ -2609,7 +2686,7 @@ export namespace Components {
2609
2686
  */
2610
2687
  "context": LimeWebComponentContext;
2611
2688
  /**
2612
- * Whether or not the current property is disabled The mutation UI is hidden when set. The args editor is rendered with `disabled` forwarded to it.
2689
+ * Whether or not the current property is disabled Every control stays where it is, dimmed and inert, when set. The args editor is rendered with `disabled` forwarded to it.
2613
2690
  * @inheritdoc
2614
2691
  */
2615
2692
  "disabled": boolean;
@@ -2640,7 +2717,7 @@ export namespace Components {
2640
2717
  */
2641
2718
  "platform": LimeWebComponentPlatform;
2642
2719
  /**
2643
- * Whether or not the current property is readonly The mutation UI (delete and negate toggles, add-group button) is hidden when set. The args editor for each ref is still rendered, with `readonly` forwarded to it.
2720
+ * Whether or not the current property is readonly The controls that add, delete and negate are not rendered when set, leaving the rule to be read. The args editor for each ref is still rendered, with `readonly` forwarded to it.
2644
2721
  * @inheritdoc
2645
2722
  */
2646
2723
  "readonly": boolean;
@@ -2650,7 +2727,7 @@ export namespace Components {
2650
2727
  */
2651
2728
  "required": boolean;
2652
2729
  /**
2653
- * The value of the current property
2730
+ * The value of the current property The rule under edit. Hand back what `change` emitted, not a copy: which condition is open, which have been visited and what validation said about each are all tracked by object identity, so a deep-cloned rule reads as a different one that happens to look the same.
2654
2731
  * @inheritdoc
2655
2732
  */
2656
2733
  "value": Rule | undefined;
@@ -3206,9 +3283,13 @@ export interface LimebbRuleArgFilterEditorCustomEvent<T> extends CustomEvent<T>
3206
3283
  detail: T;
3207
3284
  target: HTMLLimebbRuleArgFilterEditorElement;
3208
3285
  }
3209
- export interface LimebbRuleChipPopoverCustomEvent<T> extends CustomEvent<T> {
3286
+ export interface LimebbRuleConditionChipCustomEvent<T> extends CustomEvent<T> {
3210
3287
  detail: T;
3211
- target: HTMLLimebbRuleChipPopoverElement;
3288
+ target: HTMLLimebbRuleConditionChipElement;
3289
+ }
3290
+ export interface LimebbRuleConditionEditorCustomEvent<T> extends CustomEvent<T> {
3291
+ detail: T;
3292
+ target: HTMLLimebbRuleConditionEditorElement;
3212
3293
  }
3213
3294
  export interface LimebbRuleEditorCustomEvent<T> extends CustomEvent<T> {
3214
3295
  detail: T;
@@ -4914,40 +4995,72 @@ declare global {
4914
4995
  prototype: HTMLLimebbRuleArgFilterEditorElement;
4915
4996
  new (): HTMLLimebbRuleArgFilterEditorElement;
4916
4997
  };
4917
- interface HTMLLimebbRuleChipPopoverElementEventMap {
4918
- "negate": boolean;
4919
- "updateArgs": JsonValue;
4920
- "deleteChip": void;
4998
+ interface HTMLLimebbRuleConditionChipElementEventMap {
4999
+ "remove": void;
5000
+ }
5001
+ /**
5002
+ * A rule condition as a chip, in place of the `limebb-filter-chip` the tree
5003
+ * draws by default.
5004
+ * A filter condition is a sentence and that chip lays it out as one, with the
5005
+ * property captioned above the value. A rule condition is a name with no value
5006
+ * under it, so the name is the whole chip. Implements `ConditionChip`.
5007
+ * @private
5008
+ */
5009
+ interface HTMLLimebbRuleConditionChipElement extends Components.LimebbRuleConditionChip, HTMLStencilElement {
5010
+ addEventListener<K extends keyof HTMLLimebbRuleConditionChipElementEventMap>(type: K, listener: (this: HTMLLimebbRuleConditionChipElement, ev: LimebbRuleConditionChipCustomEvent<HTMLLimebbRuleConditionChipElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5011
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5012
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
5013
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
5014
+ removeEventListener<K extends keyof HTMLLimebbRuleConditionChipElementEventMap>(type: K, listener: (this: HTMLLimebbRuleConditionChipElement, ev: LimebbRuleConditionChipCustomEvent<HTMLLimebbRuleConditionChipElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5015
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5016
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
5017
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
5018
+ }
5019
+ var HTMLLimebbRuleConditionChipElement: {
5020
+ prototype: HTMLLimebbRuleConditionChipElement;
5021
+ new (): HTMLLimebbRuleConditionChipElement;
5022
+ };
5023
+ interface HTMLLimebbRuleConditionEditorElementEventMap {
5024
+ "conditionChange": Rule;
4921
5025
  }
4922
5026
  /**
4923
- * Popover content for a rule-editor chip. Carries its own styles so
4924
- * they travel with the element when `limel-popover` portals it out of
4925
- * the rule-editor's shadow DOM.
5027
+ * The editor `limebb-condition-tree` opens for one rule condition: whatever
5028
+ * component the primitive named as its `configComponent`.
5029
+ * The two sides speak about different things. The tree passes a whole condition
5030
+ * and listens for `conditionChange`; a config component edits the reference's
5031
+ * `args` and reports a plain `change`. Config components are registered by
5032
+ * add-ons this repo does not own, so this side is the one that translates.
5033
+ * @alpha
4926
5034
  * @private
4927
5035
  */
4928
- interface HTMLLimebbRuleChipPopoverElement extends Components.LimebbRuleChipPopover, HTMLStencilElement {
4929
- addEventListener<K extends keyof HTMLLimebbRuleChipPopoverElementEventMap>(type: K, listener: (this: HTMLLimebbRuleChipPopoverElement, ev: LimebbRuleChipPopoverCustomEvent<HTMLLimebbRuleChipPopoverElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
5036
+ interface HTMLLimebbRuleConditionEditorElement extends Components.LimebbRuleConditionEditor, HTMLStencilElement {
5037
+ addEventListener<K extends keyof HTMLLimebbRuleConditionEditorElementEventMap>(type: K, listener: (this: HTMLLimebbRuleConditionEditorElement, ev: LimebbRuleConditionEditorCustomEvent<HTMLLimebbRuleConditionEditorElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
4930
5038
  addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4931
5039
  addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
4932
5040
  addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
4933
- removeEventListener<K extends keyof HTMLLimebbRuleChipPopoverElementEventMap>(type: K, listener: (this: HTMLLimebbRuleChipPopoverElement, ev: LimebbRuleChipPopoverCustomEvent<HTMLLimebbRuleChipPopoverElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
5041
+ removeEventListener<K extends keyof HTMLLimebbRuleConditionEditorElementEventMap>(type: K, listener: (this: HTMLLimebbRuleConditionEditorElement, ev: LimebbRuleConditionEditorCustomEvent<HTMLLimebbRuleConditionEditorElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
4934
5042
  removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4935
5043
  removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
4936
5044
  removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
4937
5045
  }
4938
- var HTMLLimebbRuleChipPopoverElement: {
4939
- prototype: HTMLLimebbRuleChipPopoverElement;
4940
- new (): HTMLLimebbRuleChipPopoverElement;
5046
+ var HTMLLimebbRuleConditionEditorElement: {
5047
+ prototype: HTMLLimebbRuleConditionEditorElement;
5048
+ new (): HTMLLimebbRuleConditionEditorElement;
4941
5049
  };
4942
5050
  interface HTMLLimebbRuleEditorElementEventMap {
4943
5051
  "change": Rule | undefined;
4944
5052
  }
4945
5053
  /**
4946
5054
  * Tree editor for {@link Rule}.
4947
- * Renders a `Rule` value as a tree of nodes. Lets an author pick
4948
- * primitive refs in `all` / `any` groups, toggle negation, delete
4949
- * nodes, and edit per-primitive args via the editor declared on each
4950
- * primitive's metadata.
5055
+ * Renders a `Rule` value as a `limebb-condition-tree`. Lets an author
5056
+ * add primitive refs to `all` / `any` groups and to the negations of
5057
+ * those two, nest groups, negate a single ref, delete nodes, and edit
5058
+ * per-primitive args via the editor declared on each primitive's
5059
+ * metadata.
5060
+ * The tree owns every structural edit, and knows nothing about rules. A
5061
+ * `Rule` reaches it through an adapter — see `condition-tree-adapter.ts`
5062
+ * — which is also where the group negation the rule model writes as a
5063
+ * `not` wrapper is folded into the combinator the tree shows.
4951
5064
  * The component is value-in / value-out. Pass `value` and listen for
4952
5065
  * `change`; persistence is the caller's concern.
4953
5066
  * Pass `availableContexts` to forward the list of context keys the
@@ -5272,7 +5385,8 @@ declare global {
5272
5385
  "limebb-percentage-visualizer": HTMLLimebbPercentageVisualizerElement;
5273
5386
  "limebb-property-selector": HTMLLimebbPropertySelectorElement;
5274
5387
  "limebb-rule-arg-filter-editor": HTMLLimebbRuleArgFilterEditorElement;
5275
- "limebb-rule-chip-popover": HTMLLimebbRuleChipPopoverElement;
5388
+ "limebb-rule-condition-chip": HTMLLimebbRuleConditionChipElement;
5389
+ "limebb-rule-condition-editor": HTMLLimebbRuleConditionEditorElement;
5276
5390
  "limebb-rule-editor": HTMLLimebbRuleEditorElement;
5277
5391
  "limebb-rule-gate": HTMLLimebbRuleGateElement;
5278
5392
  "limebb-summary-popover": HTMLLimebbSummaryPopoverElement;
@@ -5785,6 +5899,10 @@ declare namespace LocalJSX {
5785
5899
  * The kinds of condition a user can add, offered as a menu when the add button is pressed. The chosen item is passed to `adapter.createLeaf`. Leave it unset when every condition in the tree is of the same kind: a blank one can simply be inserted, and its editor settles the rest, so pressing the button is the whole interaction. Set it when conditions come in kinds that have nothing in common — "the deal is worth more than 100 000", "the user belongs to a group", "it is the first day of the month" — where nothing can be inserted until the user says which. The menu has to be rendered here rather than by the consumer, because the button it hangs from lives inside this component.
5786
5900
  */
5787
5901
  "addOptions"?: Array<MenuItem | ListSeparator>;
5902
+ /**
5903
+ * How to narrow `addOptions` as the user types, which is what puts a search field at the top of the add menu. Worth setting as soon as the kinds on offer stop fitting on a screen — and a consumer whose kinds are contributed by add-ons cannot know that they still do. `addOptions` is still what the menu opens on, so an unsearched menu reads exactly as it did before.
5904
+ */
5905
+ "addSearcher"?: MenuSearcher;
5788
5906
  /**
5789
5907
  * Which combinators to offer in the group dropdowns, in the order given. All four are offered by default. "Not all of the following" and "None of the following" are harder to reason about than the two they negate, so a consumer whose users would be better served without them passes `['all', 'any']`. A group that already uses a combinator left off this list still shows it, rather than misrepresenting itself as using one of the offered ones.
5790
5908
  * @default [ ...CONDITION_TREE_COMBINATORS, ]
@@ -5843,6 +5961,10 @@ declare namespace LocalJSX {
5843
5961
  * Title of the condition, shown above the editor when there is a header to show at all.
5844
5962
  */
5845
5963
  "heading"?: string;
5964
+ /**
5965
+ * The condition's glyph, shown beside the heading. The same one the chip carries, so that the popover reads as the chip opened up rather than as somewhere else.
5966
+ */
5967
+ "icon"?: IconName;
5846
5968
  /**
5847
5969
  * Whether the condition is negated. `undefined` means the condition expresses its own polarity and no switch is offered.
5848
5970
  */
@@ -7955,50 +8077,124 @@ declare namespace LocalJSX {
7955
8077
  "value"?: RuleArgFilterEditorValue;
7956
8078
  }
7957
8079
  /**
7958
- * Popover content for a rule-editor chip. Carries its own styles so
7959
- * they travel with the element when `limel-popover` portals it out of
7960
- * the rule-editor's shadow DOM.
8080
+ * A rule condition as a chip, in place of the `limebb-filter-chip` the tree
8081
+ * draws by default.
8082
+ * A filter condition is a sentence and that chip lays it out as one, with the
8083
+ * property captioned above the value. A rule condition is a name with no value
8084
+ * under it, so the name is the whole chip. Implements `ConditionChip`.
8085
+ * @private
8086
+ */
8087
+ interface LimebbRuleConditionChip {
8088
+ /**
8089
+ * @inheritdoc
8090
+ * @default false
8091
+ */
8092
+ "disabled"?: boolean;
8093
+ /**
8094
+ * The condition's glyph.
8095
+ */
8096
+ "icon"?: IconName;
8097
+ /**
8098
+ * The glyph's colour, which travels beside the name because `ConditionTreeChip.icon` has no room for it.
8099
+ */
8100
+ "iconColor"?: string;
8101
+ /**
8102
+ * @inheritdoc
8103
+ * @default false
8104
+ */
8105
+ "invalid"?: boolean;
8106
+ /**
8107
+ * The name of the condition.
8108
+ */
8109
+ "label"?: string;
8110
+ /**
8111
+ * Whether the condition is negated. The chip has to say so: the switch that sets it is out of sight inside the editor.
8112
+ * @default false
8113
+ */
8114
+ "negated"?: boolean;
8115
+ /**
8116
+ * Emitted when the author asks for the condition to be deleted.
8117
+ */
8118
+ "onRemove"?: (event: LimebbRuleConditionChipCustomEvent<void>) => void;
8119
+ /**
8120
+ * Platform service provider. Unread, but declared so that the tree setting it does not leave it in the DOM as an attribute.
8121
+ */
8122
+ "platform"?: LimeWebComponentPlatform;
8123
+ /**
8124
+ * Deliberately not passed on to `limel-chip`, which would render it as a disabled button. A condition's arguments live behind this chip and nowhere else, so a chip that cannot be opened is a rule that cannot be read. It takes the delete control away instead — see `removable`.
8125
+ * @inheritdoc
8126
+ * @default false
8127
+ */
8128
+ "readonly"?: boolean;
8129
+ /**
8130
+ * Whether the chip offers a control that deletes the condition. `readonly` overrules it here rather than in the caller, since withholding `readonly` from `limel-chip` also withholds the lock it puts on the cross.
8131
+ * @default true
8132
+ */
8133
+ "removable"?: boolean;
8134
+ /**
8135
+ * Whether this condition's editor is the one currently open.
8136
+ * @default false
8137
+ */
8138
+ "selected"?: boolean;
8139
+ }
8140
+ /**
8141
+ * The editor `limebb-condition-tree` opens for one rule condition: whatever
8142
+ * component the primitive named as its `configComponent`.
8143
+ * The two sides speak about different things. The tree passes a whole condition
8144
+ * and listens for `conditionChange`; a config component edits the reference's
8145
+ * `args` and reports a plain `change`. Config components are registered by
8146
+ * add-ons this repo does not own, so this side is the one that translates.
8147
+ * @alpha
7961
8148
  * @private
7962
8149
  */
7963
- interface LimebbRuleChipPopover {
8150
+ interface LimebbRuleConditionEditor {
7964
8151
  /**
7965
- * Bridges the rule editor's context across the `limel-popover` portal.
8152
+ * The component the primitive declared for editing its args.
8153
+ */
8154
+ "configComponent"?: ComponentDescriptor;
8155
+ /**
8156
+ * Component context
7966
8157
  */
7967
8158
  "context"?: LimeWebComponentContext;
7968
8159
  /**
8160
+ * @inheritdoc
7969
8161
  * @default false
7970
8162
  */
7971
8163
  "disabled"?: boolean;
7972
8164
  /**
7973
- * Forwarded to the embedded config component so it can pull focus when this popover opens. The rule editor sets it only when the chip was just added via the picker, so clicking an existing chip does not steal focus. The component decides when it is ready to receive focus (e.g. after loading its own data).
8165
+ * Forwarded so that component can take focus as it appears. Set only for a condition the author has just added.
7974
8166
  * @default false
7975
8167
  */
7976
8168
  "focusOnOpen"?: boolean;
7977
8169
  /**
7978
- * @default true
8170
+ * Emitted with the whole condition, args and negation together, whenever the config component reports new args.
7979
8171
  */
7980
- "isMutable"?: boolean;
8172
+ "onConditionChange"?: (event: LimebbRuleConditionEditorCustomEvent<Rule>) => void;
7981
8173
  /**
7982
- * @default false
8174
+ * Platform service provider
7983
8175
  */
7984
- "isNegated"?: boolean;
7985
- "metadata"?: PrimitiveMetadata;
7986
- "onDeleteChip"?: (event: LimebbRuleChipPopoverCustomEvent<void>) => void;
7987
- "onNegate"?: (event: LimebbRuleChipPopoverCustomEvent<boolean>) => void;
7988
- "onUpdateArgs"?: (event: LimebbRuleChipPopoverCustomEvent<JsonValue>) => void;
7989
8176
  "platform"?: LimeWebComponentPlatform;
7990
8177
  /**
8178
+ * @inheritdoc
7991
8179
  * @default false
7992
8180
  */
7993
8181
  "readonly"?: boolean;
7994
- "refNode"?: RuleRef;
8182
+ /**
8183
+ * The condition being edited: a reference to a primitive, or the `not` around one.
8184
+ */
8185
+ "value"?: Rule;
7995
8186
  }
7996
8187
  /**
7997
8188
  * Tree editor for {@link Rule}.
7998
- * Renders a `Rule` value as a tree of nodes. Lets an author pick
7999
- * primitive refs in `all` / `any` groups, toggle negation, delete
8000
- * nodes, and edit per-primitive args via the editor declared on each
8001
- * primitive's metadata.
8189
+ * Renders a `Rule` value as a `limebb-condition-tree`. Lets an author
8190
+ * add primitive refs to `all` / `any` groups and to the negations of
8191
+ * those two, nest groups, negate a single ref, delete nodes, and edit
8192
+ * per-primitive args via the editor declared on each primitive's
8193
+ * metadata.
8194
+ * The tree owns every structural edit, and knows nothing about rules. A
8195
+ * `Rule` reaches it through an adapter — see `condition-tree-adapter.ts`
8196
+ * — which is also where the group negation the rule model writes as a
8197
+ * `not` wrapper is folded into the combinator the tree shows.
8002
8198
  * The component is value-in / value-out. Pass `value` and listen for
8003
8199
  * `change`; persistence is the caller's concern.
8004
8200
  * Pass `availableContexts` to forward the list of context keys the
@@ -8040,7 +8236,7 @@ declare namespace LocalJSX {
8040
8236
  */
8041
8237
  "context"?: LimeWebComponentContext;
8042
8238
  /**
8043
- * Whether or not the current property is disabled The mutation UI is hidden when set. The args editor is rendered with `disabled` forwarded to it.
8239
+ * Whether or not the current property is disabled Every control stays where it is, dimmed and inert, when set. The args editor is rendered with `disabled` forwarded to it.
8044
8240
  * @inheritdoc
8045
8241
  */
8046
8242
  "disabled"?: boolean;
@@ -8067,7 +8263,7 @@ declare namespace LocalJSX {
8067
8263
  */
8068
8264
  "modes"?: RuleEditorMode[];
8069
8265
  /**
8070
- * Emitted when the rule tree is mutated. Detail is the new rule, or `undefined` when the user has cleared the editor to an empty root group — callers can persist `undefined` as "no rule" without having to inspect the rule shape themselves.
8266
+ * The edited rule, or nothing when the author has cleared it. What comes out is what should go back in as `value` — see the note there on why the objects themselves matter.
8071
8267
  */
8072
8268
  "onChange"?: (event: LimebbRuleEditorCustomEvent<Rule | undefined>) => void;
8073
8269
  /**
@@ -8075,7 +8271,7 @@ declare namespace LocalJSX {
8075
8271
  */
8076
8272
  "platform"?: LimeWebComponentPlatform;
8077
8273
  /**
8078
- * Whether or not the current property is readonly The mutation UI (delete and negate toggles, add-group button) is hidden when set. The args editor for each ref is still rendered, with `readonly` forwarded to it.
8274
+ * Whether or not the current property is readonly The controls that add, delete and negate are not rendered when set, leaving the rule to be read. The args editor for each ref is still rendered, with `readonly` forwarded to it.
8079
8275
  * @inheritdoc
8080
8276
  */
8081
8277
  "readonly"?: boolean;
@@ -8085,7 +8281,7 @@ declare namespace LocalJSX {
8085
8281
  */
8086
8282
  "required"?: boolean;
8087
8283
  /**
8088
- * The value of the current property
8284
+ * The value of the current property The rule under edit. Hand back what `change` emitted, not a copy: which condition is open, which have been visited and what validation said about each are all tracked by object identity, so a deep-cloned rule reads as a different one that happens to look the same.
8089
8285
  * @inheritdoc
8090
8286
  */
8091
8287
  "value"?: Rule | undefined;
@@ -8539,6 +8735,7 @@ declare namespace LocalJSX {
8539
8735
  "open": boolean;
8540
8736
  "value": string;
8541
8737
  "heading": string;
8738
+ "icon": IconName;
8542
8739
  "negated": boolean;
8543
8740
  "readonly": boolean;
8544
8741
  "disabled": boolean;
@@ -8797,12 +8994,21 @@ declare namespace LocalJSX {
8797
8994
  "required": boolean;
8798
8995
  "helperText": string;
8799
8996
  }
8800
- interface LimebbRuleChipPopoverAttributes {
8801
- "isNegated": boolean;
8997
+ interface LimebbRuleConditionChipAttributes {
8998
+ "label": string;
8999
+ "icon": IconName;
9000
+ "iconColor": string;
9001
+ "negated": boolean;
9002
+ "invalid": boolean;
9003
+ "selected": boolean;
8802
9004
  "readonly": boolean;
8803
9005
  "disabled": boolean;
8804
- "isMutable": boolean;
9006
+ "removable": boolean;
9007
+ }
9008
+ interface LimebbRuleConditionEditorAttributes {
8805
9009
  "focusOnOpen": boolean;
9010
+ "readonly": boolean;
9011
+ "disabled": boolean;
8806
9012
  }
8807
9013
  interface LimebbRuleEditorAttributes {
8808
9014
  "required": boolean;
@@ -8922,7 +9128,8 @@ declare namespace LocalJSX {
8922
9128
  "limebb-percentage-visualizer": Omit<LimebbPercentageVisualizer, keyof LimebbPercentageVisualizerAttributes> & { [K in keyof LimebbPercentageVisualizer & keyof LimebbPercentageVisualizerAttributes]?: LimebbPercentageVisualizer[K] } & { [K in keyof LimebbPercentageVisualizer & keyof LimebbPercentageVisualizerAttributes as `attr:${K}`]?: LimebbPercentageVisualizerAttributes[K] } & { [K in keyof LimebbPercentageVisualizer & keyof LimebbPercentageVisualizerAttributes as `prop:${K}`]?: LimebbPercentageVisualizer[K] };
8923
9129
  "limebb-property-selector": Omit<LimebbPropertySelector, keyof LimebbPropertySelectorAttributes> & { [K in keyof LimebbPropertySelector & keyof LimebbPropertySelectorAttributes]?: LimebbPropertySelector[K] } & { [K in keyof LimebbPropertySelector & keyof LimebbPropertySelectorAttributes as `attr:${K}`]?: LimebbPropertySelectorAttributes[K] } & { [K in keyof LimebbPropertySelector & keyof LimebbPropertySelectorAttributes as `prop:${K}`]?: LimebbPropertySelector[K] };
8924
9130
  "limebb-rule-arg-filter-editor": LimebbRuleArgFilterEditor;
8925
- "limebb-rule-chip-popover": Omit<LimebbRuleChipPopover, keyof LimebbRuleChipPopoverAttributes> & { [K in keyof LimebbRuleChipPopover & keyof LimebbRuleChipPopoverAttributes]?: LimebbRuleChipPopover[K] } & { [K in keyof LimebbRuleChipPopover & keyof LimebbRuleChipPopoverAttributes as `attr:${K}`]?: LimebbRuleChipPopoverAttributes[K] } & { [K in keyof LimebbRuleChipPopover & keyof LimebbRuleChipPopoverAttributes as `prop:${K}`]?: LimebbRuleChipPopover[K] };
9131
+ "limebb-rule-condition-chip": Omit<LimebbRuleConditionChip, keyof LimebbRuleConditionChipAttributes> & { [K in keyof LimebbRuleConditionChip & keyof LimebbRuleConditionChipAttributes]?: LimebbRuleConditionChip[K] } & { [K in keyof LimebbRuleConditionChip & keyof LimebbRuleConditionChipAttributes as `attr:${K}`]?: LimebbRuleConditionChipAttributes[K] } & { [K in keyof LimebbRuleConditionChip & keyof LimebbRuleConditionChipAttributes as `prop:${K}`]?: LimebbRuleConditionChip[K] };
9132
+ "limebb-rule-condition-editor": Omit<LimebbRuleConditionEditor, keyof LimebbRuleConditionEditorAttributes> & { [K in keyof LimebbRuleConditionEditor & keyof LimebbRuleConditionEditorAttributes]?: LimebbRuleConditionEditor[K] } & { [K in keyof LimebbRuleConditionEditor & keyof LimebbRuleConditionEditorAttributes as `attr:${K}`]?: LimebbRuleConditionEditorAttributes[K] } & { [K in keyof LimebbRuleConditionEditor & keyof LimebbRuleConditionEditorAttributes as `prop:${K}`]?: LimebbRuleConditionEditor[K] };
8926
9133
  "limebb-rule-editor": Omit<LimebbRuleEditor, keyof LimebbRuleEditorAttributes> & { [K in keyof LimebbRuleEditor & keyof LimebbRuleEditorAttributes]?: LimebbRuleEditor[K] } & { [K in keyof LimebbRuleEditor & keyof LimebbRuleEditorAttributes as `attr:${K}`]?: LimebbRuleEditorAttributes[K] } & { [K in keyof LimebbRuleEditor & keyof LimebbRuleEditorAttributes as `prop:${K}`]?: LimebbRuleEditor[K] };
8927
9134
  "limebb-rule-gate": LimebbRuleGate;
8928
9135
  "limebb-summary-popover": Omit<LimebbSummaryPopover, keyof LimebbSummaryPopoverAttributes> & { [K in keyof LimebbSummaryPopover & keyof LimebbSummaryPopoverAttributes]?: LimebbSummaryPopover[K] } & { [K in keyof LimebbSummaryPopover & keyof LimebbSummaryPopoverAttributes as `attr:${K}`]?: LimebbSummaryPopoverAttributes[K] } & { [K in keyof LimebbSummaryPopover & keyof LimebbSummaryPopoverAttributes as `prop:${K}`]?: LimebbSummaryPopover[K] };
@@ -9773,18 +9980,36 @@ declare module "@stencil/core" {
9773
9980
  */
9774
9981
  "limebb-rule-arg-filter-editor": LocalJSX.IntrinsicElements["limebb-rule-arg-filter-editor"] & JSXBase.HTMLAttributes<HTMLLimebbRuleArgFilterEditorElement>;
9775
9982
  /**
9776
- * Popover content for a rule-editor chip. Carries its own styles so
9777
- * they travel with the element when `limel-popover` portals it out of
9778
- * the rule-editor's shadow DOM.
9983
+ * A rule condition as a chip, in place of the `limebb-filter-chip` the tree
9984
+ * draws by default.
9985
+ * A filter condition is a sentence and that chip lays it out as one, with the
9986
+ * property captioned above the value. A rule condition is a name with no value
9987
+ * under it, so the name is the whole chip. Implements `ConditionChip`.
9988
+ * @private
9989
+ */
9990
+ "limebb-rule-condition-chip": LocalJSX.IntrinsicElements["limebb-rule-condition-chip"] & JSXBase.HTMLAttributes<HTMLLimebbRuleConditionChipElement>;
9991
+ /**
9992
+ * The editor `limebb-condition-tree` opens for one rule condition: whatever
9993
+ * component the primitive named as its `configComponent`.
9994
+ * The two sides speak about different things. The tree passes a whole condition
9995
+ * and listens for `conditionChange`; a config component edits the reference's
9996
+ * `args` and reports a plain `change`. Config components are registered by
9997
+ * add-ons this repo does not own, so this side is the one that translates.
9998
+ * @alpha
9779
9999
  * @private
9780
10000
  */
9781
- "limebb-rule-chip-popover": LocalJSX.IntrinsicElements["limebb-rule-chip-popover"] & JSXBase.HTMLAttributes<HTMLLimebbRuleChipPopoverElement>;
10001
+ "limebb-rule-condition-editor": LocalJSX.IntrinsicElements["limebb-rule-condition-editor"] & JSXBase.HTMLAttributes<HTMLLimebbRuleConditionEditorElement>;
9782
10002
  /**
9783
10003
  * Tree editor for {@link Rule}.
9784
- * Renders a `Rule` value as a tree of nodes. Lets an author pick
9785
- * primitive refs in `all` / `any` groups, toggle negation, delete
9786
- * nodes, and edit per-primitive args via the editor declared on each
9787
- * primitive's metadata.
10004
+ * Renders a `Rule` value as a `limebb-condition-tree`. Lets an author
10005
+ * add primitive refs to `all` / `any` groups and to the negations of
10006
+ * those two, nest groups, negate a single ref, delete nodes, and edit
10007
+ * per-primitive args via the editor declared on each primitive's
10008
+ * metadata.
10009
+ * The tree owns every structural edit, and knows nothing about rules. A
10010
+ * `Rule` reaches it through an adapter — see `condition-tree-adapter.ts`
10011
+ * — which is also where the group negation the rule model writes as a
10012
+ * `not` wrapper is folded into the combinator the tree shows.
9788
10013
  * The component is value-in / value-out. Pass `value` and listen for
9789
10014
  * `change`; persistence is the caller's concern.
9790
10015
  * Pass `availableContexts` to forward the list of context keys the