@limetech/lime-crm-building-blocks 2.2.1 → 2.3.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 (237) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
  3. package/dist/cjs/limebb-alert-dialog.cjs.entry.js +1 -1
  4. package/dist/cjs/limebb-browser.cjs.entry.js +2 -2
  5. package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +4 -4
  6. package/dist/cjs/limebb-chat-list.cjs.entry.js +75 -101
  7. package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +1 -1
  8. package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +1 -1
  9. package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +2 -2
  10. package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
  11. package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
  12. package/dist/cjs/limebb-date-picker.cjs.entry.js +1 -1
  13. package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
  15. package/dist/cjs/limebb-document-item.cjs.entry.js +2 -2
  16. package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
  17. package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
  18. package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +1 -1
  19. package/dist/cjs/limebb-feed.cjs.entry.js +1 -1
  20. package/dist/cjs/limebb-filter-chip_6.cjs.entry.js +7 -7
  21. package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
  22. package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
  23. package/dist/cjs/limebb-info-tile.cjs.entry.js +1 -1
  24. package/dist/cjs/limebb-kanban-group.cjs.entry.js +1 -1
  25. package/dist/cjs/limebb-kanban-item.cjs.entry.js +1 -1
  26. package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +1 -1
  27. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +2 -2
  28. package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +2 -2
  29. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
  30. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +1 -1
  31. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
  32. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
  33. package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
  34. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
  35. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +2 -2
  36. package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
  37. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  38. package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +1 -1
  39. package/dist/cjs/limebb-rule-editor.cjs.entry.js +1 -1
  40. package/dist/cjs/limebb-rule-gate.cjs.entry.js +1 -1
  41. package/dist/cjs/limebb-text-editor.cjs.entry.js +1 -1
  42. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
  43. package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +1 -1
  44. package/dist/cjs/loader.cjs.js +1 -1
  45. package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
  46. package/dist/collection/components/browser/browser.js +2 -2
  47. package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
  48. package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
  49. package/dist/collection/components/chat-list/chat-list.css +23 -1
  50. package/dist/collection/components/chat-list/chat-list.js +43 -21
  51. package/dist/collection/components/chat-list/scroll-anchor.js +33 -38
  52. package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
  53. package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
  54. package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
  55. package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
  56. package/dist/collection/components/currency-picker/currency-picker.js +1 -1
  57. package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
  58. package/dist/collection/components/date-picker/date-picker.js +1 -1
  59. package/dist/collection/components/date-range/date-range.js +1 -1
  60. package/dist/collection/components/document-chips/document-chips.js +1 -1
  61. package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
  62. package/dist/collection/components/document-picker/document-picker.js +1 -1
  63. package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
  64. package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
  65. package/dist/collection/components/feed/feed.js +1 -1
  66. package/dist/collection/components/filter-chip/filter-chip.js +2 -2
  67. package/dist/collection/components/filter-condition-picker/filter-condition-picker.js +1 -1
  68. package/dist/collection/components/icon-picker/icon-picker.js +1 -1
  69. package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
  70. package/dist/collection/components/info-tile/info-tile.js +1 -1
  71. package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
  72. package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
  73. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +1 -1
  74. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +2 -2
  75. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  76. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  77. package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
  78. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
  79. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  80. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  81. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  82. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
  83. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  84. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  85. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  86. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  87. package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +1 -1
  88. package/dist/collection/components/rule-editor/rule-editor.js +1 -1
  89. package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +1 -1
  90. package/dist/collection/components/rule-gate/rule-gate.js +1 -1
  91. package/dist/collection/components/summary-popover/summary-popover.js +2 -2
  92. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  93. package/dist/collection/components/text-editor/text-editor.js +1 -1
  94. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  95. package/dist/components/chat-icon-list.js +1 -1
  96. package/dist/components/chat-item.js +1 -1
  97. package/dist/components/currency-picker.js +1 -1
  98. package/dist/components/date-picker.js +1 -1
  99. package/dist/components/document-item.js +1 -1
  100. package/dist/components/feed-item-thumbnail-file-info.js +1 -1
  101. package/dist/components/feed-timeline-item.js +1 -1
  102. package/dist/components/filter-chip.js +1 -1
  103. package/dist/components/filter-condition-picker.js +1 -1
  104. package/dist/components/kanban-group.js +1 -1
  105. package/dist/components/kanban-item.js +1 -1
  106. package/dist/components/lime-query-filter-comparison-editor.js +1 -1
  107. package/dist/components/lime-query-filter-comparison.js +1 -1
  108. package/dist/components/lime-query-filter-expression.js +1 -1
  109. package/dist/components/limebb-alert-dialog.js +1 -1
  110. package/dist/components/limebb-browser.js +1 -1
  111. package/dist/components/limebb-chat-list.js +1 -1
  112. package/dist/components/limebb-color-palette-picker.js +1 -1
  113. package/dist/components/limebb-color-palette-swatches.js +1 -1
  114. package/dist/components/limebb-composer-toolbar.js +1 -1
  115. package/dist/components/limebb-dashboard-widget.js +1 -1
  116. package/dist/components/limebb-date-range.js +1 -1
  117. package/dist/components/limebb-document-chips.js +1 -1
  118. package/dist/components/limebb-document-picker.js +1 -1
  119. package/dist/components/limebb-feed.js +1 -1
  120. package/dist/components/limebb-icon-picker.js +1 -1
  121. package/dist/components/limebb-info-tile-format.js +1 -1
  122. package/dist/components/limebb-info-tile.js +1 -1
  123. package/dist/components/limebb-lime-query-builder.js +1 -1
  124. package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
  125. package/dist/components/limebb-locale-picker.js +1 -1
  126. package/dist/components/limebb-mention-group-counter.js +1 -1
  127. package/dist/components/limebb-rule-editor.js +1 -1
  128. package/dist/components/limebb-rule-gate.js +1 -1
  129. package/dist/components/limebb-text-editor.js +1 -1
  130. package/dist/components/limebb-trend-indicator.js +1 -1
  131. package/dist/components/limebb-value-comparison-editor.js +1 -1
  132. package/dist/components/limetype-field.js +1 -1
  133. package/dist/components/live-docs-info.js +1 -1
  134. package/dist/components/notification-item.js +1 -1
  135. package/dist/components/order-by-editor.js +1 -1
  136. package/dist/components/order-by-item.js +1 -1
  137. package/dist/components/percentage-visualizer.js +1 -1
  138. package/dist/components/response-format-item.js +1 -1
  139. package/dist/components/rule-chip-popover.js +1 -1
  140. package/dist/components/summary-popover.js +1 -1
  141. package/dist/components/typing-indicator.js +1 -1
  142. package/dist/esm/lime-crm-building-blocks.js +1 -1
  143. package/dist/esm/limebb-alert-dialog.entry.js +1 -1
  144. package/dist/esm/limebb-browser.entry.js +2 -2
  145. package/dist/esm/limebb-chat-icon-list_3.entry.js +4 -4
  146. package/dist/esm/limebb-chat-list.entry.js +75 -101
  147. package/dist/esm/limebb-color-palette-picker.entry.js +1 -1
  148. package/dist/esm/limebb-color-palette-swatches.entry.js +1 -1
  149. package/dist/esm/limebb-composer-toolbar.entry.js +2 -2
  150. package/dist/esm/limebb-currency-picker.entry.js +1 -1
  151. package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
  152. package/dist/esm/limebb-date-picker.entry.js +1 -1
  153. package/dist/esm/limebb-date-range.entry.js +1 -1
  154. package/dist/esm/limebb-document-chips.entry.js +1 -1
  155. package/dist/esm/limebb-document-item.entry.js +2 -2
  156. package/dist/esm/limebb-document-picker.entry.js +1 -1
  157. package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
  158. package/dist/esm/limebb-feed-timeline-item.entry.js +1 -1
  159. package/dist/esm/limebb-feed.entry.js +1 -1
  160. package/dist/esm/limebb-filter-chip_6.entry.js +7 -7
  161. package/dist/esm/limebb-icon-picker.entry.js +1 -1
  162. package/dist/esm/limebb-info-tile-format.entry.js +1 -1
  163. package/dist/esm/limebb-info-tile.entry.js +1 -1
  164. package/dist/esm/limebb-kanban-group.entry.js +1 -1
  165. package/dist/esm/limebb-kanban-item.entry.js +1 -1
  166. package/dist/esm/limebb-lime-query-builder.entry.js +1 -1
  167. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +2 -2
  168. package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +2 -2
  169. package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
  170. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +1 -1
  171. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
  172. package/dist/esm/limebb-live-docs-info.entry.js +2 -2
  173. package/dist/esm/limebb-locale-picker.entry.js +1 -1
  174. package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
  175. package/dist/esm/limebb-navigation-button_2.entry.js +2 -2
  176. package/dist/esm/limebb-notification-item.entry.js +1 -1
  177. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  178. package/dist/esm/limebb-rule-chip-popover.entry.js +1 -1
  179. package/dist/esm/limebb-rule-editor.entry.js +1 -1
  180. package/dist/esm/limebb-rule-gate.entry.js +1 -1
  181. package/dist/esm/limebb-text-editor.entry.js +1 -1
  182. package/dist/esm/limebb-trend-indicator.entry.js +1 -1
  183. package/dist/esm/limebb-value-comparison-editor.entry.js +1 -1
  184. package/dist/esm/loader.js +1 -1
  185. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  186. package/dist/lime-crm-building-blocks/p-08797129.entry.js +1 -0
  187. package/dist/lime-crm-building-blocks/{p-0a05b3e9.entry.js → p-0cbe2180.entry.js} +1 -1
  188. package/dist/lime-crm-building-blocks/{p-54735042.entry.js → p-1990e369.entry.js} +1 -1
  189. package/dist/lime-crm-building-blocks/{p-0dd64440.entry.js → p-229d018c.entry.js} +1 -1
  190. package/dist/lime-crm-building-blocks/{p-7cd8dffd.entry.js → p-28550961.entry.js} +1 -1
  191. package/dist/lime-crm-building-blocks/{p-568c4e76.entry.js → p-32a81271.entry.js} +1 -1
  192. package/dist/lime-crm-building-blocks/p-3babfbe0.entry.js +1 -0
  193. package/dist/lime-crm-building-blocks/{p-de7724f0.entry.js → p-402a9c97.entry.js} +1 -1
  194. package/dist/lime-crm-building-blocks/{p-97e2e5c9.entry.js → p-46aec244.entry.js} +1 -1
  195. package/dist/lime-crm-building-blocks/{p-f102f169.entry.js → p-551a36f6.entry.js} +1 -1
  196. package/dist/lime-crm-building-blocks/{p-615770be.entry.js → p-6331f9c5.entry.js} +1 -1
  197. package/dist/lime-crm-building-blocks/{p-c46802cd.entry.js → p-635a45ad.entry.js} +1 -1
  198. package/dist/lime-crm-building-blocks/{p-d8d32cb1.entry.js → p-6f923112.entry.js} +1 -1
  199. package/dist/lime-crm-building-blocks/p-79d743bb.entry.js +1 -0
  200. package/dist/lime-crm-building-blocks/{p-4e4d096c.entry.js → p-7ae27308.entry.js} +1 -1
  201. package/dist/lime-crm-building-blocks/{p-b48d7d23.entry.js → p-81783bd4.entry.js} +1 -1
  202. package/dist/lime-crm-building-blocks/{p-657b89d4.entry.js → p-8c36b847.entry.js} +1 -1
  203. package/dist/lime-crm-building-blocks/{p-5b97d4f4.entry.js → p-8e9fcf3c.entry.js} +1 -1
  204. package/dist/lime-crm-building-blocks/{p-c635f826.entry.js → p-90f0c96b.entry.js} +1 -1
  205. package/dist/lime-crm-building-blocks/{p-b6807166.entry.js → p-95ba7a84.entry.js} +1 -1
  206. package/dist/lime-crm-building-blocks/{p-2d1c7b6f.entry.js → p-97e75dee.entry.js} +1 -1
  207. package/dist/lime-crm-building-blocks/{p-170ab4be.entry.js → p-a201df35.entry.js} +1 -1
  208. package/dist/lime-crm-building-blocks/{p-a716b3a8.entry.js → p-a953d48e.entry.js} +1 -1
  209. package/dist/lime-crm-building-blocks/{p-ee7bd504.entry.js → p-ab0f8170.entry.js} +1 -1
  210. package/dist/lime-crm-building-blocks/p-ad5dcefd.entry.js +1 -0
  211. package/dist/lime-crm-building-blocks/{p-73f23d08.entry.js → p-b44b9dbc.entry.js} +1 -1
  212. package/dist/lime-crm-building-blocks/{p-f024c185.entry.js → p-bf05d9de.entry.js} +1 -1
  213. package/dist/lime-crm-building-blocks/{p-e910963c.entry.js → p-c0d49532.entry.js} +1 -1
  214. package/dist/lime-crm-building-blocks/{p-d8ce3497.entry.js → p-cc53a8ca.entry.js} +1 -1
  215. package/dist/lime-crm-building-blocks/{p-45dd8663.entry.js → p-cf03a756.entry.js} +1 -1
  216. package/dist/lime-crm-building-blocks/{p-27b9c824.entry.js → p-cf66256a.entry.js} +1 -1
  217. package/dist/lime-crm-building-blocks/{p-f3905fa2.entry.js → p-d3c58bc1.entry.js} +1 -1
  218. package/dist/lime-crm-building-blocks/{p-d816fcc8.entry.js → p-dcb49a62.entry.js} +1 -1
  219. package/dist/lime-crm-building-blocks/{p-b3529254.entry.js → p-dd02821e.entry.js} +1 -1
  220. package/dist/lime-crm-building-blocks/{p-fc372344.entry.js → p-ddc4ede8.entry.js} +1 -1
  221. package/dist/lime-crm-building-blocks/{p-f1060c88.entry.js → p-dfaef740.entry.js} +1 -1
  222. package/dist/lime-crm-building-blocks/{p-3fd84800.entry.js → p-e6cc320a.entry.js} +1 -1
  223. package/dist/lime-crm-building-blocks/p-e7dee7ac.entry.js +1 -0
  224. package/dist/lime-crm-building-blocks/{p-7c5ecffe.entry.js → p-f3539042.entry.js} +1 -1
  225. package/dist/lime-crm-building-blocks/{p-b6c2d93b.entry.js → p-f5c1ed0c.entry.js} +1 -1
  226. package/dist/lime-crm-building-blocks/{p-ea6ab8b0.entry.js → p-f9991c35.entry.js} +1 -1
  227. package/dist/types/components/chat-list/chat-list.d.ts +8 -2
  228. package/dist/types/components/chat-list/scroll-anchor.d.ts +8 -31
  229. package/dist/types/components.d.ts +4 -0
  230. package/package.json +1 -1
  231. package/dist/collection/components/chat-list/typing-indicator-scroll.js +0 -41
  232. package/dist/lime-crm-building-blocks/p-02fba38e.entry.js +0 -1
  233. package/dist/lime-crm-building-blocks/p-0445035f.entry.js +0 -1
  234. package/dist/lime-crm-building-blocks/p-6d8efe87.entry.js +0 -1
  235. package/dist/lime-crm-building-blocks/p-93af3e81.entry.js +0 -1
  236. package/dist/lime-crm-building-blocks/p-a2b9c410.entry.js +0 -1
  237. package/dist/types/components/chat-list/typing-indicator-scroll.d.ts +0 -18
@@ -2,7 +2,6 @@ import { h, Host } from "@stencil/core";
2
2
  import { PlatformServiceName, } from "@limetech/lime-web-components";
3
3
  import { processChatItems, reverseProcessedItems, } from "./process-chat-items";
4
4
  import { ScrollAnchor } from "./scroll-anchor";
5
- import { createHeightTransitionEndHandler, verifyHeightAnimationProperty, } from "./typing-indicator-scroll";
6
5
  /**
7
6
  * Chat list
8
7
  * This component displays a list of chat items, and groups them by date.
@@ -18,6 +17,8 @@ import { createHeightTransitionEndHandler, verifyHeightAnimationProperty, } from
18
17
  * @exampleComponent limebb-example-chat-list-with-error
19
18
  * @exampleComponent limebb-example-chat-list-with-icon-list
20
19
  * @exampleComponent limebb-example-chat-list-with-wide-content
20
+ * @exampleComponent limebb-example-chat-list-after
21
+ * @slot after - Content after the messages, inside the scrollable list.
21
22
  * @beta
22
23
  */
23
24
  export class ChatList {
@@ -48,7 +49,12 @@ export class ChatList {
48
49
  */
49
50
  this.order = 'oldest-on-top';
50
51
  this.processedItems = [];
51
- this.handleHeightTransitionEnd = createHeightTransitionEndHandler(() => { var _a; return (_a = this.scrollAnchor) === null || _a === void 0 ? void 0 : _a.repinIfSticky(); });
52
+ this.handleScroll = (event) => {
53
+ var _a;
54
+ if (event.target === this.host) {
55
+ (_a = this.scrollAnchor) === null || _a === void 0 ? void 0 : _a.handleScroll();
56
+ }
57
+ };
52
58
  }
53
59
  handleItemsChange() {
54
60
  let lastVisited = null;
@@ -63,34 +69,55 @@ export class ChatList {
63
69
  }
64
70
  componentWillLoad() {
65
71
  this.handleItemsChange();
66
- this.scrollAnchor = new ScrollAnchor(this.host, () => this.order, this.order);
72
+ }
73
+ connectedCallback() {
74
+ this.observeSize();
67
75
  }
68
76
  componentDidLoad() {
77
+ this.observeSize();
78
+ }
79
+ disconnectedCallback() {
69
80
  var _a;
70
- verifyHeightAnimationProperty((_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.typing-indicator-height-animation'));
81
+ (_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
82
+ this.resizeObserver = undefined;
71
83
  }
72
- componentWillRender() {
73
- if (this.items.length === 0) {
74
- // Nothing to measure or scroll against. `isSticky` retains
75
- // its last value (default `true`), so the first non-empty
76
- // render still pins correctly.
84
+ observeSize() {
85
+ var _a;
86
+ const content = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.content');
87
+ if (!content || this.resizeObserver) {
77
88
  return;
78
89
  }
79
- this.scrollAnchor.beforeRender();
90
+ this.resizeObserver = new ResizeObserver(() => { var _a; return (_a = this.scrollAnchor) === null || _a === void 0 ? void 0 : _a.repinIfSticky(); });
91
+ this.resizeObserver.observe(content);
92
+ this.resizeObserver.observe(this.host);
80
93
  }
81
- componentDidRender() {
94
+ componentWillRender() {
82
95
  if (this.items.length === 0) {
96
+ if (this.scrollAnchor) {
97
+ this.host.scrollTop = 0;
98
+ }
99
+ this.scrollAnchor = undefined;
100
+ this.host.classList.remove('is-following');
83
101
  return;
84
102
  }
85
- this.scrollAnchor.afterRender();
103
+ if (this.scrollAnchor) {
104
+ this.scrollAnchor.beforeRender();
105
+ }
106
+ else {
107
+ this.scrollAnchor = new ScrollAnchor(this.host, () => this.order, this.order, (following) => this.host.classList.toggle('is-following', following));
108
+ }
109
+ }
110
+ componentDidRender() {
111
+ var _a;
112
+ (_a = this.scrollAnchor) === null || _a === void 0 ? void 0 : _a.afterRender();
86
113
  }
87
114
  render() {
88
- return (h(Host, { key: '18a96922c3f3a501396a174a4ab2b5ecfaebdbd7', class: {
115
+ return (h(Host, { key: 'f99cc3baf1dd34c6a8949976c71042ce0d809046', class: {
89
116
  'is-empty': this.items.length === 0 &&
90
117
  !this.isTypingIndicatorVisible,
91
- }, "aria-busy": this.isBusy(), role: "log" }, this.renderSpinner(), this.order === 'newest-on-top' &&
118
+ }, onScroll: this.handleScroll }, h("div", { key: '1d77b03beb2c5d61b4e50f15d7458f9b28f35d67', class: "content" }, h("div", { key: '7d1b5577c5f79ef49fe8f1fe33513b60576ee3b4', class: "messages", role: "log", "aria-busy": this.isBusy() }, this.renderSpinner(), this.order === 'newest-on-top' &&
92
119
  this.renderTypingIndicatorBlock(), this.renderChatItems(), this.order === 'oldest-on-top' &&
93
- this.renderTypingIndicatorBlock()));
120
+ this.renderTypingIndicatorBlock()), h("slot", { key: '04ae84b855377c9407f266ca9edffaefdd69f721', name: "after" }))));
94
121
  }
95
122
  renderSpinner() {
96
123
  if (!this.loading) {
@@ -99,12 +126,7 @@ export class ChatList {
99
126
  return h("limel-spinner", null);
100
127
  }
101
128
  renderTypingIndicatorBlock() {
102
- // The indicator's grid-template-rows transition grows the
103
- // container over ~0.46s. `componentDidRender` fires before the
104
- // transition starts, so `scrollHeight` at that moment doesn't
105
- // include the final height. `handleHeightTransitionEnd` re-pins
106
- // once the transition lands.
107
- return (h("div", { class: "typing-indicator-height-animation", onTransitionEnd: this.handleHeightTransitionEnd }, h("div", null, this.renderTypingIndicator())));
129
+ return (h("div", { class: "typing-indicator-height-animation" }, h("div", null, this.renderTypingIndicator())));
108
130
  }
109
131
  renderTypingIndicator() {
110
132
  if (!this.isTypingIndicatorVisible) {
@@ -4,54 +4,45 @@
4
4
  // position as "stuck to newest" and re-pin on each items update.
5
5
  const NEAR_NEWEST_THRESHOLD_PX = 50;
6
6
  /**
7
- * Keeps a scroll container stuck to its "newest" edge as items are
8
- * appended, so long as the user hasn't scrolled away.
9
- *
10
- * We use imperative scrolling rather than `flex-direction: column-reverse`
11
- * so DOM order matches visual order (copy/paste, screen readers, tab
12
- * order all align with what the user sees). CSS `overflow-anchor: auto`
13
- * — the default and left enabled here — solves a different problem:
14
- * preserving scroll position when content is inserted *above* the
15
- * viewport. It doesn't stick the scroll to the newest edge when items
16
- * arrive below the viewport, which is what chat typically needs; that
17
- * requires the imperative approach in this class.
18
- *
19
- * Lifecycle:
20
- * - `beforeRender()` in `componentWillRender` — snapshot whether the
21
- * user is near the newest edge, using the order the scroll position
22
- * was last measured against. Capturing here (synchronously, before
23
- * the new DOM lands) avoids the race a scroll-event listener would
24
- * have with `componentDidRender`.
25
- * - `afterRender()` in `componentDidRender` — if the snapshot said
26
- * "near newest", re-pin to the newest edge (new `scrollHeight`).
27
- * - `repinIfSticky()` for out-of-band re-pins (e.g. after the typing
28
- * indicator's height transition finishes — its `scrollHeight`
29
- * change lands after `componentDidRender`).
30
- *
31
- * Scroll-container contract: the passed element must itself be the
32
- * scrolling ancestor (the element whose `scrollTop` / `scrollHeight`
33
- * / `clientHeight` reflect the chat list's scroll state). In practice
34
- * that is the component's host, which sets `overflow: hidden auto` on
35
- * itself. If future refactors introduce an inner scrolling wrapper,
36
- * pass that wrapper instead.
7
+ * Follows the newest edge until the reader scrolls away. Content growth
8
+ * does not change that choice, including growth after a component render.
9
+ * The container must own scrolling and receive handleScroll calls.
10
+ * The owner must disable native scroll anchoring while following.
37
11
  */
38
12
  export class ScrollAnchor {
39
- constructor(scrollContainer, getOrder, initialOrder) {
13
+ constructor(scrollContainer, getOrder, initialOrder, onFollowingChanged) {
14
+ var _a;
40
15
  this.scrollContainer = scrollContainer;
41
16
  this.getOrder = getOrder;
17
+ this.onFollowingChanged = onFollowingChanged;
42
18
  this.isSticky = true;
43
19
  this.paintedOrder = initialOrder;
20
+ (_a = this.onFollowingChanged) === null || _a === void 0 ? void 0 : _a.call(this, this.isSticky);
44
21
  }
45
22
  beforeRender() {
46
23
  if (!this.scrollContainer.isConnected) {
47
24
  return;
48
25
  }
49
- // Measure against the order the scroll position was last painted
50
- // with. If `order` just changed, the scroll position still refers
51
- // to the previous layout until this render commits.
52
- this.isSticky =
53
- this.distanceFromNewestEdge(this.paintedOrder) <
54
- NEAR_NEWEST_THRESHOLD_PX;
26
+ this.handleScroll();
27
+ }
28
+ handleScroll() {
29
+ var _a;
30
+ if (!this.scrollContainer.isConnected) {
31
+ return;
32
+ }
33
+ const scrollTop = this.scrollContainer.scrollTop;
34
+ // Content can grow without moving the scroll position. Recomputing
35
+ // the distance then would mistake layout growth for a reader scroll.
36
+ if (scrollTop === this.lastScrollTop) {
37
+ return;
38
+ }
39
+ const following = this.distanceFromNewestEdge(this.paintedOrder) <
40
+ NEAR_NEWEST_THRESHOLD_PX;
41
+ if (following !== this.isSticky) {
42
+ this.isSticky = following;
43
+ (_a = this.onFollowingChanged) === null || _a === void 0 ? void 0 : _a.call(this, following);
44
+ }
45
+ this.lastScrollTop = scrollTop;
55
46
  }
56
47
  afterRender() {
57
48
  if (!this.scrollContainer.isConnected) {
@@ -66,13 +57,16 @@ export class ScrollAnchor {
66
57
  if (!this.scrollContainer.isConnected) {
67
58
  return;
68
59
  }
60
+ // A scroll event may still be queued when ResizeObserver runs.
61
+ this.handleScroll();
69
62
  if (this.isSticky) {
70
63
  this.scrollToNewest();
71
64
  }
72
65
  }
73
66
  scrollToNewest() {
74
67
  const target = this.getOrder() === 'oldest-on-top'
75
- ? this.scrollContainer.scrollHeight
68
+ ? Math.max(0, this.scrollContainer.scrollHeight -
69
+ this.scrollContainer.clientHeight)
76
70
  : 0;
77
71
  // Reading `scrollTop` is a cheap (already-measured) lookup, and
78
72
  // short-circuiting avoids forcing a layout when we'd write the
@@ -82,6 +76,7 @@ export class ScrollAnchor {
82
76
  return;
83
77
  }
84
78
  this.scrollContainer.scrollTop = target;
79
+ this.lastScrollTop = this.scrollContainer.scrollTop;
85
80
  }
86
81
  distanceFromNewestEdge(order) {
87
82
  return order === 'oldest-on-top'
@@ -7,7 +7,7 @@ import { h } from "@stencil/core";
7
7
  */
8
8
  export class TypingIndicator {
9
9
  render() {
10
- return (h("div", { key: 'afc891f3443bdecefb025e3564679bf83d654e9a', class: "typing-ellipsis" }, h("div", { key: 'd886ca24a5c075b2cedc9c2902fd9bfbc995e418', class: "circle" }), h("div", { key: '73133ec43983aa1cdf50e9b505cba45e0c8bde04', class: "circle" }), h("div", { key: '624b5cc3b21336642acf53e6d3b867a60ae34a80', class: "circle" })));
10
+ return (h("div", { key: '05a4f1acb02acf1460f9179995b3f403a97121b6', class: "typing-ellipsis" }, h("div", { key: 'd0a87d059b08f83a5cd47ab5cf24933320868b42', class: "circle" }), h("div", { key: '9a091ec0e6d63737f091995b61e372131b3ab645', class: "circle" }), h("div", { key: 'a3ce8ac49f34dec7c0c9efccd8dbf12b33c74f24', class: "circle" })));
11
11
  }
12
12
  static get is() { return "limebb-typing-indicator"; }
13
13
  static get encapsulation() { return "shadow"; }
@@ -58,7 +58,7 @@ export class ColorPalettePicker {
58
58
  this.optionsById = new Map(this.options.map((option) => [option.value, option]));
59
59
  }
60
60
  render() {
61
- return (h(Host, { key: 'a5f44d09a862e67f6216bcad7f46eec29ced722a' }, h("limel-select", { key: 'a5cf05f6592bdda711def6ec1a05b56aee2b73c9', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, options: this.options, value: this.getSelectedOption(), onChange: this.handleChange })));
61
+ return (h(Host, { key: '5144d7eed8495f7880a5b9b84f6d21e057823f6f' }, h("limel-select", { key: '592ba7009714d5585c3ec4051ff87780bfaf7ce0', label: this.label, helperText: this.helperText, disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, required: this.required, options: this.options, value: this.getSelectedOption(), onChange: this.handleChange })));
62
62
  }
63
63
  /**
64
64
  * Resolve `this.value` against the cached options map. Returns
@@ -22,7 +22,7 @@ export class ColorPaletteSwatches {
22
22
  this.colors = [];
23
23
  }
24
24
  render() {
25
- return (h(Host, { key: '62b7189e13fb67c79e8da299a40b1ec621a2886f', "aria-hidden": "true" }, h("ol", { key: 'ae4bda8db0f631c0a8d7ea42f033c4bb1e37b1da' }, this.colors.map((color, index) => (h("li", { key: index, style: { backgroundColor: color } }))))));
25
+ return (h(Host, { key: '0a9f6954afe6a8378b9a9dfebf4b6509ee6bc3b6', "aria-hidden": "true" }, h("ol", { key: 'ed8ce5aa8220f66888cdf349d15367447973bf00' }, this.colors.map((color, index) => (h("li", { key: index, style: { backgroundColor: color } }))))));
26
26
  }
27
27
  static get is() { return "limebb-color-palette-swatches"; }
28
28
  static get encapsulation() { return "shadow"; }
@@ -83,8 +83,8 @@ export class ComposerToolbar {
83
83
  }
84
84
  render() {
85
85
  return [
86
- h("div", { key: '95a495c2289ee07d42b9f2ffd5b9f69634f0c70b', class: "actions" }, h("slot", { key: '3729266b77e939e980734556dc1417e34921b9a9', name: "leading" }), this.renderFileInput(), this.renderTriggerActions(), h("slot", { key: '211edc189658f512049b9e9487007a9e5b580134', name: "trailing" })),
87
- h("slot", { key: '5c7e90a4577224f004e45b4f8447b330b6878138', name: "primary-action" }),
86
+ h("div", { key: '838a9bb908a59ea4d7667ce54578277ef2733426', class: "actions" }, h("slot", { key: '09f4969bdf3c01b86e54708e105e93812c8e5e69', name: "leading" }), this.renderFileInput(), this.renderTriggerActions(), h("slot", { key: 'f0f58aeb42a17784c1343e94f9ee51c0f85b7a8a', name: "trailing" })),
87
+ h("slot", { key: '76a69ca163d0c92a1fd27f9aaf5ce1644d9ed4b4', name: "primary-action" }),
88
88
  ];
89
89
  }
90
90
  get translator() {
@@ -84,7 +84,7 @@ export class CurrencyPicker {
84
84
  };
85
85
  }
86
86
  render() {
87
- return (h("limel-picker", { key: 'e1c19958d4a1e01b3e4457df228f3385afc7c2dc', label: this.label || this.defaultLabel, value: this.createListItem(this.value), helperText: this.helperText, onChange: this.handleChange, badgeIcons: false, disabled: this.disabled, required: this.required, readonly: this.readonly, invalid: this.readonly, searcher: this.search }));
87
+ return (h("limel-picker", { key: 'a27f9d7eb1a3c5b351f7fbf3754a2ffff6c50e96', label: this.label || this.defaultLabel, value: this.createListItem(this.value), helperText: this.helperText, onChange: this.handleChange, badgeIcons: false, disabled: this.disabled, required: this.required, readonly: this.readonly, invalid: this.readonly, searcher: this.search }));
88
88
  }
89
89
  getCurrencyName(code) {
90
90
  var _a;
@@ -17,7 +17,7 @@ export class DashboardComponent {
17
17
  };
18
18
  }
19
19
  render() {
20
- return [this.renderHeader(), h("slot", { key: 'ba53d5b138de483e0e00338af99323ae0985be08', name: "content" })];
20
+ return [this.renderHeader(), h("slot", { key: '909b0c9589ee8e78c1cc8e9ab348527fea2d802c', name: "content" })];
21
21
  }
22
22
  static get is() { return "limebb-dashboard-widget"; }
23
23
  static get encapsulation() { return "shadow"; }
@@ -66,7 +66,7 @@ export class DatePicker {
66
66
  if (this.value) {
67
67
  this.shouldEmitValueAsString = typeof this.value === 'string';
68
68
  }
69
- return (h("limel-date-picker", { key: 'f7862d367f9cbf03a57d5da9e668daddc782d09f', disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: this.helperText, required: this.required, value: this.parseDateValue(), type: this.type, language: this.language, formatter: this.formatter, onChange: this.handleChange }));
69
+ return (h("limel-date-picker", { key: '5b73d026cdc90f74cab3889f75a1049152db9281', disabled: this.disabled, readonly: this.readonly, invalid: this.invalid, label: this.label, placeholder: this.placeholder, helperText: this.helperText, required: this.required, value: this.parseDateValue(), type: this.type, language: this.language, formatter: this.formatter, onChange: this.handleChange }));
70
70
  }
71
71
  parseDateValue() {
72
72
  const value = this.value;
@@ -33,7 +33,7 @@ export class DateRange {
33
33
  this.originalEndTime = this.endTime;
34
34
  }
35
35
  render() {
36
- return (h("div", { key: '164c0dd19a89356dcd9186768033d7974006dcb5', class: "date-pickers" }, this.renderStartDatePicker(), this.renderEndDatePicker()));
36
+ return (h("div", { key: 'b7061f4bc5dbca336514fcf45ff4560c4aa91403', class: "date-pickers" }, this.renderStartDatePicker(), this.renderEndDatePicker()));
37
37
  }
38
38
  renderStartDatePicker() {
39
39
  if (!this.originalStartTime) {
@@ -44,7 +44,7 @@ export class DocumentChips {
44
44
  this.revokeAllBlobUrls();
45
45
  }
46
46
  render() {
47
- return (h(Host, { key: '2e28ebeac60bd5da2ee8123d3b9d842184574cf4', role: "list", "aria-label": this.accessibleLabel }, this.files.map((file) => this.renderFile(file))));
47
+ return (h(Host, { key: '6ae3555251d692d23e010e717df9b7d6b938e47e', role: "list", "aria-label": this.accessibleLabel }, this.files.map((file) => this.renderFile(file))));
48
48
  }
49
49
  renderFile(file) {
50
50
  const isReady = !file.uploadState || file.uploadState === 'done';
@@ -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: '2dc84cd76b18d18e88773d95360fce70fd3f889e', id: String(this.item.file.id), class: {
81
+ return (h(Host, { key: 'd43c632328fced71fd52672150fc33304b172212', 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: '07cb1a3f10d57810f818d7391052f81a0d37a0a5', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: 'bded9a7c6cd9427125286dbce6b5e4b24153cae1', 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: '9e3348decfcd8cae2011ee8d6a677529a8eeba81', image: image, clickable: isUnavailable ? false : true, onClick: this.handleDocumentItemClick, onKeyDown: this.handleKeyDown }, h("div", { key: 'e748c2fd4e5cf0d97870fb7b4cbda71ae79c2209', 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: '8138e0b7f0293f202538badd54b36cd8aae6b803' }, h("limel-notched-outline", { key: '78d990077f20983a0b650e5fb09b0d6e464b4af9', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: 'ba2cac65bb707cd2b81a434ced3e00f440d84e58', 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: '54de1e83d59de262b8e8e7f81c5505bd288d4e75' }, h("limel-notched-outline", { key: '54502e0f4eb3105746aaf1f7ba80c6e88e687acb', labelId: this.labelId, label: this.label, required: this.required, invalid: this.invalid, hasFloatingLabel: true }, h("limel-masonry-layout", { key: 'c782d54540e6a1d66743796983b4f14997725bdc', 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 })));
@@ -217,7 +217,7 @@ export class FeedTimelineItem {
217
217
  render() {
218
218
  var _a, _b;
219
219
  const helperTextId = `helper-text-${this.item.id}`;
220
- return (h(Host, { key: '8348e3e4331d6e82b450f018901cc7de3b599954', id: this.item.id, class: {
220
+ return (h(Host, { key: 'ad9ac13f47bda162ecdd9df62a2393d4b34ca76d', id: this.item.id, class: {
221
221
  'has-unpromoted-actions': !!((_a = this.item.unpromotedActions) === null || _a === void 0 ? void 0 : _a.length),
222
222
  'has-author-picture': !!((_b = this.item.author) === null || _b === void 0 ? void 0 : _b.picture),
223
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: '7290a59bad25cf3b5a0859438745867bb62837cc' }, this.description);
11
+ return h("span", { key: 'a19af68f2f240a1bb36645509e42b337cec8be01' }, 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: '67cdc2679d56efee3433fbfa23f434fa284163fa', role: "log", "aria-busy": this.loading ? 'true' : 'false', style: {
106
+ return (h(Host, { key: 'f2ffe4bbef2e7371d0b1c51e81f2246a16a2615e', 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: '1528a86d1e7f7f1749cc895787bca1e77c8678aa' }, this.renderLabel(), h("button", { key: '07dc7184d0a53472ed0d595a07941077aabaa5c0', 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: '665f0b32f7ccdc27b72a56bee9d39e83fb3945b7', elementId: chipId, label: this.label || this.getFilterLabel(), helperLabel: helperLabel })));
105
+ return (h(Host, { key: '0a9928cddf2b33b2c7e9141b76ef6114966bcf5f' }, this.renderLabel(), h("button", { key: '087a97e9a0e3bed2f926ac7e72096a0fd2224d5b', 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: 'ee48543757e7bde9f31c58c00b7e46f0a0c38b83', 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: '5883ce6193714207687cf7f5ad05aba1a0dc6a87' }, h("limel-select", { key: '1a4b9c6ce47cb89ff9d98fe0bbcc51d01db8a69e', 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: 'f123d92ec72fecdc8056319b8d2fb7c63b644232', 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: 'af628fd7209c35426f94257b9d01751132eb7062', value: buttons.filter(this.isValidButton), onChange: this.handleChangeType }),
96
96
  this.renderFormatConfig(),
97
97
  ];
98
98
  }
@@ -116,7 +116,7 @@ export class InfoTile {
116
116
  const errorProps = Object.assign(Object.assign({}, baseProps), { icon: 'error', prefix: 'ERROR', loading: true, label: this.getLabel(filter) });
117
117
  const normalProps = Object.assign(Object.assign({}, baseProps), { label: this.getLabel(filter), link: this.getLink(filter), loading: this.loading, value: value === null || value === void 0 ? void 0 : value.value.trim() });
118
118
  const props = !filter || this.error ? errorProps : normalProps;
119
- return (h("limel-info-tile", Object.assign({ key: '802c93fade2b3aff10e53c1a970798b994bff2d2', class: { error: !filter || this.error } }, props)));
119
+ return (h("limel-info-tile", Object.assign({ key: '50e9fba6bf058bc41f8596f42fba5b2a20762adc', class: { error: !filter || this.error } }, props)));
120
120
  }
121
121
  /**
122
122
  * Effective `reducedPresence` for this render. The boolean prop
@@ -27,7 +27,7 @@ export class KanbanGroup {
27
27
  };
28
28
  }
29
29
  render() {
30
- return (h(Host, { key: 'b00741bf0f2c617453ce53ce2e6ec852472f20dc' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
30
+ return (h(Host, { key: '0854f6e541983cfac72eaf884c51ffb17f99f122' }, this.renderHelp(), this.renderGroupHeading(), this.renderGroupSummary(), this.renderItems()));
31
31
  }
32
32
  renderGroupSummary() {
33
33
  if (!this.summary || !this.totalCount) {
@@ -55,7 +55,7 @@ export class KanbanItemComponent {
55
55
  }
56
56
  render() {
57
57
  var _a, _b;
58
- return (h(Host, { key: 'cc405f1c7ffd4e8a72158f53863b604e38df882e', id: this.item.id.toString(), class: {
58
+ return (h(Host, { key: '4f5094240ee414b67254301be60b096e83d9c7af', id: this.item.id.toString(), class: {
59
59
  'has-unpromoted-actions': !!((_a = this.item.unpromotedActions) === null || _a === void 0 ? void 0 : _a.length),
60
60
  'is-selected': !!((_b = this.item) === null || _b === void 0 ? void 0 : _b.selected),
61
61
  }, style: {
@@ -52,7 +52,7 @@ export class LimeQueryFilterComparisonEditorComponent {
52
52
  (_a = this.propertySelectorEl) === null || _a === void 0 ? void 0 : _a.focus();
53
53
  }
54
54
  render() {
55
- return (h(Host, { key: '98144a439c21e88ba452732933dd155afa7f90d8' }, this.renderPropertySelector(), this.renderConditionPicker(), this.renderValueInput()));
55
+ return (h(Host, { key: '6adf494d70409b6fd0b41760646d5c6c6501a48f' }, this.renderPropertySelector(), this.renderConditionPicker(), this.renderValueInput()));
56
56
  }
57
57
  renderPropertySelector() {
58
58
  return (h("limebb-property-selector", { ref: (el) => (this.propertySelectorEl = el), class: "property", label: "Property", platform: this.platform, context: this.context, limetype: this.limetype, value: this.expression.key, required: true, onChange: this.handlePropertyChange }));
@@ -55,11 +55,11 @@ export class LimeQueryFilterComparisonComponent {
55
55
  const propertyType = hasKey
56
56
  ? this.getPropertyType(this.expression.key)
57
57
  : undefined;
58
- return (h(Host, { key: 'ebffd40bd7fe14023be8081b21a164fba7ff7d78' }, this.renderHeader(), h("limel-popover", { key: '1e6b11ad372ae6fe98d69d3da739f0f61c2e2015', open: this.isOpen, openDirection: "bottom-start", onClose: this.handleClose }, h("limebb-filter-chip", { key: '1017d1ff6512104d073430d7d233b3bfe14c1edd', slot: "trigger", platform: this.platform, label: hasKey
58
+ return (h(Host, { key: '11a87b46a1273aadb654a13a08351b2114b5c77d' }, this.renderHeader(), h("limel-popover", { key: 'c407e0d0672a4302cc96e452baeca8009359856c', open: this.isOpen, openDirection: "bottom-start", onClose: this.handleClose }, h("limebb-filter-chip", { key: '530e38e1d326614c13324a7efd2e08db62712450', slot: "trigger", platform: this.platform, label: hasKey
59
59
  ? this.getPropertyLabel(this.expression.key)
60
60
  : undefined, condition: hasKey
61
61
  ? operatorToCondition(this.expression.op)
62
- : undefined, propertyType: propertyType, value: hasKey ? this.chipValue() : 'New condition', conjunction: isList ? 'or' : undefined, selected: this.isOpen, removable: true, onClick: this.handleOpen, onRemove: this.removeExpression }), h("limebb-lime-query-filter-comparison-editor", { key: '802cd50b41afc9a3155d50cf8a28d7544cd673c1', platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression, propertyType: propertyType, onExpressionChange: this.handleEditorChange }))));
62
+ : undefined, propertyType: propertyType, value: hasKey ? this.chipValue() : 'New condition', conjunction: isList ? 'or' : undefined, selected: this.isOpen, removable: true, onClick: this.handleOpen, onRemove: this.removeExpression }), h("limebb-lime-query-filter-comparison-editor", { key: 'e736c00aa2f6c750da34a08f671d50dc97f6f452', platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression, propertyType: propertyType, onExpressionChange: this.handleEditorChange }))));
63
63
  }
64
64
  getPropertyLabel(key) {
65
65
  return this.resolveProperty(key).labels.join(' › ');
@@ -90,9 +90,9 @@ export class LimeQueryFilterGroupComponent {
90
90
  const combinator = getCombinator(this.expression);
91
91
  const inner = getInnerAndOr(this.expression);
92
92
  const selected = COMBINATOR_OPTIONS.find((o) => o.value === combinator);
93
- return (h(Host, { key: 'f41c27e721c5241f03ebc380fc0bee1bc6488ba8', "data-op": combinator, style: {
93
+ return (h(Host, { key: '92c46da043467cc08a6832b1b3d8efb902d0202f', "data-op": combinator, style: {
94
94
  '--limebb-query-filter-group-color-code': OP_STYLE[combinator].color,
95
- } }, h("div", { key: '6dee3189e64ff49cc6b4234fcacabbcc592c56a7', class: "group" }, h("div", { key: 'c92e073de445fcefa48e8d90eeaa0357f2fbc9ea', class: "group-header" }, h("limel-select", { key: 'd0de8053b240e5d40b2f9d1de2defdb5257383b6', class: "combinator", label: "Match", value: selected, options: COMBINATOR_OPTIONS, onChange: this.handleCombinatorChange }), h("limel-icon-button", { key: '44b099283399ab33a906f0e7acc940dc39041b10', class: "delete-group", icon: "trash", label: "Delete this group", onClick: this.handleDeleteGroup })), h("ul", { key: 'a8d06013ab21aa149ea1dcf2293ffbb5d0d13e61', class: "rows" }, inner.exp.map(this.renderChildExpression), h("limel-chip", { key: 'f2866e974c93a0633b487d9943e63b929d67a7be', role: "listitem", class: "add-condition", text: "Condition", icon: { name: 'plus_math', title: 'Add' }, onClick: this.handleAddChildExpression })), h("limel-chip", { key: 'defd0ab0875920887391c2114139b92a63d10650', class: "add-group", size: "small", text: "Group", icon: {
95
+ } }, h("div", { key: '9bdd072b62abf3707be294845f0b852bcef6ff30', class: "group" }, h("div", { key: 'b543e0aec068144ebcc1af3f2024c1823bfe4cac', class: "group-header" }, h("limel-select", { key: 'cf5094130a5776d194d1678d2f09405732bb075a', class: "combinator", label: "Match", value: selected, options: COMBINATOR_OPTIONS, onChange: this.handleCombinatorChange }), h("limel-icon-button", { key: 'f1e9d60319a303754231f51fb15a0141d456878e', class: "delete-group", icon: "trash", label: "Delete this group", onClick: this.handleDeleteGroup })), h("ul", { key: '38120502709887cfd904781da2cf7ca96dc663dc', class: "rows" }, inner.exp.map(this.renderChildExpression), h("limel-chip", { key: 'ddbaed450c74d5113ac1d227d04da353237ee3f7', role: "listitem", class: "add-condition", text: "Condition", icon: { name: 'plus_math', title: 'Add' }, onClick: this.handleAddChildExpression })), h("limel-chip", { key: 'b1a2506e6d5da147e2b2e4ecfa755cda5f86c395', class: "add-group", size: "small", text: "Group", icon: {
96
96
  name: 'plus_math',
97
97
  title: 'Add',
98
98
  color: 'var(--group-rail-color)',
@@ -35,7 +35,7 @@ export class LimeQueryFilterNotComponent {
35
35
  };
36
36
  }
37
37
  render() {
38
- return (h("div", { key: '7e9bac8c51b903d1a569d1272167870701412729', class: "expression" }, this.label && h("limel-header", { key: 'aa5d7a0d55a5b2754e02c58dc5c08614b8a0808b', heading: this.label }), h("limebb-lime-query-filter-expression", { key: '573b8435f73b10bf1eb04ced205af5c4b295a01d', 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: 'c2419ca2da5c2e99b4462bec483f62f3272b826e', class: "expression" }, this.label && h("limel-header", { key: '58b93b01e0607a52b22e56379cba36dae6113513', heading: this.label }), h("limebb-lime-query-filter-expression", { key: '72165139bfa1e0236a0048c2f59c1638dfd950d9', 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"; }
@@ -172,7 +172,7 @@ export class LimeQueryBuilder {
172
172
  }
173
173
  }
174
174
  render() {
175
- return (h(Host, { key: '0f28a00b055f7e9094dd26cf733acba1158dda45' }, this.renderHeader(), this.renderContent()));
175
+ return (h(Host, { key: '798c1d0486dae6e06663e9a64913cc5d614a6351' }, 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: '4c041be9c674f687bb3d03c3b8c1377a1d2ec6ee', class: "response-format-builder" }, this.label && h("h1", { key: 'ba7ea3457146bae1e97f252ac041aba21a02c27f', class: "builder-label" }, this.label), this.helperText && (h("p", { key: '9c6d9c8a355f24fa89aadd7eb8f138997bc790c0', class: "builder-helper-text" }, this.helperText)), this.visualModeEnabled && (h("div", { key: '9b62a2ab35e98ac15b53af561a51262495689392', 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: 'd868f51ef5cc95effba94387d20647c49828624d', class: "response-format-builder" }, this.label && h("h1", { key: '8214fdd8202636c11b50e57f9958be91b19560bb', class: "builder-label" }, this.label), this.helperText && (h("p", { key: '0c86057aaed7567dbb946794804d2c4afa126c75', class: "builder-helper-text" }, this.helperText)), this.visualModeEnabled && (h("div", { key: '288c5f91ef8a9c540ca474f3c94642dcb3e867c7', 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: 'c649a9e99ec7af2055df7f1cd82cdd87f19ddde7', 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: '1bb0d48ee4613baef033cea5f6f610261a67972f', 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: 'f5426a11ccbc3f0e4159b50dea245f8da07f669c' }, this.renderEmptyState(), this.renderOrderByEditor()));
72
+ return (h(Host, { key: '6538465113c62786cad0c02a6ab3196dcc0635a1' }, this.renderEmptyState(), this.renderOrderByEditor()));
73
73
  }
74
74
  renderEmptyState() {
75
75
  if (this.limetype) {
@@ -38,9 +38,9 @@ export class OrderByItemComponent {
38
38
  render() {
39
39
  const propertyPath = Object.keys(this.item)[0] || '';
40
40
  const direction = this.item[propertyPath] || 'ASC';
41
- return (h(Host, { key: 'f3c2d3fa47d0e5e11ff2c9d8372ff5a625814462' }, h("limebb-property-selector", { key: 'f6290981aa40a2807722d82e23a893c8511e7892', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: '365c64b46f428ff6e97cd2682688991bde32ce60', class: "control-buttons" }, h("limel-icon-button", { key: 'b3a8eb5d27dee271a4b989c57d925dc4023b88c0', icon: direction === 'ASC'
41
+ return (h(Host, { key: 'd406aa6128f42fa11b92a5755554efa0218f42b1' }, h("limebb-property-selector", { key: '54140307a6762e05c782c2b54288d941a7cd419a', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: 'ef219a25a4d8a61e1295524533c7a7937b8b9320', class: "control-buttons" }, h("limel-icon-button", { key: '2eec9ff17a503c0c08b4faa80efc32f379d5c2c9', icon: direction === 'ASC'
42
42
  ? 'sort_ascending'
43
- : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: '12ce082489ae86a246b84a7a8091ce382bf2acbd', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
43
+ : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: '17ce23ee6b4ec9916a852b4a4612268be974055d', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
44
44
  }
45
45
  static get is() { return "limebb-lime-query-order-by-item"; }
46
46
  static get encapsulation() { return "shadow"; }
@@ -66,7 +66,7 @@ export class ResponseFormatItem {
66
66
  }
67
67
  render() {
68
68
  return [
69
- h("div", { key: '313244ac97300ccce92dae6a4df928543546352e', class: "property-controls" }, h("div", { key: '3173914b62fe297a78d61b2caa0c556b25763e21', class: "property-path" }, h("limebb-property-selector", { key: 'ab640577df46b04c03ccd85bb8aafa902a3cd15f', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange }), h("div", { key: '69ca13975174e89a52991b6c023779a19041c355', class: "input-grid" }, this.renderAliasInput()), h("div", { key: 'd2cdec55803d8bdb08977193c94a773509ac29b3', class: "input-grid" }, this.renderDescriptionInput()), h("div", { key: '32cdad6b755992ad207dd8bf7bfb3dc99a289663', class: "button-group" }, this.renderAliasButton(), this.renderDescriptionButton())), h("limel-icon-button", { key: 'cfb3aaea2911a34842f3f8ab652e4cdd5a0bedb6', icon: "trash", label: "Remove property", onClick: this.handleRemove })),
69
+ h("div", { key: '98e81e906b0c80695dd53b0b0d7ea3ba6118f3bc', class: "property-controls" }, h("div", { key: 'f0c9a96327bba0c035c90b4d7934412f8614be5b', class: "property-path" }, h("limebb-property-selector", { key: 'b0ba031060bbb090a91d820a31e817f0120488a4', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange }), h("div", { key: '742c0f917ebbfa6b5b1b03a704c3616804656cd9', class: "input-grid" }, this.renderAliasInput()), h("div", { key: '55f90ebd7647a73b893d6d4551086727eb7ef2fe', class: "input-grid" }, this.renderDescriptionInput()), h("div", { key: '0693b46f6d34b30ddaa239172105d1ec2a996312', class: "button-group" }, this.renderAliasButton(), this.renderDescriptionButton())), h("limel-icon-button", { key: 'c408f278f1eeea5faf3f1ebdb771ad562e578e5f', icon: "trash", label: "Remove property", onClick: this.handleRemove })),
70
70
  ];
71
71
  }
72
72
  renderAliasButton() {
@@ -5,8 +5,8 @@ import { h } from "@stencil/core";
5
5
  export class LiveDocsInfo {
6
6
  render() {
7
7
  return [
8
- h("div", { key: '189796d67448366e2af26362a29463afff7079a1', class: "header" }, h("limel-icon", { key: 'ffcee585bc30f862066e8dce49ad3330bca13afd', name: "not_showing_video_frames" }), h("h2", { key: '90c5c00930a425a39a144aec4232b76517184b2a' }, "Viewing this file type requires ", h("em", { key: 'c05d9ed5568c1a6cd393aa95e654ea19bf5c133a' }, "Live Docs"))),
9
- h("p", { key: '09d96468c886fa0dcfe8b9b9a3df79c3f5c87f78' }, h("em", { key: 'c232fdf6277bbe910d23cebf18afadcd2118f43d' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'dbb74111b5995c013235ea585fa56fd41049540a', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
8
+ h("div", { key: '02407fa43e06e6e634b542a4f37e2c0fad7658e8', class: "header" }, h("limel-icon", { key: '718c73e93bc8898e28ae94f3576a33b87ce7038d', name: "not_showing_video_frames" }), h("h2", { key: '2b9c6d298551499c92d29da9e7ffbcfb9c358885' }, "Viewing this file type requires ", h("em", { key: '5802a6ae90b7b94cc06dad829b4e69186551b52a' }, "Live Docs"))),
9
+ h("p", { key: '22bda139aa0c3f8d7127639d22c51dbe22628722' }, h("em", { key: 'd35dfbee9a70cb7c86458d3de2c6e01f7ea8d18f' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'f9d0d15458c623435108c41c83bf5d29e710cfab', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
10
10
  ];
11
11
  }
12
12
  static get is() { return "limebb-live-docs-info"; }