@limetech/lime-crm-building-blocks 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/condition-tree-translate-B_qIQz9s.js +27 -0
  3. package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
  4. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +1 -1
  5. package/dist/cjs/limebb-browser.cjs.entry.js +2 -2
  6. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +12 -5
  7. package/dist/cjs/limebb-chat-list.cjs.entry.js +1 -1
  8. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +1 -1
  9. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +1 -1
  10. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +2 -2
  11. package/dist/cjs/limebb-condition-tree-editor.cjs.entry.js +90 -0
  12. package/dist/cjs/limebb-condition-tree.cjs.entry.js +882 -0
  13. package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  15. package/dist/cjs/limebb-date-picker.cjs.entry.js +1 -1
  16. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  17. package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
  18. package/dist/cjs/limebb-document-item.cjs.entry.js +2 -2
  19. package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
  20. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
  21. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +1 -1
  22. package/dist/cjs/limebb-feed.cjs.entry.js +1 -1
  23. package/dist/cjs/limebb-filter-chip_6.cjs.entry.js +7 -7
  24. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  25. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
  26. package/dist/cjs/limebb-info-tile.cjs.entry.js +1 -1
  27. package/dist/cjs/limebb-kanban-group.cjs.entry.js +1 -1
  28. package/dist/cjs/limebb-kanban-item.cjs.entry.js +1 -1
  29. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +1 -1
  30. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +2 -2
  31. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +2 -2
  32. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
  33. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +1 -1
  34. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
  36. package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
  37. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
  38. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +2 -2
  39. package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  41. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +2 -2
  42. package/dist/cjs/limebb-rule-editor.cjs.entry.js +4 -4
  43. package/dist/cjs/limebb-rule-gate.cjs.entry.js +1 -1
  44. package/dist/cjs/limebb-text-editor.cjs.entry.js +1 -1
  45. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
  46. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +1 -1
  47. package/dist/cjs/loader.cjs.js +1 -1
  48. package/dist/collection/collection-manifest.json +3 -1
  49. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  50. package/dist/collection/components/browser/browser.js +2 -2
  51. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  52. package/dist/collection/components/chat-list/chat-item/chat-item.css +4 -1
  53. package/dist/collection/components/chat-list/chat-item/chat-item.js +9 -2
  54. package/dist/collection/components/chat-list/chat-list.js +1 -1
  55. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  56. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  57. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  58. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  59. package/dist/collection/components/condition-tree/condition-tree-combinators.js +78 -0
  60. package/dist/collection/components/condition-tree/condition-tree-editor/condition-tree-editor.css +17 -0
  61. package/dist/collection/components/condition-tree/condition-tree-editor/condition-tree-editor.js +333 -0
  62. package/dist/collection/components/condition-tree/condition-tree-nodes.js +218 -0
  63. package/dist/collection/components/condition-tree/condition-tree-open-state.js +127 -0
  64. package/dist/collection/components/condition-tree/condition-tree-translate.js +22 -0
  65. package/dist/collection/components/condition-tree/condition-tree-view-context.js +22 -0
  66. package/dist/collection/components/condition-tree/condition-tree.css +132 -0
  67. package/dist/collection/components/condition-tree/condition-tree.js +461 -0
  68. package/dist/collection/components/condition-tree/condition-tree.types.js +1 -0
  69. package/dist/collection/components/condition-tree/group-node-view.js +153 -0
  70. package/dist/collection/components/condition-tree/leaf-node-view.js +74 -0
  71. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  72. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  73. package/dist/collection/components/date-picker/date-picker.js +1 -1
  74. package/dist/collection/components/date-range/date-range.js +1 -1
  75. package/dist/collection/components/document-chips/document-chips.js +1 -1
  76. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  77. package/dist/collection/components/document-picker/document-picker.js +1 -1
  78. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  79. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  80. package/dist/collection/components/feed/feed.js +1 -1
  81. package/dist/collection/components/filter-chip/filter-chip.js +2 -2
  82. package/dist/collection/components/filter-condition-picker/filter-condition-picker.js +1 -1
  83. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  84. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  85. package/dist/collection/components/info-tile/info-tile.js +1 -1
  86. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  87. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  88. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +1 -1
  89. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +2 -2
  90. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  91. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  92. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  93. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  94. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  95. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  96. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  97. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  98. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  99. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  100. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  101. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  102. package/dist/collection/components/rule-editor/group-node-view.js +3 -3
  103. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +2 -2
  104. package/dist/collection/components/rule-editor/rule-editor.js +1 -1
  105. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +1 -1
  106. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  107. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  108. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  109. package/dist/collection/components/text-editor/text-editor.js +1 -1
  110. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  111. package/dist/components/chat-icon-list.js +1 -1
  112. package/dist/components/chat-item.js +1 -1
  113. package/dist/components/condition-tree-editor.js +1 -0
  114. package/dist/components/currency-picker.js +1 -1
  115. package/dist/components/date-picker.js +1 -1
  116. package/dist/components/document-item.js +1 -1
  117. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  118. package/dist/components/feed-timeline-item.js +1 -1
  119. package/dist/components/filter-chip.js +1 -1
  120. package/dist/components/filter-condition-picker.js +1 -1
  121. package/dist/components/kanban-group.js +1 -1
  122. package/dist/components/kanban-item.js +1 -1
  123. package/dist/components/lime-query-filter-comparison-editor.js +1 -1
  124. package/dist/components/lime-query-filter-comparison.js +1 -1
  125. package/dist/components/lime-query-filter-expression.js +1 -1
  126. package/dist/components/limebb-alert-dialog.js +1 -1
  127. package/dist/components/limebb-browser.js +1 -1
  128. package/dist/components/limebb-chat-list.js +1 -1
  129. package/dist/components/limebb-color-palette-picker.js +1 -1
  130. package/dist/components/limebb-color-palette-swatches.js +1 -1
  131. package/dist/components/limebb-composer-toolbar.js +1 -1
  132. package/dist/components/limebb-condition-tree-editor.d.ts +11 -0
  133. package/dist/components/limebb-condition-tree-editor.js +1 -0
  134. package/dist/components/limebb-condition-tree.d.ts +11 -0
  135. package/dist/components/limebb-condition-tree.js +1 -0
  136. package/dist/components/limebb-dashboard-widget.js +1 -1
  137. package/dist/components/limebb-date-range.js +1 -1
  138. package/dist/components/limebb-document-chips.js +1 -1
  139. package/dist/components/limebb-document-picker.js +1 -1
  140. package/dist/components/limebb-feed.js +1 -1
  141. package/dist/components/limebb-icon-picker.js +1 -1
  142. package/dist/components/limebb-info-tile-format.js +1 -1
  143. package/dist/components/limebb-info-tile.js +1 -1
  144. package/dist/components/limebb-lime-query-builder.js +1 -1
  145. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  146. package/dist/components/limebb-locale-picker.js +1 -1
  147. package/dist/components/limebb-mention-group-counter.js +1 -1
  148. package/dist/components/limebb-rule-editor.js +1 -1
  149. package/dist/components/limebb-rule-gate.js +1 -1
  150. package/dist/components/limebb-text-editor.js +1 -1
  151. package/dist/components/limebb-trend-indicator.js +1 -1
  152. package/dist/components/limebb-value-comparison-editor.js +1 -1
  153. package/dist/components/limetype-field.js +1 -1
  154. package/dist/components/live-docs-info.js +1 -1
  155. package/dist/components/notification-item.js +1 -1
  156. package/dist/components/order-by-editor.js +1 -1
  157. package/dist/components/order-by-item.js +1 -1
  158. package/dist/components/percentage-visualizer.js +1 -1
  159. package/dist/components/response-format-item.js +1 -1
  160. package/dist/components/rule-chip-popover.js +1 -1
  161. package/dist/components/summary-popover.js +1 -1
  162. package/dist/components/typing-indicator.js +1 -1
  163. package/dist/esm/condition-tree-translate-CBeXbZ_z.js +25 -0
  164. package/dist/esm/lime-crm-building-blocks.js +1 -1
  165. package/dist/esm/limebb-alert-dialog.entry.js +1 -1
  166. package/dist/esm/limebb-browser.entry.js +2 -2
  167. package/dist/esm/limebb-chat-icon-list_3.entry.js +12 -5
  168. package/dist/esm/limebb-chat-list.entry.js +1 -1
  169. package/dist/esm/limebb-color-palette-picker.entry.js +1 -1
  170. package/dist/esm/limebb-color-palette-swatches.entry.js +1 -1
  171. package/dist/esm/limebb-composer-toolbar.entry.js +2 -2
  172. package/dist/esm/limebb-condition-tree-editor.entry.js +88 -0
  173. package/dist/esm/limebb-condition-tree.entry.js +880 -0
  174. package/dist/esm/limebb-currency-picker.entry.js +1 -1
  175. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  176. package/dist/esm/limebb-date-picker.entry.js +1 -1
  177. package/dist/esm/limebb-date-range.entry.js +1 -1
  178. package/dist/esm/limebb-document-chips.entry.js +1 -1
  179. package/dist/esm/limebb-document-item.entry.js +2 -2
  180. package/dist/esm/limebb-document-picker.entry.js +1 -1
  181. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
  182. package/dist/esm/limebb-feed-timeline-item.entry.js +1 -1
  183. package/dist/esm/limebb-feed.entry.js +1 -1
  184. package/dist/esm/limebb-filter-chip_6.entry.js +7 -7
  185. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  186. package/dist/esm/limebb-info-tile-format.entry.js +1 -1
  187. package/dist/esm/limebb-info-tile.entry.js +1 -1
  188. package/dist/esm/limebb-kanban-group.entry.js +1 -1
  189. package/dist/esm/limebb-kanban-item.entry.js +1 -1
  190. package/dist/esm/limebb-lime-query-builder.entry.js +1 -1
  191. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +2 -2
  192. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +2 -2
  193. package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
  194. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +1 -1
  195. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
  196. package/dist/esm/limebb-live-docs-info.entry.js +2 -2
  197. package/dist/esm/limebb-locale-picker.entry.js +1 -1
  198. package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
  199. package/dist/esm/limebb-navigation-button_2.entry.js +2 -2
  200. package/dist/esm/limebb-notification-item.entry.js +1 -1
  201. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  202. package/dist/esm/limebb-rule-chip-popover.entry.js +2 -2
  203. package/dist/esm/limebb-rule-editor.entry.js +4 -4
  204. package/dist/esm/limebb-rule-gate.entry.js +1 -1
  205. package/dist/esm/limebb-text-editor.entry.js +1 -1
  206. package/dist/esm/limebb-trend-indicator.entry.js +1 -1
  207. package/dist/esm/limebb-value-comparison-editor.entry.js +1 -1
  208. package/dist/esm/loader.js +1 -1
  209. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  210. package/dist/lime-crm-building-blocks/{p-73f23d08.entry.js → p-031b1648.entry.js} +1 -1
  211. package/dist/lime-crm-building-blocks/{p-d8d32cb1.entry.js → p-0f74d662.entry.js} +1 -1
  212. package/dist/lime-crm-building-blocks/{p-242ed59b.entry.js → p-11b41423.entry.js} +1 -1
  213. package/dist/lime-crm-building-blocks/p-1578c8f0.entry.js +1 -0
  214. package/dist/lime-crm-building-blocks/{p-7a9d7d87.entry.js → p-1731f5c3.entry.js} +1 -1
  215. package/dist/lime-crm-building-blocks/{p-956e466d.entry.js → p-17588c29.entry.js} +1 -1
  216. package/dist/lime-crm-building-blocks/{p-7cd8dffd.entry.js → p-1fac8130.entry.js} +1 -1
  217. package/dist/lime-crm-building-blocks/{p-f1060c88.entry.js → p-2984005d.entry.js} +1 -1
  218. package/dist/lime-crm-building-blocks/{p-080a1166.entry.js → p-2baab674.entry.js} +1 -1
  219. package/dist/lime-crm-building-blocks/{p-02fba38e.entry.js → p-2f8540ab.entry.js} +1 -1
  220. package/dist/lime-crm-building-blocks/{p-848462ee.entry.js → p-318369ae.entry.js} +1 -1
  221. package/dist/lime-crm-building-blocks/{p-ac13feb9.entry.js → p-3c72400d.entry.js} +1 -1
  222. package/dist/lime-crm-building-blocks/{p-79bb58b0.entry.js → p-3fe4f3f4.entry.js} +1 -1
  223. package/dist/lime-crm-building-blocks/{p-f9b1cd5e.entry.js → p-4274cbe3.entry.js} +1 -1
  224. package/dist/lime-crm-building-blocks/p-4594c2b1.entry.js +1 -0
  225. package/dist/lime-crm-building-blocks/{p-abe751c0.entry.js → p-51eb53ee.entry.js} +1 -1
  226. package/dist/lime-crm-building-blocks/{p-78118c62.entry.js → p-5b000748.entry.js} +1 -1
  227. package/dist/lime-crm-building-blocks/{p-7ccca5e4.entry.js → p-5b80d92a.entry.js} +1 -1
  228. package/dist/lime-crm-building-blocks/p-705c53c0.entry.js +1 -0
  229. package/dist/lime-crm-building-blocks/{p-170ab4be.entry.js → p-76064593.entry.js} +1 -1
  230. package/dist/lime-crm-building-blocks/{p-4f0939e6.entry.js → p-761deada.entry.js} +1 -1
  231. package/dist/lime-crm-building-blocks/{p-d071bd2d.entry.js → p-9099b440.entry.js} +1 -1
  232. package/dist/lime-crm-building-blocks/{p-e910963c.entry.js → p-92403251.entry.js} +1 -1
  233. package/dist/lime-crm-building-blocks/{p-584a48e4.entry.js → p-9907deb1.entry.js} +1 -1
  234. package/dist/lime-crm-building-blocks/{p-5268fc02.entry.js → p-99556fc0.entry.js} +1 -1
  235. package/dist/lime-crm-building-blocks/p-BxCq236x.js +1 -0
  236. package/dist/lime-crm-building-blocks/{p-3c3009e3.entry.js → p-a0dee52a.entry.js} +1 -1
  237. package/dist/lime-crm-building-blocks/{p-40cb2c7c.entry.js → p-b373c60f.entry.js} +1 -1
  238. package/dist/lime-crm-building-blocks/{p-bd89279d.entry.js → p-b46722c8.entry.js} +1 -1
  239. package/dist/lime-crm-building-blocks/{p-56d125c7.entry.js → p-b48c23f4.entry.js} +1 -1
  240. package/dist/lime-crm-building-blocks/{p-43dfbefb.entry.js → p-b8d74591.entry.js} +1 -1
  241. package/dist/lime-crm-building-blocks/{p-10da40f8.entry.js → p-c2899d68.entry.js} +1 -1
  242. package/dist/lime-crm-building-blocks/{p-d23f4604.entry.js → p-c4e40c2c.entry.js} +1 -1
  243. package/dist/lime-crm-building-blocks/{p-6951dcf7.entry.js → p-c7daffb6.entry.js} +1 -1
  244. package/dist/lime-crm-building-blocks/{p-10310a64.entry.js → p-cede8095.entry.js} +1 -1
  245. package/dist/lime-crm-building-blocks/{p-ad661a38.entry.js → p-d0c75083.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/{p-8fdf6a09.entry.js → p-d82a2424.entry.js} +1 -1
  247. package/dist/lime-crm-building-blocks/{p-e5028d83.entry.js → p-e1f35866.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/p-e6605577.entry.js +1 -0
  249. package/dist/lime-crm-building-blocks/p-e8a7a94c.entry.js +1 -0
  250. package/dist/lime-crm-building-blocks/{p-6d8efe87.entry.js → p-edfaf566.entry.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-ee7bd504.entry.js → p-eedbf69a.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/p-fb45e6d5.entry.js +1 -0
  253. package/dist/lime-crm-building-blocks/{p-d816fcc8.entry.js → p-fec173db.entry.js} +1 -1
  254. package/dist/types/components/chat-list/chat-item/chat-item.d.ts +1 -0
  255. package/dist/types/components/condition-tree/condition-tree-combinators.d.ts +47 -0
  256. package/dist/types/components/condition-tree/condition-tree-editor/condition-tree-editor.d.ts +84 -0
  257. package/dist/types/components/condition-tree/condition-tree-nodes.d.ts +130 -0
  258. package/dist/types/components/condition-tree/condition-tree-open-state.d.ts +76 -0
  259. package/dist/types/components/condition-tree/condition-tree-translate.d.ts +11 -0
  260. package/dist/types/components/condition-tree/condition-tree-view-context.d.ts +48 -0
  261. package/dist/types/components/condition-tree/condition-tree.d.ts +177 -0
  262. package/dist/types/components/condition-tree/condition-tree.types.d.ts +323 -0
  263. package/dist/types/components/condition-tree/group-node-view.d.ts +30 -0
  264. package/dist/types/components/condition-tree/leaf-node-view.d.ts +21 -0
  265. package/dist/types/components.d.ts +348 -4
  266. package/dist/types/interface.d.ts +1 -0
  267. package/package.json +3 -3
  268. package/dist/lime-crm-building-blocks/p-29262c17.entry.js +0 -1
  269. package/dist/lime-crm-building-blocks/p-63e7c191.entry.js +0 -1
  270. package/dist/lime-crm-building-blocks/p-a17d6dac.entry.js +0 -1
  271. package/dist/lime-crm-building-blocks/p-c85ff45b.entry.js +0 -1
@@ -6,14 +6,15 @@
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, 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, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, PropertyType, Rule, RuleRef } 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, OpenDirection } from "@limetech/lime-elements";
11
+ import { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, 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";
15
15
  import { ComponentPickerType } from "./components/component-command-picker/types";
16
16
  import { ComposerTrigger, FileInputConfig } from "./components/composer-toolbar/composer-toolbar.types";
17
+ import { ConditionTreeAdapter, ConditionTreeCombinator } from "./components/condition-tree/condition-tree.types";
17
18
  import { DataCell } from "./components/data-cells/data-cells.types";
18
19
  import { DocumentChipFile } from "./components/document-chips/document-chips.types";
19
20
  import { DocumentItem } from "./components/document-picker/document-item/document-item.types";
@@ -36,14 +37,15 @@ import { RuleArgFilterEditorValue } from "./components/rule-editor/rule-arg-filt
36
37
  import { TriggerMap } from "./components/text-editor/text-editor.types";
37
38
  import { ValueComparisonEditorValue } from "./components/rule-editor/value-comparison-editor/value-comparison-editor";
38
39
  export { AlertType } from "./components/alert-dialog/alert-dialog.types";
39
- export { AggregateOperator, ContextMap, ContextScope, Expression, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, PropertyType, Rule, RuleRef } from "@limetech/lime-web-components";
40
+ export { AggregateOperator, ComponentDescriptor, ContextMap, ContextScope, Expression, JsonValue, LimeFileUrlType, LimeType, LimeWebComponentContext, LimeWebComponentPlatform, NotExpression, Operator, PrimitiveMetadata, PropertyType, Rule, RuleRef } from "@limetech/lime-web-components";
40
41
  export { BrowserItem } from "./components/browser/browser-item.types";
41
- export { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, OpenDirection } from "@limetech/lime-elements";
42
+ export { ActionBarItem, CustomElementDefinition, DateType, EditorUiType, FileInfo, FormInfo, Icon, IconName, Image, Languages, ListItem, ListSeparator, MenuItem, OpenDirection } from "@limetech/lime-elements";
42
43
  export { ChatIconList } from "./components/chat-list/chat-icon-list/chat-icon-list.types";
43
44
  export { ChatItem } from "./components/chat-list/chat-item/chat-item.types";
44
45
  export { ChatListItem } from "./components/chat-list/chat-list.types";
45
46
  export { ComponentPickerType } from "./components/component-command-picker/types";
46
47
  export { ComposerTrigger, FileInputConfig } from "./components/composer-toolbar/composer-toolbar.types";
48
+ export { ConditionTreeAdapter, ConditionTreeCombinator } from "./components/condition-tree/condition-tree.types";
47
49
  export { DataCell } from "./components/data-cells/data-cells.types";
48
50
  export { DocumentChipFile } from "./components/document-chips/document-chips.types";
49
51
  export { DocumentItem } from "./components/document-picker/document-item/document-item.types";
@@ -503,6 +505,112 @@ export namespace Components {
503
505
  */
504
506
  "textSnippets": boolean;
505
507
  }
508
+ /**
509
+ * The shared skeleton for editing a tree of conditions: nested groups joined by
510
+ * "All of the following" or "Any of the following", or the negations of those
511
+ * two, each holding conditions shown as chips, with the buttons that add,
512
+ * remove and regroup them.
513
+ * This component is deliberately ignorant of what a condition *is*.
514
+ * A condition is visualized as a chip, plus the tag name of an editor to open.
515
+ * So the same skeleton serves a condition that tests a property ("Deal value is
516
+ * greater than 100 000") and one that is opaque ("User is a member of a group")
517
+ * without either model leaking into it.
518
+ * It holds no tree of its own either. The consumer passes in its own tree, and
519
+ * an adapter that reads one node and rebuilds one group. Every structural edit
520
+ * — add, delete, regroup, rejoin, negate — is applied here and handed back as a
521
+ * tree of the same kind, so no consumer has to write that code twice.
522
+ * @exampleComponent limebb-example-condition-tree-basic
523
+ * @exampleComponent limebb-example-condition-tree-combinators
524
+ * @exampleComponent limebb-example-condition-tree-editors
525
+ * @exampleComponent limebb-example-condition-tree-palette
526
+ * @beta
527
+ */
528
+ interface LimebbConditionTree {
529
+ /**
530
+ * How to read and rebuild `value`. Build it once and hold on to it: one built inside a consumer's `render()` is a new object every time, which makes this component re-render for no reason. A Stencil element cannot be generic, so this is typed loosely here. Declare the adapter as `ConditionTreeAdapter<YourNode>` where you write it, and the compiler checks it against your own model.
531
+ */
532
+ "adapter": ConditionTreeAdapter<any>;
533
+ /**
534
+ * 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.
535
+ */
536
+ "addOptions"?: Array<MenuItem | ListSeparator>;
537
+ /**
538
+ * 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.
539
+ * @default [ ...CONDITION_TREE_COMBINATORS, ]
540
+ */
541
+ "combinators": ConditionTreeCombinator[];
542
+ /**
543
+ * Component context, forwarded to each condition's editor.
544
+ */
545
+ "context": LimeWebComponentContext;
546
+ /**
547
+ * Set to `true` when the tree *is* the viewer's to change, but not at this moment: every control stays where it is, dimmed and inert. Use it for a state that will pass — a form mid-save, or a tree behind an "Apply a filter" switch that is currently off.
548
+ * @default false
549
+ */
550
+ "disabled": boolean;
551
+ /**
552
+ * Platform service provider
553
+ */
554
+ "platform": LimeWebComponentPlatform;
555
+ /**
556
+ * Set to `true` when the tree is not the viewer's to change: the add, delete and negate controls are not rendered at all, leaving the conditions to be read. Use it where the tree is being shown rather than edited — a saved filter summarized on a card, or a rule the viewer has no rights over.
557
+ * @default false
558
+ */
559
+ "readonly": boolean;
560
+ /**
561
+ * The consumer's own tree, rendered as-is — the root node, in whatever shape `adapter` reads. Leave it unset for a tree with nothing in it yet, which draws an empty group asking for its first condition.
562
+ */
563
+ "value"?: any;
564
+ }
565
+ /**
566
+ * The body of a condition's editor popover: the consumer's editor, and — for a
567
+ * condition that cannot express its own negation — a switch that negates it.
568
+ * It is an element of its own rather than markup inside the tree because
569
+ * `limel-popover` portals its content out of the tree's shadow DOM, leaving it
570
+ * behind. Carrying its own shadow root means its styles travel with it.
571
+ * @private
572
+ */
573
+ interface LimebbConditionTreeEditor {
574
+ /**
575
+ * Bridges the tree's context across the `limel-popover` portal.
576
+ */
577
+ "context": LimeWebComponentContext;
578
+ /**
579
+ * @inheritdoc
580
+ * @default false
581
+ */
582
+ "disabled": boolean;
583
+ /**
584
+ * The editor to mount, as given on the condition.
585
+ */
586
+ "editor"?: ComponentDescriptor;
587
+ /**
588
+ * Title of the condition, shown above the editor when there is a header to show at all.
589
+ */
590
+ "heading"?: string;
591
+ /**
592
+ * Whether the condition is negated. `undefined` means the condition expresses its own polarity and no switch is offered.
593
+ */
594
+ "negated"?: boolean;
595
+ /**
596
+ * Whether the popover holding this element is open. The element itself stays in place while closed, because `limel-popover` moves its content into the popover surface once and for all when that surface first loads — anything not there by then is never moved. Drawing nothing until asked is what keeps the consumer's editor from being built for every condition in the tree.
597
+ * @default false
598
+ */
599
+ "open": boolean;
600
+ /**
601
+ * Platform service provider
602
+ */
603
+ "platform": LimeWebComponentPlatform;
604
+ /**
605
+ * @inheritdoc
606
+ * @default false
607
+ */
608
+ "readonly": boolean;
609
+ /**
610
+ * The condition being edited, in the consumer's own model. Handed to the mounted editor as `value`.
611
+ */
612
+ "value"?: any;
613
+ }
506
614
  /**
507
615
  * All currencies have a ISO code, an international standard with three-letters
508
616
  * which is used by many systems such as ERPs.
@@ -2910,6 +3018,14 @@ export interface LimebbComposerToolbarCustomEvent<T> extends CustomEvent<T> {
2910
3018
  detail: T;
2911
3019
  target: HTMLLimebbComposerToolbarElement;
2912
3020
  }
3021
+ export interface LimebbConditionTreeCustomEvent<T> extends CustomEvent<T> {
3022
+ detail: T;
3023
+ target: HTMLLimebbConditionTreeElement;
3024
+ }
3025
+ export interface LimebbConditionTreeEditorCustomEvent<T> extends CustomEvent<T> {
3026
+ detail: T;
3027
+ target: HTMLLimebbConditionTreeEditorElement;
3028
+ }
2913
3029
  export interface LimebbCurrencyPickerCustomEvent<T> extends CustomEvent<T> {
2914
3030
  detail: T;
2915
3031
  target: HTMLLimebbCurrencyPickerElement;
@@ -3374,6 +3490,69 @@ declare global {
3374
3490
  prototype: HTMLLimebbComposerToolbarElement;
3375
3491
  new (): HTMLLimebbComposerToolbarElement;
3376
3492
  };
3493
+ interface HTMLLimebbConditionTreeElementEventMap {
3494
+ "change": any;
3495
+ }
3496
+ /**
3497
+ * The shared skeleton for editing a tree of conditions: nested groups joined by
3498
+ * "All of the following" or "Any of the following", or the negations of those
3499
+ * two, each holding conditions shown as chips, with the buttons that add,
3500
+ * remove and regroup them.
3501
+ * This component is deliberately ignorant of what a condition *is*.
3502
+ * A condition is visualized as a chip, plus the tag name of an editor to open.
3503
+ * So the same skeleton serves a condition that tests a property ("Deal value is
3504
+ * greater than 100 000") and one that is opaque ("User is a member of a group")
3505
+ * without either model leaking into it.
3506
+ * It holds no tree of its own either. The consumer passes in its own tree, and
3507
+ * an adapter that reads one node and rebuilds one group. Every structural edit
3508
+ * — add, delete, regroup, rejoin, negate — is applied here and handed back as a
3509
+ * tree of the same kind, so no consumer has to write that code twice.
3510
+ * @exampleComponent limebb-example-condition-tree-basic
3511
+ * @exampleComponent limebb-example-condition-tree-combinators
3512
+ * @exampleComponent limebb-example-condition-tree-editors
3513
+ * @exampleComponent limebb-example-condition-tree-palette
3514
+ * @beta
3515
+ */
3516
+ interface HTMLLimebbConditionTreeElement extends Components.LimebbConditionTree, HTMLStencilElement {
3517
+ addEventListener<K extends keyof HTMLLimebbConditionTreeElementEventMap>(type: K, listener: (this: HTMLLimebbConditionTreeElement, ev: LimebbConditionTreeCustomEvent<HTMLLimebbConditionTreeElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3518
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3519
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3520
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3521
+ removeEventListener<K extends keyof HTMLLimebbConditionTreeElementEventMap>(type: K, listener: (this: HTMLLimebbConditionTreeElement, ev: LimebbConditionTreeCustomEvent<HTMLLimebbConditionTreeElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3522
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3523
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3524
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3525
+ }
3526
+ var HTMLLimebbConditionTreeElement: {
3527
+ prototype: HTMLLimebbConditionTreeElement;
3528
+ new (): HTMLLimebbConditionTreeElement;
3529
+ };
3530
+ interface HTMLLimebbConditionTreeEditorElementEventMap {
3531
+ "negateChange": boolean;
3532
+ "conditionChange": any;
3533
+ }
3534
+ /**
3535
+ * The body of a condition's editor popover: the consumer's editor, and — for a
3536
+ * condition that cannot express its own negation — a switch that negates it.
3537
+ * It is an element of its own rather than markup inside the tree because
3538
+ * `limel-popover` portals its content out of the tree's shadow DOM, leaving it
3539
+ * behind. Carrying its own shadow root means its styles travel with it.
3540
+ * @private
3541
+ */
3542
+ interface HTMLLimebbConditionTreeEditorElement extends Components.LimebbConditionTreeEditor, HTMLStencilElement {
3543
+ addEventListener<K extends keyof HTMLLimebbConditionTreeEditorElementEventMap>(type: K, listener: (this: HTMLLimebbConditionTreeEditorElement, ev: LimebbConditionTreeEditorCustomEvent<HTMLLimebbConditionTreeEditorElementEventMap[K]>) => any, options?: boolean | AddEventListenerOptions): void;
3544
+ addEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3545
+ addEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
3546
+ addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
3547
+ removeEventListener<K extends keyof HTMLLimebbConditionTreeEditorElementEventMap>(type: K, listener: (this: HTMLLimebbConditionTreeEditorElement, ev: LimebbConditionTreeEditorCustomEvent<HTMLLimebbConditionTreeEditorElementEventMap[K]>) => any, options?: boolean | EventListenerOptions): void;
3548
+ removeEventListener<K extends keyof DocumentEventMap>(type: K, listener: (this: Document, ev: DocumentEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3549
+ removeEventListener<K extends keyof HTMLElementEventMap>(type: K, listener: (this: HTMLElement, ev: HTMLElementEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
3550
+ removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
3551
+ }
3552
+ var HTMLLimebbConditionTreeEditorElement: {
3553
+ prototype: HTMLLimebbConditionTreeEditorElement;
3554
+ new (): HTMLLimebbConditionTreeEditorElement;
3555
+ };
3377
3556
  interface HTMLLimebbCurrencyPickerElementEventMap {
3378
3557
  "change": string;
3379
3558
  }
@@ -5004,6 +5183,8 @@ declare global {
5004
5183
  "limebb-component-config": HTMLLimebbComponentConfigElement;
5005
5184
  "limebb-component-picker": HTMLLimebbComponentPickerElement;
5006
5185
  "limebb-composer-toolbar": HTMLLimebbComposerToolbarElement;
5186
+ "limebb-condition-tree": HTMLLimebbConditionTreeElement;
5187
+ "limebb-condition-tree-editor": HTMLLimebbConditionTreeEditorElement;
5007
5188
  "limebb-currency-picker": HTMLLimebbCurrencyPickerElement;
5008
5189
  "limebb-dashboard-widget": HTMLLimebbDashboardWidgetElement;
5009
5190
  "limebb-data-cells": HTMLLimebbDataCellsElement;
@@ -5540,6 +5721,124 @@ declare namespace LocalJSX {
5540
5721
  */
5541
5722
  "textSnippets"?: boolean;
5542
5723
  }
5724
+ /**
5725
+ * The shared skeleton for editing a tree of conditions: nested groups joined by
5726
+ * "All of the following" or "Any of the following", or the negations of those
5727
+ * two, each holding conditions shown as chips, with the buttons that add,
5728
+ * remove and regroup them.
5729
+ * This component is deliberately ignorant of what a condition *is*.
5730
+ * A condition is visualized as a chip, plus the tag name of an editor to open.
5731
+ * So the same skeleton serves a condition that tests a property ("Deal value is
5732
+ * greater than 100 000") and one that is opaque ("User is a member of a group")
5733
+ * without either model leaking into it.
5734
+ * It holds no tree of its own either. The consumer passes in its own tree, and
5735
+ * an adapter that reads one node and rebuilds one group. Every structural edit
5736
+ * — add, delete, regroup, rejoin, negate — is applied here and handed back as a
5737
+ * tree of the same kind, so no consumer has to write that code twice.
5738
+ * @exampleComponent limebb-example-condition-tree-basic
5739
+ * @exampleComponent limebb-example-condition-tree-combinators
5740
+ * @exampleComponent limebb-example-condition-tree-editors
5741
+ * @exampleComponent limebb-example-condition-tree-palette
5742
+ * @beta
5743
+ */
5744
+ interface LimebbConditionTree {
5745
+ /**
5746
+ * How to read and rebuild `value`. Build it once and hold on to it: one built inside a consumer's `render()` is a new object every time, which makes this component re-render for no reason. A Stencil element cannot be generic, so this is typed loosely here. Declare the adapter as `ConditionTreeAdapter<YourNode>` where you write it, and the compiler checks it against your own model.
5747
+ */
5748
+ "adapter"?: ConditionTreeAdapter<any>;
5749
+ /**
5750
+ * 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.
5751
+ */
5752
+ "addOptions"?: Array<MenuItem | ListSeparator>;
5753
+ /**
5754
+ * 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.
5755
+ * @default [ ...CONDITION_TREE_COMBINATORS, ]
5756
+ */
5757
+ "combinators"?: ConditionTreeCombinator[];
5758
+ /**
5759
+ * Component context, forwarded to each condition's editor.
5760
+ */
5761
+ "context"?: LimeWebComponentContext;
5762
+ /**
5763
+ * Set to `true` when the tree *is* the viewer's to change, but not at this moment: every control stays where it is, dimmed and inert. Use it for a state that will pass — a form mid-save, or a tree behind an "Apply a filter" switch that is currently off.
5764
+ * @default false
5765
+ */
5766
+ "disabled"?: boolean;
5767
+ /**
5768
+ * Emitted with the whole tree, of the consumer's own kind, whenever the user changes it. `null` means the last condition went and there is nothing left — an event carries no detail otherwise.
5769
+ */
5770
+ "onChange"?: (event: LimebbConditionTreeCustomEvent<any>) => void;
5771
+ /**
5772
+ * Platform service provider
5773
+ */
5774
+ "platform"?: LimeWebComponentPlatform;
5775
+ /**
5776
+ * Set to `true` when the tree is not the viewer's to change: the add, delete and negate controls are not rendered at all, leaving the conditions to be read. Use it where the tree is being shown rather than edited — a saved filter summarized on a card, or a rule the viewer has no rights over.
5777
+ * @default false
5778
+ */
5779
+ "readonly"?: boolean;
5780
+ /**
5781
+ * The consumer's own tree, rendered as-is — the root node, in whatever shape `adapter` reads. Leave it unset for a tree with nothing in it yet, which draws an empty group asking for its first condition.
5782
+ */
5783
+ "value"?: any;
5784
+ }
5785
+ /**
5786
+ * The body of a condition's editor popover: the consumer's editor, and — for a
5787
+ * condition that cannot express its own negation — a switch that negates it.
5788
+ * It is an element of its own rather than markup inside the tree because
5789
+ * `limel-popover` portals its content out of the tree's shadow DOM, leaving it
5790
+ * behind. Carrying its own shadow root means its styles travel with it.
5791
+ * @private
5792
+ */
5793
+ interface LimebbConditionTreeEditor {
5794
+ /**
5795
+ * Bridges the tree's context across the `limel-popover` portal.
5796
+ */
5797
+ "context"?: LimeWebComponentContext;
5798
+ /**
5799
+ * @inheritdoc
5800
+ * @default false
5801
+ */
5802
+ "disabled"?: boolean;
5803
+ /**
5804
+ * The editor to mount, as given on the condition.
5805
+ */
5806
+ "editor"?: ComponentDescriptor;
5807
+ /**
5808
+ * Title of the condition, shown above the editor when there is a header to show at all.
5809
+ */
5810
+ "heading"?: string;
5811
+ /**
5812
+ * Whether the condition is negated. `undefined` means the condition expresses its own polarity and no switch is offered.
5813
+ */
5814
+ "negated"?: boolean;
5815
+ /**
5816
+ * Emitted with the replacement condition when the mounted editor reports one. `limel-popover` portals this element out of the tree's shadow DOM, so an event from the editor never reaches the tree on its own. Catching it here and emitting it again is what carries it back across.
5817
+ */
5818
+ "onConditionChange"?: (event: LimebbConditionTreeEditorCustomEvent<any>) => void;
5819
+ /**
5820
+ * Emitted when the user toggles the negation switch.
5821
+ */
5822
+ "onNegateChange"?: (event: LimebbConditionTreeEditorCustomEvent<boolean>) => void;
5823
+ /**
5824
+ * Whether the popover holding this element is open. The element itself stays in place while closed, because `limel-popover` moves its content into the popover surface once and for all when that surface first loads — anything not there by then is never moved. Drawing nothing until asked is what keeps the consumer's editor from being built for every condition in the tree.
5825
+ * @default false
5826
+ */
5827
+ "open"?: boolean;
5828
+ /**
5829
+ * Platform service provider
5830
+ */
5831
+ "platform"?: LimeWebComponentPlatform;
5832
+ /**
5833
+ * @inheritdoc
5834
+ * @default false
5835
+ */
5836
+ "readonly"?: boolean;
5837
+ /**
5838
+ * The condition being edited, in the consumer's own model. Handed to the mounted editor as `value`.
5839
+ */
5840
+ "value"?: any;
5841
+ }
5543
5842
  /**
5544
5843
  * All currencies have a ISO code, an international standard with three-letters
5545
5844
  * which is used by many systems such as ERPs.
@@ -8175,6 +8474,19 @@ declare namespace LocalJSX {
8175
8474
  "internalLinks": boolean;
8176
8475
  "richText": boolean;
8177
8476
  }
8477
+ interface LimebbConditionTreeAttributes {
8478
+ "value": string;
8479
+ "readonly": boolean;
8480
+ "disabled": boolean;
8481
+ }
8482
+ interface LimebbConditionTreeEditorAttributes {
8483
+ "open": boolean;
8484
+ "value": string;
8485
+ "heading": string;
8486
+ "negated": boolean;
8487
+ "readonly": boolean;
8488
+ "disabled": boolean;
8489
+ }
8178
8490
  interface LimebbCurrencyPickerAttributes {
8179
8491
  "label": string;
8180
8492
  "helperText": string;
@@ -8497,6 +8809,8 @@ declare namespace LocalJSX {
8497
8809
  "limebb-component-config": Omit<LimebbComponentConfig, keyof LimebbComponentConfigAttributes> & { [K in keyof LimebbComponentConfig & keyof LimebbComponentConfigAttributes]?: LimebbComponentConfig[K] } & { [K in keyof LimebbComponentConfig & keyof LimebbComponentConfigAttributes as `attr:${K}`]?: LimebbComponentConfigAttributes[K] } & { [K in keyof LimebbComponentConfig & keyof LimebbComponentConfigAttributes as `prop:${K}`]?: LimebbComponentConfig[K] };
8498
8810
  "limebb-component-picker": Omit<LimebbComponentPicker, keyof LimebbComponentPickerAttributes> & { [K in keyof LimebbComponentPicker & keyof LimebbComponentPickerAttributes]?: LimebbComponentPicker[K] } & { [K in keyof LimebbComponentPicker & keyof LimebbComponentPickerAttributes as `attr:${K}`]?: LimebbComponentPickerAttributes[K] } & { [K in keyof LimebbComponentPicker & keyof LimebbComponentPickerAttributes as `prop:${K}`]?: LimebbComponentPicker[K] };
8499
8811
  "limebb-composer-toolbar": Omit<LimebbComposerToolbar, keyof LimebbComposerToolbarAttributes> & { [K in keyof LimebbComposerToolbar & keyof LimebbComposerToolbarAttributes]?: LimebbComposerToolbar[K] } & { [K in keyof LimebbComposerToolbar & keyof LimebbComposerToolbarAttributes as `attr:${K}`]?: LimebbComposerToolbarAttributes[K] } & { [K in keyof LimebbComposerToolbar & keyof LimebbComposerToolbarAttributes as `prop:${K}`]?: LimebbComposerToolbar[K] };
8812
+ "limebb-condition-tree": Omit<LimebbConditionTree, keyof LimebbConditionTreeAttributes> & { [K in keyof LimebbConditionTree & keyof LimebbConditionTreeAttributes]?: LimebbConditionTree[K] } & { [K in keyof LimebbConditionTree & keyof LimebbConditionTreeAttributes as `attr:${K}`]?: LimebbConditionTreeAttributes[K] } & { [K in keyof LimebbConditionTree & keyof LimebbConditionTreeAttributes as `prop:${K}`]?: LimebbConditionTree[K] };
8813
+ "limebb-condition-tree-editor": Omit<LimebbConditionTreeEditor, keyof LimebbConditionTreeEditorAttributes> & { [K in keyof LimebbConditionTreeEditor & keyof LimebbConditionTreeEditorAttributes]?: LimebbConditionTreeEditor[K] } & { [K in keyof LimebbConditionTreeEditor & keyof LimebbConditionTreeEditorAttributes as `attr:${K}`]?: LimebbConditionTreeEditorAttributes[K] } & { [K in keyof LimebbConditionTreeEditor & keyof LimebbConditionTreeEditorAttributes as `prop:${K}`]?: LimebbConditionTreeEditor[K] };
8500
8814
  "limebb-currency-picker": Omit<LimebbCurrencyPicker, keyof LimebbCurrencyPickerAttributes> & { [K in keyof LimebbCurrencyPicker & keyof LimebbCurrencyPickerAttributes]?: LimebbCurrencyPicker[K] } & { [K in keyof LimebbCurrencyPicker & keyof LimebbCurrencyPickerAttributes as `attr:${K}`]?: LimebbCurrencyPickerAttributes[K] } & { [K in keyof LimebbCurrencyPicker & keyof LimebbCurrencyPickerAttributes as `prop:${K}`]?: LimebbCurrencyPicker[K] };
8501
8815
  "limebb-dashboard-widget": Omit<LimebbDashboardWidget, keyof LimebbDashboardWidgetAttributes> & { [K in keyof LimebbDashboardWidget & keyof LimebbDashboardWidgetAttributes]?: LimebbDashboardWidget[K] } & { [K in keyof LimebbDashboardWidget & keyof LimebbDashboardWidgetAttributes as `attr:${K}`]?: LimebbDashboardWidgetAttributes[K] } & { [K in keyof LimebbDashboardWidget & keyof LimebbDashboardWidgetAttributes as `prop:${K}`]?: LimebbDashboardWidget[K] };
8502
8816
  "limebb-data-cells": Omit<LimebbDataCells, keyof LimebbDataCellsAttributes> & { [K in keyof LimebbDataCells & keyof LimebbDataCellsAttributes]?: LimebbDataCells[K] } & { [K in keyof LimebbDataCells & keyof LimebbDataCellsAttributes as `attr:${K}`]?: LimebbDataCellsAttributes[K] } & { [K in keyof LimebbDataCells & keyof LimebbDataCellsAttributes as `prop:${K}`]?: LimebbDataCells[K] };
@@ -8730,6 +9044,36 @@ declare module "@stencil/core" {
8730
9044
  * @beta
8731
9045
  */
8732
9046
  "limebb-composer-toolbar": LocalJSX.IntrinsicElements["limebb-composer-toolbar"] & JSXBase.HTMLAttributes<HTMLLimebbComposerToolbarElement>;
9047
+ /**
9048
+ * The shared skeleton for editing a tree of conditions: nested groups joined by
9049
+ * "All of the following" or "Any of the following", or the negations of those
9050
+ * two, each holding conditions shown as chips, with the buttons that add,
9051
+ * remove and regroup them.
9052
+ * This component is deliberately ignorant of what a condition *is*.
9053
+ * A condition is visualized as a chip, plus the tag name of an editor to open.
9054
+ * So the same skeleton serves a condition that tests a property ("Deal value is
9055
+ * greater than 100 000") and one that is opaque ("User is a member of a group")
9056
+ * without either model leaking into it.
9057
+ * It holds no tree of its own either. The consumer passes in its own tree, and
9058
+ * an adapter that reads one node and rebuilds one group. Every structural edit
9059
+ * — add, delete, regroup, rejoin, negate — is applied here and handed back as a
9060
+ * tree of the same kind, so no consumer has to write that code twice.
9061
+ * @exampleComponent limebb-example-condition-tree-basic
9062
+ * @exampleComponent limebb-example-condition-tree-combinators
9063
+ * @exampleComponent limebb-example-condition-tree-editors
9064
+ * @exampleComponent limebb-example-condition-tree-palette
9065
+ * @beta
9066
+ */
9067
+ "limebb-condition-tree": LocalJSX.IntrinsicElements["limebb-condition-tree"] & JSXBase.HTMLAttributes<HTMLLimebbConditionTreeElement>;
9068
+ /**
9069
+ * The body of a condition's editor popover: the consumer's editor, and — for a
9070
+ * condition that cannot express its own negation — a switch that negates it.
9071
+ * It is an element of its own rather than markup inside the tree because
9072
+ * `limel-popover` portals its content out of the tree's shadow DOM, leaving it
9073
+ * behind. Carrying its own shadow root means its styles travel with it.
9074
+ * @private
9075
+ */
9076
+ "limebb-condition-tree-editor": LocalJSX.IntrinsicElements["limebb-condition-tree-editor"] & JSXBase.HTMLAttributes<HTMLLimebbConditionTreeEditorElement>;
8733
9077
  /**
8734
9078
  * All currencies have a ISO code, an international standard with three-letters
8735
9079
  * which is used by many systems such as ERPs.
@@ -16,3 +16,4 @@ export {
16
16
  } from './components/text-editor/uploader/building-blocks-uploader';
17
17
  export * from './components/document-chips/document-chips.types';
18
18
  export * from './components/filter-chip/filter-chip.types';
19
+ export * from './components/condition-tree/condition-tree.types';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-crm-building-blocks",
3
- "version": "2.0.3",
3
+ "version": "2.1.0",
4
4
  "description": "A home for shared components meant for use with Lime CRM",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -37,7 +37,7 @@
37
37
  "@limetech/lime-elements": "^39.45.3",
38
38
  "@limetech/lime-web-components": "^7.4.0",
39
39
  "@lundalogik/lime-icons8": "^2.41.0",
40
- "@lundalogik/limeclient.js": "^1.114.0",
40
+ "@lundalogik/limeclient.js": "^1.114.1",
41
41
  "@stencil/core": "^4.44.2",
42
42
  "@stencil/sass": "^3.3.3",
43
43
  "@stencil/vitest": "^1.14.0",
@@ -50,7 +50,7 @@
50
50
  "eslint": "^10.9.1",
51
51
  "fs": "^0.0.1-security",
52
52
  "globals": "^17.11.0",
53
- "happy-dom": "^20.11.12",
53
+ "happy-dom": "^20.12.0",
54
54
  "kompendium": "npm:@limetech/kompendium@^1.3.0",
55
55
  "lodash-es": "^4.18.1",
56
56
  "prettier": "^3.9.6",
@@ -1 +0,0 @@
1
- import{r as e,h as i,H as t}from"./p-COtSgrC5.js";import{n as r}from"./p-Cj_3f9vm.js";const o=class{constructor(i){e(this,i)}render(){return i(t,{key:"5f1f10992e05f44d64189dfb622e4294ca325417",id:this.item.id},this.renderLabel(),i("div",{key:"80f8b801710cb713f019897cac35ea2de1b6384f",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return i("span",{class:"label"},this.item.label)}renderIcon(e,t){const r=`icon-${this.item.id}-${t}`;return[i("limel-icon",{tabIndex:0,key:t,id:r,badge:!0,name:e.name,class:{"is-pending":!!e.pending,"is-clickable":!!e.onClick},style:{color:e.color,"background-color":e.backgroundColor},onClick:e.onClick}),this.renderTooltip(e,r)]}renderTooltip(e,t){if(e.title)return i("limel-tooltip",{label:e.title,elementId:t})}};o.style='@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}:host(limebb-chat-icon-list){display:flex;align-items:center;gap:0.5rem;margin-right:auto;max-width:calc(100% - 2rem);padding:0 0.25rem}.label{font-size:0.75rem;color:rgb(var(--contrast-900))}.icons{display:flex;align-items:center;gap:0.25rem}.icons:hover limel-icon,.icons:focus-within limel-icon{margin-left:0 !important}limel-icon{--icon-background-color:rgb(var(--contrast-500), 0.5)}limel-icon.is-clickable{cursor:pointer}limel-icon:focus{outline:none}limel-icon:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon{transition:margin-left 0.2s cubic-bezier(0.075, 0.82, 0.165, 1), opacity 0.2s ease, box-shadow 0.2s ease;position:relative;width:1.75rem;padding:0.375rem;flex-shrink:0}limel-icon:not(.is-pending):not(:first-child){margin-left:-0.75rem}limel-icon.is-pending{animation:pending 3s linear infinite;padding:0.5rem}limel-icon.is-pending:after{content:"";position:absolute;inset:0;width:1.75rem;height:1.75rem;border-radius:50%;pointer-events:none;border-radius:50%;border:0.125rem solid rgb(var(--color-white), 0.5);border-top-color:rgb(var(--color-black), 0.8);mix-blend-mode:color-dodge;animation:spin 1s cubic-bezier(0.4, 0, 0.2, 1) infinite}@keyframes pending{0%,20%,80%,100%{filter:grayscale(0%)}45%,55%{filter:grayscale(100%)}}@keyframes spin{to{transform:rotate(360deg)}}';const a=class{constructor(i){e(this,i),this.hasError=!1,this.createActionBarItem=e=>{var i,t;if("separator"in e)return e;let r={value:e,text:null!==(i=e.label)&&void 0!==i?i:"",secondaryText:e.description,disabled:e.disabled};return!e.label&&e.icon?r=Object.assign(Object.assign({},r),{icon:e.icon,text:null!==(t=e.description)&&void 0!==t?t:r.text,iconOnly:!0}):e.icon&&(r=Object.assign(Object.assign({},r),{icon:e.icon})),r},this.handleActionBarItemSelect=e=>{var i;e.stopPropagation();const t=null===(i=e.detail.value)||void 0===i?void 0:i.command;t&&this.commandbus.handle(t)},this.createMenuItem=e=>{var i,t;return"separator"in e?e:{value:e,text:null!==(i=e.label)&&void 0!==i?i:"",secondaryText:e.description,disabled:e.disabled,icon:null!==(t=e.icon)&&void 0!==t?t:""}},this.handleMenuItemSelect=e=>{var i;e.stopPropagation();const t=null===(i=e.detail.value)||void 0===i?void 0:i.command;t&&this.commandbus.handle(t)}}render(){const e=`helper-text-${this.item.id}`;return i(t,{key:"266fdab5632ea239ee1e83042494988b7e8c5e74",id:this.item.id,"aria-describedby":this.helperText?e:void 0,"aria-live":this.hasError?"assertive":"off",class:{[`${this.item.ui}`]:!0}},i("div",{key:"e0b98384093b368a03a3e7c5533aa285d46ea0f5",class:"bubble-content"},i("div",{key:"4fd0493903e04cf8bbe7ebf2e1763f09cd5bce69",class:"icon-picture"},this.renderIcon(),this.renderAuthorPicture()),this.renderErrorSign(),i("div",{key:"67b0f7f907d92fa16be7ba82cf239dd7ae55a6e7",class:"item"},this.renderHeader(),this.renderValue(),i("footer",{key:"c709ae0695ba2f658e5a8b7f93e29b8d6f70ffbb"},this.renderHelperText(e),this.renderTimestamp()))),this.renderPromotedAction())}renderErrorSign(){if(this.hasError)return i("limel-icon",{class:"error-sign",name:"brake_warning"})}renderHeader(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.name)return i("header",null,this.renderAuthorName(),i("div",{class:"action-buttons"},this.renderUnpromotedActionsMenu()))}renderIcon(){var e,t,r,o;if(this.item.icon)return i("limel-icon",{class:"icon",badge:!0,name:null!==(t=null===(e=this.item.icon)||void 0===e?void 0:e.name)&&void 0!==t?t:"dot_circle",style:{color:`${null===(r=this.item.icon)||void 0===r?void 0:r.color}`,"background-color":`${null===(o=this.item.icon)||void 0===o?void 0:o.backgroundColor}`}})}renderHelperText(e){if(this.helperText)return i("span",{class:"helper-text",id:e},this.helperText)}renderValue(){if(this.item.value)return i("limel-markdown",{class:"body-text reset-img-height",value:this.item.value})}renderAuthorName(){var e,t;if("string"==typeof(null===(e=this.item.author)||void 0===e?void 0:e.name))return i("span",{class:"author"},this.item.author.name);if("object"==typeof(null===(t=this.item.author)||void 0===t?void 0:t.name)){const{href:e,title:t,text:r}=this.item.author.name;return i("a",{class:"author",href:e,title:t},r)}}renderAuthorPicture(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.picture)return"limel-ai-avatar"===this.item.author.picture?i("limel-ai-avatar",{class:"author-avatar"}):i("img",{class:"author-avatar",loading:"lazy",src:this.item.author.picture})}renderUnpromotedActionsMenu(){var e,t;if(!(null===(e=this.item.unpromotedActions)||void 0===e?void 0:e.length))return;const r=this.item.unpromotedActions.map(this.createMenuItem);return i("limel-menu",{class:"unpromoted-actions-menu",items:r,openDirection:"bottom-end",onSelect:this.handleMenuItemSelect},i("limel-icon-button",{icon:"menu_2",slot:"trigger",label:null===(t=this.translator)||void 0===t?void 0:t.get("webclient.more-actions")}))}renderPromotedAction(){if(!this.item.promotedActions)return;const e=this.item.promotedActions.map(this.createActionBarItem);return i("div",{class:"action-bar"},i("div",{class:"action-bar-hider"},i("limel-action-bar",{accessibleLabel:"Action bar",actions:e,layout:"fullWidth",onItemSelected:this.handleActionBarItemSelect})))}renderTimestamp(){const e=this.item.timestamp;if(e)return i("span",{class:"timestamp"},this.dateTimeFormatter.format(e,"timeofday"))}get dateTimeFormatter(){return this.platform.get(r.DateTimeFormatter)}get translator(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(r.Translate)}get commandbus(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(r.CommandBus)}};a.style='@charset "UTF-8";*{box-sizing:border-box}:host(limebb-chat-item){display:flex;flex-direction:column;gap:0.25rem;min-width:0;min-height:0;max-width:calc(100% - 2rem)}.bubble-content{display:flex;gap:0.25rem;min-width:0;min-height:0}:host(limebb-chat-item:hover) .helper-text,:host(limebb-chat-item:hover) .timestamp,:host(limebb-chat-item:focus-within) .helper-text,:host(limebb-chat-item:focus-within) .timestamp{opacity:1}:host(limebb-chat-item.mine){margin-left:auto}:host(limebb-chat-item.mine) .item{border-bottom-right-radius:0.125rem;background-color:rgb(var(--color-sky-default), 0.2)}:host(limebb-chat-item.mine) .bubble-content{justify-content:end}:host(limebb-chat-item.mine) .icon-picture{order:2}:host(limebb-chat-item.theirs){margin-right:auto}:host(limebb-chat-item.theirs) .item{border-bottom-left-radius:0.125rem;background-color:rgb(var(--contrast-300), 0.7)}.item{display:flex;flex-direction:column;min-width:0;border-radius:1.25rem;padding:0 0.25rem 0.25rem 0.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}.icon-picture{display:flex;flex-direction:column;gap:0.5rem;align-items:center;justify-content:flex-end}.icon-picture:has(.author-avatar) limel-icon{width:1.25rem;padding:0.125rem}.icon{--icon-background-color:rgb(var(--contrast-500), 0.5);flex-shrink:0;padding:0.375rem;width:2.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-ai-avatar.author-avatar{background-color:rgb(var(--color-glaucous-darker))}header{display:flex;justify-content:space-between;align-items:center;min-height:2rem;padding-left:0.5rem}header:not(:has(.unpromoted-actions-menu)){padding-right:0.5rem}.body-text{padding:0.25rem 0.5rem}footer{display:flex;justify-content:space-between;align-items:end;gap:0.5rem;font-size:x-small}footer:not(:empty){padding:0 0.25rem 0.125rem 0.5rem}footer *{transition:opacity 0.2s ease;opacity:0.4}.timestamp{margin-left:auto}.author-avatar{border-radius:50%;width:2rem;height:2rem;object-fit:cover;box-shadow:0 0 0 1px rgb(var(--contrast-600))}.author{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500;text-decoration:none}a.author{position:relative;cursor:pointer;transition:color 0.2s ease;color:var(--mdc-theme-primary)}a.author:before{transition:opacity 0.2s ease, transform 0.3s ease-out;content:"";position:absolute;inset:auto 0 0 0;width:calc(100% - 0.5rem);margin:auto;height:0.125rem;border-radius:1rem;background-color:currentColor;opacity:0;transform:scale(0.6)}a.author:hover{color:rgb(var(--color-teal-light))}a.author:hover:before{opacity:0.3;transform:scale(1)}limel-action-bar{--action-bar-item-height:1.75rem;transition:opacity 0.2s ease;justify-content:flex-start;opacity:0.8}.action-bar{display:grid;transition:grid-template-rows var(--limebb-promoted-action-bar-grid-template-rows-transition-speed, 0.2s) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay, 0s);grid-template-rows:var(--limebb-promoted-action-bar-grid-template-rows, 1fr)}.action-bar-hider{overflow:hidden}limel-action-bar{transition:padding var(--limebb-promoted-action-bar-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay);padding-top:0;padding-bottom:0.75rem}:host(limebb-chat-item:hover) .action-bar,:host(limebb-chat-item:focus-within) .action-bar,:host(limebb-chat-item:focus-visible) .action-bar{--limebb-promoted-action-bar-grid-template-rows:1fr;will-change:grid-template-rows}:host(limebb-chat-item:hover) limel-action-bar,:host(limebb-chat-item:focus-within) limel-action-bar,:host(limebb-chat-item:focus-visible) limel-action-bar{will-change:opacity;opacity:1}:host(limebb-chat-item:hover),:host(limebb-chat-item:focus-within){--limebb-promoted-action-bar-grid-template-rows-transition-speed:0.46s;--limebb-promoted-action-bar-grid-template-rows-transition-delay:0.7s}.action-bar{min-width:0;width:calc(100% - calc(2rem + 0.25rem))}:host(limebb-chat-item.theirs) .action-bar{margin-left:calc(2rem + 0.25rem)}:host(limebb-chat-item[has-error]:not([has-error=false])) .bubble-content{cursor:help}:host(limebb-chat-item[has-error]:not([has-error=false])) .item{border:1px solid rgb(var(--color-red-default))}:host(limebb-chat-item[has-error]:not([has-error=false])) .error-sign{color:rgb(var(--color-red-default));flex-shrink:0;width:1.25rem;align-self:center}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .action-bar{padding-left:1.25rem}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .helper-text{opacity:1;color:rgb(var(--color-red-default))}';const n=class{constructor(i){e(this,i)}render(){return i("div",{key:"bf1a80f35a31a497b05b89b0e9d4291ed78bdcd6",class:"typing-ellipsis"},i("div",{key:"6f0a9f966f53f5459c04c56e464ea1b2e0590619",class:"circle"}),i("div",{key:"155d3a3e19f419d7f385b9dd221f14f78af207b4",class:"circle"}),i("div",{key:"22d53849e2963f4a2505b9746d5a0660cff23898",class:"circle"}))}};n.style="*{box-sizing:border-box}.typing-ellipsis{position:relative;display:inline-flex;align-items:center;gap:0.25rem;height:1.5rem;padding:0 0.5rem;border-radius:10rem;border-bottom-left-radius:0.125rem;background-color:rgb(var(--contrast-600), 0.4);backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}.circle{position:relative;height:0.5rem;width:0.5rem;background:rgb(var(--contrast-800));border-radius:50%}.circle:first-of-type{animation:ellipsis-typing-indicator 1.2s infinite}.circle:nth-of-type(2){animation:ellipsis-typing-indicator 1.2s infinite 0.2s}.circle:nth-of-type(3){animation:ellipsis-typing-indicator 1.2s infinite 0.4s}@keyframes ellipsis-typing-indicator{0%{top:0}6.25%{top:-1px}12.5%{top:0;background:rgb(var(--contrast-1000))}18.75%{top:1px}25%{top:0}}";export{o as limebb_chat_icon_list,a as limebb_chat_item,n as limebb_typing_indicator}
@@ -1 +0,0 @@
1
- import{r as e,c as t,h as o}from"./p-COtSgrC5.js";import{k as r,n as i}from"./p-Cj_3f9vm.js";import{L as s}from"./p-DVypQWZ4.js";const a=class{constructor(o){e(this,o),this.negate=t(this,"negate"),this.updateArgs=t(this,"updateArgs"),this.deleteChip=t(this,"deleteChip"),this.isNegated=!1,this.readonly=!1,this.disabled=!1,this.isMutable=!0,this.focusOnOpen=!1,this.handleNegateChange=e=>{e.stopPropagation(),this.negate.emit(e.detail)},this.handleArgsChange=e=>{e.stopPropagation(),this.updateArgs.emit(e.detail)},this.handleDelete=()=>{this.deleteChip.emit()}}render(){return o("div",{key:"abb754c8d327cc82b5d4e7e44154e937c3aeb0d2",class:"popover"},this.renderHeader(),this.renderBody())}renderHeader(){var e,t,r,i;const s=(null===(e=this.metadata)||void 0===e?void 0:e.title)?this.translator.get(this.metadata.title):null!==(r=null===(t=this.refNode)||void 0===t?void 0:t.id)&&void 0!==r?r:"";return o("limel-header",{class:"popover__header is-narrow",heading:s,icon:null===(i=this.metadata)||void 0===i?void 0:i.icon},this.renderHeaderActions())}renderHeaderActions(){return this.isMutable?o("div",{slot:"actions",class:"popover__header-actions"},o("limel-switch",{class:"popover__negate-switch",label:this.translator.get("webclient.rule-editor.negate"),value:this.isNegated,onChange:this.handleNegateChange}),o("limel-icon-button",{class:"popover__delete-button",icon:"trash",label:this.translator.get("webclient.rule-editor.delete"),onClick:this.handleDelete})):null}get translator(){return this.platform.get(i.Translate)}renderBody(){var e,t;const r=null===(e=this.metadata)||void 0===e?void 0:e.configComponent;return r?o("div",{class:"popover__body"},o(s,{platform:this.platform,context:this.context,name:r.name,props:Object.assign(Object.assign({},r.props),{value:null===(t=this.refNode)||void 0===t?void 0:t.args,readonly:this.readonly,disabled:this.disabled,focusOnOpen:this.focusOnOpen,onChange:this.handleArgsChange})})):null}};(function(e,t,o,r){var i,s=arguments.length,a=s<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,o):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,o,r);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(a=(s<3?i(a):s>3?i(t,o,a):i(t,o))||a);s>3&&a&&Object.defineProperty(t,o,a)})([r("context")],a.prototype,"context",void 0),a.style=":host{display:block}.popover{display:flex;flex-direction:column;min-width:24rem;background-color:rgb(var(--contrast-100));border:1px solid rgb(var(--contrast-700));border-radius:0.5rem;box-shadow:0 0.25rem 0.75rem rgba(0, 0, 0, 0.15);overflow:hidden}.popover__header{--header-background-color:rgba(var(--contrast-300));padding-right:0.5rem;gap:1rem}.popover__header-actions{display:grid;grid-auto-flow:column;grid-gap:0.75rem;padding:0.25rem;align-items:center}.popover__delete-button{color:rgb(var(--contrast-1100))}.popover__body{padding:1rem}";export{a as limebb_rule_chip_popover}
@@ -1 +0,0 @@
1
- import{h as e,r as t,c as n,g as r}from"./p-COtSgrC5.js";import{M as i,n as l}from"./p-Cj_3f9vm.js";function o(e,t){return t?{type:"not",rule:e}:e}function s(e,t){return e.length===t.length&&e.every(((e,n)=>e===t[n]))}function u(e,t){return e.filter((e=>s(e.path,t)))}function a(e,t){let n=e;for(const e of t){if(void 0===n)return;n=d(n,e)}return n}function c(e,t,n){if(0===t.length)return n;const[r,...i]=t;if("not"===e.type&&"rule"===r)return Object.assign(Object.assign({},e),{rule:c(e.rule,i,n)});if(("all"===e.type||"any"===e.type)&&"rules"===r){if(0===i.length)return n;const[t,...r]=i;if("number"!=typeof t)return e;const l=[...e.rules];return l[t]=c(l[t],r,n),Object.assign(Object.assign({},e),{rules:l})}return e}function d(e,t){return"not"===e.type&&"rule"===t?e.rule:"all"!==e.type&&"any"!==e.type||"rules"!==t?"all"!==e.type&&"any"!==e.type||"number"!=typeof t?e:e.rules[t]:e}const h={name:"question",color:"rgb(var(--color-glaucous-light))"};function f(e,t){return[...e.values()].map((e=>({value:e.id,text:e.title?t.get(e.title):e.id,secondaryText:e.description?t.get(e.description):"",icon:e.icon}))).sort(((e,t)=>e.text.localeCompare(t.text)))}function p(e,t){return e.reads.every((e=>t.has(e)))}function v(e){return`__chip__:${e}`}function b(e,t){return[...e,"rules",t]}function m(e){return"ref"===e.type?{ref:e,isNegated:!1}:"not"===e.type&&"ref"===e.rule.type?{ref:e.rule,isNegated:!0}:null}const g=({groupNode:t,groupPath:n,chipChildren:r,ctx:i})=>{const l=new Map,o=r.map((e=>{const t=v(e.index);l.set(t,e);const n=(r=e.ref.id,null!==(o=i.allPrimitiveOptions.find((e=>e.value===r)))&&void 0!==o?o:{value:r,text:r,icon:h});var r,o;return Object.assign(Object.assign({},n),{text:e.isNegated?`¬ ${n.text}`:n.text,value:t})})),s=(u=i.availablePrimitiveOptions,e=>Promise.resolve(function(e,t){if(!t)return e;const n=t.toLocaleLowerCase().split(/\s+/);return e.filter((e=>n.every((t=>{var n,r;return e.text.toLocaleLowerCase().includes(t)||(null===(n=e.secondaryText)||void 0===n?void 0:n.toLocaleLowerCase().includes(t))||(null===(r=e.value)||void 0===r?void 0:r.toLocaleLowerCase().includes(t))}))))}(u,e)));var u;const a=function(e,t,n){var r;const i=C(t,n);return null===i?null:null!==(r=e.find((e=>e.index===i)))&&void 0!==r?r:null}(r,n,i.openChipPath),c="all"===t.type?"&":"|";return e("limel-popover",{class:"rule-node__chips-popover",open:null!==a,openDirection:"bottom-start",onClose:i.onPopoverClose},e("div",{slot:"trigger",class:"rule-node__chips"},e("limel-picker",{multiple:!0,label:i.translator.get("webclient.rule-editor.rules-label"),value:o,searcher:s,delimiter:c,readonly:i.readonly,disabled:i.disabled,onChange:_(t,n,l,i),onInteract:y(n,l,i)})),e("div",null,function(t,n,r){if(!t)return null;const i=b(n,t.index);return e("limebb-rule-chip-popover",{platform:r.platform,context:r.context,refNode:t.ref,isNegated:t.isNegated,metadata:r.metadataById.get(t.ref.id),readonly:r.readonly,disabled:r.disabled,isMutable:r.isMutable,focusOnOpen:r.focusOnOpen,onNegate:x(t,i,r),onUpdateArgs:O(t,i,r),onDeleteChip:j(i,r)})}(a,n,i)))},_=(e,t,n,r)=>i=>{i.stopPropagation();const l=Array.isArray(i.detail)?i.detail:[],o=C(t,r.openChipPath);if(null!==o){const e=v(o);l.every((t=>t.value!==e))&&r.onPopoverClose()}const s=l.flatMap((e=>{if("string"!=typeof e.value)return[];const t=n.get(e.value);return t?[t.isNegated?{type:"not",rule:t.ref}:t.ref]:[{type:"ref",id:e.value}]})),u=e.rules.filter((e=>null===m(e)));r.onReplaceNode(t,Object.assign(Object.assign({},e),{rules:[...s,...u]}))},y=(e,t,n)=>r=>{r.stopPropagation();const i=function(e){if("string"==typeof e)return e;if(e&&"object"==typeof e&&"value"in e){const t=e.value;return"string"==typeof t?t:void 0}}(r.detail),l=i?t.get(i):void 0;l&&n.onChipInteract([...e,"rules",l.index])},x=(e,t,n)=>r=>{r.stopPropagation(),n.onReplaceNode(t,r.detail?{type:"not",rule:e.ref}:e.ref)},O=(e,t,n)=>r=>{r.stopPropagation();const i=e.isNegated?[...t,"rule"]:t;n.onUpdateArgs(i,r.detail)},j=(e,t)=>()=>{t.onDelete(e)};function C(e,t){if(!t||t.length<2)return null;if(!s((n=t,n.slice(0,-2)),e))return null;var n;const r=t.at(-1);return"number"==typeof r?r:null}const w=({node:t,path:n,isNegated:r,ctx:i})=>{const l=r?[...n,"rule"]:n,o=r?[...u(i.issues,n),...u(i.issues,l)]:u(i.issues,n),s=[],a=[];for(const[e,n]of t.rules.entries()){const t=m(n);t?s.push(Object.assign(Object.assign({},t),{index:e})):a.push({child:n,index:e})}const c=function(e){return[{value:"all",text:e.translator.get("webclient.rule-editor.combinator.all")},{value:"any",text:e.translator.get("webclient.rule-editor.combinator.any")}]}(i),d=c.find((e=>e.value===t.type));return e("div",{class:(h=t.type,f=o,{"rule-node":!0,[`rule-node--${h}`]:!0,"rule-node--invalid":f.length>0}),key:N(n)},e("div",{class:"rule-node__header"},e("limel-select",{class:"rule-node__combinator-select",value:d,options:c,disabled:!i.isMutable,onChange:M(t,n,r,i)}),function(t,n,r,i){return i.isMutable?e("div",{class:"rule-node__header-actions"},e("limel-switch",{class:"rule-node__negate-switch",label:i.translator.get("webclient.rule-editor.negate"),value:r,onChange:R(t,n,i)}),e("limel-icon-button",{icon:"trash",label:i.translator.get("webclient.rule-editor.delete"),onClick:()=>i.onDelete(n)})):null}(t,n,r,i)),e("div",{class:"rule-node__body"},e(D,{issues:o}),e(g,{groupNode:t,groupPath:l,chipChildren:s,ctx:i}),function(t,n,r){return 0===t.length?null:e("div",{class:"rule-node__children"},t.map((t=>e(z,{node:t.child,path:[...n,"rules",t.index],ctx:r}))))}(a,l,i),function(t,n,r,i){return i.isMutable?e("div",{class:"rule-node__footer"},e("limel-button",{icon:"add",label:i.translator.get("webclient.rule-editor.add-nested-group"),onClick:P(t,n,r,i)})):null}(t,n,r,i)));var h,f};function N(e){return 0===e.length?"root":e.join("/")}function k(e,t,n,r){r.onReplaceNode(t,o(e,n))}const M=(e,t,n,r)=>i=>{i.stopPropagation();const l=i.detail.value;l!==e.type&&k(Object.assign(Object.assign({},e),{type:l}),t,n,r)},P=(e,t,n,r)=>()=>{var i,l;k((i=e,l={type:"all",rules:[]},Object.assign(Object.assign({},i),{rules:[...i.rules,l]})),t,n,r)},R=(e,t,n)=>r=>{r.stopPropagation(),n.onReplaceNode(t,o(e,r.detail))},z=t=>{const{node:n,path:r,ctx:i}=t,l=S(n);return l?e(w,{node:l.node,path:r,isNegated:l.isNegated,ctx:i}):null},A=e=>"not"===e.type&&("all"===e.rule.type||"any"===e.rule.type);function S(e){if("all"===e.type||"any"===e.type)return{node:e,isNegated:!1};if(A(e))return{node:e.rule,isNegated:!0};if("not"===e.type){const t=S(e.rule);if(t)return{node:t.node,isNegated:!t.isNegated}}return null}const D=({issues:t})=>0===t.length?null:t.map((t=>e("div",{class:"rule-node__issue"},t.message)));const I=class{constructor(e){t(this,e),this.change=n(this,"change"),this.issues=[],this.openChipPath=null,this.focusOnOpen=!1,this.metadataById=new Map,this.allPrimitiveOptions=[],this.availablePrimitiveOptions=[],this.reachableSlots=new Set,this.normalizedCache=null,this.hasLoaded=!1,this.handleDelete=e=>{this.openChipPath=null,this.focusOnOpen=!1,this.emitIfChanged(function(e,t){if(0===t.length)return{type:"all",rules:[]};const n=t.slice(0,-1),r=t.at(-1),i=a(e,n);if(void 0===i)return e;if(("all"===i.type||"any"===i.type)&&"number"==typeof r){const t=[...i.rules];return t.splice(r,1),c(e,n,Object.assign(Object.assign({},i),{rules:t}))}return"not"===i.type&&"rule"===r?c(e,n,{type:"all",rules:[]}):e}(this.normalizedValue,e))},this.handleUpdateArgs=(e,t)=>{this.emitIfChanged(function(e,t,n){const r=a(e,t);return void 0===r||"ref"!==r.type?e:c(e,t,Object.assign(Object.assign({},r),{args:n}))}(this.normalizedValue,e,t))},this.handleReplaceNode=(e,t)=>{const n=this.autoOpenPathFor(e,t);this.focusOnOpen=null!==n,null!==n&&(this.openChipPath=n),this.emitIfChanged(function(e,t,n){return c(e,t,n)}(this.normalizedValue,e,t))},this.handleChipInteract=e=>{this.openChipPath=e,this.focusOnOpen=!1},this.handlePopoverClose=()=>{this.openChipPath=null,this.focusOnOpen=!1}}componentWillLoad(){this.rebuildFromRegistries()}rebuildFromRegistries(){this.computeReachableSlots(),this.indexMetadata(),this.rebuildAvailableOptions(),this.runValidation()}connectedCallback(){this.hasLoaded&&(this.computeReachableSlots(),this.rebuildAvailableOptions(),this.runValidation())}componentDidLoad(){this.hasLoaded=!0,this.emitNormalization()}onValueChange(){this.emitNormalization()||this.runValidation()}onAvailableContextsChange(){this.rebuildFromRegistries()}render(){return e("div",{key:"abe9c739c5fbd0749a593187fd36953482530aeb",class:{"rule-editor":!0,"rule-editor--disabled":this.disabled}},this.renderLabel(),e(z,{key:"ba99e8de897dec3825fb74f78d42b3f503ead775",node:this.normalizedValue,path:[],ctx:this.createRenderContext()}),this.renderHelperText())}renderLabel(){return this.label?e("div",{class:"rule-editor__label"},this.label):null}renderHelperText(){return this.helperText?e("div",{class:"rule-editor__helper-text"},this.helperText):null}createRenderContext(){return{issues:this.issues,metadataById:this.metadataById,allPrimitiveOptions:this.allPrimitiveOptions,availablePrimitiveOptions:this.availablePrimitiveOptions,isMutable:!this.readonly&&!this.disabled,readonly:this.readonly,disabled:this.disabled,platform:this.platform,context:this.effectiveContext,translator:this.translator,openChipPath:this.openChipPath,focusOnOpen:this.focusOnOpen,onDelete:this.handleDelete,onUpdateArgs:this.handleUpdateArgs,onReplaceNode:this.handleReplaceNode,onChipInteract:this.handleChipInteract,onPopoverClose:this.handlePopoverClose}}autoOpenPathFor(e,t){var n;if("all"!==t.type&&"any"!==t.type)return null;const r=a(this.normalizedValue,e);if(void 0===r||"all"!==r.type&&"any"!==r.type)return null;const i=new Set(r.rules.map((e=>{var t;return null===(t=m(e))||void 0===t?void 0:t.ref})).filter((e=>void 0!==e))),l=t.rules.map(((e,t)=>{var n;const r=null===(n=m(e))||void 0===n?void 0:n.ref;return r&&!i.has(r)?{ref:r,index:t}:null})).filter((e=>null!==e));if(1!==l.length)return null;const[{ref:o,index:s}]=l;return(null===(n=this.metadataById.get(o.id))||void 0===n?void 0:n.configComponent)?b(e,s):null}indexMetadata(){var e,t,n;const r=null!==(n=null===(t=(e=this.ruleRegistry).listMetadata)||void 0===t?void 0:t.call(e))&&void 0!==n?n:[];this.metadataById=new Map(r.map((e=>[e.id,e]))),this.allPrimitiveOptions=f(this.metadataById,this.translator)}rebuildAvailableOptions(){this.availablePrimitiveOptions=f(this.availablePrimitiveMetadata(),this.translator)}availablePrimitiveMetadata(){const e=new Map;for(const[t,n]of this.metadataById)p(n,this.reachableSlots)&&e.set(t,n);return e}computeReachableSlots(){var e;const t=this.contextRegistry,n=t.list().map((e=>e.id)).filter((e=>void 0!==t.get(e,this.host)));this.reachableSlots=new Set([...n,...null!==(e=this.availableContexts)&&void 0!==e?e:[]])}runValidation(){if(!this.value)return void(this.issues=[]);const e=this.ruleRegistry.validate(this.normalizedValue,[...this.reachableSlots]);this.issues=e.ok?[]:e.issues}emitIfChanged(e){var t;e!==this.normalizedValue&&this.change.emit("all"!==(t=e).type&&"any"!==t.type?t:0===t.rules.length?void 0:t)}get normalizedValue(){if(null!==this.normalizedCache&&this.normalizedCache.source===this.value)return this.normalizedCache.normalized;const e=(t=this.value)?S(t)?t:{type:"all",rules:[t]}:{type:"all",rules:[]};var t;return this.normalizedCache={source:this.value,normalized:e},e}emitNormalization(){if(!this.value)return!1;const e=this.normalizedValue;return e!==this.value&&(this.change.emit(e),!0)}get ruleRegistry(){return this.platform.get(l.RuleRegistry)}get translator(){return this.platform.get(l.Translate)}get contextRegistry(){return this.platform.get(l.ContextRegistry)}get effectiveContext(){var e,t;return(null===(e=this.context)||void 0===e?void 0:e.limetype)?this.context:(null===(t=this.resolvedContext)||void 0===t?void 0:t.limetype)?this.resolvedContext:V}get host(){return r(this)}static get watchers(){return{value:[{onValueChange:0}],availableContexts:[{onAvailableContextsChange:0}]}}};!function(e,t,n,r){var i,l=arguments.length,o=l<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(i=e[s])&&(o=(l<3?i(o):l>3?i(t,n,o):i(t,n))||o);l>3&&o&&Object.defineProperty(t,n,o)}([i("context")],I.prototype,"resolvedContext",void 0);const V=Object.freeze({limetype:null,id:null});I.style=":host{display:block}.rule-editor--disabled{opacity:0.6;pointer-events:none}.rule-editor__label{font-size:0.75rem;font-weight:600;color:rgb(var(--contrast-1500));margin-bottom:0.25rem}.rule-editor__helper-text{font-size:0.75rem;color:rgb(var(--contrast-1300));margin-top:0.25rem}.rule-node{border:1px solid rgb(var(--contrast-500));border-radius:0.5rem;margin:0.25rem 0;overflow:hidden;background-color:rgb(var(--contrast-100))}.rule-node--invalid{border-color:rgb(var(--color-red-default))}.rule-node--all>.rule-node__header,.rule-node--any>.rule-node__header{background-color:rgb(var(--contrast-300));padding:0.375rem 0.75rem;border-bottom:1px solid rgb(var(--contrast-500))}.rule-node__header{display:flex;align-items:center;gap:0.5rem}.rule-node__header-actions{margin-left:auto;display:grid;grid-auto-flow:column;grid-gap:0.5rem;padding:0.125rem;align-items:center}.rule-node__combinator-select{min-width:6rem}.rule-node__body{padding:0.75rem;display:flex;flex-direction:column;gap:0.75rem}limel-popover.rule-node__chips-popover{display:contents;--popover-surface-width:min(calc(100vw - 4rem), 50rem)}.rule-node__chips{display:block;width:100%}.rule-node__chips limel-picker{display:block;width:100%}.rule-node__children{display:flex;flex-direction:column;gap:0.5rem}.rule-node__footer{display:flex;justify-content:center}.rule-node__issue{color:rgb(var(--color-red-default));font-size:0.875rem}";export{I as limebb_rule_editor}
@@ -1 +0,0 @@
1
- import{r as t,c as e,h as i,H as r}from"./p-COtSgrC5.js";import{n as s}from"./p-Cj_3f9vm.js";import{g as o}from"./p-Cz5s8qGk.js";import{i as n}from"./p-CkTg5UPD.js";import{b as l}from"./p-CKEnwX6j.js";import{i as a,a as d,b as h}from"./p-BgAfMcRA.js";import"./p-CtcTT7BK.js";function c(t){return"string"==typeof t||!d(t)&&a(t)&&"[object String]"==h(t)}const m=class{constructor(i){t(this,i),this.change=e(this,"change"),this.label="Sort Order",this.items=[],this.handleItemChange=t=>e=>{e.stopPropagation();const i=[...this.items];null===e.detail?i.splice(t,1):i[t]=e.detail,this.items=i,this.emitChange()},this.handleAddSortField=()=>{this.items=[...this.items,{"":"ASC"}],this.emitChange()}}componentWillLoad(){this.value&&this.value.length>0&&(this.items=[...this.value])}handleValueChange(t){t&&(t.length!==this.items.length||!t.every(((t,e)=>{const i=this.items[e];if(!i)return!1;const r=Object.keys(t)[0],s=Object.keys(i)[0];return r===s&&t[r]===i[s]})))&&(this.items=t.length>0?[...t]:[])}render(){return i(r,{key:"5eaad5237f6ccce6d93610bf4987cce10c06abaf"},this.renderEmptyState(),this.renderOrderByEditor())}renderEmptyState(){return this.limetype?null:i("div",{class:"empty-state"},i("p",null,"Select a limetype to configure sorting"))}renderOrderByEditor(){return this.limetype?[this.renderHeader(),this.renderOrderByList(),this.renderActions()]:null}renderHeader(){return i("limel-header",{class:"is-narrow",heading:this.label,icon:"sorting_arrows"})}renderOrderByList(){return 0===this.items.length?null:i("div",{class:"order-by-list"},this.items.map(((t,e)=>this.renderItem(t,e))))}renderActions(){return i("limel-button",{label:"Add Sort Field",icon:"plus_math",onClick:this.handleAddSortField})}renderItem(t,e){const r=Object.keys(t)[0]||"";return i("limebb-lime-query-order-by-item",{key:`${r}-${e}`,class:"order-by-item",platform:this.platform,context:this.context,limetype:this.limetype,item:t,onItemChange:this.handleItemChange(e)})}emitChange(){this.change.emit(this.items)}static get watchers(){return{value:[{handleValueChange:0}]}}};m.style=":host(limebb-lime-query-order-by-editor){display:flex;flex-direction:column;gap:1rem;padding:1rem 0}.header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header h4{margin:0;font-size:1rem;font-weight:600;color:rgb(var(--contrast-1000))}.order-by-list{display:flex;flex-direction:column;gap:1rem;border:1px solid rgb(var(--contrast-300));border-radius:0.25rem;background-color:rgb(var(--contrast-50));min-height:4rem}.order-by-item{padding:0.5rem;border-radius:0.25rem;transition:background-color 0.2s}.order-by-item:hover{background-color:rgb(var(--contrast-100))}.actions{display:flex;width:100%}.summary{display:flex;justify-content:space-between;align-items:center;padding-top:0.5rem;border-top:1px solid rgb(var(--contrast-300))}.summary .count{font-size:0.875rem;font-weight:500;color:rgb(var(--contrast-900))}limel-header.is-narrow{--header-top-right-left-border-radius:0;width:calc(100% + var(--limebb-lime-query-builder-visual-mode-padding) * 2);margin-left:calc(var(--limebb-lime-query-builder-visual-mode-padding) * -1)}.empty-state{padding:0 2rem;text-align:center;color:rgb(var(--contrast-700))}";const u=["string","text","phone","integer","decimal","percent","time","date","year","quarter","month","yesno","link","user","xml","option","set","file","system"],p=u.filter((t=>"system"!==t));p.push("belongsto","hasone","hasmany","hasandbelongstomany");const b=class{constructor(i){t(this,i),this.change=e(this,"change"),this.propertyFields=[],this.fieldName="limetype",this.handleChange=t=>{t.stopPropagation();let e="";t.detail&&"value"in t.detail&&(e=t.detail.value),this.change.emit(e||void 0)}}componentWillLoad(){const t=this.platform.get(s.Application).getLanguage();this.collator=new Intl.Collator(t,{numeric:!0,sensitivity:"base"})}componentShouldUpdate(t,e,i){var r,s,o,n;return"formInfo"!==i||(o=null===(r=null==t?void 0:t.schema)||void 0===r?void 0:r.oneOf,n=null===(s=null==e?void 0:e.schema)||void 0===s?void 0:s.oneOf,!l(o,n))}render(){var t;const e=this.getLimeTypes().map(g);e.sort(((t,e)=>this.collator.compare(t.text,e.text)));let r=e.find((t=>t.value===this.value)),s=this.invalid;return this.value&&!r&&(s=!0,e.unshift({text:(null===(t=this.limeTypeRepository.getLimeType(this.value))||void 0===t?void 0:t.localname.singular)||this.value,value:this.value}),r=e[0]),e.unshift({text:"",value:""}),i("limel-select",{key:"4c17fbdd5760fcb83fef57f7204df42c91f70f7f",label:this.label,options:e,value:r,required:this.required,helperText:this.helperText,invalid:s,disabled:this.disabled||this.readonly,onChange:this.handleChange})}componentWillRender(){this.updatePropertyFields(this.value||"")}getLimeTypes(){var t,e;let i=this.limetypes;return(null===(e=null===(t=this.formInfo)||void 0===t?void 0:t.schema)||void 0===e?void 0:e.oneOf)&&(i=this.formInfo.schema.oneOf.map((t=>t.const)).filter(c)),i?i.map((t=>this.limeTypeRepository.getLimeType(t))).filter(n):this.limeTypeRepository.getLimeTypes()}updatePropertyFields(t){for(const e of this.propertyFields)e.limetype=t,e.allowedPropertyTypes===u&&(e.allowedPropertyTypes=p)}get limeTypeRepository(){return this.platform.get(s.LimeTypeRepository)}},g=t=>({text:t.localname.singular,value:t.name,icon:o(t)});export{m as limebb_lime_query_order_by_editor,b as limebb_limetype_field}