@limetech/lime-crm-building-blocks 1.98.0 → 1.100.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 +14 -0
- package/dist/cjs/{index.esm-a894ac76.js → index.esm-d785eb6e.js} +2 -0
- package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
- package/dist/cjs/limebb-browser.cjs.entry.js +1 -1
- package/dist/cjs/limebb-chat-item_2.cjs.entry.js +1 -1
- package/dist/cjs/limebb-chat-list.cjs.entry.js +1 -1
- package/dist/cjs/limebb-component-config.cjs.entry.js +1 -1
- package/dist/cjs/limebb-component-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-currency-picker.cjs.entry.js +1 -1
- package/dist/cjs/limebb-date-picker.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-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 +68 -179
- package/dist/cjs/limebb-lime-query-filter-and.cjs.entry.js +80 -0
- package/dist/cjs/{limebb-limetype-field_2.cjs.entry.js → limebb-lime-query-filter-builder_3.cjs.entry.js} +108 -6
- package/dist/cjs/limebb-lime-query-filter-comparison_5.cjs.entry.js +705 -0
- package/dist/cjs/limebb-lime-query-filter-expression.cjs.entry.js +45 -0
- package/dist/cjs/limebb-lime-query-filter-or.cjs.entry.js +68 -0
- package/dist/cjs/limebb-limeobject-file-viewer.cjs.entry.js +1 -1
- package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
- package/dist/cjs/limebb-loader.cjs.entry.js +1 -1
- package/dist/cjs/limebb-locale-picker.cjs.entry.js +2 -2
- package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
- package/dist/cjs/limebb-mention.cjs.entry.js +1 -1
- package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +3 -3
- package/dist/cjs/limebb-notification-item.cjs.entry.js +2 -2
- package/dist/cjs/limebb-notification-list.cjs.entry.js +1 -1
- package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
- package/dist/cjs/limebb-text-editor.cjs.entry.js +3 -3
- package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
- package/dist/cjs/{limetype-1fe0207f.js → limetype-f2e4376e.js} +1 -1
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -0
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-and.js +41 -49
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-builder.css +5 -0
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-builder.js +225 -0
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +77 -41
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-expression.js +35 -46
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.css +130 -0
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +269 -0
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +19 -25
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-or.js +34 -34
- package/dist/collection/components/lime-query-builder/lime-query-builder.js +11 -26
- package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.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/summary-popover/summary-popover.js +3 -3
- 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/index.esm.js +2 -1
- package/dist/components/lime-query-filter-builder.js +129 -0
- package/dist/components/lime-query-filter-comparison.js +32 -45
- package/dist/components/lime-query-filter-expression.js +315 -0
- package/dist/components/limebb-lime-query-builder.js +73 -182
- package/dist/components/limebb-lime-query-filter-and.js +130 -1
- package/dist/components/limebb-lime-query-filter-builder.d.ts +11 -0
- package/dist/components/limebb-lime-query-filter-builder.js +6 -0
- package/dist/components/limebb-lime-query-filter-comparison.js +1 -1
- package/dist/components/limebb-lime-query-filter-expression.js +1 -1
- package/dist/components/limebb-lime-query-filter-group.d.ts +11 -0
- package/dist/components/limebb-lime-query-filter-group.js +6 -0
- package/dist/components/limebb-lime-query-filter-not.js +1 -1
- package/dist/components/limebb-lime-query-filter-or.js +118 -1
- package/dist/components/limebb-locale-picker.js +1 -1
- package/dist/components/limebb-mention-group-counter.js +2 -2
- package/dist/components/limebb-percentage-visualizer.js +2 -2
- package/dist/components/limebb-text-editor.js +1 -1
- package/dist/components/limebb-trend-indicator.js +1 -1
- package/dist/components/limetype-field.js +34 -2
- package/dist/components/live-docs-info.js +2 -2
- package/dist/components/notification-item.js +1 -1
- package/dist/components/summary-popover.js +3 -3
- package/dist/esm/{index.esm-d8fdeb18.js → index.esm-bb569663.js} +2 -1
- package/dist/esm/lime-crm-building-blocks.js +1 -1
- package/dist/esm/limebb-browser.entry.js +1 -1
- package/dist/esm/limebb-chat-item_2.entry.js +1 -1
- package/dist/esm/limebb-chat-list.entry.js +1 -1
- package/dist/esm/limebb-component-config.entry.js +1 -1
- package/dist/esm/limebb-component-picker.entry.js +1 -1
- package/dist/esm/limebb-currency-picker.entry.js +1 -1
- package/dist/esm/limebb-date-picker.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-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 +67 -178
- package/dist/esm/limebb-lime-query-filter-and.entry.js +76 -0
- package/dist/esm/{limebb-limetype-field_2.entry.js → limebb-lime-query-filter-builder_3.entry.js} +107 -6
- package/dist/esm/limebb-lime-query-filter-comparison_5.entry.js +697 -0
- package/dist/esm/limebb-lime-query-filter-expression.entry.js +41 -0
- package/dist/esm/limebb-lime-query-filter-or.entry.js +64 -0
- package/dist/esm/limebb-limeobject-file-viewer.entry.js +1 -1
- package/dist/esm/limebb-live-docs-info.entry.js +2 -2
- package/dist/esm/limebb-loader.entry.js +1 -1
- package/dist/esm/limebb-locale-picker.entry.js +2 -2
- package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
- package/dist/esm/limebb-mention.entry.js +1 -1
- package/dist/esm/limebb-navigation-button_2.entry.js +3 -3
- package/dist/esm/limebb-notification-item.entry.js +2 -2
- package/dist/esm/limebb-notification-list.entry.js +1 -1
- package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
- package/dist/esm/limebb-text-editor.entry.js +3 -3
- package/dist/esm/limebb-trend-indicator.entry.js +1 -1
- package/dist/esm/{limetype-6e7552a7.js → limetype-c0e041f7.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-a1818969.entry.js → p-03af0e66.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f402184f.entry.js → p-098ee6c1.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-42e52b50.entry.js → p-1be0eec7.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-2aa18c2b.entry.js → p-206575e4.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-20bfca36.js +1 -0
- package/dist/lime-crm-building-blocks/p-24aeb928.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-82d33d43.entry.js → p-2faaacbc.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-d4016891.entry.js → p-2fdcb868.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-f52125a0.entry.js → p-3122ea05.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-baf4e428.entry.js → p-3175883d.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-8c8b7115.entry.js → p-32534eb7.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-6c1146ca.entry.js → p-36ea13c0.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-422f6d51.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-1fba0ade.js → p-4838284a.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-5e4ba110.entry.js → p-5464f0de.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-e9d23ef7.entry.js → p-569c86b5.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-90e1716a.entry.js → p-5dc574a3.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-00da9b24.entry.js → p-631ca5a5.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-67dbaa4c.entry.js +1 -0
- package/dist/lime-crm-building-blocks/p-6d119dab.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-beb0d164.entry.js → p-7271f47a.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-34357744.entry.js → p-9031f136.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-91732502.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-8c4eb49f.entry.js → p-93cadc1e.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-3932077b.entry.js → p-9cac4de2.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-79d4668a.entry.js → p-a200954f.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-b198194a.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-d89c44ad.entry.js → p-b9b954d9.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-3a620226.entry.js → p-cfa1a4ad.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-ef8a5266.entry.js → p-e8946134.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-9d9f25da.entry.js → p-eb81bceb.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-50d3d61a.entry.js → p-ee1b00b9.entry.js} +1 -1
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-and.d.ts +5 -4
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-builder.d.ts +50 -0
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-comparison.d.ts +6 -4
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-expression.d.ts +10 -14
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-group.d.ts +60 -0
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-not.d.ts +4 -4
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-or.d.ts +5 -4
- package/dist/types/components/lime-query-builder/lime-query-builder.d.ts +1 -0
- package/dist/types/components/lime-query-builder/lime-query.types.d.ts +2 -1
- package/dist/types/components.d.ts +293 -65
- package/package.json +1 -1
- package/dist/cjs/isEqual-e77cce75.js +0 -37
- package/dist/cjs/lime-query.types-bcb63a22.js +0 -61
- package/dist/cjs/limebb-lime-query-filter-and_5.cjs.entry.js +0 -278
- package/dist/cjs/limebb-lime-query-value-input.cjs.entry.js +0 -239
- package/dist/cjs/limebb-property-selector.cjs.entry.js +0 -234
- package/dist/components/isEqual.js +0 -35
- package/dist/components/lime-query-filter-and.js +0 -408
- package/dist/esm/isEqual-57d0c223.js +0 -35
- package/dist/esm/lime-query.types-f72355e1.js +0 -59
- package/dist/esm/limebb-lime-query-filter-and_5.entry.js +0 -270
- package/dist/esm/limebb-lime-query-value-input.entry.js +0 -235
- package/dist/esm/limebb-property-selector.entry.js +0 -230
- package/dist/lime-crm-building-blocks/p-02c0cc04.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-0957b2a6.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-3b0a15ec.js +0 -1
- package/dist/lime-crm-building-blocks/p-5a6d2e7f.js +0 -1
- package/dist/lime-crm-building-blocks/p-60971d64.js +0 -1
- package/dist/lime-crm-building-blocks/p-70a28b93.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-96beaabc.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-f99c611d.entry.js +0 -1
|
@@ -3,66 +3,67 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-ff255a0d.js');
|
|
6
|
-
const index_esm = require('./index.esm-
|
|
7
|
-
const limeQuery_types = require('./lime-query.types-bcb63a22.js');
|
|
6
|
+
const index_esm = require('./index.esm-d785eb6e.js');
|
|
8
7
|
const propertyResolution = require('./property-resolution-fb42a46b.js');
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
|
-
*
|
|
12
|
-
*
|
|
10
|
+
* TypeScript type definitions for Lime Query DSL
|
|
11
|
+
*
|
|
12
|
+
* These types represent the structure of Lime Query as defined in:
|
|
13
|
+
* - lime-core/lime_query/schema.py
|
|
14
|
+
* - lime-core/lime_filter/schema.py
|
|
13
15
|
*/
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
}
|
|
16
|
+
/**
|
|
17
|
+
* Available operators with display metadata
|
|
18
|
+
*/
|
|
19
|
+
const LIME_QUERY_OPERATORS = [
|
|
20
|
+
{ value: '=', label: 'Equals', icon: 'equals' },
|
|
21
|
+
{ value: '!=', label: 'Not Equals', icon: 'not-equal' },
|
|
22
|
+
{
|
|
23
|
+
value: '>',
|
|
24
|
+
label: 'Greater Than',
|
|
25
|
+
icon: 'greater-than',
|
|
26
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
value: '>=',
|
|
30
|
+
label: 'Greater or Equal',
|
|
31
|
+
icon: 'greater-or-equal',
|
|
32
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
value: '<',
|
|
36
|
+
label: 'Less Than',
|
|
37
|
+
icon: 'less-than',
|
|
38
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
value: '<=',
|
|
42
|
+
label: 'Less or Equal',
|
|
43
|
+
icon: 'less-or-equal',
|
|
44
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
45
|
+
},
|
|
46
|
+
{ value: 'IN', label: 'In List', icon: 'list' },
|
|
47
|
+
{
|
|
48
|
+
value: '?',
|
|
49
|
+
label: 'Contains',
|
|
50
|
+
icon: '-lime-filter-contain',
|
|
51
|
+
applicableTypes: ['string', 'text'],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
value: '=?',
|
|
55
|
+
label: 'Begins With',
|
|
56
|
+
icon: '-lime-filter-begin',
|
|
57
|
+
applicableTypes: ['string', 'text'],
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
value: '=$',
|
|
61
|
+
label: 'Ends With',
|
|
62
|
+
icon: '-lime-filter-end',
|
|
63
|
+
applicableTypes: ['string', 'text'],
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
|
|
66
67
|
/**
|
|
67
68
|
* Validate and convert a FilterExpression (comparison filter)
|
|
68
69
|
* @param filter
|
|
@@ -73,7 +74,7 @@ function validateAndConvertFilterExpression(filter) {
|
|
|
73
74
|
throw new Error('Invalid filter: comparison must have key, op, and exp properties');
|
|
74
75
|
}
|
|
75
76
|
// Validate operator is supported
|
|
76
|
-
const supportedOps =
|
|
77
|
+
const supportedOps = LIME_QUERY_OPERATORS.map((o) => o.value);
|
|
77
78
|
if (!supportedOps.includes(filter.op)) {
|
|
78
79
|
throw new Error(`Unsupported filter operator: ${filter.op}`);
|
|
79
80
|
}
|
|
@@ -164,103 +165,6 @@ function limeQueryToGuiFilter(filter) {
|
|
|
164
165
|
// It's a FilterGroup
|
|
165
166
|
return validateAndConvertFilterGroup(filter);
|
|
166
167
|
}
|
|
167
|
-
/**
|
|
168
|
-
* Normalize filter for GUI mode by ensuring proper AND/OR wrapper structure.
|
|
169
|
-
* GUI mode requires filters to be wrapped in AND([OR(...)]) so users have
|
|
170
|
-
* access to add/remove buttons on the AND and OR components.
|
|
171
|
-
*
|
|
172
|
-
* This function ensures that:
|
|
173
|
-
* - Single comparisons are wrapped in AND([OR([comparison])])
|
|
174
|
-
* - OR groups are wrapped in AND([OR group])
|
|
175
|
-
* - AND groups have their comparison children wrapped in OR
|
|
176
|
-
* - Empty/undefined filters become AND([])
|
|
177
|
-
*
|
|
178
|
-
* When converting back to Lime Query JSON, limeQueryFilterToLimeQuery()
|
|
179
|
-
* automatically unwraps single-item AND/OR groups.
|
|
180
|
-
*
|
|
181
|
-
* @param filter The filter expression from limeQueryToLimeQueryFilter
|
|
182
|
-
* @returns Normalized filter suitable for GUI editing
|
|
183
|
-
*/
|
|
184
|
-
function normalizeLimeQueryFilterForGui(filter) {
|
|
185
|
-
// Empty AND is already correct for GUI
|
|
186
|
-
if (filter.filter_type === 'AND' && filter.expressions.length === 0) {
|
|
187
|
-
return filter;
|
|
188
|
-
}
|
|
189
|
-
// Single comparison needs wrapping
|
|
190
|
-
if (filter.filter_type === 'comparison') {
|
|
191
|
-
return {
|
|
192
|
-
filter_type: 'AND',
|
|
193
|
-
expressions: [
|
|
194
|
-
{
|
|
195
|
-
filter_type: 'OR',
|
|
196
|
-
expressions: [filter],
|
|
197
|
-
},
|
|
198
|
-
],
|
|
199
|
-
};
|
|
200
|
-
}
|
|
201
|
-
// OR needs wrapping in AND
|
|
202
|
-
if (filter.filter_type === 'OR') {
|
|
203
|
-
return {
|
|
204
|
-
filter_type: 'AND',
|
|
205
|
-
expressions: [filter],
|
|
206
|
-
};
|
|
207
|
-
}
|
|
208
|
-
// NOT needs wrapping
|
|
209
|
-
if (filter.filter_type === 'NOT') {
|
|
210
|
-
return {
|
|
211
|
-
filter_type: 'AND',
|
|
212
|
-
expressions: [
|
|
213
|
-
{
|
|
214
|
-
filter_type: 'OR',
|
|
215
|
-
expressions: [filter],
|
|
216
|
-
},
|
|
217
|
-
],
|
|
218
|
-
};
|
|
219
|
-
}
|
|
220
|
-
// AND group - check if children need OR wrappers
|
|
221
|
-
if (filter.filter_type === 'AND') {
|
|
222
|
-
const normalizedChildren = filter.expressions.map((child) => {
|
|
223
|
-
// If child is already OR, keep it
|
|
224
|
-
if (child.filter_type === 'OR') {
|
|
225
|
-
return child;
|
|
226
|
-
}
|
|
227
|
-
// If child is NOT, keep it (NOT can be a direct child of AND)
|
|
228
|
-
if (child.filter_type === 'NOT') {
|
|
229
|
-
return child;
|
|
230
|
-
}
|
|
231
|
-
// If child is comparison, wrap in OR
|
|
232
|
-
if (child.filter_type === 'comparison') {
|
|
233
|
-
return {
|
|
234
|
-
filter_type: 'OR',
|
|
235
|
-
expressions: [child],
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
// If child is nested AND, recursively normalize and wrap in OR
|
|
239
|
-
if (child.filter_type === 'AND') {
|
|
240
|
-
return {
|
|
241
|
-
filter_type: 'OR',
|
|
242
|
-
expressions: [normalizeLimeQueryFilterForGui(child)],
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
// Unknown filter type, keep as is
|
|
246
|
-
return child;
|
|
247
|
-
});
|
|
248
|
-
return {
|
|
249
|
-
filter_type: 'AND',
|
|
250
|
-
expressions: normalizedChildren,
|
|
251
|
-
};
|
|
252
|
-
}
|
|
253
|
-
// Fallback: wrap in AND/OR structure
|
|
254
|
-
return {
|
|
255
|
-
filter_type: 'AND',
|
|
256
|
-
expressions: [
|
|
257
|
-
{
|
|
258
|
-
filter_type: 'OR',
|
|
259
|
-
expressions: [filter],
|
|
260
|
-
},
|
|
261
|
-
],
|
|
262
|
-
};
|
|
263
|
-
}
|
|
264
168
|
|
|
265
169
|
/**
|
|
266
170
|
* Dynamic filter values and placeholders that are valid in Lime Query
|
|
@@ -659,18 +563,11 @@ const LimeQueryBuilder = class {
|
|
|
659
563
|
this.mode = 'gui';
|
|
660
564
|
this.codeValue = '';
|
|
661
565
|
this.limetype = '';
|
|
662
|
-
this.filter = {
|
|
663
|
-
filter_type: 'AND',
|
|
664
|
-
expressions: [],
|
|
665
|
-
};
|
|
666
566
|
this.handleLimetypeChange = (event) => {
|
|
667
567
|
event.stopPropagation();
|
|
668
568
|
this.limetype = event.detail;
|
|
669
569
|
// Reset filter when limetype changes
|
|
670
|
-
this.filter =
|
|
671
|
-
filter_type: 'AND',
|
|
672
|
-
expressions: [],
|
|
673
|
-
};
|
|
570
|
+
this.filter = undefined;
|
|
674
571
|
// Reset response format when limetype changes
|
|
675
572
|
this.internalResponseFormat = {
|
|
676
573
|
object: {
|
|
@@ -680,17 +577,9 @@ const LimeQueryBuilder = class {
|
|
|
680
577
|
this.emitChange();
|
|
681
578
|
};
|
|
682
579
|
this.handleFilterChange = (event) => {
|
|
580
|
+
var _a;
|
|
683
581
|
event.stopPropagation();
|
|
684
|
-
|
|
685
|
-
if (event.detail.filter_type === '') {
|
|
686
|
-
this.filter = {
|
|
687
|
-
filter_type: 'AND',
|
|
688
|
-
expressions: [],
|
|
689
|
-
};
|
|
690
|
-
}
|
|
691
|
-
else {
|
|
692
|
-
this.filter = event.detail;
|
|
693
|
-
}
|
|
582
|
+
this.filter = (_a = event.detail) !== null && _a !== void 0 ? _a : undefined;
|
|
694
583
|
this.emitChange();
|
|
695
584
|
};
|
|
696
585
|
this.handleResponseFormatChange = (event) => {
|
|
@@ -716,7 +605,7 @@ const LimeQueryBuilder = class {
|
|
|
716
605
|
}
|
|
717
606
|
// Update internal state from parsed query
|
|
718
607
|
this.limetype = parsed.limetype || '';
|
|
719
|
-
this.filter =
|
|
608
|
+
this.filter = parsed.filter;
|
|
720
609
|
this.internalResponseFormat = parsed.responseFormat;
|
|
721
610
|
this.limit = parsed.limit;
|
|
722
611
|
this.mode = 'gui';
|
|
@@ -757,7 +646,7 @@ const LimeQueryBuilder = class {
|
|
|
757
646
|
}
|
|
758
647
|
if (this.value) {
|
|
759
648
|
this.limetype = this.value.limetype || '';
|
|
760
|
-
this.filter =
|
|
649
|
+
this.filter = this.value.filter;
|
|
761
650
|
this.internalResponseFormat = this.value.responseFormat;
|
|
762
651
|
this.limit = this.value.limit;
|
|
763
652
|
}
|
|
@@ -772,7 +661,7 @@ const LimeQueryBuilder = class {
|
|
|
772
661
|
render() {
|
|
773
662
|
const guiSupported = this.checkGuiSupport();
|
|
774
663
|
const showCodeMode = !this.guiModeEnabled || this.mode === 'code';
|
|
775
|
-
return (index.h("div", { key: '
|
|
664
|
+
return (index.h("div", { key: '0b4d2bb5b4d503a775d8d3215e1e4c74fdb1eceb', class: "lime-query-builder" }, this.renderLabel(), this.renderModeControls(guiSupported), showCodeMode
|
|
776
665
|
? this.renderCodeMode(guiSupported)
|
|
777
666
|
: this.renderGuiMode()));
|
|
778
667
|
}
|
|
@@ -793,7 +682,7 @@ const LimeQueryBuilder = class {
|
|
|
793
682
|
const limeQuery = {
|
|
794
683
|
limetype: this.limetype,
|
|
795
684
|
responseFormat: responseFormat,
|
|
796
|
-
filter:
|
|
685
|
+
filter: this.filter,
|
|
797
686
|
};
|
|
798
687
|
if (this.limit !== undefined && this.limit > 0) {
|
|
799
688
|
limeQuery.limit = this.limit;
|
|
@@ -814,7 +703,7 @@ const LimeQueryBuilder = class {
|
|
|
814
703
|
const limeQuery = {
|
|
815
704
|
limetype: this.limetype,
|
|
816
705
|
responseFormat: responseFormat,
|
|
817
|
-
filter:
|
|
706
|
+
filter: this.filter,
|
|
818
707
|
};
|
|
819
708
|
if (this.limit !== undefined && this.limit > 0) {
|
|
820
709
|
limeQuery.limit = this.limit;
|
|
@@ -865,7 +754,7 @@ const LimeQueryBuilder = class {
|
|
|
865
754
|
queryToCheck = {
|
|
866
755
|
limetype: this.limetype,
|
|
867
756
|
responseFormat: responseFormat,
|
|
868
|
-
filter:
|
|
757
|
+
filter: this.filter,
|
|
869
758
|
};
|
|
870
759
|
if (this.limit !== undefined && this.limit > 0) {
|
|
871
760
|
queryToCheck.limit = this.limit;
|
|
@@ -897,7 +786,7 @@ const LimeQueryBuilder = class {
|
|
|
897
786
|
if (!this.limetype) {
|
|
898
787
|
return;
|
|
899
788
|
}
|
|
900
|
-
return (index.h("div", { class: "filter-section" }, index.h("h4", { class: "section-label" }, "Filter Conditions"), index.h("limebb-lime-query-filter-
|
|
789
|
+
return (index.h("div", { class: "filter-section" }, index.h("h4", { class: "section-label" }, "Filter Conditions"), index.h("limebb-lime-query-filter-builder", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.filter, onExpressionChange: this.handleFilterChange })));
|
|
901
790
|
}
|
|
902
791
|
renderQueryOptionsSection() {
|
|
903
792
|
var _a;
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
const index = require('./index-ff255a0d.js');
|
|
6
|
+
const index_esm = require('./index.esm-d785eb6e.js');
|
|
7
|
+
|
|
8
|
+
const limeQueryFilterAndCss = "@charset \"UTF-8\";.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:0;background-color:rgb(var(--contrast-100));border:1px solid rgb(var(--contrast-500));border-radius:0.75rem}.expression>ul{margin-top:0;margin-right:1rem;margin-bottom:1rem;margin-left:1rem;padding-left:1rem;list-style:disc}.expression>ul li{margin-top:1rem}.expression>ul li.add-button{list-style:none}";
|
|
9
|
+
const LimebbLimeQueryFilterAndStyle0 = limeQueryFilterAndCss;
|
|
10
|
+
|
|
11
|
+
const LimeQueryFilterAndComponent = class {
|
|
12
|
+
constructor(hostRef) {
|
|
13
|
+
index.registerInstance(this, hostRef);
|
|
14
|
+
this.expressionChange = index.createEvent(this, "expressionChange", 7);
|
|
15
|
+
this.renderChildExpression = (expression, childIndex) => (index.h("li", null, index.h("limebb-lime-query-filter-expression", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: expression, onExpressionChange: this.handleExpressionChange(childIndex) })));
|
|
16
|
+
this.handleAddChildExpression = () => {
|
|
17
|
+
const newOrGroup = {
|
|
18
|
+
op: index_esm.Zt.OR,
|
|
19
|
+
exp: [
|
|
20
|
+
{
|
|
21
|
+
key: '',
|
|
22
|
+
op: index_esm.Zt.EQUALS,
|
|
23
|
+
exp: '',
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
};
|
|
27
|
+
const updatedExpressionsList = [
|
|
28
|
+
...this.expression.exp,
|
|
29
|
+
newOrGroup,
|
|
30
|
+
];
|
|
31
|
+
this.expressionChange.emit({
|
|
32
|
+
op: index_esm.Zt.AND,
|
|
33
|
+
exp: updatedExpressionsList,
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
this.handleExpressionChange = (updatedChildIndex) => (event) => {
|
|
37
|
+
var _a;
|
|
38
|
+
event.stopPropagation();
|
|
39
|
+
const updatedExpression = (_a = event.detail) !== null && _a !== void 0 ? _a : undefined;
|
|
40
|
+
const expressions = [...this.expression.exp];
|
|
41
|
+
if (updatedExpression === undefined) {
|
|
42
|
+
expressions.splice(updatedChildIndex, 1);
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
expressions[updatedChildIndex] = updatedExpression;
|
|
46
|
+
}
|
|
47
|
+
if (expressions.length === 0) {
|
|
48
|
+
this.expressionChange.emit(undefined);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (expressions.length === 1) {
|
|
52
|
+
this.expressionChange.emit(expressions[0]);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.expressionChange.emit({
|
|
56
|
+
op: index_esm.Zt.AND,
|
|
57
|
+
exp: expressions,
|
|
58
|
+
});
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
render() {
|
|
62
|
+
let subheading = 'All of these conditions are true';
|
|
63
|
+
if (this.expression.exp.length <= 1) {
|
|
64
|
+
subheading = '';
|
|
65
|
+
}
|
|
66
|
+
return (index.h("div", { key: 'f07c53808d6be8d846f5a45223abb5c94b1a0b16', class: "expression" }, (this.label || subheading) && (index.h("limel-header", { key: '229f0d58ff15743fbb12da53ad9c593bfba801d1', heading: this.label, subheading: subheading })), index.h("ul", { key: '2600c2bee2b958036ea606141bcfcac0e277114c' }, this.expression.exp.map(this.renderChildExpression), index.h("li", { key: '6395e605ee8f454a820ac73601da89b19686187a', class: "add-button" }, this.renderAddChildExpression()))));
|
|
67
|
+
}
|
|
68
|
+
renderAddChildExpression() {
|
|
69
|
+
return (index.h("limel-button", { label: this.getAddButtonLabel(), icon: "plus_math", onClick: this.handleAddChildExpression }));
|
|
70
|
+
}
|
|
71
|
+
getAddButtonLabel() {
|
|
72
|
+
if (this.expression.exp.length === 0) {
|
|
73
|
+
return 'Add a condition';
|
|
74
|
+
}
|
|
75
|
+
return 'Add another condition';
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
LimeQueryFilterAndComponent.style = LimebbLimeQueryFilterAndStyle0;
|
|
79
|
+
|
|
80
|
+
exports.limebb_lime_query_filter_and = LimeQueryFilterAndComponent;
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
5
|
const index = require('./index-ff255a0d.js');
|
|
6
|
-
const index_esm = require('./index.esm-
|
|
7
|
-
const limetype = require('./limetype-
|
|
6
|
+
const index_esm = require('./index.esm-d785eb6e.js');
|
|
7
|
+
const limetype = require('./limetype-f2e4376e.js');
|
|
8
8
|
const nonNull = require('./non-null-3bf14aa1.js');
|
|
9
|
-
const
|
|
9
|
+
const _baseIsEqual = require('./_baseIsEqual-cb7951b0.js');
|
|
10
10
|
const _Map = require('./_Map-60aae0ed.js');
|
|
11
|
-
require('./_baseIsEqual-cb7951b0.js');
|
|
12
11
|
require('./_Uint8Array-95263550.js');
|
|
13
12
|
require('./_MapCache-8b125fbb.js');
|
|
14
13
|
require('./_getTag-8809c5c6.js');
|
|
@@ -38,6 +37,108 @@ function isString(value) {
|
|
|
38
37
|
(!_Map.isArray(value) && _Map.isObjectLike(value) && _Map.baseGetTag(value) == stringTag);
|
|
39
38
|
}
|
|
40
39
|
|
|
40
|
+
/**
|
|
41
|
+
* Performs a deep comparison between two values to determine if they are
|
|
42
|
+
* equivalent.
|
|
43
|
+
*
|
|
44
|
+
* **Note:** This method supports comparing arrays, array buffers, booleans,
|
|
45
|
+
* date objects, error objects, maps, numbers, `Object` objects, regexes,
|
|
46
|
+
* sets, strings, symbols, and typed arrays. `Object` objects are compared
|
|
47
|
+
* by their own, not inherited, enumerable properties. Functions and DOM
|
|
48
|
+
* nodes are compared by strict equality, i.e. `===`.
|
|
49
|
+
*
|
|
50
|
+
* @static
|
|
51
|
+
* @memberOf _
|
|
52
|
+
* @since 0.1.0
|
|
53
|
+
* @category Lang
|
|
54
|
+
* @param {*} value The value to compare.
|
|
55
|
+
* @param {*} other The other value to compare.
|
|
56
|
+
* @returns {boolean} Returns `true` if the values are equivalent, else `false`.
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* var object = { 'a': 1 };
|
|
60
|
+
* var other = { 'a': 1 };
|
|
61
|
+
*
|
|
62
|
+
* _.isEqual(object, other);
|
|
63
|
+
* // => true
|
|
64
|
+
*
|
|
65
|
+
* object === other;
|
|
66
|
+
* // => false
|
|
67
|
+
*/
|
|
68
|
+
function isEqual(value, other) {
|
|
69
|
+
return _baseIsEqual.baseIsEqual(value, other);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
const limeQueryFilterBuilderCss = ".expression-with-promotion{display:flex;flex-direction:column;gap:1rem}";
|
|
73
|
+
const LimebbLimeQueryFilterBuilderStyle0 = limeQueryFilterBuilderCss;
|
|
74
|
+
|
|
75
|
+
const LimeQueryFilterBuilderComponent = class {
|
|
76
|
+
constructor(hostRef) {
|
|
77
|
+
index.registerInstance(this, hostRef);
|
|
78
|
+
this.expressionChange = index.createEvent(this, "expressionChange", 7);
|
|
79
|
+
this.handleAddFirstCondition = () => {
|
|
80
|
+
const newExpression = {
|
|
81
|
+
key: '',
|
|
82
|
+
op: index_esm.Zt.EQUALS,
|
|
83
|
+
exp: '',
|
|
84
|
+
};
|
|
85
|
+
this.expressionChange.emit(newExpression);
|
|
86
|
+
};
|
|
87
|
+
this.handlePromoteAndAdd = () => {
|
|
88
|
+
if (!this.expression) {
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
// Wrap current expression in AND and add a new comparison
|
|
92
|
+
const newExpression = {
|
|
93
|
+
op: index_esm.Zt.AND,
|
|
94
|
+
exp: [
|
|
95
|
+
this.expression,
|
|
96
|
+
{
|
|
97
|
+
key: '',
|
|
98
|
+
op: index_esm.Zt.EQUALS,
|
|
99
|
+
exp: '',
|
|
100
|
+
},
|
|
101
|
+
],
|
|
102
|
+
};
|
|
103
|
+
this.expressionChange.emit(newExpression);
|
|
104
|
+
};
|
|
105
|
+
this.handleExpressionChange = (event) => {
|
|
106
|
+
var _a;
|
|
107
|
+
event.stopPropagation();
|
|
108
|
+
this.expressionChange.emit((_a = event.detail) !== null && _a !== void 0 ? _a : undefined);
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
render() {
|
|
112
|
+
if (!this.expression) {
|
|
113
|
+
return this.renderEmptyState();
|
|
114
|
+
}
|
|
115
|
+
// Check if we need to show promotion UI (comparison or NOT)
|
|
116
|
+
if (this.needsPromotion()) {
|
|
117
|
+
return this.renderWithPromotionButton();
|
|
118
|
+
}
|
|
119
|
+
// AND/OR groups handle their own Add buttons
|
|
120
|
+
return (index.h("limebb-lime-query-filter-expression", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression, onExpressionChange: this.handleExpressionChange }));
|
|
121
|
+
}
|
|
122
|
+
needsPromotion() {
|
|
123
|
+
if (!this.expression) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
// Basic comparison needs promotion
|
|
127
|
+
if ('key' in this.expression) {
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
// NOT needs promotion
|
|
131
|
+
return this.expression.op === index_esm.Zt.NOT;
|
|
132
|
+
}
|
|
133
|
+
renderEmptyState() {
|
|
134
|
+
return (index.h("limel-button", { label: "Add a condition", icon: "plus_math", onClick: this.handleAddFirstCondition }));
|
|
135
|
+
}
|
|
136
|
+
renderWithPromotionButton() {
|
|
137
|
+
return (index.h("div", { class: "expression-with-promotion" }, index.h("limebb-lime-query-filter-expression", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression, onExpressionChange: this.handleExpressionChange }), index.h("limel-button", { label: "Add another condition", icon: "plus_math", onClick: this.handlePromoteAndAdd })));
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
LimeQueryFilterBuilderComponent.style = LimebbLimeQueryFilterBuilderStyle0;
|
|
141
|
+
|
|
41
142
|
const RELATION_PROPERTY_TYPES = [
|
|
42
143
|
'belongsto',
|
|
43
144
|
'hasone',
|
|
@@ -102,7 +203,7 @@ const LimetypeField = class {
|
|
|
102
203
|
componentShouldUpdate(newValue, oldValue, property) {
|
|
103
204
|
var _a, _b;
|
|
104
205
|
return (property !== 'formInfo' ||
|
|
105
|
-
!isEqual
|
|
206
|
+
!isEqual((_a = newValue === null || newValue === void 0 ? void 0 : newValue.schema) === null || _a === void 0 ? void 0 : _a.oneOf, (_b = oldValue === null || oldValue === void 0 ? void 0 : oldValue.schema) === null || _b === void 0 ? void 0 : _b.oneOf));
|
|
106
207
|
}
|
|
107
208
|
render() {
|
|
108
209
|
var _a;
|
|
@@ -123,7 +224,7 @@ const LimetypeField = class {
|
|
|
123
224
|
value: '',
|
|
124
225
|
};
|
|
125
226
|
options.unshift(emptyOption);
|
|
126
|
-
return (index.h("limel-select", { key: '
|
|
227
|
+
return (index.h("limel-select", { key: 'cf27b83c4751838e85436af443a275b3d7c9dfee', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
|
|
127
228
|
}
|
|
128
229
|
componentWillRender() {
|
|
129
230
|
this.updatePropertyFields(this.value || '');
|
|
@@ -402,5 +503,6 @@ const ResponseFormatEditor = class {
|
|
|
402
503
|
};
|
|
403
504
|
ResponseFormatEditor.style = LimebbResponseFormatEditorStyle0;
|
|
404
505
|
|
|
506
|
+
exports.limebb_lime_query_filter_builder = LimeQueryFilterBuilderComponent;
|
|
405
507
|
exports.limebb_limetype_field = LimetypeField;
|
|
406
508
|
exports.limebb_response_format_editor = ResponseFormatEditor;
|