@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.
- package/CHANGELOG.md +11 -0
- package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
- package/dist/cjs/limebb-alert-dialog.cjs.entry.js +1 -1
- package/dist/cjs/limebb-browser.cjs.entry.js +2 -2
- package/dist/cjs/limebb-chat-icon-list_3.cjs.entry.js +4 -4
- package/dist/cjs/limebb-chat-list.cjs.entry.js +75 -101
- package/dist/cjs/limebb-color-palette-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-color-palette-swatches.cjs.entry.js +1 -1
- package/dist/cjs/limebb-composer-toolbar.cjs.entry.js +2 -2
- package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-dashboard-widget.cjs.entry.js +1 -1
- package/dist/cjs/limebb-date-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-date-range.cjs.entry.js +1 -1
- package/dist/cjs/limebb-document-chips.cjs.entry.js +1 -1
- package/dist/cjs/limebb-document-item.cjs.entry.js +2 -2
- package/dist/cjs/limebb-document-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-feed-item-thumbnail-file-info.cjs.entry.js +1 -1
- package/dist/cjs/limebb-feed-timeline-item.cjs.entry.js +1 -1
- package/dist/cjs/limebb-feed.cjs.entry.js +1 -1
- package/dist/cjs/limebb-filter-chip_6.cjs.entry.js +7 -7
- package/dist/cjs/limebb-icon-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-info-tile-format.cjs.entry.js +1 -1
- package/dist/cjs/limebb-info-tile.cjs.entry.js +1 -1
- package/dist/cjs/limebb-kanban-group.cjs.entry.js +1 -1
- package/dist/cjs/limebb-kanban-item.cjs.entry.js +1 -1
- package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +1 -1
- package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +2 -2
- package/dist/cjs/limebb-lime-query-order-by-editor_2.cjs.entry.js +2 -2
- package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
- package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +1 -1
- package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +1 -1
- package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
- package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
- package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +2 -2
- package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
- package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
- package/dist/cjs/limebb-rule-chip-popover.cjs.entry.js +1 -1
- package/dist/cjs/limebb-rule-editor.cjs.entry.js +1 -1
- package/dist/cjs/limebb-rule-gate.cjs.entry.js +1 -1
- package/dist/cjs/limebb-text-editor.cjs.entry.js +1 -1
- package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
- package/dist/cjs/limebb-value-comparison-editor.cjs.entry.js +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/components/alert-dialog/alert-dialog.js +1 -1
- package/dist/collection/components/browser/browser.js +2 -2
- package/dist/collection/components/chat-list/chat-icon-list/chat-icon-list.js +1 -1
- package/dist/collection/components/chat-list/chat-item/chat-item.js +2 -2
- package/dist/collection/components/chat-list/chat-list.css +23 -1
- package/dist/collection/components/chat-list/chat-list.js +43 -21
- package/dist/collection/components/chat-list/scroll-anchor.js +33 -38
- package/dist/collection/components/chat-list/typing-indicator/typing-indicator.js +1 -1
- package/dist/collection/components/color-palette-picker/color-palette-picker.js +1 -1
- package/dist/collection/components/color-palette-picker/color-palette-swatches/color-palette-swatches.js +1 -1
- package/dist/collection/components/composer-toolbar/composer-toolbar.js +2 -2
- package/dist/collection/components/currency-picker/currency-picker.js +1 -1
- package/dist/collection/components/dashboard-widget/dashboard-widget.js +1 -1
- package/dist/collection/components/date-picker/date-picker.js +1 -1
- package/dist/collection/components/date-range/date-range.js +1 -1
- package/dist/collection/components/document-chips/document-chips.js +1 -1
- package/dist/collection/components/document-picker/document-item/document-item.js +2 -2
- package/dist/collection/components/document-picker/document-picker.js +1 -1
- package/dist/collection/components/feed/feed-item/feed-timeline-item.js +1 -1
- package/dist/collection/components/feed/feed-item-thumbnail-file-info/feed-item-thumbnail-file-info.js +1 -1
- package/dist/collection/components/feed/feed.js +1 -1
- package/dist/collection/components/filter-chip/filter-chip.js +2 -2
- package/dist/collection/components/filter-condition-picker/filter-condition-picker.js +1 -1
- package/dist/collection/components/icon-picker/icon-picker.js +1 -1
- package/dist/collection/components/info-tile/format/config/info-tile-format.js +1 -1
- package/dist/collection/components/info-tile/info-tile.js +1 -1
- package/dist/collection/components/kanban/kanban-group/kanban-group.js +1 -1
- package/dist/collection/components/kanban/kanban-item/kanban-item.js +1 -1
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison-editor.js +1 -1
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +2 -2
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
- package/dist/collection/components/lime-query-builder/lime-query-builder.js +1 -1
- package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +1 -1
- package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
- package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
- package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
- package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +1 -1
- package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
- package/dist/collection/components/locale-picker/locale-picker.js +1 -1
- package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
- package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
- package/dist/collection/components/rule-editor/rule-chip-popover/rule-chip-popover.js +1 -1
- package/dist/collection/components/rule-editor/rule-editor.js +1 -1
- package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +1 -1
- package/dist/collection/components/rule-gate/rule-gate.js +1 -1
- package/dist/collection/components/summary-popover/summary-popover.js +2 -2
- package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
- package/dist/collection/components/text-editor/text-editor.js +1 -1
- package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
- package/dist/components/chat-icon-list.js +1 -1
- package/dist/components/chat-item.js +1 -1
- package/dist/components/currency-picker.js +1 -1
- package/dist/components/date-picker.js +1 -1
- package/dist/components/document-item.js +1 -1
- package/dist/components/feed-item-thumbnail-file-info.js +1 -1
- package/dist/components/feed-timeline-item.js +1 -1
- package/dist/components/filter-chip.js +1 -1
- package/dist/components/filter-condition-picker.js +1 -1
- package/dist/components/kanban-group.js +1 -1
- package/dist/components/kanban-item.js +1 -1
- package/dist/components/lime-query-filter-comparison-editor.js +1 -1
- package/dist/components/lime-query-filter-comparison.js +1 -1
- package/dist/components/lime-query-filter-expression.js +1 -1
- package/dist/components/limebb-alert-dialog.js +1 -1
- package/dist/components/limebb-browser.js +1 -1
- package/dist/components/limebb-chat-list.js +1 -1
- package/dist/components/limebb-color-palette-picker.js +1 -1
- package/dist/components/limebb-color-palette-swatches.js +1 -1
- package/dist/components/limebb-composer-toolbar.js +1 -1
- package/dist/components/limebb-dashboard-widget.js +1 -1
- package/dist/components/limebb-date-range.js +1 -1
- package/dist/components/limebb-document-chips.js +1 -1
- package/dist/components/limebb-document-picker.js +1 -1
- package/dist/components/limebb-feed.js +1 -1
- package/dist/components/limebb-icon-picker.js +1 -1
- package/dist/components/limebb-info-tile-format.js +1 -1
- package/dist/components/limebb-info-tile.js +1 -1
- package/dist/components/limebb-lime-query-builder.js +1 -1
- package/dist/components/limebb-lime-query-response-format-builder.js +1 -1
- package/dist/components/limebb-locale-picker.js +1 -1
- package/dist/components/limebb-mention-group-counter.js +1 -1
- package/dist/components/limebb-rule-editor.js +1 -1
- package/dist/components/limebb-rule-gate.js +1 -1
- package/dist/components/limebb-text-editor.js +1 -1
- package/dist/components/limebb-trend-indicator.js +1 -1
- package/dist/components/limebb-value-comparison-editor.js +1 -1
- package/dist/components/limetype-field.js +1 -1
- package/dist/components/live-docs-info.js +1 -1
- package/dist/components/notification-item.js +1 -1
- package/dist/components/order-by-editor.js +1 -1
- package/dist/components/order-by-item.js +1 -1
- package/dist/components/percentage-visualizer.js +1 -1
- package/dist/components/response-format-item.js +1 -1
- package/dist/components/rule-chip-popover.js +1 -1
- package/dist/components/summary-popover.js +1 -1
- package/dist/components/typing-indicator.js +1 -1
- package/dist/esm/lime-crm-building-blocks.js +1 -1
- package/dist/esm/limebb-alert-dialog.entry.js +1 -1
- package/dist/esm/limebb-browser.entry.js +2 -2
- package/dist/esm/limebb-chat-icon-list_3.entry.js +4 -4
- package/dist/esm/limebb-chat-list.entry.js +75 -101
- package/dist/esm/limebb-color-palette-picker.entry.js +1 -1
- package/dist/esm/limebb-color-palette-swatches.entry.js +1 -1
- package/dist/esm/limebb-composer-toolbar.entry.js +2 -2
- package/dist/esm/limebb-currency-picker.entry.js +1 -1
- package/dist/esm/limebb-dashboard-widget.entry.js +1 -1
- package/dist/esm/limebb-date-picker.entry.js +1 -1
- package/dist/esm/limebb-date-range.entry.js +1 -1
- package/dist/esm/limebb-document-chips.entry.js +1 -1
- package/dist/esm/limebb-document-item.entry.js +2 -2
- package/dist/esm/limebb-document-picker.entry.js +1 -1
- package/dist/esm/limebb-feed-item-thumbnail-file-info.entry.js +1 -1
- package/dist/esm/limebb-feed-timeline-item.entry.js +1 -1
- package/dist/esm/limebb-feed.entry.js +1 -1
- package/dist/esm/limebb-filter-chip_6.entry.js +7 -7
- package/dist/esm/limebb-icon-picker.entry.js +1 -1
- package/dist/esm/limebb-info-tile-format.entry.js +1 -1
- package/dist/esm/limebb-info-tile.entry.js +1 -1
- package/dist/esm/limebb-kanban-group.entry.js +1 -1
- package/dist/esm/limebb-kanban-item.entry.js +1 -1
- package/dist/esm/limebb-lime-query-builder.entry.js +1 -1
- package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +2 -2
- package/dist/esm/limebb-lime-query-order-by-editor_2.entry.js +2 -2
- package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
- package/dist/esm/limebb-lime-query-response-format-builder.entry.js +1 -1
- package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +1 -1
- package/dist/esm/limebb-live-docs-info.entry.js +2 -2
- package/dist/esm/limebb-locale-picker.entry.js +1 -1
- package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
- package/dist/esm/limebb-navigation-button_2.entry.js +2 -2
- package/dist/esm/limebb-notification-item.entry.js +1 -1
- package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
- package/dist/esm/limebb-rule-chip-popover.entry.js +1 -1
- package/dist/esm/limebb-rule-editor.entry.js +1 -1
- package/dist/esm/limebb-rule-gate.entry.js +1 -1
- package/dist/esm/limebb-text-editor.entry.js +1 -1
- package/dist/esm/limebb-trend-indicator.entry.js +1 -1
- package/dist/esm/limebb-value-comparison-editor.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
- package/dist/lime-crm-building-blocks/p-08797129.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-0a05b3e9.entry.js → p-0cbe2180.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-54735042.entry.js → p-1990e369.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-0dd64440.entry.js → p-229d018c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-7cd8dffd.entry.js → p-28550961.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-568c4e76.entry.js → p-32a81271.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-3babfbe0.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-de7724f0.entry.js → p-402a9c97.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-97e2e5c9.entry.js → p-46aec244.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f102f169.entry.js → p-551a36f6.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-615770be.entry.js → p-6331f9c5.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-c46802cd.entry.js → p-635a45ad.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d8d32cb1.entry.js → p-6f923112.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-79d743bb.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-4e4d096c.entry.js → p-7ae27308.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b48d7d23.entry.js → p-81783bd4.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-657b89d4.entry.js → p-8c36b847.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-5b97d4f4.entry.js → p-8e9fcf3c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-c635f826.entry.js → p-90f0c96b.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b6807166.entry.js → p-95ba7a84.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-2d1c7b6f.entry.js → p-97e75dee.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-170ab4be.entry.js → p-a201df35.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-a716b3a8.entry.js → p-a953d48e.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-ee7bd504.entry.js → p-ab0f8170.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-ad5dcefd.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-73f23d08.entry.js → p-b44b9dbc.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f024c185.entry.js → p-bf05d9de.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-e910963c.entry.js → p-c0d49532.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d8ce3497.entry.js → p-cc53a8ca.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-45dd8663.entry.js → p-cf03a756.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-27b9c824.entry.js → p-cf66256a.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f3905fa2.entry.js → p-d3c58bc1.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d816fcc8.entry.js → p-dcb49a62.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b3529254.entry.js → p-dd02821e.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-fc372344.entry.js → p-ddc4ede8.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f1060c88.entry.js → p-dfaef740.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-3fd84800.entry.js → p-e6cc320a.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-e7dee7ac.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-7c5ecffe.entry.js → p-f3539042.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b6c2d93b.entry.js → p-f5c1ed0c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-ea6ab8b0.entry.js → p-f9991c35.entry.js} +1 -1
- package/dist/types/components/chat-list/chat-list.d.ts +8 -2
- package/dist/types/components/chat-list/scroll-anchor.d.ts +8 -31
- package/dist/types/components.d.ts +4 -0
- package/package.json +1 -1
- package/dist/collection/components/chat-list/typing-indicator-scroll.js +0 -41
- package/dist/lime-crm-building-blocks/p-02fba38e.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-0445035f.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-6d8efe87.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-93af3e81.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-a2b9c410.entry.js +0 -1
- 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.
|
|
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
|
-
|
|
72
|
+
}
|
|
73
|
+
connectedCallback() {
|
|
74
|
+
this.observeSize();
|
|
67
75
|
}
|
|
68
76
|
componentDidLoad() {
|
|
77
|
+
this.observeSize();
|
|
78
|
+
}
|
|
79
|
+
disconnectedCallback() {
|
|
69
80
|
var _a;
|
|
70
|
-
|
|
81
|
+
(_a = this.resizeObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
|
|
82
|
+
this.resizeObserver = undefined;
|
|
71
83
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
|
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: '
|
|
115
|
+
return (h(Host, { key: 'f99cc3baf1dd34c6a8949976c71042ce0d809046', class: {
|
|
89
116
|
'is-empty': this.items.length === 0 &&
|
|
90
117
|
!this.isTypingIndicatorVisible,
|
|
91
|
-
},
|
|
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
|
-
|
|
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
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
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
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
87
|
-
h("slot", { key: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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 }));
|
package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js
CHANGED
|
@@ -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: '
|
|
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: '
|
|
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(' › ');
|
package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js
CHANGED
|
@@ -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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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: '
|
|
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"; }
|
package/dist/collection/components/lime-query-builder/response-format/response-format-item.js
CHANGED
|
@@ -66,7 +66,7 @@ export class ResponseFormatItem {
|
|
|
66
66
|
}
|
|
67
67
|
render() {
|
|
68
68
|
return [
|
|
69
|
-
h("div", { key: '
|
|
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: '
|
|
9
|
-
h("p", { key: '
|
|
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"; }
|