@limetech/lime-crm-building-blocks 1.129.0 → 1.131.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 (331) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/filter-group-logic-Bwk6B784.js +136 -0
  3. package/dist/cjs/{index-C_OnxXhP.js → index-dBY184XR.js} +12 -0
  4. package/dist/cjs/{index.esm-g8gOl7RV.js → index.esm-DcWSoSRE.js} +2 -2
  5. package/dist/cjs/lime-crm-building-blocks.cjs.js +2 -2
  6. package/dist/cjs/lime-query-operators-Ci-RNshi.js +65 -0
  7. package/dist/cjs/{lime-query-validation-DTurSvtv.js → lime-query-validation-nql4N6Z8.js} +1 -1
  8. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +2 -2
  9. package/dist/cjs/limebb-browser.cjs.entry.js +4 -4
  10. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +6 -6
  11. package/dist/cjs/limebb-chat-list.cjs.entry.js +3 -3
  12. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +2 -2
  13. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +2 -2
  14. package/dist/cjs/limebb-component-config.cjs.entry.js +3 -3
  15. package/dist/cjs/limebb-component-picker.cjs.entry.js +2 -2
  16. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +4 -4
  17. package/dist/cjs/limebb-currency-picker.cjs.entry.js +3 -3
  18. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +2 -2
  19. package/dist/cjs/limebb-data-cells.cjs.entry.js +2 -2
  20. package/dist/cjs/limebb-date-picker.cjs.entry.js +3 -3
  21. package/dist/cjs/limebb-date-range.cjs.entry.js +2 -2
  22. package/dist/cjs/limebb-document-chips.cjs.entry.js +2 -2
  23. package/dist/cjs/limebb-document-item.cjs.entry.js +3 -3
  24. package/dist/cjs/limebb-document-picker.cjs.entry.js +2 -2
  25. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  26. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +2 -2
  27. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +3 -3
  28. package/dist/cjs/limebb-feed.cjs.entry.js +3 -3
  29. package/dist/cjs/limebb-icon-picker.cjs.entry.js +2 -2
  30. package/dist/cjs/limebb-info-tile-currency-format.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-info-tile-date-format.cjs.entry.js +1 -1
  32. package/dist/cjs/limebb-info-tile-decimal-format.cjs.entry.js +1 -1
  33. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +2 -2
  34. package/dist/cjs/limebb-info-tile-relative-date-format.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-info-tile-unit-format.cjs.entry.js +1 -1
  36. package/dist/cjs/limebb-info-tile.cjs.entry.js +4 -4
  37. package/dist/cjs/limebb-kanban-group.cjs.entry.js +3 -3
  38. package/dist/cjs/limebb-kanban-item.cjs.entry.js +3 -3
  39. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +4 -4
  41. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +4 -8
  42. package/dist/cjs/{limebb-lime-query-filter-group_3.cjs.entry.js → limebb-lime-query-filter-comparison-editor_4.cjs.entry.js} +158 -187
  43. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +83 -121
  44. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +5 -5
  45. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +3 -3
  46. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +4 -4
  47. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +2 -2
  48. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  49. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +3 -3
  50. package/dist/cjs/limebb-loader.cjs.entry.js +2 -2
  51. package/dist/cjs/limebb-locale-picker.cjs.entry.js +3 -3
  52. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +3 -3
  53. package/dist/cjs/limebb-mention.cjs.entry.js +2 -2
  54. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +3 -3
  55. package/dist/cjs/limebb-notification-item.cjs.entry.js +3 -3
  56. package/dist/cjs/limebb-notification-list.cjs.entry.js +2 -2
  57. package/dist/cjs/limebb-object-chip.cjs.entry.js +3 -3
  58. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +4 -4
  59. package/dist/cjs/limebb-property-selector.cjs.entry.js +42 -19
  60. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +2 -2
  61. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +4 -4
  62. package/dist/cjs/limebb-rule-editor.cjs.entry.js +104 -12
  63. package/dist/cjs/limebb-rule-gate.cjs.entry.js +3 -3
  64. package/dist/cjs/limebb-text-editor-picker.cjs.entry.js +1 -1
  65. package/dist/cjs/limebb-text-editor.cjs.entry.js +4 -4
  66. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +3 -3
  67. package/dist/cjs/{limetype-DJNXULgk.js → limetype-CNjUGemK.js} +1 -1
  68. package/dist/cjs/loader.cjs.js +2 -2
  69. package/dist/cjs/{web-component-template-BWCutZB6.js → web-component-template-CZ0lPHIg.js} +1 -1
  70. package/dist/collection/collection-manifest.json +1 -0
  71. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  72. package/dist/collection/components/browser/browser.js +2 -2
  73. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  74. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  75. package/dist/collection/components/chat-list/chat-list.js +1 -1
  76. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  77. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  78. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  79. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  80. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  81. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  82. package/dist/collection/components/date-picker/date-picker.js +1 -1
  83. package/dist/collection/components/date-range/date-range.js +1 -1
  84. package/dist/collection/components/document-chips/document-chips.js +1 -1
  85. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  86. package/dist/collection/components/document-picker/document-picker.js +1 -1
  87. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  88. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  89. package/dist/collection/components/feed/feed.js +1 -1
  90. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  91. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  92. package/dist/collection/components/info-tile/info-tile.js +1 -1
  93. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  94. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  95. package/dist/collection/components/lime-query-builder/expressions/filter-group-logic.js +75 -72
  96. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-builder.js +2 -6
  97. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.css +12 -0
  98. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +231 -0
  99. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.css +2 -17
  100. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +91 -118
  101. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-expression.js +9 -14
  102. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.css +105 -179
  103. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +93 -94
  104. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  105. package/dist/collection/components/lime-query-builder/expressions/lime-query-operators.js +60 -0
  106. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  107. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  108. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  109. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  110. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  111. package/dist/collection/components/lime-query-builder/property-selector/property-selector.js +39 -16
  112. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  113. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  114. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  115. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  116. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  117. package/dist/collection/components/rule-editor/chip-picker-view.js +2 -2
  118. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +1 -1
  119. package/dist/collection/components/rule-editor/rule-editor.css +1 -0
  120. package/dist/collection/components/rule-editor/rule-editor.js +102 -10
  121. package/dist/collection/components/rule-editor/view-helpers.js +9 -0
  122. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  123. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  124. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  125. package/dist/collection/components/text-editor/text-editor.js +1 -1
  126. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  127. package/dist/components/chat-icon-list.js +1 -1
  128. package/dist/components/chat-item.js +1 -1
  129. package/dist/components/currency-picker.js +1 -1
  130. package/dist/components/date-picker.js +1 -1
  131. package/dist/components/document-item.js +1 -1
  132. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  133. package/dist/components/feed-timeline-item.js +1 -1
  134. package/dist/components/kanban-group.js +1 -1
  135. package/dist/components/kanban-item.js +1 -1
  136. package/dist/components/lime-query-filter-builder.js +1 -1
  137. package/dist/components/lime-query-filter-comparison-editor.js +1 -0
  138. package/dist/components/lime-query-filter-comparison.js +1 -1
  139. package/dist/components/lime-query-filter-expression.js +1 -1
  140. package/dist/components/limebb-alert-dialog.js +1 -1
  141. package/dist/components/limebb-browser.js +1 -1
  142. package/dist/components/limebb-chat-list.js +1 -1
  143. package/dist/components/limebb-color-palette-picker.js +1 -1
  144. package/dist/components/limebb-color-palette-swatches.js +1 -1
  145. package/dist/components/limebb-composer-toolbar.js +1 -1
  146. package/dist/components/limebb-dashboard-widget.js +1 -1
  147. package/dist/components/limebb-date-range.js +1 -1
  148. package/dist/components/limebb-document-chips.js +1 -1
  149. package/dist/components/limebb-document-picker.js +1 -1
  150. package/dist/components/limebb-feed.js +1 -1
  151. package/dist/components/limebb-icon-picker.js +1 -1
  152. package/dist/components/limebb-info-tile-format.js +1 -1
  153. package/dist/components/limebb-info-tile.js +1 -1
  154. package/dist/components/limebb-lime-query-builder.js +1 -1
  155. package/dist/components/limebb-lime-query-filter-comparison-editor.d.ts +11 -0
  156. package/dist/components/limebb-lime-query-filter-comparison-editor.js +1 -0
  157. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  158. package/dist/components/limebb-locale-picker.js +1 -1
  159. package/dist/components/limebb-mention-group-counter.js +1 -1
  160. package/dist/components/limebb-rule-arg-filter-editor.js +1 -1
  161. package/dist/components/limebb-rule-editor.js +1 -1
  162. package/dist/components/limebb-rule-gate.js +1 -1
  163. package/dist/components/limebb-text-editor.js +1 -1
  164. package/dist/components/limebb-trend-indicator.js +1 -1
  165. package/dist/components/limetype-field.js +1 -1
  166. package/dist/components/live-docs-info.js +1 -1
  167. package/dist/components/notification-item.js +1 -1
  168. package/dist/components/order-by-editor.js +1 -1
  169. package/dist/components/order-by-item.js +1 -1
  170. package/dist/components/percentage-visualizer.js +1 -1
  171. package/dist/components/property-selector.js +1 -1
  172. package/dist/components/response-format-item.js +1 -1
  173. package/dist/components/rule-chip-popover.js +1 -1
  174. package/dist/components/summary-popover.js +1 -1
  175. package/dist/components/typing-indicator.js +1 -1
  176. package/dist/esm/filter-group-logic-RXn-GGk1.js +126 -0
  177. package/dist/esm/{index-BIwHMk6j.js → index-DYpn0EkA.js} +12 -0
  178. package/dist/esm/{index.esm-CJU4N9K8.js → index.esm-DAe4_MLR.js} +1 -1
  179. package/dist/esm/lime-crm-building-blocks.js +3 -3
  180. package/dist/esm/lime-query-operators-DYlN1dAt.js +63 -0
  181. package/dist/esm/{lime-query-validation-COGfPUFN.js → lime-query-validation-DXxPZ2CH.js} +1 -1
  182. package/dist/esm/limebb-alert-dialog.entry.js +2 -2
  183. package/dist/esm/limebb-browser.entry.js +4 -4
  184. package/dist/esm/limebb-chat-icon-list_3.entry.js +6 -6
  185. package/dist/esm/limebb-chat-list.entry.js +3 -3
  186. package/dist/esm/limebb-color-palette-picker.entry.js +2 -2
  187. package/dist/esm/limebb-color-palette-swatches.entry.js +2 -2
  188. package/dist/esm/limebb-component-config.entry.js +3 -3
  189. package/dist/esm/limebb-component-picker.entry.js +2 -2
  190. package/dist/esm/limebb-composer-toolbar.entry.js +4 -4
  191. package/dist/esm/limebb-currency-picker.entry.js +3 -3
  192. package/dist/esm/limebb-dashboard-widget.entry.js +2 -2
  193. package/dist/esm/limebb-data-cells.entry.js +2 -2
  194. package/dist/esm/limebb-date-picker.entry.js +3 -3
  195. package/dist/esm/limebb-date-range.entry.js +2 -2
  196. package/dist/esm/limebb-document-chips.entry.js +2 -2
  197. package/dist/esm/limebb-document-item.entry.js +3 -3
  198. package/dist/esm/limebb-document-picker.entry.js +2 -2
  199. package/dist/esm/limebb-empty-state.entry.js +1 -1
  200. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +2 -2
  201. package/dist/esm/limebb-feed-timeline-item.entry.js +3 -3
  202. package/dist/esm/limebb-feed.entry.js +3 -3
  203. package/dist/esm/limebb-icon-picker.entry.js +2 -2
  204. package/dist/esm/limebb-info-tile-currency-format.entry.js +1 -1
  205. package/dist/esm/limebb-info-tile-date-format.entry.js +1 -1
  206. package/dist/esm/limebb-info-tile-decimal-format.entry.js +1 -1
  207. package/dist/esm/limebb-info-tile-format.entry.js +2 -2
  208. package/dist/esm/limebb-info-tile-relative-date-format.entry.js +1 -1
  209. package/dist/esm/limebb-info-tile-unit-format.entry.js +1 -1
  210. package/dist/esm/limebb-info-tile.entry.js +4 -4
  211. package/dist/esm/limebb-kanban-group.entry.js +3 -3
  212. package/dist/esm/limebb-kanban-item.entry.js +3 -3
  213. package/dist/esm/limebb-kanban.entry.js +1 -1
  214. package/dist/esm/limebb-lime-query-builder.entry.js +4 -4
  215. package/dist/esm/limebb-lime-query-filter-builder.entry.js +4 -8
  216. package/dist/esm/{limebb-lime-query-filter-group_3.entry.js → limebb-lime-query-filter-comparison-editor_4.entry.js} +158 -188
  217. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +83 -121
  218. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +5 -5
  219. package/dist/esm/limebb-lime-query-order-by-item.entry.js +3 -3
  220. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +4 -4
  221. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +2 -2
  222. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  223. package/dist/esm/limebb-live-docs-info.entry.js +3 -3
  224. package/dist/esm/limebb-loader.entry.js +2 -2
  225. package/dist/esm/limebb-locale-picker.entry.js +3 -3
  226. package/dist/esm/limebb-mention-group-counter.entry.js +3 -3
  227. package/dist/esm/limebb-mention.entry.js +2 -2
  228. package/dist/esm/limebb-navigation-button_2.entry.js +3 -3
  229. package/dist/esm/limebb-notification-item.entry.js +3 -3
  230. package/dist/esm/limebb-notification-list.entry.js +2 -2
  231. package/dist/esm/limebb-object-chip.entry.js +3 -3
  232. package/dist/esm/limebb-percentage-visualizer.entry.js +4 -4
  233. package/dist/esm/limebb-property-selector.entry.js +42 -19
  234. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +2 -2
  235. package/dist/esm/limebb-rule-chip-popover.entry.js +4 -4
  236. package/dist/esm/limebb-rule-editor.entry.js +104 -12
  237. package/dist/esm/limebb-rule-gate.entry.js +3 -3
  238. package/dist/esm/limebb-text-editor-picker.entry.js +1 -1
  239. package/dist/esm/limebb-text-editor.entry.js +4 -4
  240. package/dist/esm/limebb-trend-indicator.entry.js +3 -3
  241. package/dist/esm/{limetype-Dc4uQPMG.js → limetype-C1wEJnPI.js} +1 -1
  242. package/dist/esm/loader.js +3 -3
  243. package/dist/esm/{web-component-template-6zRYia86.js → web-component-template-D6zkEjKN.js} +1 -1
  244. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  245. package/dist/lime-crm-building-blocks/{p-34eb61da.entry.js → p-00d00277.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/p-072756ea.entry.js +1 -0
  247. package/dist/lime-crm-building-blocks/{p-32c3789e.entry.js → p-07ef2fd0.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/{p-c609b5ec.entry.js → p-0ba1294a.entry.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-7fee7ef3.entry.js → p-0fac2307.entry.js} +1 -1
  250. package/dist/lime-crm-building-blocks/{p-97e6712f.entry.js → p-16fa6f3e.entry.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-0c572fe9.entry.js → p-18ce3ce5.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/p-1dfdf045.entry.js +1 -0
  253. package/dist/lime-crm-building-blocks/{p-20206710.entry.js → p-22296e19.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/{p-1747221f.entry.js → p-24337de2.entry.js} +1 -1
  255. package/dist/lime-crm-building-blocks/{p-de6f4670.entry.js → p-3996a598.entry.js} +1 -1
  256. package/dist/lime-crm-building-blocks/{p-d2a01f51.entry.js → p-3bff70d2.entry.js} +1 -1
  257. package/dist/lime-crm-building-blocks/{p-7c96b265.entry.js → p-3c437049.entry.js} +1 -1
  258. package/dist/lime-crm-building-blocks/{p-3a112b17.entry.js → p-43af24b5.entry.js} +1 -1
  259. package/dist/lime-crm-building-blocks/{p-2cb31064.entry.js → p-464b02c2.entry.js} +1 -1
  260. package/dist/lime-crm-building-blocks/{p-02565865.entry.js → p-47a7b3fd.entry.js} +1 -1
  261. package/dist/lime-crm-building-blocks/{p-e6083593.entry.js → p-4c10bea0.entry.js} +1 -1
  262. package/dist/lime-crm-building-blocks/{p-e7a10082.entry.js → p-4e0d077b.entry.js} +1 -1
  263. package/dist/lime-crm-building-blocks/{p-25d8a718.entry.js → p-5006c5ea.entry.js} +1 -1
  264. package/dist/lime-crm-building-blocks/{p-c678f22f.entry.js → p-52c07130.entry.js} +1 -1
  265. package/dist/lime-crm-building-blocks/{p-492b1b0c.entry.js → p-55692241.entry.js} +1 -1
  266. package/dist/lime-crm-building-blocks/{p-b2383e7f.entry.js → p-5573a867.entry.js} +1 -1
  267. package/dist/lime-crm-building-blocks/{p-bec4231f.entry.js → p-563d69ff.entry.js} +1 -1
  268. package/dist/lime-crm-building-blocks/{p-32f8477f.entry.js → p-571777c3.entry.js} +1 -1
  269. package/dist/lime-crm-building-blocks/{p-4446f170.entry.js → p-58e63c29.entry.js} +1 -1
  270. package/dist/lime-crm-building-blocks/{p-31d8f414.entry.js → p-5a718d20.entry.js} +1 -1
  271. package/dist/lime-crm-building-blocks/{p-9c27e558.entry.js → p-5eef1781.entry.js} +1 -1
  272. package/dist/lime-crm-building-blocks/{p-861ac606.entry.js → p-603ab702.entry.js} +1 -1
  273. package/dist/lime-crm-building-blocks/{p-3252e153.entry.js → p-661e4700.entry.js} +1 -1
  274. package/dist/lime-crm-building-blocks/{p-184ae23d.entry.js → p-68a951f5.entry.js} +1 -1
  275. package/dist/lime-crm-building-blocks/{p-ed1e7e34.entry.js → p-692084d2.entry.js} +1 -1
  276. package/dist/lime-crm-building-blocks/{p-1428aa13.entry.js → p-6ee28dfc.entry.js} +1 -1
  277. package/dist/lime-crm-building-blocks/{p-fdd236ff.entry.js → p-725e6748.entry.js} +1 -1
  278. package/dist/lime-crm-building-blocks/{p-c394c1f6.entry.js → p-7a4704dc.entry.js} +1 -1
  279. package/dist/lime-crm-building-blocks/{p-48c2b617.entry.js → p-7b9359cc.entry.js} +1 -1
  280. package/dist/lime-crm-building-blocks/{p-6ff38954.entry.js → p-7d969bbe.entry.js} +1 -1
  281. package/dist/lime-crm-building-blocks/{p-eb8d58ab.entry.js → p-7f5c97fe.entry.js} +1 -1
  282. package/dist/lime-crm-building-blocks/{p-6cceabf1.entry.js → p-81655182.entry.js} +1 -1
  283. package/dist/lime-crm-building-blocks/p-8238723b.entry.js +1 -0
  284. package/dist/lime-crm-building-blocks/{p-2a3098a7.entry.js → p-898b097e.entry.js} +1 -1
  285. package/dist/lime-crm-building-blocks/{p-46c00a4b.entry.js → p-8d14a58a.entry.js} +1 -1
  286. package/dist/lime-crm-building-blocks/{p-48deac2a.entry.js → p-8d5311e4.entry.js} +1 -1
  287. package/dist/lime-crm-building-blocks/{p-08eb070d.entry.js → p-8ed7b025.entry.js} +1 -1
  288. package/dist/lime-crm-building-blocks/p-99464fa7.entry.js +1 -0
  289. package/dist/lime-crm-building-blocks/{p-C_tMNOSt.js → p-BKtEmDNs.js} +1 -1
  290. package/dist/lime-crm-building-blocks/{p-BV8CPdbi.js → p-BbFGcMnU.js} +1 -1
  291. package/dist/lime-crm-building-blocks/{p-C84z8BwL.js → p-CqRNpSRV.js} +1 -1
  292. package/dist/lime-crm-building-blocks/p-D3UYWGdn.js +1 -0
  293. package/dist/lime-crm-building-blocks/p-DYpn0EkA.js +2 -0
  294. package/dist/lime-crm-building-blocks/{p-BsNp-hBU.js → p-DzXJyKRS.js} +1 -1
  295. package/dist/lime-crm-building-blocks/{p-d910699a.entry.js → p-a5850f04.entry.js} +1 -1
  296. package/dist/lime-crm-building-blocks/{p-8d3fa274.entry.js → p-a6103d04.entry.js} +1 -1
  297. package/dist/lime-crm-building-blocks/{p-b24b7338.entry.js → p-b01f2045.entry.js} +1 -1
  298. package/dist/lime-crm-building-blocks/{p-731820f0.entry.js → p-b16bbda2.entry.js} +1 -1
  299. package/dist/lime-crm-building-blocks/{p-dabb227b.entry.js → p-b424f55f.entry.js} +1 -1
  300. package/dist/lime-crm-building-blocks/p-b95b94b6.entry.js +1 -0
  301. package/dist/lime-crm-building-blocks/{p-2a46f4be.entry.js → p-bd264cfa.entry.js} +1 -1
  302. package/dist/lime-crm-building-blocks/{p-9e5862de.entry.js → p-c7c5991f.entry.js} +1 -1
  303. package/dist/lime-crm-building-blocks/{p-c9003b76.entry.js → p-dc1d543d.entry.js} +1 -1
  304. package/dist/lime-crm-building-blocks/{p-e4fe45d3.entry.js → p-dc3a86f3.entry.js} +1 -1
  305. package/dist/lime-crm-building-blocks/p-ec335be5.entry.js +1 -0
  306. package/dist/lime-crm-building-blocks/{p-5743a74e.entry.js → p-ecd0280d.entry.js} +1 -1
  307. package/dist/lime-crm-building-blocks/p-efab4f7e.entry.js +1 -0
  308. package/dist/lime-crm-building-blocks/{p-9f7992b0.entry.js → p-efb70fbb.entry.js} +1 -1
  309. package/dist/lime-crm-building-blocks/{p-3263f8d5.entry.js → p-f011673a.entry.js} +1 -1
  310. package/dist/lime-crm-building-blocks/p-y_s8hZmV.js +1 -0
  311. package/dist/types/components/lime-query-builder/expressions/filter-group-logic.d.ts +56 -54
  312. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.d.ts +29 -0
  313. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-comparison.d.ts +12 -9
  314. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-expression.d.ts +4 -0
  315. package/dist/types/components/lime-query-builder/expressions/lime-query-filter-group.d.ts +14 -30
  316. package/dist/types/components/lime-query-builder/expressions/lime-query-operators.d.ts +12 -0
  317. package/dist/types/components/lime-query-builder/property-selector/property-selector.d.ts +1 -0
  318. package/dist/types/components/rule-editor/rule-editor-views.d.ts +2 -1
  319. package/dist/types/components/rule-editor/rule-editor.d.ts +54 -3
  320. package/dist/types/components/rule-editor/view-helpers.d.ts +8 -1
  321. package/dist/types/components.d.ts +136 -49
  322. package/package.json +2 -2
  323. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-expression.css +0 -137
  324. package/dist/lime-crm-building-blocks/p-6002654f.entry.js +0 -1
  325. package/dist/lime-crm-building-blocks/p-7acd06eb.entry.js +0 -1
  326. package/dist/lime-crm-building-blocks/p-89b43ac5.entry.js +0 -1
  327. package/dist/lime-crm-building-blocks/p-BIwHMk6j.js +0 -2
  328. package/dist/lime-crm-building-blocks/p-a3556715.entry.js +0 -1
  329. package/dist/lime-crm-building-blocks/p-bd6e12e6.entry.js +0 -1
  330. package/dist/lime-crm-building-blocks/p-c6a913af.entry.js +0 -1
  331. package/dist/lime-crm-building-blocks/p-c6fee2bd.entry.js +0 -1
@@ -1,205 +1,131 @@
1
- @charset "UTF-8";
2
- /**
3
- * Root-level entry point for consuming @limetech/lime-elements SCSS utilities.
4
- *
5
- * This file enables the clean import path:
6
- * `@use '@limetech/lime-elements' as lime-elements;`
7
- *
8
- * It simply forwards everything from the built exports file.
9
- */
10
- /**
11
- * Public SCSS exports for consumers of @limetech/lime-elements.
12
- *
13
- * This file provides reusable styling utilities.
14
- *
15
- * Import this file using:
16
- * `@use '@limetech/lime-elements' as lime-elements;`
17
- *
18
- * For detailed documentation of each utility, its parameters,
19
- * and usage examples, refer to the respective source files.
20
- */
21
- /**
22
- * Note! This file is forwarded via `src/style/exports.scss`
23
- * and exposed to consumers through the root `index.scss`.
24
- *
25
- * Consumers import it using:
26
- * `@use '@limetech/lime-elements' as lime-elements;`
27
- *
28
- * Legacy import paths (`dist/scss/mixins`) are maintained
29
- * for backward compatibility via copy rules in the Stencil config.
30
- */
31
- /**
32
- * Neutralizes the user-agent styles that browsers apply to `<button>` elements
33
- * (their default background, border, padding, font, etc.), without stripping
34
- * the useful defaults that `all: unset;` would also remove
35
- * (such as `display`, `cursor`, and focus behavior).
36
- *
37
- * Prefer this mixin over `all: unset;` on `<button>` elements, then layer
38
- * the styling you want on top — often one of the `is-*-clickable` mixins.
39
- */
40
- /**
41
- * This can be used on a trigger element that opens a dropdown menu or a popover.
42
- */
43
- /**
44
- * This mixin will mask out the content that is close to
45
- * the edges of a scrollable area.
46
- * - If the scrollable content has `overflow-y`, use `vertically`
47
- * as an argument for `$direction`.
48
- - If the scrollable content has `overflow-x`, use `horizontally`
49
- * as an argument for `$direction`.
50
- *
51
- * For the visual effect to work smoothly, we need to make sure that
52
- * the size of the fade-out edge effect is the same as the
53
- * internal paddings of the scrollable area. Otherwise, content of a
54
- * scrollable area that does not have a padding will fade out before
55
- * any scrolling has been done.
56
- * This is why this mixin already adds paddings, which automatically
57
- * default to the size of the fade-out effect.
58
- * This size defaults to `1rem`, but to override the size use
59
- * `--limel-top-edge-fade-height` & `--limel-bottom-edge-fade-height`
60
- * when `vertically` argument is set, and use
61
- * `--limel-left-edge-fade-width` & `--limel-right-edge-fade-width`
62
- * when `horizontally` argument is set.
63
- * Of course you can also programmatically increase and decrease the
64
- * size of these variables for each edge, based on the amount of
65
- * scrolling that has been done by the user. In this case, make sure
66
- * to add a custom padding where the mixin is used, to override
67
- * the paddings that are automatically added by the mixin in the
68
- * compiled CSS code.
69
- */
70
- /**
71
- * This mixin will add an animated underline to the bottom of an `a` elements.
72
- * Note that you may need to add `all: unset;` –depending on your use case–
73
- * before using this mixin.
74
- */
75
- /**
76
- * This mixin creates a cross-browser font stack.
77
- * - `sans-serif` can be used for the UI of the components.
78
- * - `monospace` can be used for code.
79
- *
80
- * ⚠️ If we change the font stacks, we need to update
81
- * 1. the consumer documentation in `README.md`, and
82
- * 2. the CSS variables of `--kompendium-example-font-family`
83
- * in the `<style>` tag of `index.html`.
84
- */
85
- /**
86
- * This mixin is a hack, using old CSS syntax
87
- * to enable you to truncate a piece of text,
88
- * after a certain number of lines.
89
- */
90
- /**
91
- * This mixin will add a chessboard background pattern,
92
- * typically used to visualize transparency.
93
- */
94
- /**
95
- * Make a container resizable by the user.
96
- * This is used in the documentations and examples
97
- * of some components, to demonstrate how the component
98
- * behaves in a resizable container.
99
- */
100
- /**
101
- * Drag to reorder mixins
102
- */
103
- /**
104
- * The breakpoints below are used to create responsive designs
105
- * in Lime's products. Therefore, they are here to get distributed
106
- * to all components in other private repos, which rely on this `mixins`
107
- * file, to create consistent styles.
108
- *
109
- * :::important
110
- * In very rare cases you should used media queries!
111
- * Nowadays, there are many better ways of achieving responsive design
112
- * without media queries. For example, using CSS Grid, Flexbox, and their features.
113
- * :::
114
- */
115
- /**
116
- * Media query mixins for responsive design based on screen width.
117
- * Note that these mixins do not detect the device type!
118
- */
119
- /**
120
- * @mixin action-bar-interactions($item-selector)
121
- * This mixin applies styles for the action bar interactions.
122
- * For example, it animates the height of the action bar from `0` to `auto`.
123
- *
124
- * :::note
125
- * The consumer should set:
126
- * `--limebb-promoted-action-bar-grid-template-rows: 0fr;`
127
- * when the action bar is not supposed to be visible.
128
- * :::
129
- *
130
- * @param {string} $item-selector - The consumer component's tag name for the item that displays the action bar.
131
- */
132
1
  *,
133
- *::before,
2
+ *:before,
134
3
  *::after {
135
4
  box-sizing: border-box;
136
5
  }
137
6
 
138
- limebb-lime-query-filter-expression {
7
+ :host(limebb-lime-query-filter-group) {
8
+ --group-rail-color: var(--limebb-query-filter-group-color-code);
9
+ display: flex;
10
+ flex-direction: column;
11
+ gap: 1.5rem;
12
+ }
13
+
14
+ :host([data-op=AND]) {
15
+ --combinator-symbol: "&";
16
+ }
17
+
18
+ :host([data-op=NOT_AND]) {
19
+ --combinator-symbol: "- &";
20
+ }
21
+
22
+ :host([data-op=OR]) {
23
+ --combinator-symbol: "or";
24
+ }
25
+
26
+ :host([data-op=NOT_OR]) {
27
+ --combinator-symbol: "- or";
28
+ }
29
+
30
+ .group {
139
31
  position: relative;
140
- isolation: isolate;
32
+ display: flex;
33
+ flex-direction: column;
34
+ gap: 1rem;
35
+ padding: 0.5rem;
36
+ border-radius: 0.75rem;
37
+ background-color: rgb(var(--contrast-800), 0.15);
38
+ transition: box-shadow 120ms ease;
141
39
  }
142
- limebb-lime-query-filter-expression:not(:first-of-type):after {
40
+ .group:before {
143
41
  content: "";
144
42
  position: absolute;
145
- top: -0.5rem;
146
- left: 0.75rem;
147
- display: block;
148
- border-radius: 1rem;
149
- height: 2rem;
43
+ top: 1rem;
44
+ bottom: calc(1rem + 1.75rem);
45
+ left: 0;
150
46
  width: 0.125rem;
151
- background-color: var(--limebb-lime-query-builder-group-color);
47
+ transform: translateX(-50%);
48
+ border-radius: 1rem;
49
+ background-color: var(--group-rail-color);
152
50
  }
153
- limebb-lime-query-filter-expression:not(:first-of-type):before {
154
- position: relative;
155
- z-index: 1;
51
+ .group:has(limel-icon-button.delete-group:hover), .group:has(limel-icon-button.delete-group:focus-within) {
52
+ box-shadow: var(--shadow-error-state);
53
+ }
54
+
55
+ .group-header {
156
56
  display: flex;
157
- justify-content: center;
158
57
  align-items: center;
159
- height: 1rem;
160
- content: var(--limebb-lime-query-filter-group-operator);
161
- display: inline-block;
162
- margin: 0 auto 0.5rem auto;
163
- transform: translateY(-50%);
164
- font-size: 0.625rem;
165
- padding: 0 0.5rem;
166
- color: rgb(var(--color-blue-dark));
167
- background-color: var(--limebb-lime-query-builder-group-color);
168
- border-radius: 2rem;
58
+ gap: 0.5rem;
169
59
  }
170
60
 
171
- .expression {
172
- display: flex;
173
- flex-direction: column;
174
- margin-bottom: 1rem;
175
- gap: 0;
176
- background-color: rgb(var(--contrast-100));
177
- border-radius: 0.75rem;
178
- border: 1px solid var(--limebb-lime-query-builder-group-color);
61
+ limel-select.combinator {
62
+ min-width: 9rem;
63
+ }
64
+
65
+ limel-icon-button.delete-group {
66
+ margin-left: auto;
67
+ opacity: 0;
68
+ transition: opacity 120ms ease;
69
+ }
70
+
71
+ limel-chip.add-group {
72
+ --lime-elevated-surface-background-color: transparent;
73
+ --button-shadow-normal: none;
74
+ isolation: isolate;
75
+ position: relative;
76
+ margin-right: auto;
77
+ }
78
+ limel-chip.add-group:after {
79
+ content: "";
80
+ position: absolute;
81
+ width: 0.5rem;
82
+ height: 1.75rem;
83
+ top: 0;
84
+ left: calc(0.5rem * -1 - 0.125rem / 2);
85
+ border-width: 0 0 0.125rem 0.125rem;
86
+ border-color: var(--group-rail-color);
87
+ border-style: solid;
88
+ border-radius: 0 0 0 0.5rem;
89
+ transform: translateY(calc(-50% - 0.125rem / 2));
90
+ }
91
+
92
+ .group:hover > .group-header > limel-icon-button.delete-group,
93
+ limel-icon-button.delete-group:focus-within {
94
+ opacity: 1;
179
95
  }
180
- .expression ul {
96
+
97
+ ul.rows {
181
98
  list-style: none;
182
99
  margin: 0;
183
- padding: 0.5rem;
184
100
  display: flex;
185
- flex-direction: column;
101
+ flex-direction: row;
102
+ flex-wrap: wrap;
186
103
  align-items: center;
187
- gap: 1rem;
104
+ column-gap: 0.5rem;
105
+ row-gap: 0.5rem;
106
+ padding: 0 0.5rem 0.5rem 0.5rem;
188
107
  }
189
- .expression ul [role=listitem] {
108
+
109
+ li.row {
190
110
  list-style: none;
191
- width: 100%;
111
+ position: relative;
192
112
  }
193
-
194
- limel-button.add-group {
195
- width: fit-content;
196
- margin: 0.5rem;
113
+ li.row:has(> limebb-lime-query-filter-expression > limebb-lime-query-filter-group) {
114
+ flex-basis: 100%;
115
+ align-self: stretch;
197
116
  }
198
-
199
- limel-icon-button.delete-group {
200
- margin-left: 0.5rem;
117
+ li.row + li.row:before {
118
+ content: var(--combinator-symbol);
119
+ color: var(--limebb-query-filter-group-color-code);
120
+ font-size: 0.75rem;
121
+ font-weight: 600;
201
122
  }
202
-
203
- limel-select.operator-select {
204
- min-width: 8rem;
123
+ li.row + li.row:has(> limebb-lime-query-filter-expression > limebb-lime-query-filter-group):before {
124
+ position: absolute;
125
+ left: 0;
126
+ top: 0;
127
+ transform: translate(-50%, -50%);
128
+ }
129
+ li.row + li.row:not(:has(> limebb-lime-query-filter-expression > limebb-lime-query-filter-group)):before {
130
+ margin-right: 0.5rem;
205
131
  }
@@ -1,108 +1,112 @@
1
- import { h, Host, } from "@stencil/core";
1
+ import { h, Host } from "@stencil/core";
2
2
  import { Operator, } from "@limetech/lime-web-components";
3
- import { addExpressionToGroup, createEmptyComparison, createNestedGroup, getFilterGroupSubheading, toggleGroupOperator, updateChildExpression, } from "./filter-group-logic";
3
+ import { addExpressionToGroup, createEmptyComparison, createNestedGroup, getCombinator, getInnerAndOr, setCombinator, updateChildExpression, } from "./filter-group-logic";
4
+ const OP_STYLE = {
5
+ AND: {
6
+ color: 'rgb(var(--contrast-900))',
7
+ iconName: 'dot_circle',
8
+ text: 'All of',
9
+ secondaryText: 'True when every condition is true',
10
+ },
11
+ OR: {
12
+ color: 'rgb(var(--color-sky-default))',
13
+ iconName: 'centre_point',
14
+ text: 'Any of',
15
+ secondaryText: 'True when at least one condition is true',
16
+ },
17
+ NOT_AND: {
18
+ color: 'rgb(var(--color-orange-default))',
19
+ iconName: 'dot_circle',
20
+ text: 'Not all of',
21
+ secondaryText: 'True when at least one condition is false',
22
+ },
23
+ NOT_OR: {
24
+ color: 'rgb(var(--color-red-default))',
25
+ iconName: 'centre_point',
26
+ text: 'None of',
27
+ secondaryText: 'True when every condition is false',
28
+ },
29
+ };
30
+ const COMBINATOR_OPTIONS = ['AND', 'OR', 'NOT_AND', 'NOT_OR'].map((value) => ({
31
+ text: OP_STYLE[value].text,
32
+ secondaryText: OP_STYLE[value].secondaryText,
33
+ value,
34
+ icon: { name: OP_STYLE[value].iconName, color: OP_STYLE[value].color },
35
+ }));
4
36
  /**
5
37
  * Lime Query Filter Group Component
6
38
  *
7
- * Renders a group of filter expressions with AND/OR logic that can be toggled.
8
- * Users can click the header to toggle between "All conditions" (AND) and
9
- * "Any condition" (OR).
10
- *
11
- * This component displays:
12
- * - A clickable header showing the current logic (AND/OR)
13
- * - A list of child expressions (which can be comparisons or nested groups)
14
- * - An "Add" button to add more expressions
15
- *
16
- * Clicking the header toggles between AND and OR logic.
17
- * If a child component emits an ExpressionChange event with undefined, the
18
- * child is removed from the group.
39
+ * Renders a group of filter expressions with a combinator picker that selects
40
+ * between All, Any, Not all, and Not any. The first two map to a bare AND/OR
41
+ * group; the latter two wrap the same group in a NOT expression. Choosing a
42
+ * value re-shapes the group, preserving all children.
19
43
  *
20
44
  * @private
21
45
  */
22
46
  export class LimeQueryFilterGroupComponent {
23
47
  constructor() {
24
- this.options = [
25
- {
26
- text: 'All',
27
- secondaryText: 'AND operator',
28
- value: 'and',
29
- },
30
- {
31
- text: 'Any',
32
- secondaryText: 'OR operator',
33
- value: 'or',
34
- },
35
- ];
36
- this.renderChildExpression = (expression, childIndex) => (h("limebb-lime-query-filter-expression", { role: "listitem", platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: expression, onExpressionChange: this.handleExpressionChange(childIndex) }));
48
+ this.renderChildExpression = (expression, childIndex) => (h("li", { class: "row" }, h("limebb-lime-query-filter-expression", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: expression, onExpressionChange: this.handleChildExpressionChange(childIndex) })));
49
+ this.handleCombinatorChange = (event) => {
50
+ event.stopPropagation();
51
+ const next = event.detail.value;
52
+ if (!next || next === getCombinator(this.expression)) {
53
+ return;
54
+ }
55
+ this.expressionChange.emit(setCombinator(this.expression, next));
56
+ };
37
57
  this.handleDeleteGroup = () => {
38
58
  this.expressionChange.emit();
39
59
  };
40
- this.handleToggleOperator = (event) => {
41
- const selectedOption = Array.isArray(event.detail)
42
- ? event.detail[0]
43
- : event.detail;
44
- this.value = selectedOption;
45
- const newOp = selectedOption.value === 'and' ? Operator.AND : Operator.OR;
46
- if (newOp !== this.expression.op) {
47
- const newGroup = toggleGroupOperator(this.expression);
48
- this.expressionChange.emit(newGroup);
49
- }
50
- };
51
60
  this.handleAddChildExpression = () => {
52
- const newChild = createEmptyComparison();
53
- const newGroup = addExpressionToGroup(this.expression, newChild);
54
- this.expressionChange.emit(newGroup);
61
+ const inner = getInnerAndOr(this.expression);
62
+ const updatedInner = addExpressionToGroup(inner, createEmptyComparison());
63
+ this.expressionChange.emit(this.wrap(updatedInner));
55
64
  };
56
65
  this.handleAddChildGroup = () => {
57
- const newChild = createNestedGroup(this.expression.op);
58
- const newGroup = addExpressionToGroup(this.expression, newChild);
59
- this.expressionChange.emit(newGroup);
66
+ const inner = getInnerAndOr(this.expression);
67
+ const newChild = createNestedGroup(inner.op);
68
+ const updatedInner = addExpressionToGroup(inner, newChild);
69
+ this.expressionChange.emit(this.wrap(updatedInner));
60
70
  };
61
- this.handleExpressionChange = (updatedChildIndex) => (event) => {
71
+ this.handleChildExpressionChange = (childIndex) => (event) => {
62
72
  event.stopPropagation();
63
- const updatedExpression = event.detail;
64
- const result = updateChildExpression(this.expression, updatedChildIndex, updatedExpression);
73
+ const inner = getInnerAndOr(this.expression);
74
+ const result = updateChildExpression(inner, childIndex, event.detail);
75
+ if (result.type === 'removed') {
76
+ this.expressionChange.emit(undefined);
77
+ return;
78
+ }
79
+ if (this.isNegated) {
80
+ this.expressionChange.emit({
81
+ op: Operator.NOT,
82
+ exp: result.expression,
83
+ });
84
+ return;
85
+ }
65
86
  this.expressionChange.emit(result.expression);
66
87
  };
67
88
  }
68
- // Initialize value to match current operator
69
- componentWillLoad() {
70
- this.value =
71
- this.options.find((option) => option.value ===
72
- (this.expression.op === Operator.AND ? 'and' : 'or')) || this.options[0];
73
- }
74
89
  render() {
75
- return (h(Host, { key: '4b1647c741b78253b4ce4ed1bd347800da394563', style: {
76
- '--limebb-lime-query-filter-group-operator': `"${this.expression.op === Operator.AND ? 'AND' : 'OR'}"`,
77
- } }, h("div", { key: '47fd3000275e17ef70d86af5e6abcb492806ffba', class: "expression" }, this.renderHeader(), h("ul", { key: '224249a4b305eb2b20c1aedad98d2c3191d47e83' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
78
- }
79
- renderHeader() {
80
- const subheading = this.getSubheading();
81
- if (!subheading) {
82
- return null;
83
- }
84
- return (h("limel-header", { subheading: subheading }, this.renderOperators(), this.renderDeleteGroupButton()));
85
- }
86
- renderOperators() {
87
- return (h("limel-select", { class: "operator-select", slot: "actions", value: this.value, options: this.options, onChange: this.handleToggleOperator }));
88
- }
89
- renderDeleteGroupButton() {
90
- return (h("limel-icon-button", { class: "delete-group", slot: "actions", icon: "trash", label: "Delete This Group", onClick: this.handleDeleteGroup }));
91
- }
92
- getSubheading() {
93
- return getFilterGroupSubheading(this.expression.op, this.expression.exp.length);
94
- }
95
- renderAddButton() {
96
- return (h("limel-button", { role: "listitem", label: "Condition", icon: {
90
+ const combinator = getCombinator(this.expression);
91
+ const inner = getInnerAndOr(this.expression);
92
+ const selected = COMBINATOR_OPTIONS.find((o) => o.value === combinator);
93
+ return (h(Host, { key: 'c9ca20c6b893416088807266fede19e5a24e360d', "data-op": combinator, style: {
94
+ '--limebb-query-filter-group-color-code': OP_STYLE[combinator].color,
95
+ } }, h("div", { key: '8efe9e6e4d1ba552b8a761ec23b18668a1aef7f3', class: "group" }, h("div", { key: 'e99bb85a9532431a63ce0916dc4882a2f73d2307', class: "group-header" }, h("limel-select", { key: '981fd5c1d4755ef937451144245640228ed515a9', class: "combinator", label: "Match", value: selected, options: COMBINATOR_OPTIONS, onChange: this.handleCombinatorChange }), h("limel-icon-button", { key: 'caa427e897501a12a98a370c4d2364564904c042', class: "delete-group", icon: "trash", label: "Delete this group", onClick: this.handleDeleteGroup })), h("ul", { key: '8a21efdd1d783b11bb00f39c3579eec7277a505e', class: "rows" }, inner.exp.map(this.renderChildExpression), h("limel-chip", { key: 'b4612f1899060f2f553283cc7afac53777b0c1ef', role: "listitem", class: "add-condition", text: "Condition", icon: { name: 'plus_math', title: 'Add' }, onClick: this.handleAddChildExpression })), h("limel-chip", { key: '7046abfe1929fa13f4de3e90285610280467fd76', class: "add-group", size: "small", text: "Group", icon: {
97
96
  name: 'plus_math',
98
97
  title: 'Add',
99
- }, onClick: this.handleAddChildExpression }));
98
+ color: 'var(--group-rail-color)',
99
+ }, onClick: this.handleAddChildGroup }))));
100
100
  }
101
- renderAddGroupButton() {
102
- return (h("limel-button", { class: "add-group", label: "Group", icon: {
103
- name: 'plus_math',
104
- title: 'Add',
105
- }, onClick: this.handleAddChildGroup }));
101
+ get isNegated() {
102
+ return this.expression.op === Operator.NOT;
103
+ }
104
+ wrap(inner) {
105
+ if (this.isNegated) {
106
+ const wrapped = { op: Operator.NOT, exp: inner };
107
+ return wrapped;
108
+ }
109
+ return inner;
106
110
  }
107
111
  static get is() { return "limebb-lime-query-filter-group"; }
108
112
  static get encapsulation() { return "shadow"; }
@@ -208,14 +212,14 @@ export class LimeQueryFilterGroupComponent {
208
212
  "type": "unknown",
209
213
  "mutable": false,
210
214
  "complexType": {
211
- "original": "AndOrExpression",
212
- "resolved": "{ op: Operator.AND | Operator.OR; exp: Expression[]; }",
215
+ "original": "GroupExpression",
216
+ "resolved": "{ op: Operator.AND | Operator.OR; exp: Expression[]; } | { op: Operator.NOT; exp: AndOrExpression; }",
213
217
  "references": {
214
- "AndOrExpression": {
218
+ "GroupExpression": {
215
219
  "location": "import",
216
- "path": "@limetech/lime-web-components",
217
- "id": "node_modules::AndOrExpression",
218
- "referenceLocation": "AndOrExpression"
220
+ "path": "./filter-group-logic",
221
+ "id": "src/components/lime-query-builder/expressions/filter-group-logic.ts::GroupExpression",
222
+ "referenceLocation": "GroupExpression"
219
223
  }
220
224
  }
221
225
  },
@@ -223,18 +227,13 @@ export class LimeQueryFilterGroupComponent {
223
227
  "optional": false,
224
228
  "docs": {
225
229
  "tags": [],
226
- "text": "The group expression (AND or OR)"
230
+ "text": "The group expression: an AND/OR group, optionally wrapped in NOT"
227
231
  },
228
232
  "getter": false,
229
233
  "setter": false
230
234
  }
231
235
  };
232
236
  }
233
- static get states() {
234
- return {
235
- "value": {}
236
- };
237
- }
238
237
  static get events() {
239
238
  return [{
240
239
  "method": "expressionChange",
@@ -244,7 +243,7 @@ export class LimeQueryFilterGroupComponent {
244
243
  "composed": true,
245
244
  "docs": {
246
245
  "tags": [],
247
- "text": "Emitted when the group expression changes\nEmits undefined when expression should be removed\nCan emit any Expression type when unwrapping (single child)"
246
+ "text": "Emitted when the group expression changes.\nEmits undefined when the group itself should be removed."
248
247
  },
249
248
  "complexType": {
250
249
  "original": "Expression | undefined",
@@ -35,7 +35,7 @@ export class LimeQueryFilterNotComponent {
35
35
  };
36
36
  }
37
37
  render() {
38
- return (h("div", { key: '16246e10be820ad18713cb097146040d30e242bf', class: "expression" }, this.label && h("limel-header", { key: '539d60a4567727282463dec2a90e06a3630501aa', heading: this.label }), h("limebb-lime-query-filter-expression", { key: '67f892704ea3e5a061acdcb8f3ffe22271971569', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
38
+ return (h("div", { key: '30b9f2fbe27c8277633ef02fbebbafb227387ed8', class: "expression" }, this.label && h("limel-header", { key: '05b193ac0ec191b1f9394ed48691c24e534ba66c', heading: this.label }), h("limebb-lime-query-filter-expression", { key: '83b6a42631b886735502a8ec6454f5e9c868cc4c', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
39
39
  }
40
40
  static get is() { return "limebb-lime-query-filter-not"; }
41
41
  static get encapsulation() { return "shadow"; }
@@ -0,0 +1,60 @@
1
+ import { Operator, } from "@limetech/lime-web-components";
2
+ export const LIME_QUERY_OPERATORS = [
3
+ {
4
+ value: Operator.EQUALS,
5
+ label: 'webclient.operator.equals',
6
+ icon: '-lime-filter-equal',
7
+ },
8
+ {
9
+ value: Operator.NOT_EQUALS,
10
+ label: 'webclient.operator.not-equals',
11
+ icon: '-lime-filter-equal-not',
12
+ },
13
+ {
14
+ value: Operator.GREATER,
15
+ label: 'webclient.operator.greater-than',
16
+ icon: '-lime-filter-greater',
17
+ applicableTypes: ['integer', 'decimal', 'date', 'time'],
18
+ },
19
+ {
20
+ value: Operator.GREATER_OR_EQUAL,
21
+ label: 'webclient.operator.greater-than-or-equal-to',
22
+ icon: '-lime-filter-greater-equal',
23
+ applicableTypes: ['integer', 'decimal', 'date', 'time'],
24
+ },
25
+ {
26
+ value: Operator.LESS,
27
+ label: 'webclient.operator.less-than',
28
+ icon: '-lime-filter-less',
29
+ applicableTypes: ['integer', 'decimal', 'date', 'time'],
30
+ },
31
+ {
32
+ value: Operator.LESS_OR_EQUAL,
33
+ label: 'webclient.operator.less-than-or-equal-to',
34
+ icon: '-lime-filter-less-equal',
35
+ applicableTypes: ['integer', 'decimal', 'date', 'time'],
36
+ },
37
+ {
38
+ value: Operator.IN,
39
+ label: 'webclient.operator.in-filter',
40
+ icon: '-lime-filter-set-included',
41
+ },
42
+ {
43
+ value: Operator.LIKE,
44
+ label: 'webclient.operator.contains',
45
+ icon: '-lime-filter-contain',
46
+ applicableTypes: ['string', 'text'],
47
+ },
48
+ {
49
+ value: Operator.BEGINS,
50
+ label: 'webclient.operator.begins-with',
51
+ icon: '-lime-filter-starts-with',
52
+ applicableTypes: ['string', 'text'],
53
+ },
54
+ {
55
+ value: Operator.ENDS,
56
+ label: 'webclient.operator.ends-with',
57
+ icon: '-lime-filter-ends-with',
58
+ applicableTypes: ['string', 'text'],
59
+ },
60
+ ];
@@ -172,7 +172,7 @@ export class LimeQueryBuilder {
172
172
  }
173
173
  }
174
174
  render() {
175
- return (h(Host, { key: '9a121529165f1691e32b2b156b128977c5b5ba3a' }, this.renderHeader(), this.renderContent()));
175
+ return (h(Host, { key: '08917b4c102db24180be24f392067ba5ec14569f' }, this.renderHeader(), this.renderContent()));
176
176
  }
177
177
  renderContent() {
178
178
  const visualModeSupported = this.checkVisualModeSupport();
@@ -154,7 +154,7 @@ export class LimeQueryResponseFormatBuilder {
154
154
  }
155
155
  render() {
156
156
  const visualModeSupported = this.checkVisualModeSupport();
157
- return (h("div", { key: '65a41f46fe1088f0d52be0337c427177a1aa1a44', class: "response-format-builder" }, this.label && h("h1", { key: '5a75e321aee3ff6753baccbd72d17c5377f28d28', class: "builder-label" }, this.label), this.helperText && (h("p", { key: 'e13518253b52ff8f847575b4465dc2295c7452f0', class: "builder-helper-text" }, this.helperText)), this.visualModeEnabled && (h("div", { key: '2122357f51fd2185d1b544381eb2199de5b1f56c', class: "mode-controls" }, this.renderModeSwitch(visualModeSupported))), !this.visualModeEnabled || this.mode === 'code' ? (h("div", { class: "code-mode" }, this.renderCodeEditor(visualModeSupported))) : (h("div", { class: "visual-mode" }, this.renderVisualMode()))));
157
+ return (h("div", { key: '6f59c4ff1f5ef1ee726bacbe3b8333cd5f6dff77', class: "response-format-builder" }, this.label && h("h1", { key: '28d5825c0ca043f6f671cf812c174aa028950524', class: "builder-label" }, this.label), this.helperText && (h("p", { key: '1e35efbfaa73c0fd871f813059660eea3d026063', class: "builder-helper-text" }, this.helperText)), this.visualModeEnabled && (h("div", { key: '8cbe1f088d88cbdefbdd092cdf879facdbb807a3', class: "mode-controls" }, this.renderModeSwitch(visualModeSupported))), !this.visualModeEnabled || this.mode === 'code' ? (h("div", { class: "code-mode" }, this.renderCodeEditor(visualModeSupported))) : (h("div", { class: "visual-mode" }, this.renderVisualMode()))));
158
158
  }
159
159
  renderModeSwitch(support) {
160
160
  const visualDisabled = !support.visualModeSupported;
@@ -78,7 +78,7 @@ export class LimetypeField {
78
78
  value: '',
79
79
  };
80
80
  options.unshift(emptyOption);
81
- return (h("limel-select", { key: '20a7d5eb86c746d11ad805083be5ef9f5fd2397d', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
81
+ return (h("limel-select", { key: '85956ae62a4975a7706b4a561b1e321078e0dc2a', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
82
82
  }
83
83
  componentWillRender() {
84
84
  this.updatePropertyFields(this.value || '');
@@ -69,7 +69,7 @@ export class OrderByEditor {
69
69
  }
70
70
  }
71
71
  render() {
72
- return (h(Host, { key: '6ef5ee3cf7b67cc0f821272f9d552eab48b60065' }, this.renderEmptyState(), this.renderOrderByEditor()));
72
+ return (h(Host, { key: '59e3bb0334e5528fc8a0f8747086348d1a195c82' }, this.renderEmptyState(), this.renderOrderByEditor()));
73
73
  }
74
74
  renderEmptyState() {
75
75
  if (this.limetype) {