@limetech/lime-crm-building-blocks 1.138.0 → 1.139.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 +7 -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 +1 -1
- 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_5.cjs.entry.js +6 -6
- 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 +280 -24
- 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.js +1 -1
- 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/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.css +11 -0
- package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js +297 -33
- 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/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 +1 -1
- 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_5.entry.js +6 -6
- 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 +280 -24
- 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-0bdfd7ab.entry.js → p-05f8b18e.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-cf687fcd.entry.js → p-0b13889c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-3c25e289.entry.js → p-19b95901.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-5095a168.entry.js → p-1cd45d56.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-23556cb1.entry.js → p-22af159d.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-7dedd057.entry.js → p-27f700c9.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-46cc4edb.entry.js → p-2cac740d.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-357c5a54.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-b8e4a0d1.entry.js → p-37c0a17f.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-8d41a7f8.entry.js → p-3c19f792.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-61ee03f9.entry.js → p-3c6fb9d1.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-3e9de50b.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-00860497.entry.js → p-46f2667e.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-e3d8fd1b.entry.js → p-47912c60.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-cfc3f16b.entry.js → p-4bdf9821.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-22e4b5e9.entry.js → p-655f028c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-342aae30.entry.js → p-6a7eb5b2.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-4fcb97ea.entry.js → p-6e298dd5.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-c84136ae.entry.js → p-7dc9923f.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-7b119566.entry.js → p-80f2f76c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-31580e01.entry.js → p-8eec03b7.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-8f7c054d.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-45d89e49.entry.js → p-94cee387.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b2b595cc.entry.js → p-9b411072.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d8d30ec3.entry.js → p-ae802651.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-4e66111a.entry.js → p-ae9780ff.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-5e4c9115.entry.js → p-b0ac4a5f.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d7462e93.entry.js → p-b6b8dad7.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-00be69ac.entry.js → p-bae91ba0.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-90f3e299.entry.js → p-be4829f3.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-e0107a69.entry.js → p-c90ef898.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-6cfebec1.entry.js → p-cac27f2c.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f5c44de2.entry.js → p-d5ad0cd9.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-840b817b.entry.js → p-d99e57aa.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b9c4df08.entry.js → p-e031c267.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-c85e44a9.entry.js → p-e4aeb4fe.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-88bdf554.entry.js → p-e4ccc690.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-4e7b8559.entry.js → p-edf566e7.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-f93a749f.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-50f5380d.entry.js → p-fdd63bcc.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-1c67e198.entry.js → p-fe9cbbdd.entry.js} +1 -1
- package/dist/types/components/rule-editor/value-comparison-editor/value-comparison-editor.d.ts +40 -19
- package/dist/types/components.d.ts +20 -32
- package/package.json +1 -1
- package/dist/lime-crm-building-blocks/p-01ddcb14.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-52f39097.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-9ad269dd.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-f382f2fa.entry.js +0 -1
package/dist/collection/components/rule-editor/value-comparison-editor/value-comparison-editor.js
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
|
-
import { h } from "@stencil/core";
|
|
1
|
+
import { h, } from "@stencil/core";
|
|
2
2
|
import { Operator } from "@limetech/lime-web-components";
|
|
3
|
+
const TYPE_OPTIONS = [
|
|
4
|
+
{ value: 'string', text: 'Text' },
|
|
5
|
+
{ value: 'number', text: 'Number' },
|
|
6
|
+
{ value: 'date', text: 'Date' },
|
|
7
|
+
{ value: 'datetime', text: 'Date & time' },
|
|
8
|
+
{ value: 'time', text: 'Time' },
|
|
9
|
+
];
|
|
3
10
|
const OPERATOR_OPTIONS = [
|
|
4
11
|
{ value: Operator.EQUALS, text: 'Equals' },
|
|
5
12
|
{ value: Operator.NOT_EQUALS, text: 'Does not equal' },
|
|
@@ -8,16 +15,43 @@ const OPERATOR_OPTIONS = [
|
|
|
8
15
|
{ value: Operator.GREATER, text: 'Greater than' },
|
|
9
16
|
{ value: Operator.GREATER_OR_EQUAL, text: 'Greater than or equal to' },
|
|
10
17
|
];
|
|
18
|
+
const RELATIVE_OFFSET_KEY = '__relative_offset__';
|
|
19
|
+
const SPECIFIC_KEY = '__specific__';
|
|
20
|
+
const FIXED_TOKEN_OPTIONS = [
|
|
21
|
+
{ value: '$now', text: 'Now' },
|
|
22
|
+
{ value: '$today', text: 'Today' },
|
|
23
|
+
{ value: '$tomorrow', text: 'Tomorrow' },
|
|
24
|
+
{ value: '$yesterday', text: 'Yesterday' },
|
|
25
|
+
{ value: '$this_week', text: 'This week' },
|
|
26
|
+
{ value: '$this_month', text: 'This month' },
|
|
27
|
+
{ value: '$this_quarter', text: 'This quarter' },
|
|
28
|
+
{ value: '$this_year', text: 'This year' },
|
|
29
|
+
];
|
|
30
|
+
const FIXED_TOKENS = new Set(FIXED_TOKEN_OPTIONS.map((option) => option.value));
|
|
31
|
+
const DIRECTION_OPTIONS = [
|
|
32
|
+
{ value: 'next', text: 'Next' },
|
|
33
|
+
{ value: 'previous', text: 'Previous' },
|
|
34
|
+
];
|
|
35
|
+
const UNIT_OPTIONS = [
|
|
36
|
+
{ value: 'day', text: 'days' },
|
|
37
|
+
{ value: 'week', text: 'weeks' },
|
|
38
|
+
{ value: 'month', text: 'months' },
|
|
39
|
+
{ value: 'quarter', text: 'quarters' },
|
|
40
|
+
{ value: 'year', text: 'years' },
|
|
41
|
+
];
|
|
42
|
+
// Same grammar the primitive parses in limeclient.js `relative-dates.ts`.
|
|
43
|
+
const PARAMETERIZED_TOKEN = /^\$(next|previous)_(day|week|month|quarter|year)\((\d+)\)$/;
|
|
44
|
+
const TEMPORAL_TYPES = new Set([
|
|
45
|
+
'date',
|
|
46
|
+
'datetime',
|
|
47
|
+
'time',
|
|
48
|
+
]);
|
|
11
49
|
/**
|
|
12
|
-
* Args editor for the `limetech.value-comparison` rule primitive:
|
|
13
|
-
* operator from the match-filter {@link Operator} vocabulary
|
|
14
|
-
* to compare against. The
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
* date strings sort correctly that way).
|
|
18
|
-
*
|
|
19
|
-
* Emptiness is a separate concern handled by the `limetech.value-is-empty`
|
|
20
|
-
* primitive, so this editor offers comparison operators only.
|
|
50
|
+
* Args editor for the `limetech.value-comparison` rule primitive: a comparison
|
|
51
|
+
* type, an operator from the match-filter {@link Operator} vocabulary, and the
|
|
52
|
+
* value to compare against. The chosen type drives the operand input — text and
|
|
53
|
+
* numbers use a plain field; dates, datetimes and times offer a date picker plus
|
|
54
|
+
* relative-date choices.
|
|
21
55
|
*
|
|
22
56
|
* @alpha
|
|
23
57
|
* @private
|
|
@@ -28,46 +62,263 @@ export class ValueComparisonEditor {
|
|
|
28
62
|
* @inheritdoc
|
|
29
63
|
*/
|
|
30
64
|
this.value = {};
|
|
65
|
+
this.direction = 'next';
|
|
66
|
+
this.unit = 'week';
|
|
67
|
+
this.count = 1;
|
|
68
|
+
this.countInput = '1';
|
|
69
|
+
this.countInvalid = false;
|
|
70
|
+
this.handleTypeChange = (event) => {
|
|
71
|
+
var _a, _b;
|
|
72
|
+
event.stopPropagation();
|
|
73
|
+
this.resetOperandState();
|
|
74
|
+
this.emit(this.value.operator, undefined, (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'string');
|
|
75
|
+
};
|
|
31
76
|
this.handleOperatorChange = (event) => {
|
|
32
77
|
var _a;
|
|
33
78
|
event.stopPropagation();
|
|
34
79
|
const operator = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value;
|
|
35
80
|
if (!operator) {
|
|
36
|
-
this.
|
|
81
|
+
this.emit(undefined, undefined);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
this.emit(operator, this.value.operand);
|
|
85
|
+
};
|
|
86
|
+
this.handleScalarOperandChange = (event) => {
|
|
87
|
+
event.stopPropagation();
|
|
88
|
+
const operator = this.value.operator;
|
|
89
|
+
if (!operator) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
this.emit(operator, this.parseScalarOperand(event.detail));
|
|
93
|
+
};
|
|
94
|
+
this.handleOperandKeyChange = (event) => {
|
|
95
|
+
var _a;
|
|
96
|
+
event.stopPropagation();
|
|
97
|
+
const operator = this.value.operator;
|
|
98
|
+
if (!operator) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const key = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value;
|
|
102
|
+
this.operandKey = key;
|
|
103
|
+
if (key === RELATIVE_OFFSET_KEY) {
|
|
104
|
+
this.emit(operator, this.relativeOffsetToken());
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
if (key === SPECIFIC_KEY) {
|
|
108
|
+
// Default to now so the operand is always a real, rebuildable value.
|
|
109
|
+
if (!this.specificDate) {
|
|
110
|
+
this.specificDate = new Date();
|
|
111
|
+
}
|
|
112
|
+
this.emit(operator, this.formatSpecific(this.specificDate));
|
|
37
113
|
return;
|
|
38
114
|
}
|
|
39
|
-
|
|
115
|
+
// A fixed token (or nothing selected).
|
|
116
|
+
this.emit(operator, key || undefined);
|
|
117
|
+
};
|
|
118
|
+
this.handleDirectionChange = (event) => {
|
|
119
|
+
var _a, _b;
|
|
120
|
+
event.stopPropagation();
|
|
121
|
+
this.direction = (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'next';
|
|
122
|
+
this.emitRelativeOffset();
|
|
123
|
+
};
|
|
124
|
+
this.handleUnitChange = (event) => {
|
|
125
|
+
var _a, _b;
|
|
126
|
+
event.stopPropagation();
|
|
127
|
+
this.unit = (_b = (_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : 'week';
|
|
128
|
+
this.emitRelativeOffset();
|
|
40
129
|
};
|
|
41
|
-
this.
|
|
130
|
+
this.handleCountChange = (event) => {
|
|
131
|
+
event.stopPropagation();
|
|
132
|
+
this.countInput = String(event.detail);
|
|
133
|
+
const parsed = Number.parseInt(this.countInput, 10);
|
|
134
|
+
if (Number.isNaN(parsed) || parsed < 1) {
|
|
135
|
+
// Keep showing what the author typed, but flag it instead of
|
|
136
|
+
// emitting an operand that disagrees with the field.
|
|
137
|
+
this.countInvalid = true;
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
this.countInvalid = false;
|
|
141
|
+
this.count = parsed;
|
|
142
|
+
this.emitRelativeOffset();
|
|
143
|
+
};
|
|
144
|
+
this.handleSpecificDateChange = (event) => {
|
|
42
145
|
event.stopPropagation();
|
|
43
146
|
const operator = this.value.operator;
|
|
44
147
|
if (!operator) {
|
|
45
148
|
return;
|
|
46
149
|
}
|
|
47
|
-
|
|
150
|
+
const date = event.detail instanceof Date ? event.detail : undefined;
|
|
151
|
+
this.specificDate = date;
|
|
152
|
+
this.emit(operator, date ? this.formatSpecific(date) : undefined);
|
|
48
153
|
};
|
|
49
154
|
}
|
|
155
|
+
componentWillLoad() {
|
|
156
|
+
this.syncFromValue(this.value);
|
|
157
|
+
}
|
|
158
|
+
onValueChange(value) {
|
|
159
|
+
this.syncFromValue(value);
|
|
160
|
+
}
|
|
161
|
+
get valueType() {
|
|
162
|
+
var _a;
|
|
163
|
+
return (_a = this.value.valueType) !== null && _a !== void 0 ? _a : 'string';
|
|
164
|
+
}
|
|
50
165
|
render() {
|
|
51
|
-
const
|
|
52
|
-
|
|
166
|
+
const selectedType = TYPE_OPTIONS.find((option) => option.value === this.valueType);
|
|
167
|
+
const selectedOperator = OPERATOR_OPTIONS.find((option) => option.value === this.value.operator);
|
|
168
|
+
return (h("div", { key: 'b7ed0eedaa937029a3e51d53630cd9a352804deb', class: "rule" }, h("limel-select", { key: '402c121d9f06c1c60b6c03c7b82049127a9cd272', class: "type-select", label: "Compare as", options: TYPE_OPTIONS, value: selectedType, onChange: this.handleTypeChange }), h("limel-select", { key: 'aa59ca982dbca9a5b17d50c721fde57c6ab888d8', class: "operator-select", label: "When the value", options: OPERATOR_OPTIONS, value: selectedOperator, onChange: this.handleOperatorChange }), this.renderOperand()));
|
|
53
169
|
}
|
|
54
|
-
|
|
170
|
+
renderOperand() {
|
|
55
171
|
if (!this.value.operator) {
|
|
56
172
|
return null;
|
|
57
173
|
}
|
|
58
|
-
|
|
174
|
+
if (TEMPORAL_TYPES.has(this.valueType)) {
|
|
175
|
+
return this.renderTemporalOperand();
|
|
176
|
+
}
|
|
177
|
+
return this.renderScalarInput();
|
|
178
|
+
}
|
|
179
|
+
renderScalarInput() {
|
|
180
|
+
return (h("limel-input-field", { class: "operand-input", label: "Compared with", type: this.valueType === 'number' ? 'number' : 'text', value: this.value.operand === undefined
|
|
59
181
|
? ''
|
|
60
|
-
: String(this.value.operand), onChange: this.
|
|
182
|
+
: String(this.value.operand), onChange: this.handleScalarOperandChange }));
|
|
61
183
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
184
|
+
renderTemporalOperand() {
|
|
185
|
+
const options = this.operandOptions();
|
|
186
|
+
const selected = options.find((option) => option.value === this.operandKey);
|
|
187
|
+
return [
|
|
188
|
+
h("limel-select", { key: "operand-select", class: "operand-select", label: "Compared with", options: options, value: selected, onChange: this.handleOperandKeyChange }),
|
|
189
|
+
this.renderTemporalSubControl(),
|
|
190
|
+
];
|
|
191
|
+
}
|
|
192
|
+
operandOptions() {
|
|
193
|
+
if (this.valueType === 'time') {
|
|
194
|
+
return [
|
|
195
|
+
{ value: '$now', text: 'Now' },
|
|
196
|
+
{ value: SPECIFIC_KEY, text: 'Specific time…' },
|
|
197
|
+
];
|
|
65
198
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
199
|
+
const specificText = this.valueType === 'datetime'
|
|
200
|
+
? 'Specific date & time…'
|
|
201
|
+
: 'Specific date…';
|
|
202
|
+
// For a pure date `$now` resolves to the same value as `$today`, so
|
|
203
|
+
// only datetime (where the time component matters) offers it.
|
|
204
|
+
const fixedTokens = this.valueType === 'date'
|
|
205
|
+
? FIXED_TOKEN_OPTIONS.filter((option) => option.value !== '$now')
|
|
206
|
+
: FIXED_TOKEN_OPTIONS;
|
|
207
|
+
return [
|
|
208
|
+
...fixedTokens,
|
|
209
|
+
{ value: RELATIVE_OFFSET_KEY, text: 'Relative offset…' },
|
|
210
|
+
{ value: SPECIFIC_KEY, text: specificText },
|
|
211
|
+
];
|
|
212
|
+
}
|
|
213
|
+
renderTemporalSubControl() {
|
|
214
|
+
if (this.operandKey === RELATIVE_OFFSET_KEY) {
|
|
215
|
+
return this.renderOffsetBuilder();
|
|
216
|
+
}
|
|
217
|
+
if (this.operandKey === SPECIFIC_KEY) {
|
|
218
|
+
return this.renderDatePicker();
|
|
219
|
+
}
|
|
220
|
+
return null;
|
|
221
|
+
}
|
|
222
|
+
renderOffsetBuilder() {
|
|
223
|
+
const selectedDirection = DIRECTION_OPTIONS.find((option) => option.value === this.direction);
|
|
224
|
+
const selectedUnit = UNIT_OPTIONS.find((option) => option.value === this.unit);
|
|
225
|
+
return (h("div", { key: "offset-builder", class: "offset-builder" }, h("limel-select", { class: "offset-direction", options: DIRECTION_OPTIONS, value: selectedDirection, onChange: this.handleDirectionChange }), h("limel-input-field", { class: "offset-count", label: "Amount", type: "number", required: true, invalid: this.countInvalid, value: this.countInput, onChange: this.handleCountChange }), h("limel-select", { class: "offset-unit", options: UNIT_OPTIONS, value: selectedUnit, onChange: this.handleUnitChange })));
|
|
226
|
+
}
|
|
227
|
+
renderDatePicker() {
|
|
228
|
+
return (h("limel-date-picker", { key: "specific-picker", class: "operand-picker", label: "Compared with", type: this.valueType, value: this.specificDate, onChange: this.handleSpecificDateChange }));
|
|
229
|
+
}
|
|
230
|
+
emitRelativeOffset() {
|
|
231
|
+
const operator = this.value.operator;
|
|
232
|
+
if (!operator) {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
this.emit(operator, this.relativeOffsetToken());
|
|
236
|
+
}
|
|
237
|
+
relativeOffsetToken() {
|
|
238
|
+
return `$${this.direction}_${this.unit}(${this.count})`;
|
|
239
|
+
}
|
|
240
|
+
parseScalarOperand(raw) {
|
|
241
|
+
const text = String(raw);
|
|
242
|
+
if (text.trim() === '') {
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
if (this.valueType !== 'number') {
|
|
246
|
+
return text;
|
|
247
|
+
}
|
|
248
|
+
const parsed = Number(text);
|
|
249
|
+
return Number.isNaN(parsed) ? undefined : parsed;
|
|
250
|
+
}
|
|
251
|
+
formatSpecific(date) {
|
|
252
|
+
if (this.valueType === 'datetime') {
|
|
253
|
+
return date.toISOString();
|
|
254
|
+
}
|
|
255
|
+
if (this.valueType === 'time') {
|
|
256
|
+
return `${pad(date.getHours())}:${pad(date.getMinutes())}:${pad(date.getSeconds())}`;
|
|
257
|
+
}
|
|
258
|
+
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())}`;
|
|
259
|
+
}
|
|
260
|
+
emit(operator, operand, valueType = this.valueType) {
|
|
261
|
+
// Always carry valueType so the type selection round-trips through
|
|
262
|
+
// value even when there's no operand yet; the primitive ignores it
|
|
263
|
+
// until an operand is present.
|
|
264
|
+
const next = { valueType };
|
|
265
|
+
if (operator) {
|
|
266
|
+
next.operator = operator;
|
|
267
|
+
}
|
|
268
|
+
if (operand !== undefined) {
|
|
269
|
+
next.operand = operand;
|
|
270
|
+
}
|
|
271
|
+
this.change.emit(next);
|
|
272
|
+
}
|
|
273
|
+
resetOperandState() {
|
|
274
|
+
this.operandKey = undefined;
|
|
275
|
+
this.specificDate = undefined;
|
|
276
|
+
this.direction = 'next';
|
|
277
|
+
this.unit = 'week';
|
|
278
|
+
this.count = 1;
|
|
279
|
+
this.countInput = '1';
|
|
280
|
+
this.countInvalid = false;
|
|
281
|
+
}
|
|
282
|
+
syncFromValue(value) {
|
|
283
|
+
const operand = value === null || value === void 0 ? void 0 : value.operand;
|
|
284
|
+
if (typeof operand !== 'string' || operand === '') {
|
|
285
|
+
// No operand: keep the sub-control the author has open.
|
|
286
|
+
return;
|
|
287
|
+
}
|
|
288
|
+
if (!TEMPORAL_TYPES.has(this.valueType)) {
|
|
289
|
+
this.operandKey = undefined;
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
const match = PARAMETERIZED_TOKEN.exec(operand);
|
|
293
|
+
if (match) {
|
|
294
|
+
const [, direction, unit, count] = match;
|
|
295
|
+
this.operandKey = RELATIVE_OFFSET_KEY;
|
|
296
|
+
this.direction = direction;
|
|
297
|
+
this.unit = unit;
|
|
298
|
+
this.count = Number(count);
|
|
299
|
+
this.countInput = count;
|
|
300
|
+
this.countInvalid = false;
|
|
301
|
+
return;
|
|
302
|
+
}
|
|
303
|
+
if (FIXED_TOKENS.has(operand)) {
|
|
304
|
+
this.operandKey = operand;
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
this.operandKey = SPECIFIC_KEY;
|
|
308
|
+
this.specificDate = this.parseSpecific(operand);
|
|
309
|
+
}
|
|
310
|
+
parseSpecific(operand) {
|
|
311
|
+
const date = new Date(this.specificDateText(operand));
|
|
312
|
+
return Number.isNaN(date.getTime()) ? undefined : date;
|
|
313
|
+
}
|
|
314
|
+
specificDateText(operand) {
|
|
315
|
+
if (this.valueType === 'time') {
|
|
316
|
+
return `1970-01-01T${operand}`;
|
|
317
|
+
}
|
|
318
|
+
if (this.valueType === 'date') {
|
|
319
|
+
return `${operand}T00:00:00`;
|
|
320
|
+
}
|
|
321
|
+
return operand;
|
|
71
322
|
}
|
|
72
323
|
static get is() { return "limebb-value-comparison-editor"; }
|
|
73
324
|
static get encapsulation() { return "shadow"; }
|
|
@@ -112,6 +363,17 @@ export class ValueComparisonEditor {
|
|
|
112
363
|
}
|
|
113
364
|
};
|
|
114
365
|
}
|
|
366
|
+
static get states() {
|
|
367
|
+
return {
|
|
368
|
+
"operandKey": {},
|
|
369
|
+
"direction": {},
|
|
370
|
+
"unit": {},
|
|
371
|
+
"count": {},
|
|
372
|
+
"countInput": {},
|
|
373
|
+
"countInvalid": {},
|
|
374
|
+
"specificDate": {}
|
|
375
|
+
};
|
|
376
|
+
}
|
|
115
377
|
static get events() {
|
|
116
378
|
return [{
|
|
117
379
|
"method": "change",
|
|
@@ -139,11 +401,13 @@ export class ValueComparisonEditor {
|
|
|
139
401
|
}
|
|
140
402
|
}];
|
|
141
403
|
}
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
404
|
+
static get watchers() {
|
|
405
|
+
return [{
|
|
406
|
+
"propName": "value",
|
|
407
|
+
"methodName": "onValueChange"
|
|
408
|
+
}];
|
|
146
409
|
}
|
|
147
|
-
|
|
148
|
-
|
|
410
|
+
}
|
|
411
|
+
function pad(value) {
|
|
412
|
+
return String(value).padStart(2, '0');
|
|
149
413
|
}
|
|
@@ -33,7 +33,7 @@ export class RuleGate {
|
|
|
33
33
|
this.evaluate();
|
|
34
34
|
}
|
|
35
35
|
render() {
|
|
36
|
-
return (h(Host, { key: '
|
|
36
|
+
return (h(Host, { key: '1aebc90e382bed53ff293634f4aa37cbc5b1f9d0', hidden: !this.shouldRender }, h("slot", { key: 'f28d6bc819101c43c980b80b4467dcb0d15292fa' })));
|
|
37
37
|
}
|
|
38
38
|
get ruleRegistry() {
|
|
39
39
|
return this.platform.get(PlatformServiceName.RuleRegistry);
|
|
@@ -128,9 +128,9 @@ export class SummaryPopover {
|
|
|
128
128
|
top: '0.125rem',
|
|
129
129
|
right: '0.125rem',
|
|
130
130
|
};
|
|
131
|
-
return (h("limel-popover", { key: '
|
|
131
|
+
return (h("limel-popover", { key: '3dac27c083b2d950d473e5f0f686cd19278eb0a0', style: {
|
|
132
132
|
'--limebb-summary-popover-timeout': `${this.triggerDelay}ms`,
|
|
133
|
-
}, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '
|
|
133
|
+
}, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: 'acc7cc0472a6af2b53b38915111a7c4a8c5e20a1', slot: "trigger", onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocusin: this.openPopoverWithDelay }, h("slot", { key: 'd6bdbf59b1d39793484de55dcfb2e43d890468bf', name: "trigger" }), h("div", { key: 'dc462c2b1b787de54b22aed6ca51cac245df3c09', class: "opening-countdown-indicator" })), this.renderCard(closeButtonStyle)));
|
|
134
134
|
}
|
|
135
135
|
renderCard(closeButtonStyle) {
|
|
136
136
|
return (h("limel-card", { style: {
|
|
@@ -13,8 +13,8 @@ export class MentionGroupCounter {
|
|
|
13
13
|
render() {
|
|
14
14
|
const label = this.getLabel();
|
|
15
15
|
return [
|
|
16
|
-
h("span", { key: '
|
|
17
|
-
h("limel-tooltip", { key: '
|
|
16
|
+
h("span", { key: '638df46fb134015d8f9402830580d36dc759bcd1', id: this.tooltipId }, label),
|
|
17
|
+
h("limel-tooltip", { key: 'bdd49e3025be834b9d808473d456341a50d6f50d', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
|
|
18
18
|
];
|
|
19
19
|
}
|
|
20
20
|
getLabel() {
|
|
@@ -391,7 +391,7 @@ export class LimeBBTextEditor {
|
|
|
391
391
|
}
|
|
392
392
|
render() {
|
|
393
393
|
return [
|
|
394
|
-
h("limel-text-editor", { key: '
|
|
394
|
+
h("limel-text-editor", { key: '0f1423f13a517aaeea8efbacab475a37e38aa857', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
|
|
395
395
|
this.renderPicker(),
|
|
396
396
|
];
|
|
397
397
|
}
|
|
@@ -69,7 +69,7 @@ export class TrendIndicator {
|
|
|
69
69
|
this.numValue = this.parseValue(this.value);
|
|
70
70
|
}
|
|
71
71
|
render() {
|
|
72
|
-
return (h(Host, { key: '
|
|
72
|
+
return (h(Host, { key: 'fbf631c6889091e9efe5790397b26f804d27d93b', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '832d2d338bf86da41b0a19a813f0dc7e3b3eb8c9', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: 'b3266118df54e2c3a4d7729f0e36d7c7e1fbc13c', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
|
|
73
73
|
}
|
|
74
74
|
renderVisualization() {
|
|
75
75
|
if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as e,HTMLElement as i,h as n,Host as o,transformTag as t}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(o,{key:"
|
|
1
|
+
import{proxyCustomElement as e,HTMLElement as i,h as n,Host as o,transformTag as t}from"@stencil/core/internal/client";const r=e(class extends i{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow()}render(){return n(o,{key:"37f41429c85d430370847b6ba08927757d97868f",id:this.item.id},this.renderLabel(),n("div",{key:"958ef591606e10f95e43f4968110cb785f022dc7",class:"icons"},this.item.icons.map(((e,i)=>this.renderIcon(e,i)))))}renderLabel(){if(this.item.label)return n("span",{class:"label"},this.item.label)}renderIcon(e,i){const o=`icon-${this.item.id}-${i}`;return[n("limel-icon",{tabIndex:0,key:i,id:o,badge:!0,name:e.name,class:{"is-pending":!!e.pending,"is-clickable":!!e.onClick},style:{color:e.color,"background-color":e.backgroundColor},onClick:e.onClick}),this.renderTooltip(e,o)]}renderTooltip(e,i){if(e.title)return n("limel-tooltip",{label:e.title,elementId:i})}static get style(){return'@charset "UTF-8";*,*:before,*:after{box-sizing:border-box}:host(limebb-chat-icon-list){display:flex;align-items:center;gap:0.5rem;margin-right:auto;max-width:calc(100% - 2rem);padding:0 0.25rem}.label{font-size:0.75rem;color:rgb(var(--contrast-900))}.icons{display:flex;align-items:center;gap:0.25rem}.icons:hover limel-icon,.icons:focus-within limel-icon{margin-left:0 !important}limel-icon{--icon-background-color:rgb(var(--contrast-500), 0.5);transition:margin-left 0.2s cubic-bezier(0.075, 0.82, 0.165, 1), opacity 0.2s ease, box-shadow 0.2s ease;position:relative;width:1.75rem;padding:0.375rem;flex-shrink:0}limel-icon.is-clickable{cursor:pointer}limel-icon:focus{outline:none}limel-icon:focus-visible{outline:none;box-shadow:var(--shadow-depth-8-focused)}limel-icon:not(.is-pending):not(:first-child){margin-left:-0.75rem}limel-icon.is-pending{animation:pending 3s linear infinite;padding:0.5rem}limel-icon.is-pending:after{content:"";position:absolute;inset:0;width:1.75rem;height:1.75rem;border-radius:50%;pointer-events:none;border-radius:50%;border:0.125rem solid rgb(var(--color-white), 0.5);border-top-color:rgb(var(--color-black), 0.8);mix-blend-mode:color-dodge;animation:spin 1s cubic-bezier(0.4, 0, 0.2, 1) infinite}@keyframes pending{0%,20%,80%,100%{filter:grayscale(0%)}45%,55%{filter:grayscale(100%)}}@keyframes spin{to{transform:rotate(360deg)}}'}},[1,"limebb-chat-icon-list",{item:[16]}]);function s(){"undefined"!=typeof customElements&&["limebb-chat-icon-list"].forEach((e=>{"limebb-chat-icon-list"===e&&(customElements.get(t(e))||customElements.define(t(e),r))}))}export{r as C,s as d}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{proxyCustomElement as
|
|
1
|
+
import{proxyCustomElement as e,HTMLElement as t,h as i,Host as r,transformTag as o}from"@stencil/core/internal/client";import{b as a}from"./index.esm.js";const s=e(class extends t{constructor(e){super(),!1!==e&&this.__registerHost(),this.__attachShadow(),this.hasError=!1,this.createActionBarItem=e=>{var t,i;if("separator"in e)return e;let r={value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled};return!e.label&&e.icon?r=Object.assign(Object.assign({},r),{icon:e.icon,text:null!==(i=e.description)&&void 0!==i?i:r.text,iconOnly:!0}):e.icon&&(r=Object.assign(Object.assign({},r),{icon:e.icon})),r},this.handleActionBarItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)},this.createMenuItem=e=>{var t,i;return"separator"in e?e:{value:e,text:null!==(t=e.label)&&void 0!==t?t:"",secondaryText:e.description,disabled:e.disabled,icon:null!==(i=e.icon)&&void 0!==i?i:""}},this.handleMenuItemSelect=e=>{var t;e.stopPropagation();const i=null===(t=e.detail.value)||void 0===t?void 0:t.command;i&&this.commandbus.handle(i)}}render(){const e=`helper-text-${this.item.id}`;return i(r,{key:"1e6c1cea485ef290ccaf883a7206e2db140a03de",id:this.item.id,"aria-describedby":this.helperText?e:void 0,"aria-live":this.hasError?"assertive":"off",class:{[`${this.item.ui}`]:!0}},i("div",{key:"9e726745a4e577fb56141693f94ad548a0dbb428",class:"bubble-content"},i("div",{key:"30b9d1b5d27f658f43d65f60a8dfeb7c752ece7c",class:"icon-picture"},this.renderIcon(),this.renderAuthorPicture()),this.renderErrorSign(),i("div",{key:"809b0064268e9ac537611a7244845d3622afd146",class:"item"},this.renderHeader(),this.renderValue(),i("footer",{key:"5f5a9bfd1abe7b82d0bc8b5e04a0033de196d97f"},this.renderHelperText(e),this.renderTimestamp()))),this.renderPromotedAction())}renderErrorSign(){if(this.hasError)return i("limel-icon",{class:"error-sign",name:"brake_warning"})}renderHeader(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.name)return i("header",null,this.renderAuthorName(),i("div",{class:"action-buttons"},this.renderUnpromotedActionsMenu()))}renderIcon(){var e,t,r,o;if(this.item.icon)return i("limel-icon",{class:"icon",badge:!0,name:null!==(t=null===(e=this.item.icon)||void 0===e?void 0:e.name)&&void 0!==t?t:"dot_circle",style:{color:`${null===(r=this.item.icon)||void 0===r?void 0:r.color}`,"background-color":`${null===(o=this.item.icon)||void 0===o?void 0:o.backgroundColor}`}})}renderHelperText(e){if(this.helperText)return i("span",{class:"helper-text",id:e},this.helperText)}renderValue(){if(this.item.value)return i("limel-markdown",{class:"body-text reset-img-height",value:this.item.value})}renderAuthorName(){var e,t;if("string"==typeof(null===(e=this.item.author)||void 0===e?void 0:e.name))return i("span",{class:"author"},this.item.author.name);if("object"==typeof(null===(t=this.item.author)||void 0===t?void 0:t.name)){const{href:e,title:t,text:r}=this.item.author.name;return i("a",{class:"author",href:e,title:t},r)}}renderAuthorPicture(){var e;if(null===(e=this.item.author)||void 0===e?void 0:e.picture)return"limel-ai-avatar"===this.item.author.picture?i("limel-ai-avatar",{class:"author-avatar"}):i("img",{class:"author-avatar",loading:"lazy",src:this.item.author.picture})}renderUnpromotedActionsMenu(){var e,t;if(!(null===(e=this.item.unpromotedActions)||void 0===e?void 0:e.length))return;const r=this.item.unpromotedActions.map(this.createMenuItem);return i("limel-menu",{class:"unpromoted-actions-menu",items:r,openDirection:"bottom-end",onSelect:this.handleMenuItemSelect},i("limel-icon-button",{icon:"menu_2",slot:"trigger",label:null===(t=this.translator)||void 0===t?void 0:t.get("webclient.more-actions")}))}renderPromotedAction(){if(!this.item.promotedActions)return;const e=this.item.promotedActions.map(this.createActionBarItem);return i("div",{class:"action-bar"},i("div",{class:"action-bar-hider"},i("limel-action-bar",{accessibleLabel:"Action bar",actions:e,layout:"fullWidth",onItemSelected:this.handleActionBarItemSelect})))}renderTimestamp(){const e=this.item.timestamp;if(e)return i("span",{class:"timestamp"},this.dateTimeFormatter.format(e,"timeofday"))}get dateTimeFormatter(){return this.platform.get(a.DateTimeFormatter)}get translator(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.Translate)}get commandbus(){var e;return null===(e=this.platform)||void 0===e?void 0:e.get(a.CommandBus)}static get style(){return'@charset "UTF-8";*{box-sizing:border-box}:host(limebb-chat-item){display:flex;flex-direction:column;gap:0.25rem;min-width:0;min-height:0;max-width:calc(100% - 2rem)}.bubble-content{display:flex;gap:0.25rem;min-width:0;min-height:0}:host(limebb-chat-item:hover) .helper-text,:host(limebb-chat-item:hover) .timestamp,:host(limebb-chat-item:focus-within) .helper-text,:host(limebb-chat-item:focus-within) .timestamp{opacity:1}:host(limebb-chat-item.mine){margin-left:auto}:host(limebb-chat-item.mine) .item{border-bottom-right-radius:0.125rem;background-color:rgb(var(--color-sky-default), 0.2)}:host(limebb-chat-item.mine) .bubble-content{justify-content:end}:host(limebb-chat-item.mine) .icon-picture{order:2}:host(limebb-chat-item.theirs){margin-right:auto}:host(limebb-chat-item.theirs) .item{border-bottom-left-radius:0.125rem;background-color:rgb(var(--contrast-300), 0.7)}.item{display:flex;flex-direction:column;min-width:0;border-radius:1.25rem;padding:0 0.25rem 0.25rem 0.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}.icon-picture{display:flex;flex-direction:column;gap:0.5rem;align-items:center;justify-content:flex-end}.icon-picture:has(.author-avatar) limel-icon{width:1.25rem;padding:0.125rem}.icon{--icon-background-color:rgb(var(--contrast-500), 0.5);flex-shrink:0;padding:0.375rem;width:2.25rem;backdrop-filter:blur(0.5rem);-webkit-backdrop-filter:blur(0.5rem)}limel-ai-avatar.author-avatar{background-color:rgb(var(--color-glaucous-darker))}header{display:flex;justify-content:space-between;align-items:center;min-height:2rem;padding-left:0.5rem}header:not(:has(.unpromoted-actions-menu)){padding-right:0.5rem}.body-text{padding:0.25rem 0.5rem}footer{display:flex;justify-content:space-between;align-items:end;gap:0.5rem;font-size:x-small}footer:not(:empty){padding:0 0.25rem 0.125rem 0.5rem}footer *{transition:opacity 0.2s ease;opacity:0.4}.timestamp{margin-left:auto}.author-avatar{border-radius:50%;width:2rem;height:2rem;object-fit:cover;box-shadow:0 0 0 1px rgb(var(--contrast-600))}.author{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-weight:500;text-decoration:none}a.author{position:relative;cursor:pointer;transition:color 0.2s ease;color:var(--mdc-theme-primary)}a.author:before{transition:opacity 0.2s ease, transform 0.3s ease-out;content:"";position:absolute;inset:auto 0 0 0;width:calc(100% - 0.5rem);margin:auto;height:0.125rem;border-radius:1rem;background-color:currentColor;opacity:0;transform:scale(0.6)}a.author:hover{color:rgb(var(--color-teal-light))}a.author:hover:before{opacity:0.3;transform:scale(1)}limel-action-bar{--action-bar-item-height:1.75rem;transition:opacity 0.2s ease;justify-content:flex-start;opacity:0.8}.action-bar{display:grid;transition:grid-template-rows var(--limebb-promoted-action-bar-grid-template-rows-transition-speed, 0.2s) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay, 0s);grid-template-rows:var(--limebb-promoted-action-bar-grid-template-rows, 1fr)}.action-bar-hider{overflow:hidden}limel-action-bar{transition:padding var(--limebb-promoted-action-bar-grid-template-rows-transition-speed) cubic-bezier(1, 0.09, 0, 0.89) var(--limebb-promoted-action-bar-grid-template-rows-transition-delay);padding-top:0;padding-bottom:0.75rem}:host(limebb-chat-item:hover) .action-bar,:host(limebb-chat-item:focus-within) .action-bar,:host(limebb-chat-item:focus-visible) .action-bar{--limebb-promoted-action-bar-grid-template-rows:1fr;will-change:grid-template-rows}:host(limebb-chat-item:hover) limel-action-bar,:host(limebb-chat-item:focus-within) limel-action-bar,:host(limebb-chat-item:focus-visible) limel-action-bar{will-change:opacity;opacity:1}:host(limebb-chat-item:hover),:host(limebb-chat-item:focus-within){--limebb-promoted-action-bar-grid-template-rows-transition-speed:0.46s;--limebb-promoted-action-bar-grid-template-rows-transition-delay:0.7s}.action-bar{min-width:0;width:calc(100% - calc(2rem + 0.25rem))}:host(limebb-chat-item.theirs) .action-bar{margin-left:calc(2rem + 0.25rem)}:host(limebb-chat-item[has-error]:not([has-error=false])) .bubble-content{cursor:help}:host(limebb-chat-item[has-error]:not([has-error=false])) .item{border:1px solid rgb(var(--color-red-default))}:host(limebb-chat-item[has-error]:not([has-error=false])) .error-sign{color:rgb(var(--color-red-default));flex-shrink:0;width:1.25rem;align-self:center}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .action-bar{padding-left:1.25rem}:host(limebb-chat-item.mine[has-error]:not([has-error=false])) .helper-text{opacity:1;color:rgb(var(--color-red-default))}'}},[1,"limebb-chat-item",{platform:[16],context:[16],item:[16],helperText:[1,"helper-text"],hasError:[516,"has-error"]}]);function n(){"undefined"!=typeof customElements&&["limebb-chat-item"].forEach((e=>{"limebb-chat-item"===e&&(customElements.get(o(e))||customElements.define(o(e),s))}))}export{s as C,n as d}
|