@limetech/lime-crm-building-blocks 2.0.0 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/cjs/{filter-group-logic-EDLGrkTt.js → filter-group-logic-Bt5tIbfP.js} +1 -1
  3. package/dist/cjs/{filter-operators-CVCyCZ7Q.js → filter-operators-CzIq9qKC.js} +1 -1
  4. package/dist/cjs/{index-BrWc7h0p.js → index-mDIvByXc.js} +47 -11
  5. package/dist/cjs/index.cjs.js +3 -3
  6. package/dist/cjs/{index.esm-CcYbS__E.js → index.esm-D1EzGa8X.js} +3 -3
  7. package/dist/cjs/lime-crm-building-blocks.cjs.js +2 -2
  8. package/dist/cjs/{lime-query-validation-B0oYW7Z6.js → lime-query-validation-Df4GZRGm.js} +1 -1
  9. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +2 -2
  10. package/dist/cjs/limebb-browser.cjs.entry.js +4 -4
  11. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +6 -6
  12. package/dist/cjs/limebb-chat-list.cjs.entry.js +3 -3
  13. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +2 -2
  14. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +2 -2
  15. package/dist/cjs/limebb-component-config.cjs.entry.js +3 -3
  16. package/dist/cjs/limebb-component-picker.cjs.entry.js +2 -2
  17. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +4 -4
  18. package/dist/cjs/limebb-currency-picker.cjs.entry.js +3 -3
  19. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +2 -2
  20. package/dist/cjs/limebb-data-cells.cjs.entry.js +2 -2
  21. package/dist/cjs/limebb-date-picker.cjs.entry.js +3 -3
  22. package/dist/cjs/limebb-date-range.cjs.entry.js +2 -2
  23. package/dist/cjs/limebb-document-chips.cjs.entry.js +2 -2
  24. package/dist/cjs/limebb-document-item.cjs.entry.js +3 -3
  25. package/dist/cjs/limebb-document-picker.cjs.entry.js +2 -2
  26. package/dist/cjs/limebb-empty-state.cjs.entry.js +1 -1
  27. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +2 -2
  28. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +19 -7
  29. package/dist/cjs/limebb-feed.cjs.entry.js +3 -3
  30. package/dist/cjs/limebb-filter-chip_6.cjs.entry.js +7 -7
  31. package/dist/cjs/limebb-icon-picker.cjs.entry.js +2 -2
  32. package/dist/cjs/limebb-info-tile-currency-format.cjs.entry.js +1 -1
  33. package/dist/cjs/limebb-info-tile-date-format.cjs.entry.js +1 -1
  34. package/dist/cjs/limebb-info-tile-decimal-format.cjs.entry.js +1 -1
  35. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +2 -2
  36. package/dist/cjs/limebb-info-tile-relative-date-format.cjs.entry.js +1 -1
  37. package/dist/cjs/limebb-info-tile-unit-format.cjs.entry.js +1 -1
  38. package/dist/cjs/limebb-info-tile.cjs.entry.js +3 -3
  39. package/dist/cjs/limebb-inline-image.cjs.entry.js +2 -2
  40. package/dist/cjs/limebb-kanban-group.cjs.entry.js +3 -3
  41. package/dist/cjs/limebb-kanban-item.cjs.entry.js +2 -2
  42. package/dist/cjs/limebb-kanban.cjs.entry.js +1 -1
  43. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +3 -3
  44. package/dist/cjs/limebb-lime-query-filter-builder.cjs.entry.js +3 -3
  45. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +4 -4
  46. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +3 -3
  47. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +1 -1
  48. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +3 -3
  49. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +32 -27
  50. package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +2 -2
  51. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +1 -1
  52. package/dist/cjs/limebb-loader.cjs.entry.js +2 -2
  53. package/dist/cjs/limebb-locale-picker.cjs.entry.js +2 -2
  54. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +1 -1
  55. package/dist/cjs/limebb-mention.cjs.entry.js +2 -2
  56. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +1 -1
  57. package/dist/cjs/limebb-notification-item.cjs.entry.js +2 -2
  58. package/dist/cjs/limebb-notification-list.cjs.entry.js +2 -2
  59. package/dist/cjs/limebb-object-chip.cjs.entry.js +3 -3
  60. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  61. package/dist/cjs/limebb-property-selector.cjs.entry.js +84 -72
  62. package/dist/cjs/limebb-rule-arg-filter-editor.cjs.entry.js +2 -2
  63. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +3 -3
  64. package/dist/cjs/limebb-rule-editor.cjs.entry.js +2 -2
  65. package/dist/cjs/limebb-rule-gate.cjs.entry.js +2 -2
  66. package/dist/cjs/limebb-text-editor-picker.cjs.entry.js +1 -1
  67. package/dist/cjs/limebb-text-editor.cjs.entry.js +3 -3
  68. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +2 -2
  69. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +4 -4
  70. package/dist/cjs/{limetype-C-fVThrI.js → limetype-BPuuRLtH.js} +2 -1
  71. package/dist/cjs/loader.cjs.js +1 -1
  72. package/dist/cjs/{web-component-template-C9hvjrMm.js → web-component-template-DRMW9wHN.js} +1 -1
  73. package/dist/collection/collection-manifest.json +1 -1
  74. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  75. package/dist/collection/components/browser/browser.js +2 -2
  76. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  77. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  78. package/dist/collection/components/chat-list/chat-list.js +1 -1
  79. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  80. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  81. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  82. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  83. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  84. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  85. package/dist/collection/components/date-picker/date-picker.js +1 -1
  86. package/dist/collection/components/date-range/date-range.js +1 -1
  87. package/dist/collection/components/document-chips/document-chips.js +1 -1
  88. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  89. package/dist/collection/components/document-picker/document-picker.js +1 -1
  90. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +17 -5
  91. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  92. package/dist/collection/components/feed/feed.js +1 -1
  93. package/dist/collection/components/filter-chip/filter-chip.js +2 -2
  94. package/dist/collection/components/filter-condition-picker/filter-condition-picker.js +1 -1
  95. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  96. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  97. package/dist/collection/components/kanban/kanban-group/kanban-group.js +4 -3
  98. package/dist/collection/components/lime-query-builder/property-selection-format.js +31 -26
  99. package/dist/collection/components/lime-query-builder/property-selector/property-selector.js +87 -72
  100. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +1 -1
  101. package/dist/components/chat-icon-list.js +1 -1
  102. package/dist/components/chat-item.js +1 -1
  103. package/dist/components/currency-picker.js +1 -1
  104. package/dist/components/date-picker.js +1 -1
  105. package/dist/components/document-item.js +1 -1
  106. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  107. package/dist/components/feed-timeline-item.js +1 -1
  108. package/dist/components/filter-chip.js +1 -1
  109. package/dist/components/filter-condition-picker.js +1 -1
  110. package/dist/components/kanban-group.js +1 -1
  111. package/dist/components/limebb-alert-dialog.js +1 -1
  112. package/dist/components/limebb-browser.js +1 -1
  113. package/dist/components/limebb-chat-list.js +1 -1
  114. package/dist/components/limebb-color-palette-picker.js +1 -1
  115. package/dist/components/limebb-color-palette-swatches.js +1 -1
  116. package/dist/components/limebb-composer-toolbar.js +1 -1
  117. package/dist/components/limebb-dashboard-widget.js +1 -1
  118. package/dist/components/limebb-date-range.js +1 -1
  119. package/dist/components/limebb-document-chips.js +1 -1
  120. package/dist/components/limebb-document-picker.js +1 -1
  121. package/dist/components/limebb-feed.js +1 -1
  122. package/dist/components/limebb-icon-picker.js +1 -1
  123. package/dist/components/limebb-info-tile-format.js +1 -1
  124. package/dist/components/limebb-value-comparison-editor.js +1 -1
  125. package/dist/components/limetype.js +1 -1
  126. package/dist/components/property-selector.js +1 -1
  127. package/dist/components/response-format-editor.js +1 -1
  128. package/dist/components/typing-indicator.js +1 -1
  129. package/dist/esm/{filter-group-logic-DS1inQTh.js → filter-group-logic-CzThKf85.js} +1 -1
  130. package/dist/esm/{filter-operators-CsZi5iCV.js → filter-operators-u3T1PKhm.js} +1 -1
  131. package/dist/esm/{index-DwHAn7LS.js → index-COtSgrC5.js} +47 -11
  132. package/dist/esm/{index.esm-BjIhvFKX.js → index.esm-B9D_MXA6.js} +2 -2
  133. package/dist/esm/index.js +3 -3
  134. package/dist/esm/lime-crm-building-blocks.js +3 -3
  135. package/dist/esm/{lime-query-validation-CVV7mrLj.js → lime-query-validation-dGoN_93p.js} +1 -1
  136. package/dist/esm/limebb-alert-dialog.entry.js +2 -2
  137. package/dist/esm/limebb-browser.entry.js +4 -4
  138. package/dist/esm/limebb-chat-icon-list_3.entry.js +6 -6
  139. package/dist/esm/limebb-chat-list.entry.js +3 -3
  140. package/dist/esm/limebb-color-palette-picker.entry.js +2 -2
  141. package/dist/esm/limebb-color-palette-swatches.entry.js +2 -2
  142. package/dist/esm/limebb-component-config.entry.js +3 -3
  143. package/dist/esm/limebb-component-picker.entry.js +2 -2
  144. package/dist/esm/limebb-composer-toolbar.entry.js +4 -4
  145. package/dist/esm/limebb-currency-picker.entry.js +3 -3
  146. package/dist/esm/limebb-dashboard-widget.entry.js +2 -2
  147. package/dist/esm/limebb-data-cells.entry.js +2 -2
  148. package/dist/esm/limebb-date-picker.entry.js +3 -3
  149. package/dist/esm/limebb-date-range.entry.js +2 -2
  150. package/dist/esm/limebb-document-chips.entry.js +2 -2
  151. package/dist/esm/limebb-document-item.entry.js +3 -3
  152. package/dist/esm/limebb-document-picker.entry.js +2 -2
  153. package/dist/esm/limebb-empty-state.entry.js +1 -1
  154. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +2 -2
  155. package/dist/esm/limebb-feed-timeline-item.entry.js +19 -7
  156. package/dist/esm/limebb-feed.entry.js +3 -3
  157. package/dist/esm/limebb-filter-chip_6.entry.js +7 -7
  158. package/dist/esm/limebb-icon-picker.entry.js +2 -2
  159. package/dist/esm/limebb-info-tile-currency-format.entry.js +1 -1
  160. package/dist/esm/limebb-info-tile-date-format.entry.js +1 -1
  161. package/dist/esm/limebb-info-tile-decimal-format.entry.js +1 -1
  162. package/dist/esm/limebb-info-tile-format.entry.js +2 -2
  163. package/dist/esm/limebb-info-tile-relative-date-format.entry.js +1 -1
  164. package/dist/esm/limebb-info-tile-unit-format.entry.js +1 -1
  165. package/dist/esm/limebb-info-tile.entry.js +3 -3
  166. package/dist/esm/limebb-inline-image.entry.js +2 -2
  167. package/dist/esm/limebb-kanban-group.entry.js +3 -3
  168. package/dist/esm/limebb-kanban-item.entry.js +2 -2
  169. package/dist/esm/limebb-kanban.entry.js +1 -1
  170. package/dist/esm/limebb-lime-query-builder.entry.js +3 -3
  171. package/dist/esm/limebb-lime-query-filter-builder.entry.js +3 -3
  172. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +4 -4
  173. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +3 -3
  174. package/dist/esm/limebb-lime-query-order-by-item.entry.js +1 -1
  175. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +3 -3
  176. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +32 -27
  177. package/dist/esm/limebb-limeobject-file-viewer.entry.js +2 -2
  178. package/dist/esm/limebb-live-docs-info.entry.js +1 -1
  179. package/dist/esm/limebb-loader.entry.js +2 -2
  180. package/dist/esm/limebb-locale-picker.entry.js +2 -2
  181. package/dist/esm/limebb-mention-group-counter.entry.js +1 -1
  182. package/dist/esm/limebb-mention.entry.js +2 -2
  183. package/dist/esm/limebb-navigation-button_2.entry.js +1 -1
  184. package/dist/esm/limebb-notification-item.entry.js +2 -2
  185. package/dist/esm/limebb-notification-list.entry.js +2 -2
  186. package/dist/esm/limebb-object-chip.entry.js +3 -3
  187. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  188. package/dist/esm/limebb-property-selector.entry.js +84 -72
  189. package/dist/esm/limebb-rule-arg-filter-editor.entry.js +2 -2
  190. package/dist/esm/limebb-rule-chip-popover.entry.js +3 -3
  191. package/dist/esm/limebb-rule-editor.entry.js +2 -2
  192. package/dist/esm/limebb-rule-gate.entry.js +2 -2
  193. package/dist/esm/limebb-text-editor-picker.entry.js +1 -1
  194. package/dist/esm/limebb-text-editor.entry.js +3 -3
  195. package/dist/esm/limebb-trend-indicator.entry.js +2 -2
  196. package/dist/esm/limebb-value-comparison-editor.entry.js +4 -4
  197. package/dist/esm/{limetype-BbMRN-SU.js → limetype-BcELY1NF.js} +2 -2
  198. package/dist/esm/loader.js +2 -2
  199. package/dist/esm/{web-component-template-CAI6pXCH.js → web-component-template-DxbwHsvw.js} +1 -1
  200. package/dist/lime-crm-building-blocks/index.esm.js +1 -1
  201. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  202. package/dist/lime-crm-building-blocks/{p-b0b8ce73.entry.js → p-0193ed83.entry.js} +1 -1
  203. package/dist/lime-crm-building-blocks/{p-97839894.entry.js → p-021e452a.entry.js} +1 -1
  204. package/dist/lime-crm-building-blocks/{p-7033d408.entry.js → p-02fba38e.entry.js} +1 -1
  205. package/dist/lime-crm-building-blocks/{p-5beb508a.entry.js → p-0370200d.entry.js} +1 -1
  206. package/dist/lime-crm-building-blocks/{p-0c4f6220.entry.js → p-07a9c8f2.entry.js} +1 -1
  207. package/dist/lime-crm-building-blocks/{p-240cbd82.entry.js → p-080a1166.entry.js} +1 -1
  208. package/dist/lime-crm-building-blocks/{p-52a92d89.entry.js → p-0ed9a7cc.entry.js} +1 -1
  209. package/dist/lime-crm-building-blocks/{p-a4e676a6.entry.js → p-10310a64.entry.js} +1 -1
  210. package/dist/lime-crm-building-blocks/{p-ef890206.entry.js → p-10da40f8.entry.js} +1 -1
  211. package/dist/lime-crm-building-blocks/{p-0253fd45.entry.js → p-1ebe45b8.entry.js} +1 -1
  212. package/dist/lime-crm-building-blocks/{p-251aca46.entry.js → p-242ed59b.entry.js} +1 -1
  213. package/dist/lime-crm-building-blocks/{p-662fb8b6.entry.js → p-29262c17.entry.js} +1 -1
  214. package/dist/lime-crm-building-blocks/{p-22e68812.entry.js → p-3c3009e3.entry.js} +1 -1
  215. package/dist/lime-crm-building-blocks/p-40cb2c7c.entry.js +1 -0
  216. package/dist/lime-crm-building-blocks/p-43dfbefb.entry.js +1 -0
  217. package/dist/lime-crm-building-blocks/{p-f4d518ec.entry.js → p-49d042aa.entry.js} +1 -1
  218. package/dist/lime-crm-building-blocks/p-4f0939e6.entry.js +1 -0
  219. package/dist/lime-crm-building-blocks/{p-f9e9d18e.entry.js → p-5268fc02.entry.js} +1 -1
  220. package/dist/lime-crm-building-blocks/{p-25984c90.entry.js → p-56d125c7.entry.js} +1 -1
  221. package/dist/lime-crm-building-blocks/{p-73b71080.entry.js → p-584a48e4.entry.js} +1 -1
  222. package/dist/lime-crm-building-blocks/{p-397a6191.entry.js → p-5f682c06.entry.js} +1 -1
  223. package/dist/lime-crm-building-blocks/{p-dd7aec09.entry.js → p-63e7c191.entry.js} +1 -1
  224. package/dist/lime-crm-building-blocks/{p-d43cf8d1.entry.js → p-6951dcf7.entry.js} +1 -1
  225. package/dist/lime-crm-building-blocks/p-69c116b3.entry.js +1 -0
  226. package/dist/lime-crm-building-blocks/{p-2e48601d.entry.js → p-6a8422d2.entry.js} +1 -1
  227. package/dist/lime-crm-building-blocks/{p-c4e5e589.entry.js → p-6d8efe87.entry.js} +1 -1
  228. package/dist/lime-crm-building-blocks/{p-d78370be.entry.js → p-73f23d08.entry.js} +1 -1
  229. package/dist/lime-crm-building-blocks/{p-e2e1358d.entry.js → p-78118c62.entry.js} +1 -1
  230. package/dist/lime-crm-building-blocks/{p-906b4eca.entry.js → p-79bb58b0.entry.js} +1 -1
  231. package/dist/lime-crm-building-blocks/{p-f6377fa5.entry.js → p-7a9d7d87.entry.js} +1 -1
  232. package/dist/lime-crm-building-blocks/p-7ccca5e4.entry.js +1 -0
  233. package/dist/lime-crm-building-blocks/{p-585f6cfe.entry.js → p-7cd8dffd.entry.js} +1 -1
  234. package/dist/lime-crm-building-blocks/{p-7a5c2dda.entry.js → p-848462ee.entry.js} +1 -1
  235. package/dist/lime-crm-building-blocks/p-84ad9159.entry.js +1 -0
  236. package/dist/lime-crm-building-blocks/{p-e8b2df7c.entry.js → p-8a17a7ea.entry.js} +1 -1
  237. package/dist/lime-crm-building-blocks/{p-bc297cf4.entry.js → p-8fdf6a09.entry.js} +1 -1
  238. package/dist/lime-crm-building-blocks/{p-aafead4e.entry.js → p-956e466d.entry.js} +1 -1
  239. package/dist/lime-crm-building-blocks/p-COtSgrC5.js +3 -0
  240. package/dist/lime-crm-building-blocks/{p-b78ub0mY.js → p-Cj_3f9vm.js} +1 -1
  241. package/dist/lime-crm-building-blocks/{p-Cw4kdMw3.js → p-Css8537O.js} +1 -1
  242. package/dist/lime-crm-building-blocks/p-Cz5s8qGk.js +1 -0
  243. package/dist/lime-crm-building-blocks/{p-Dhyy9Td7.js → p-DLec4QaM.js} +1 -1
  244. package/dist/lime-crm-building-blocks/{p-DI3GWqfD.js → p-DVypQWZ4.js} +1 -1
  245. package/dist/lime-crm-building-blocks/{p-d014ec57.entry.js → p-a17d6dac.entry.js} +1 -1
  246. package/dist/lime-crm-building-blocks/p-a58c9e1e.entry.js +1 -0
  247. package/dist/lime-crm-building-blocks/{p-1c6e5402.entry.js → p-a5f3913d.entry.js} +1 -1
  248. package/dist/lime-crm-building-blocks/{p-964b066d.entry.js → p-abe751c0.entry.js} +1 -1
  249. package/dist/lime-crm-building-blocks/{p-7b6c9cbf.entry.js → p-ac13feb9.entry.js} +1 -1
  250. package/dist/lime-crm-building-blocks/{p-1f97e235.entry.js → p-ad661a38.entry.js} +1 -1
  251. package/dist/lime-crm-building-blocks/{p-19dc7242.entry.js → p-bd89279d.entry.js} +1 -1
  252. package/dist/lime-crm-building-blocks/{p-bcd8c767.entry.js → p-c85ff45b.entry.js} +1 -1
  253. package/dist/lime-crm-building-blocks/{p-673226a6.entry.js → p-ce2755a0.entry.js} +1 -1
  254. package/dist/lime-crm-building-blocks/{p-742926a3.entry.js → p-ce723c21.entry.js} +1 -1
  255. package/dist/lime-crm-building-blocks/{p-3f537135.entry.js → p-d071bd2d.entry.js} +1 -1
  256. package/dist/lime-crm-building-blocks/{p-f4214745.entry.js → p-d23f4604.entry.js} +1 -1
  257. package/dist/lime-crm-building-blocks/p-d495cc19.entry.js +1 -0
  258. package/dist/lime-crm-building-blocks/{p-e6a85c26.entry.js → p-d816fcc8.entry.js} +1 -1
  259. package/dist/lime-crm-building-blocks/{p-d3fe25a7.entry.js → p-d8d32cb1.entry.js} +1 -1
  260. package/dist/lime-crm-building-blocks/{p-89f120f8.entry.js → p-da35bcc7.entry.js} +1 -1
  261. package/dist/lime-crm-building-blocks/{p-6c2e25d9.entry.js → p-dacf9e77.entry.js} +1 -1
  262. package/dist/lime-crm-building-blocks/{p-69b08896.entry.js → p-e5028d83.entry.js} +1 -1
  263. package/dist/lime-crm-building-blocks/{p-e4a21ebe.entry.js → p-e910963c.entry.js} +1 -1
  264. package/dist/lime-crm-building-blocks/{p-d2e85be2.entry.js → p-ee7bd504.entry.js} +1 -1
  265. package/dist/lime-crm-building-blocks/{p-6f4e2590.entry.js → p-eed0b2c2.entry.js} +1 -1
  266. package/dist/lime-crm-building-blocks/{p-e581d0b7.entry.js → p-f1060c88.entry.js} +1 -1
  267. package/dist/lime-crm-building-blocks/{p-896e77b9.entry.js → p-f9b1cd5e.entry.js} +1 -1
  268. package/dist/lime-crm-building-blocks/p-ffca266e.entry.js +1 -0
  269. package/dist/lime-crm-building-blocks/{p-CE43qjk3.js → p-hsyotUav.js} +1 -1
  270. package/dist/types/components/feed/feed-item/feed-timeline-item.d.ts +2 -0
  271. package/dist/types/components/lime-query-builder/property-selector/property-selector.d.ts +23 -3
  272. package/dist/types/components.d.ts +21 -11
  273. package/dist/types/stencil-public-runtime.d.ts +12 -0
  274. package/loader/index.d.ts +1 -1
  275. package/package.json +14 -14
  276. package/dist/lime-crm-building-blocks/p-135ba2ee.entry.js +0 -1
  277. package/dist/lime-crm-building-blocks/p-59fb624c.entry.js +0 -1
  278. package/dist/lime-crm-building-blocks/p-78d362b4.entry.js +0 -1
  279. package/dist/lime-crm-building-blocks/p-79c492b2.entry.js +0 -1
  280. package/dist/lime-crm-building-blocks/p-7ce967b6.entry.js +0 -1
  281. package/dist/lime-crm-building-blocks/p-DLehg4hi.js +0 -1
  282. package/dist/lime-crm-building-blocks/p-DwHAn7LS.js +0 -2
  283. package/dist/lime-crm-building-blocks/p-a157233b.entry.js +0 -1
  284. package/dist/lime-crm-building-blocks/p-a3058b72.entry.js +0 -1
  285. package/dist/lime-crm-building-blocks/p-d20404ec.entry.js +0 -1
  286. package/dist/lime-crm-building-blocks/p-e29c27b8.entry.js +0 -1
@@ -78,10 +78,10 @@ export class DocumentItemComponent {
78
78
  render() {
79
79
  const isUnavailable = this.isUnavailable();
80
80
  const image = this.getImage();
81
- return (h(Host, { key: '802076b3b96c854277a01fa7833a1ccdb942eff4', id: String(this.item.file.id), class: {
81
+ return (h(Host, { key: '49f52a175a08604a8706bb4554eec3b3c5b15063', id: String(this.item.file.id), class: {
82
82
  'has-image': !!image,
83
83
  'has-error': !!this.item.hasError,
84
- }, role: this.type === 'radio' ? 'radio' : 'checkbox', "aria-checked": this.item.selected ? 'true' : 'false', "aria-disabled": isUnavailable ? 'true' : 'false', tabIndex: isUnavailable ? -1 : 0 }, h("limel-card", { key: '4c8149a090818f69c8ad7ced12d46d3f405f2601', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: 'bfcd9153638e17e8d332395739dc835eee684707', slot: "component" }, this.renderFileSize(), this.renderBooleanInput())), this.renderHelp()));
84
+ }, role: this.type === 'radio' ? 'radio' : 'checkbox', "aria-checked": this.item.selected ? 'true' : 'false', "aria-disabled": isUnavailable ? 'true' : 'false', tabIndex: isUnavailable ? -1 : 0 }, h("limel-card", { key: '7de1a510b5f3f79474250330b4a56e3981cb062e', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: '6cec2ca349fa18bf55f27caabdbe1c6697c1e101', slot: "component" }, this.renderFileSize(), this.renderBooleanInput())), this.renderHelp()));
85
85
  }
86
86
  renderBooleanInput() {
87
87
  const id = this.getControlId();
@@ -76,7 +76,7 @@ export class DocumentPicker {
76
76
  this.labelId = createRandomString();
77
77
  }
78
78
  render() {
79
- return (h(Host, { key: 'b49d5f3c6598651dd7e6c87884cb1aefa6c423f6' }, h("limel-notched-outline", { key: '89c635494ccbac031af5ac8470804fe096b315ac', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: 'c465e0dd11e74957526c7ffb18ccfa73b5b42f01', slot: "content", role: this.type === 'radio' ? 'radiogroup' : 'group', "aria-labelledby": this.label ? this.labelId : undefined, "aria-describedby": this.helperText ? this.helperTextId : undefined }, this.renderItems())), this.renderHelperLine()));
79
+ return (h(Host, { key: '70119759f1b873d79c3696587577f255b8ab68bd' }, h("limel-notched-outline", { key: '5519120a64714e1f73659f8fd8b0e5345c7ab383', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: 'b7e789a30ec25f41844acf0f20856f6388e95edd', slot: "content", role: this.type === 'radio' ? 'radiogroup' : 'group', "aria-labelledby": this.label ? this.labelId : undefined, "aria-describedby": this.helperText ? this.helperTextId : undefined }, this.renderItems())), this.renderHelperLine()));
80
80
  }
81
81
  renderItems() {
82
82
  return this.items.map((item) => (h("limebb-document-item", { platform: this.platform, context: this.context, item: item, key: item.file.id, type: this.type, onInteract: this.handleItemInteract })));
@@ -184,6 +184,9 @@ export class FeedTimelineItem {
184
184
  }
185
185
  };
186
186
  }
187
+ connectedCallback() {
188
+ this.observe();
189
+ }
187
190
  componentDidLoad() {
188
191
  var _a, _b;
189
192
  const headingElement = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.heading');
@@ -191,21 +194,30 @@ export class FeedTimelineItem {
191
194
  (_b = headingElement === null || headingElement === void 0 ? void 0 : headingElement.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('p');
192
195
  if (this.headingParagraphElement) {
193
196
  this.headingResizeObserver = new ResizeObserver(this.setHeaderCollapsible);
194
- this.headingResizeObserver.observe(this.headingParagraphElement);
195
197
  }
196
198
  if (this.bodyTextElement) {
197
199
  this.bodyResizeObserver = new ResizeObserver(this.bodyTextTall);
198
- this.bodyResizeObserver.observe(this.bodyTextElement);
200
+ }
201
+ this.observe();
202
+ }
203
+ observe() {
204
+ var _a, _b;
205
+ if (this.headingParagraphElement) {
206
+ (_a = this.headingResizeObserver) === null || _a === void 0 ? void 0 : _a.observe(this.headingParagraphElement);
207
+ }
208
+ if (this.bodyTextElement) {
209
+ (_b = this.bodyResizeObserver) === null || _b === void 0 ? void 0 : _b.observe(this.bodyTextElement);
199
210
  }
200
211
  }
201
212
  disconnectedCallback() {
202
- var _a;
203
- (_a = this.bodyResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
213
+ var _a, _b;
214
+ (_a = this.headingResizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
215
+ (_b = this.bodyResizeObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
204
216
  }
205
217
  render() {
206
218
  var _a, _b;
207
219
  const helperTextId = `helper-text-${this.item.id}`;
208
- return (h(Host, { key: '0d1ba9124ef0451e73e6c66261015d193cde01b0', id: this.item.id, class: {
220
+ return (h(Host, { key: 'b98d9a84dffdef4094c98b8754ccf667ed4c351c', id: this.item.id, class: {
209
221
  'has-unpromoted-actions': !!((_a = this.item.unpromotedActions) === null || _a === void 0 ? void 0 : _a.length),
210
222
  'has-author-picture': !!((_b = this.item.author) === null || _b === void 0 ? void 0 : _b.picture),
211
223
  'shows-less': !this.showMore,
@@ -8,7 +8,7 @@ import { h } from "@stencil/core";
8
8
  */
9
9
  export class FeedItemThumbnailFileInfo {
10
10
  render() {
11
- return h("span", { key: '418abbe9f287784ed8f9dfa1a8ba4e343cdcda3b' }, this.description);
11
+ return h("span", { key: '50fc63981154a244baf2f0900becb542474aa53a' }, this.description);
12
12
  }
13
13
  static get is() { return "limebb-feed-item-thumbnail-file-info"; }
14
14
  static get encapsulation() { return "shadow"; }
@@ -103,7 +103,7 @@ export class Feed {
103
103
  this.highlighter.unregisterFeed(this.feedItemElement);
104
104
  }
105
105
  render() {
106
- return (h(Host, { key: 'a9313ef92a734e391ee178a1d0f2c3bcc3a7ec19', role: "log", "aria-busy": this.loading ? 'true' : 'false', style: {
106
+ return (h(Host, { key: 'e5cda3589de738a405de6ab330a67b74105de616', role: "log", "aria-busy": this.loading ? 'true' : 'false', style: {
107
107
  '--limebb-feed-highlight-duration': `${ITEM_HIGHLIGHT_DURATION}ms`,
108
108
  } }, this.renderLoadMore(), this.renderEmptyFeedMessage(), this.renderSpinner(), this.renderFeedItems()));
109
109
  }
@@ -102,8 +102,8 @@ export class FilterChip {
102
102
  const items = this.getDisplayItems();
103
103
  const conjunction = this.getConjunctionText();
104
104
  const helperLabel = this.getHelperLabel(items, conjunction);
105
- return (h(Host, { key: '291c2a6437491c9a5152b87af18476c2fb2f69bc' }, this.renderLabel(), h("button", { key: '8a51d37a3aa1f3b6a49dd15b0f6705fdc4c9ced3', class: { chip: true }, type: "button", id: chipId, "aria-label": [this.label, helperLabel].filter(Boolean).join(', ') ||
106
- this.getFilterLabel(), "aria-pressed": this.getAriaPressed(), onKeyDown: this.handleKeyDown, disabled: this.disabled }, this.renderIcon(), this.renderValue(items, conjunction)), this.renderRemoveButton(chipId), h("limel-tooltip", { key: '522b0a8736e302e074914bf672c350ead53e418b', elementId: chipId, label: this.label || this.getFilterLabel(), helperLabel: helperLabel })));
105
+ return (h(Host, { key: 'eeba853d755bbcdecf5a9f513aa27b0a61a34fdd' }, this.renderLabel(), h("button", { key: '29c8b277683ff63ab48b53bce5993449bcb122cd', class: { chip: true }, type: "button", id: chipId, "aria-label": [this.label, helperLabel].filter(Boolean).join(', ') ||
106
+ this.getFilterLabel(), "aria-pressed": this.getAriaPressed(), onKeyDown: this.handleKeyDown, disabled: this.disabled }, this.renderIcon(), this.renderValue(items, conjunction)), this.renderRemoveButton(chipId), h("limel-tooltip", { key: '19163bcefc8db240b65bd76d7cc878a4b6f1e575', elementId: chipId, label: this.label || this.getFilterLabel(), helperLabel: helperLabel })));
107
107
  }
108
108
  /**
109
109
  * `aria-pressed` only makes sense for an interactive toggle. A readonly
@@ -43,7 +43,7 @@ export class FilterConditionPicker {
43
43
  render() {
44
44
  const items = this.buildItems();
45
45
  const selected = this.selectedOption(items);
46
- return (h(Host, { key: 'ca926963d368460db20fa8961f49825d19ae2c07' }, h("limel-select", { key: '5571b580b7da63d1a95fef6cb9b204ed3b32cf75', class: "condition", label: this.accessibleLabel, disabled: this.disabled, options: items, value: selected, onChange: this.handleChange })));
46
+ return (h(Host, { key: '95aab902a6db4a854ebffc8016ea244f388a3fa0' }, h("limel-select", { key: '3b1284518a4641a207fb5c90d718deef837d436e', class: "condition", label: this.accessibleLabel, disabled: this.disabled, options: items, value: selected, onChange: this.handleChange })));
47
47
  }
48
48
  buildItems() {
49
49
  var _a;
@@ -35,7 +35,7 @@ export class IconPicker {
35
35
  icon: this.value,
36
36
  };
37
37
  }
38
- return (h("limel-picker", { key: 'bf6b76bbcea838150261e9e0037b1d7ca1ee08d1', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, value: value, searcher: this.search, onChange: this.handleChange, badgeIcons: false, leadingIcon: "search", searchLabel: "Start typing to find the right icon" }));
38
+ return (h("limel-picker", { key: '168a8a3a57fc46a46bf00545c9771ce2b3cfac03', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, value: value, searcher: this.search, onChange: this.handleChange, badgeIcons: false, leadingIcon: "search", searchLabel: "Start typing to find the right icon" }));
39
39
  }
40
40
  static get is() { return "limebb-icon-picker"; }
41
41
  static get encapsulation() { return "shadow"; }
@@ -92,7 +92,7 @@ export class InfoTileAdminConfig {
92
92
  },
93
93
  ];
94
94
  return [
95
- h("limel-button-group", { key: '68999f607fd66a5a451929d6720200734c6505ea', value: buttons.filter(this.isValidButton), onChange: this.handleChangeType }),
95
+ h("limel-button-group", { key: '71fd85af5cbbb2376dd0ad87e9433872af1d9d23', value: buttons.filter(this.isValidButton), onChange: this.handleChangeType }),
96
96
  this.renderFormatConfig(),
97
97
  ];
98
98
  }
@@ -27,7 +27,7 @@ export class KanbanGroup {
27
27
  };
28
28
  }
29
29
  render() {
30
- return (h(Host, { key: '5c0675c4edff236ac8b4d90c93d418e3b0c18a9c' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
30
+ return (h(Host, { key: 'b00741bf0f2c617453ce53ce2e6ec852472f20dc' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
31
31
  }
32
32
  renderGroupSummary() {
33
33
  if (!this.summary || !this.totalCount) {
@@ -320,8 +320,9 @@ export class KanbanGroup {
320
320
  "resolved": "string",
321
321
  "references": {
322
322
  "KanbanGroup": {
323
- "location": "global",
324
- "id": "global::KanbanGroup"
323
+ "location": "local",
324
+ "path": "/home/runner/work/lime-crm-building-blocks/lime-crm-building-blocks/src/components/kanban/kanban-group/kanban-group.tsx",
325
+ "id": "src/components/kanban/kanban-group/kanban-group.tsx::KanbanGroup"
325
326
  }
326
327
  }
327
328
  }
@@ -67,6 +67,26 @@ export function propertySelectionToItems(selection, prefix = '') {
67
67
  }
68
68
  return items;
69
69
  }
70
+ /**
71
+ * The relation's own id. Selecting a relation means matching it by id, so this
72
+ * is where that selection lives once the relation also has properties of its
73
+ * own selected — a `PropertySelection` key holds one value, and the nested
74
+ * object needs that slot.
75
+ */
76
+ const RELATION_ID_KEY = '_id';
77
+ const METADATA_KEYS = new Set(['_alias', '#description']);
78
+ /**
79
+ * Whether a value is a nested selection holding properties, rather than a
80
+ * selection of the property itself. Metadata (`_alias`, `#description`)
81
+ * describes the selection, so it does not count as a selected property.
82
+ * @param value Value stored under a `PropertySelection` key
83
+ */
84
+ function hasSelectedProperties(value) {
85
+ if (!value || typeof value !== 'object') {
86
+ return false;
87
+ }
88
+ return Object.keys(value).some((key) => !METADATA_KEYS.has(key));
89
+ }
70
90
  /**
71
91
  * Set the final property value (with or without alias/description)
72
92
  * @param current Current PropertySelection object
@@ -74,14 +94,9 @@ export function propertySelectionToItems(selection, prefix = '') {
74
94
  * @param item Property selection item with path and optional alias/description
75
95
  */
76
96
  function setPropertyValue(current, part, item) {
77
- // Check if there's already a nested PropertySelection with properties
78
97
  const existing = current[part];
79
- if (existing &&
80
- typeof existing === 'object' &&
81
- !('_alias' in existing) &&
82
- !('#description' in existing)) {
83
- // There's already a nested PropertySelection object with properties
84
- // Don't overwrite it - preserve the nested selections
98
+ if (hasSelectedProperties(existing)) {
99
+ setPropertyValue(existing, RELATION_ID_KEY, item);
85
100
  return;
86
101
  }
87
102
  // Build metadata object, stripping empty values
@@ -109,29 +124,19 @@ function setPropertyValue(current, part, item) {
109
124
  */
110
125
  function ensureNestedObject(current, part) {
111
126
  const existing = current[part];
112
- // If doesn't exist or is null, create empty object
113
- if (!existing) {
127
+ if (existing === undefined) {
114
128
  current[part] = {};
115
129
  return current[part];
116
130
  }
117
- // If it's already a PropertySelection object, check for metadata
118
- if (typeof existing === 'object') {
119
- const existingObj = existing;
120
- // If it has metadata but no other properties, preserve the metadata
121
- const keys = Object.keys(existingObj);
122
- const hasMetadata = '_alias' in existingObj || '#description' in existingObj;
123
- const otherKeys = keys.filter((k) => k !== '_alias' && k !== '#description');
124
- if (hasMetadata && otherKeys.length === 0) {
125
- // Convert { _alias: "...", "#description": "..." } to { _alias: "...", "#description": "...", ...nested }
126
- // Keep the existing object and return it (caller will add nested props)
127
- return existingObj;
128
- }
129
- // Already has nested properties, return as is
130
- return existingObj;
131
+ if (hasSelectedProperties(existing)) {
132
+ return existing;
131
133
  }
132
- // Shouldn't reach here, but fallback to creating new object
133
- current[part] = {};
134
- return current[part];
134
+ // `existing` is a selection of the relation itself: `null`, or metadata
135
+ // only when it carries an alias or a description. Both mean "match by
136
+ // id", which coexists with the relation's own properties as `_id`.
137
+ const nested = { [RELATION_ID_KEY]: existing };
138
+ current[part] = nested;
139
+ return nested;
135
140
  }
136
141
  /**
137
142
  * Convert a flat list of property items to a nested PropertySelection structure
@@ -10,22 +10,25 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
10
10
  };
11
11
  import { h } from "@stencil/core";
12
12
  import { PlatformServiceName, SelectLimeTypes as Limetypes, } from "@limetech/lime-web-components";
13
- import { getPropertyFromPath, getNormalizedProperties, } from "../property-resolution";
14
- import { getIcon } from "../../../util/limetype";
13
+ import { getNormalizedProperties, validatePropertyPath, } from "../property-resolution";
14
+ import { getIcon, isManyRelation } from "../../../util/limetype";
15
15
  /**
16
16
  * Property Selector Component
17
17
  *
18
18
  * A menu-based property selector that allows users to navigate through properties
19
- * and relations, only emitting complete property paths (not intermediate relations).
19
+ * and relations, emitting complete property paths.
20
20
  *
21
21
  * Similar to limec-context-expression but specifically for selecting properties
22
22
  * with dot-notation paths.
23
23
  *
24
+ * A path ends either in a plain property (`coworker.name`) or in a single
25
+ * relation (`coworker`), which the backend matches by id.
26
+ *
24
27
  * Features:
25
28
  * - Menu-based navigation through properties
26
29
  * - Submenu support for drilling into relations
27
30
  * - Internal state management during navigation
28
- * - Only emits complete paths (leaf properties)
31
+ * - Only emits complete paths
29
32
  * - Chip-set display showing current path
30
33
  * @private
31
34
  */
@@ -51,7 +54,6 @@ export class PropertySelector {
51
54
  // Open menu when the chip-set input receives focus
52
55
  // This happens when user clicks to type/edit
53
56
  if (!this.isOpen) {
54
- this.navigationPath = this.value || '';
55
57
  this.loadMenuItems();
56
58
  this.isOpen = true;
57
59
  }
@@ -79,26 +81,32 @@ export class PropertySelector {
79
81
  if (!selectedPath) {
80
82
  return;
81
83
  }
82
- // Check if this is a complete path (leaf property, not a relation)
83
- const property = getPropertyFromPath(this.limetypes, this.limetype, selectedPath);
84
- if (property === null || property === void 0 ? void 0 : property.relation) {
85
- // This is a relation - update navigation but don't emit
86
- this.navigationPath = selectedPath;
87
- }
88
- else {
89
- // This is a leaf property - emit and close
90
- this.change.emit(selectedPath);
91
- this.isOpen = false;
92
- this.navigationPath = '';
84
+ // Unreachable through the menu, which filters many-relations out at
85
+ // every level. Kept so a path from elsewhere cannot be emitted, and
86
+ // `validatePropertyPath` rejects a many-relation anywhere along the
87
+ // path, not just at its end.
88
+ const { error } = validatePropertyPath(this.limetypes, this.limetype, selectedPath);
89
+ if (error) {
90
+ console.warn('property-selector rejected a property path', {
91
+ limetype: this.limetype,
92
+ path: selectedPath,
93
+ error,
94
+ });
95
+ return;
93
96
  }
97
+ this.change.emit(selectedPath);
98
+ this.isOpen = false;
99
+ this.navigationPath = '';
94
100
  };
95
101
  this.handleNavigateMenu = (event) => {
96
- var _a;
102
+ var _a, _b;
97
103
  event.stopPropagation();
98
- if ((_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) {
99
- // Update navigation path when drilling down
100
- this.navigationPath = event.detail.value;
101
- }
104
+ // `limel-menu` emits the item it drilled into, the parent item when
105
+ // stepping back one level, and `null` at the root. Reading the value
106
+ // for all three keeps the chips on the level the menu is showing;
107
+ // only reacting to a truthy value leaves them stuck on the deepest
108
+ // path the user visited.
109
+ this.navigationPath = (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : '';
102
110
  };
103
111
  this.handleCancel = () => {
104
112
  this.isOpen = false;
@@ -147,61 +155,26 @@ export class PropertySelector {
147
155
  const chips = this.getChipsForPath(this.navigationPath || this.value || '');
148
156
  return (h("limel-menu", { items: this.menuItems, open: this.isOpen, emptyResultMessage: "No available properties", surfaceWidth: "inherit-from-trigger", openDirection: "bottom-end", onSelect: this.handleSelect, onNavigateMenu: this.handleNavigateMenu, onCancel: this.handleCancel }, h("div", { slot: "trigger" }, h("div", { onClick: this.handleChipSetWrapperClick }, h("limel-chip-set", { type: "input", label: this.label, value: chips, required: this.required, helperText: this.helperText, delimiter: "\u203A", maxItems: 1, onChange: this.handleChipSetChange, onFocus: this.handleChipSetFocus, onStopEdit: this.handleChipSetBlur })))));
149
157
  }
158
+ /**
159
+ * The menu always opens at the root limetype. `limel-menu` owns the
160
+ * drilling from there, and every item it holds already carries its full
161
+ * path, so opening below the root would build items whose paths are
162
+ * missing their prefix and resolve against the wrong limetype.
163
+ */
150
164
  loadMenuItems() {
151
- // Get the limetype we're currently navigating in
152
- const currentLimetype = this.getCurrentLimetype();
153
- if (!currentLimetype) {
165
+ const rootLimetype = this.limetypes[this.limetype];
166
+ if (!rootLimetype) {
154
167
  this.menuItems = [];
155
168
  return;
156
169
  }
157
- this.menuItems = this.createMenuItems(currentLimetype, '');
158
- }
159
- getCurrentLimetype() {
160
- if (!this.navigationPath) {
161
- return this.limetypes[this.limetype];
162
- }
163
- // Get the limetype at the current navigation path
164
- const property = getPropertyFromPath(this.limetypes, this.limetype, this.navigationPath);
165
- if (property === null || property === void 0 ? void 0 : property.relation) {
166
- return property.relation.getLimetype();
167
- }
168
- return this.limetypes[this.limetype];
170
+ this.menuItems = this.createMenuItems(rootLimetype, '');
169
171
  }
170
172
  createMenuItems(limetype, pathPrefix) {
171
- const results = [];
172
- if (!limetype) {
173
- return results;
174
- }
175
- const normalizedProperties = getNormalizedProperties(limetype);
176
- for (const [propName, property] of Object.entries(normalizedProperties)) {
177
- // Skip hasMany and hasAndBelongsToMany relations
178
- if (property.type === 'hasmany' ||
179
- property.type === 'hasandbelongstomany') {
180
- continue;
181
- }
182
- const fullPath = pathPrefix
183
- ? `${pathPrefix}.${propName}`
184
- : propName;
185
- const isRelation = !!property.relation;
186
- let items;
187
- if (isRelation && property.relation) {
188
- // Create submenu for relation (only belongsto at this point)
189
- const relatedLimetype = property.relation.getLimetype();
190
- if (relatedLimetype) {
191
- items = async () => this.createMenuItems(relatedLimetype, fullPath);
192
- }
193
- }
194
- results.push({
195
- text: property.localname || propName,
196
- secondaryText: this.getSecondaryText(property),
197
- icon: this.getIconForProperty(property),
198
- value: fullPath,
199
- items: items,
200
- });
201
- }
202
- // Sort properties alphabetically by display text
203
- results.sort((a, b) => { var _a, _b; return this.collator.compare((_a = a.text) !== null && _a !== void 0 ? _a : '', (_b = b.text) !== null && _b !== void 0 ? _b : ''); });
204
- if (results.length === 0) {
173
+ const items = Object.entries(getNormalizedProperties(limetype))
174
+ .filter(([, property]) => !isManyRelation(property))
175
+ .map(([propName, property]) => this.createPropertyItem(property, joinPath(pathPrefix, propName)))
176
+ .sort((a, b) => this.collator.compare(a.text, b.text));
177
+ if (items.length === 0) {
205
178
  return [
206
179
  {
207
180
  text: 'No available properties',
@@ -210,7 +183,48 @@ export class PropertySelector {
210
183
  },
211
184
  ];
212
185
  }
213
- return results;
186
+ return items;
187
+ }
188
+ createPropertyItem(property, path) {
189
+ return {
190
+ text: this.getPropertyText(property, path),
191
+ secondaryText: this.getSecondaryText(property),
192
+ icon: this.getIconForProperty(property),
193
+ value: path,
194
+ items: this.createSubMenuLoader(property, path),
195
+ };
196
+ }
197
+ createSubMenuLoader(property, path) {
198
+ var _a;
199
+ const relatedLimetype = (_a = property.relation) === null || _a === void 0 ? void 0 : _a.getLimetype();
200
+ if (!relatedLimetype) {
201
+ return undefined;
202
+ }
203
+ return async () => this.createRelationSubMenu(property, path, relatedLimetype);
204
+ }
205
+ /**
206
+ * `limel-menu` navigates into a submenu instead of emitting `select` for
207
+ * the item that owns it, so the relation row cannot select itself. The
208
+ * extra item is what makes the relation reachable as a leaf.
209
+ * @param property
210
+ * @param path
211
+ * @param relatedLimetype
212
+ */
213
+ createRelationSubMenu(property, path, relatedLimetype) {
214
+ const relatedProperties = this.createMenuItems(relatedLimetype, path);
215
+ return [
216
+ {
217
+ text: this.getPropertyText(property, path),
218
+ secondaryText: 'Select this relation',
219
+ icon: this.getIconForProperty(property),
220
+ value: path,
221
+ },
222
+ { separator: true },
223
+ ...relatedProperties,
224
+ ];
225
+ }
226
+ getPropertyText(property, path) {
227
+ return property.localname || path.split('.').at(-1) || path;
214
228
  }
215
229
  getSecondaryText(property) {
216
230
  var _a;
@@ -240,7 +254,7 @@ export class PropertySelector {
240
254
  let currentLimetype = this.limetypes[this.limetype];
241
255
  let currentPath = '';
242
256
  for (const part of parts) {
243
- currentPath = currentPath ? `${currentPath}.${part}` : part;
257
+ currentPath = joinPath(currentPath, part);
244
258
  // Use getNormalizedProperties to include _id and _timestamp
245
259
  const normalizedProperties = getNormalizedProperties(currentLimetype);
246
260
  const property = normalizedProperties[part];
@@ -449,3 +463,4 @@ export class PropertySelector {
449
463
  __decorate([
450
464
  Limetypes()
451
465
  ], PropertySelector.prototype, "limetypes", void 0);
466
+ const joinPath = (prefix, propertyName) => prefix ? `${prefix}.${propertyName}` : propertyName;
@@ -174,7 +174,7 @@ export class ValueComparisonEditor {
174
174
  }
175
175
  render() {
176
176
  const selectedType = TYPE_OPTIONS.find((option) => option.value === this.valueType);
177
- return (h("div", { key: '46633e3dd6527173fdb2a54f50e7844175dbbbe5', class: "rule" }, h("limel-select", { key: '98f82c22a21840061c57a942c273b85416c539cb', class: "type-select", label: "Compare as", options: TYPE_OPTIONS, value: selectedType, onChange: this.handleTypeChange }), h("limebb-filter-condition-picker", { key: 'dac247e83cb2fac41b0e6fdb49f070d5c1b18081', class: "operator-select", platform: this.platform, propertyType: PROPERTY_TYPE_BY_VALUE_TYPE[this.valueType], conditions: COMPARISON_CONDITIONS, value: operatorToCondition(this.currentOperator), onChange: this.handleConditionChange }), this.renderOperand()));
177
+ return (h("div", { key: 'adecd47e558632637dec3506429c285dcddf7746', class: "rule" }, h("limel-select", { key: '41032f0494cccf8ab9ef429e0648e84b70de7a80', class: "type-select", label: "Compare as", options: TYPE_OPTIONS, value: selectedType, onChange: this.handleTypeChange }), h("limebb-filter-condition-picker", { key: '118a34ec6bf0b057ad504690ea2bbb50295697ef', class: "operator-select", platform: this.platform, propertyType: PROPERTY_TYPE_BY_VALUE_TYPE[this.valueType], conditions: COMPARISON_CONDITIONS, value: operatorToCondition(this.currentOperator), onChange: this.handleConditionChange }), this.renderOperand()));
178
178
  }
179
179
  renderOperand() {
180
180
  if (TEMPORAL_TYPES.has(this.valueType)) {
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as i,h as n,Host as o,transformTag as t}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(o,{key:"8b396a9fe990300692e21c71e0674c412286db68",id:this.item.id},this.renderLabel(),n("div",{key:"8f1da67a4bb6916a3a76203dee5c2050ac2db1d3",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return n("span",{class:"label"},this.item.label)}renderIcon(e,i){const o=`icon-${this.item.id}-${i}`;return[n("limel-icon",{tabIndex:0,key:i,id:o,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,o)]}renderTooltip(e,i){if(e.title)return n("limel-tooltip",{label:e.title,elementId:i})}static get style(){return'@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)}}'}},[1,"limebb-chat-icon-list",{item:[16]}]);function s(){"undefined"!=typeof customElements&&["limebb-chat-icon-list"].forEach((e=>{"limebb-chat-icon-list"===e&&(customElements.get(t(e))||customElements.define(t(e),r))}))}export{r as C,s as d}
1
+ import{proxyCustomElement as e,HTMLElement as i,h as n,Host as o,transformTag as t}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(o,{key:"5f1f10992e05f44d64189dfb622e4294ca325417",id:this.item.id},this.renderLabel(),n("div",{key:"80f8b801710cb713f019897cac35ea2de1b6384f",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return n("span",{class:"label"},this.item.label)}renderIcon(e,i){const o=`icon-${this.item.id}-${i}`;return[n("limel-icon",{tabIndex:0,key:i,id:o,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,o)]}renderTooltip(e,i){if(e.title)return n("limel-tooltip",{label:e.title,elementId:i})}static get style(){return'@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)}}'}},[1,"limebb-chat-icon-list",{item:[16]}]);function s(){"undefined"!=typeof customElements&&["limebb-chat-icon-list"].forEach((e=>{"limebb-chat-icon-list"===e&&(customElements.get(t(e))||customElements.define(t(e),r))}))}export{r as C,s as d}
@@ -1 +1 @@
1
- import{proxyCustomElement as e,HTMLElement as t,h as i,Host as r,transformTag as o}from"@stencil/core/internal/client";import{n as a}from"./index.esm.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.hasError=!1,this.createActionBarItem=e=>{var t,i;if("separator"in e)return e;let r={value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled};return!e.label&&e.icon?r=Object.assign(Object.assign({},r),{icon:e.icon,text:null!==(i=e.description)&&void 0!==i?i:r.text,iconOnly:!0}):e.icon&&(r=Object.assign(Object.assign({},r),{icon:e.icon})),r},this.handleActionBarItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)},this.createMenuItem=e=>{var t,i;return"separator"in e?e:{value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled,icon:null!==(i=e.icon)&&void 0!==i?i:""}},this.handleMenuItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)}}render(){const e=`helper-text-${this.item.id}`;return i(r,{key:"7726b35958522c860513ba9ea7a119a4ee9dfe2d",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:"2092b4d2eb6a4149205fbddae42aa63893ae2c35",class:"bubble-content"},i("div",{key:"728b94f59b744ac932ede9bef2a99d180c0675f3",class:"icon-picture"},this.renderIcon(),this.renderAuthorPicture()),this.renderErrorSign(),i("div",{key:"a87fbb4ba58928deace952f50f480483530ac552",class:"item"},this.renderHeader(),this.renderValue(),i("footer",{key:"446921a64f33dc02c6d6b9ae3e6143b1ad7ee6d9"},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(a.DateTimeFormatter)}get translator(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.Translate)}get commandbus(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.CommandBus)}static get style(){return'@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))}'}},[1,"limebb-chat-item",{platform:[16],context:[16],item:[16],helperText:[1,"helper-text"],hasError:[516,"has-error"]}]);function n(){"undefined"!=typeof customElements&&["limebb-chat-item"].forEach((e=>{"limebb-chat-item"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as C,n as d}
1
+ import{proxyCustomElement as e,HTMLElement as t,h as i,Host as r,transformTag as o}from"@stencil/core/internal/client";import{n as a}from"./index.esm.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.hasError=!1,this.createActionBarItem=e=>{var t,i;if("separator"in e)return e;let r={value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled};return!e.label&&e.icon?r=Object.assign(Object.assign({},r),{icon:e.icon,text:null!==(i=e.description)&&void 0!==i?i:r.text,iconOnly:!0}):e.icon&&(r=Object.assign(Object.assign({},r),{icon:e.icon})),r},this.handleActionBarItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)},this.createMenuItem=e=>{var t,i;return"separator"in e?e:{value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled,icon:null!==(i=e.icon)&&void 0!==i?i:""}},this.handleMenuItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)}}render(){const e=`helper-text-${this.item.id}`;return i(r,{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(a.DateTimeFormatter)}get translator(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.Translate)}get commandbus(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.CommandBus)}static get style(){return'@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))}'}},[1,"limebb-chat-item",{platform:[16],context:[16],item:[16],helperText:[1,"helper-text"],hasError:[516,"has-error"]}]);function n(){"undefined"!=typeof customElements&&["limebb-chat-item"].forEach((e=>{"limebb-chat-item"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as C,n as d}