@limetech/lime-crm-building-blocks 1.100.0 → 1.101.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/lime-crm-building-blocks.cjs.js +1 -1
- package/dist/cjs/limebb-lime-query-builder.cjs.entry.js +177 -204
- package/dist/cjs/{limebb-lime-query-filter-builder_3.cjs.entry.js → limebb-lime-query-filter-builder_4.cjs.entry.js} +86 -1
- package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +147 -0
- package/dist/cjs/{limebb-lime-query-filter-comparison_5.cjs.entry.js → limebb-lime-query-filter-group_3.cjs.entry.js} +5 -333
- package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +51 -0
- 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 +3 -3
- 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-property-selector.cjs.entry.js +234 -0
- 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/loader.cjs.js +1 -1
- package/dist/collection/collection-manifest.json +2 -2
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +1 -1
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +1 -1
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
- package/dist/collection/components/lime-query-builder/expressions/lime-query-value-input.js +7 -7
- package/dist/collection/components/lime-query-builder/lime-query-builder.css +2 -5
- package/dist/collection/components/lime-query-builder/lime-query-builder.js +19 -19
- package/dist/collection/components/lime-query-builder/lime-query-validation.js +160 -26
- package/dist/collection/components/lime-query-builder/lime-query.types.js +1 -57
- 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.css +72 -0
- package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +252 -0
- package/dist/collection/components/lime-query-builder/order-by/order-by-item.css +45 -0
- package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +173 -0
- 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/lime-query-filter-comparison.js +1 -1
- package/dist/components/lime-query-filter-expression.js +2 -2
- package/dist/components/lime-query-value-input.js +3 -3
- package/dist/components/limebb-lime-query-builder.js +201 -215
- package/dist/components/limebb-lime-query-order-by-editor.d.ts +11 -0
- package/dist/components/limebb-lime-query-order-by-editor.js +6 -0
- package/dist/components/limebb-lime-query-order-by-item.d.ts +11 -0
- package/dist/components/limebb-lime-query-order-by-item.js +6 -0
- 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 +1 -1
- package/dist/components/live-docs-info.js +2 -2
- package/dist/components/notification-item.js +1 -1
- package/dist/components/order-by-editor.js +123 -0
- package/dist/components/order-by-item.js +73 -0
- package/dist/components/property-selector.js +1 -1
- package/dist/components/summary-popover.js +3 -3
- package/dist/esm/lime-crm-building-blocks.js +1 -1
- package/dist/esm/limebb-lime-query-builder.entry.js +179 -206
- package/dist/esm/{limebb-lime-query-filter-builder_3.entry.js → limebb-lime-query-filter-builder_4.entry.js} +86 -2
- package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +142 -0
- package/dist/esm/{limebb-lime-query-filter-comparison_5.entry.js → limebb-lime-query-filter-group_3.entry.js} +7 -333
- package/dist/esm/limebb-lime-query-order-by-item.entry.js +47 -0
- 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 +3 -3
- package/dist/esm/limebb-notification-item.entry.js +1 -1
- package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
- package/dist/esm/limebb-property-selector.entry.js +230 -0
- package/dist/esm/limebb-text-editor.entry.js +1 -1
- package/dist/esm/limebb-trend-indicator.entry.js +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/{property-resolution-fde2375e.js → property-resolution-c21a1369.js} +1 -1
- package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
- package/dist/lime-crm-building-blocks/{p-631ca5a5.entry.js → p-0cd036ed.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-2725671e.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-9cac4de2.entry.js → p-425eaba2.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-e8946134.entry.js → p-5cf4898d.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-67c174d0.entry.js +1 -0
- package/dist/lime-crm-building-blocks/p-6aa216ec.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-93cadc1e.entry.js → p-8601eab5.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-b9b954d9.entry.js → p-8c2fb1c9.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-3122ea05.entry.js → p-92dfc5f8.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/{p-569c86b5.entry.js → p-a1ee8990.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-abfc7815.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-e0ab1554.js → p-b748c770.js} +1 -1
- package/dist/lime-crm-building-blocks/p-ccf34631.entry.js +1 -0
- package/dist/lime-crm-building-blocks/{p-36ea13c0.entry.js → p-d84874dc.entry.js} +1 -1
- package/dist/lime-crm-building-blocks/p-f9efca1d.entry.js +1 -0
- package/dist/types/components/lime-query-builder/expressions/lime-query-value-input.d.ts +2 -3
- package/dist/types/components/lime-query-builder/lime-query-builder.d.ts +9 -6
- package/dist/types/components/lime-query-builder/lime-query.types.d.ts +0 -72
- package/dist/types/components/lime-query-builder/order-by/order-by-editor.d.ts +58 -0
- package/dist/types/components/lime-query-builder/order-by/order-by-item.d.ts +37 -0
- package/dist/types/components.d.ts +165 -205
- package/package.json +1 -1
- package/dist/cjs/limebb-lime-query-filter-and.cjs.entry.js +0 -80
- package/dist/cjs/limebb-lime-query-filter-expression.cjs.entry.js +0 -45
- package/dist/cjs/limebb-lime-query-filter-or.cjs.entry.js +0 -68
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-and.css +0 -121
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-and.js +0 -249
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-or.css +0 -123
- package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-or.js +0 -237
- package/dist/collection/components/lime-query-builder/filter-conversion.js +0 -255
- package/dist/components/limebb-lime-query-filter-and.d.ts +0 -11
- package/dist/components/limebb-lime-query-filter-and.js +0 -135
- package/dist/components/limebb-lime-query-filter-or.d.ts +0 -11
- package/dist/components/limebb-lime-query-filter-or.js +0 -123
- package/dist/esm/limebb-lime-query-filter-and.entry.js +0 -76
- package/dist/esm/limebb-lime-query-filter-expression.entry.js +0 -41
- package/dist/esm/limebb-lime-query-filter-or.entry.js +0 -64
- package/dist/lime-crm-building-blocks/p-24aeb928.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-422f6d51.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-67dbaa4c.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-6d119dab.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-91732502.entry.js +0 -1
- package/dist/lime-crm-building-blocks/p-b198194a.entry.js +0 -1
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-and.d.ts +0 -57
- package/dist/types/components/lime-query-builder/expressions/lime-query-filter-or.d.ts +0 -56
- package/dist/types/components/lime-query-builder/filter-conversion.d.ts +0 -31
|
@@ -139,6 +139,90 @@ const LimeQueryFilterBuilderComponent = class {
|
|
|
139
139
|
};
|
|
140
140
|
LimeQueryFilterBuilderComponent.style = LimebbLimeQueryFilterBuilderStyle0;
|
|
141
141
|
|
|
142
|
+
const orderByEditorCss = ":host(limebb-lime-query-order-by-editor){display:block;width:100%}.order-by-editor{display:flex;flex-direction:column;gap:1rem;padding:1rem}.header{display:flex;justify-content:space-between;align-items:center;gap:1rem}.header h4{margin:0;font-size:1rem;font-weight:600;color:rgb(var(--contrast-1000))}.order-by-list{display:flex;flex-direction:column;gap:1rem;padding:0.5rem;border:1px solid rgb(var(--contrast-300));border-radius:0.25rem;background-color:rgb(var(--contrast-50));min-height:4rem}.order-by-item{padding:0.5rem;border-radius:0.25rem;transition:background-color 0.2s}.order-by-item:hover{background-color:rgb(var(--contrast-100))}.actions{display:flex;justify-content:flex-start}.summary{display:flex;justify-content:space-between;align-items:center;padding-top:0.5rem;border-top:1px solid rgb(var(--contrast-300))}.summary .count{font-size:0.875rem;font-weight:500;color:rgb(var(--contrast-900))}.empty-state{padding:2rem;text-align:center;color:rgb(var(--contrast-700));font-style:italic}.empty-state p{margin:0}";
|
|
143
|
+
const LimebbLimeQueryOrderByEditorStyle0 = orderByEditorCss;
|
|
144
|
+
|
|
145
|
+
const OrderByEditor = class {
|
|
146
|
+
constructor(hostRef) {
|
|
147
|
+
index.registerInstance(this, hostRef);
|
|
148
|
+
this.change = index.createEvent(this, "change", 7);
|
|
149
|
+
/**
|
|
150
|
+
* Optional label
|
|
151
|
+
*/
|
|
152
|
+
this.label = 'Sort Order';
|
|
153
|
+
this.items = [];
|
|
154
|
+
this.handleItemChange = (index) => (event) => {
|
|
155
|
+
event.stopPropagation();
|
|
156
|
+
const newItems = [...this.items];
|
|
157
|
+
if (event.detail === null) {
|
|
158
|
+
// Remove item
|
|
159
|
+
newItems.splice(index, 1);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
// Update item
|
|
163
|
+
newItems[index] = event.detail;
|
|
164
|
+
}
|
|
165
|
+
this.items = newItems;
|
|
166
|
+
this.emitChange();
|
|
167
|
+
};
|
|
168
|
+
this.handleAddSortField = () => {
|
|
169
|
+
// Add new item with empty path and ASC direction
|
|
170
|
+
this.items = [...this.items, { '': 'ASC' }];
|
|
171
|
+
this.emitChange();
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
componentWillLoad() {
|
|
175
|
+
if (this.value && this.value.length > 0) {
|
|
176
|
+
this.items = [...this.value];
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
handleValueChange(newValue) {
|
|
180
|
+
if (!newValue) {
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Check if items have changed
|
|
184
|
+
const itemsChanged = newValue.length !== this.items.length ||
|
|
185
|
+
!newValue.every((item, index) => {
|
|
186
|
+
const currentItem = this.items[index];
|
|
187
|
+
if (!currentItem)
|
|
188
|
+
return false;
|
|
189
|
+
const itemKey = Object.keys(item)[0];
|
|
190
|
+
const currentKey = Object.keys(currentItem)[0];
|
|
191
|
+
return (itemKey === currentKey &&
|
|
192
|
+
item[itemKey] === currentItem[currentKey]);
|
|
193
|
+
});
|
|
194
|
+
if (itemsChanged) {
|
|
195
|
+
this.items = newValue.length > 0 ? [...newValue] : [];
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
render() {
|
|
199
|
+
if (!this.limetype) {
|
|
200
|
+
return (index.h("div", { class: "empty-state" }, index.h("p", null, "Select a limetype to configure sorting")));
|
|
201
|
+
}
|
|
202
|
+
return (index.h("div", { class: "order-by-editor" }, index.h("div", { class: "header" }, index.h("h4", null, this.label)), this.renderOrderByList(), this.renderActions()));
|
|
203
|
+
}
|
|
204
|
+
renderOrderByList() {
|
|
205
|
+
if (this.items.length === 0) {
|
|
206
|
+
return null;
|
|
207
|
+
}
|
|
208
|
+
return (index.h("div", { class: "order-by-list" }, this.items.map((item, index) => this.renderItem(item, index))));
|
|
209
|
+
}
|
|
210
|
+
renderActions() {
|
|
211
|
+
return (index.h("div", { class: "actions" }, index.h("limel-button", { label: "Add Sort Field", icon: "plus_math", onClick: this.handleAddSortField })));
|
|
212
|
+
}
|
|
213
|
+
renderItem(item, index$1) {
|
|
214
|
+
const propertyPath = Object.keys(item)[0] || '';
|
|
215
|
+
return (index.h("limebb-lime-query-order-by-item", { key: `${propertyPath}-${index$1}`, class: "order-by-item", platform: this.platform, context: this.context, limetype: this.limetype, item: item, onItemChange: this.handleItemChange(index$1) }));
|
|
216
|
+
}
|
|
217
|
+
emitChange() {
|
|
218
|
+
this.change.emit(this.items);
|
|
219
|
+
}
|
|
220
|
+
static get watchers() { return {
|
|
221
|
+
"value": ["handleValueChange"]
|
|
222
|
+
}; }
|
|
223
|
+
};
|
|
224
|
+
OrderByEditor.style = LimebbLimeQueryOrderByEditorStyle0;
|
|
225
|
+
|
|
142
226
|
const RELATION_PROPERTY_TYPES = [
|
|
143
227
|
'belongsto',
|
|
144
228
|
'hasone',
|
|
@@ -224,7 +308,7 @@ const LimetypeField = class {
|
|
|
224
308
|
value: '',
|
|
225
309
|
};
|
|
226
310
|
options.unshift(emptyOption);
|
|
227
|
-
return (index.h("limel-select", { key: '
|
|
311
|
+
return (index.h("limel-select", { key: 'fd9522c5df730f65a5ac57140bca6c05c5acd63d', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
|
|
228
312
|
}
|
|
229
313
|
componentWillRender() {
|
|
230
314
|
this.updatePropertyFields(this.value || '');
|
|
@@ -504,5 +588,6 @@ const ResponseFormatEditor = class {
|
|
|
504
588
|
ResponseFormatEditor.style = LimebbResponseFormatEditorStyle0;
|
|
505
589
|
|
|
506
590
|
exports.limebb_lime_query_filter_builder = LimeQueryFilterBuilderComponent;
|
|
591
|
+
exports.limebb_lime_query_order_by_editor = OrderByEditor;
|
|
507
592
|
exports.limebb_limetype_field = LimetypeField;
|
|
508
593
|
exports.limebb_response_format_editor = ResponseFormatEditor;
|
|
@@ -0,0 +1,147 @@
|
|
|
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 limeQueryFilterComparisonCss = ".expression-container{display:flex;flex-direction:row;align-items:flex-start;gap:1rem;flex-wrap:wrap}.expression-container>*{flex-grow:2;width:30%;max-width:calc(100% - 3.25rem)}.expression-container>.operator{flex-grow:1;width:calc(30% + 1rem);min-width:4rem}.expression-container>.remove{flex-grow:0;width:auto;margin-left:auto}@media (max-width: 768px){.expression-container{flex-direction:column}.expression-container>*{width:100%;max-width:100%}.expression-container>.operator{width:100%}.expression-container>.remove{margin-left:0;align-self:flex-end}}";
|
|
9
|
+
const LimebbLimeQueryFilterComparisonStyle0 = limeQueryFilterComparisonCss;
|
|
10
|
+
|
|
11
|
+
const LIME_QUERY_OPERATORS = [
|
|
12
|
+
{ value: index_esm.Zt.EQUALS, label: 'Equals', icon: 'equals' },
|
|
13
|
+
{ value: index_esm.Zt.NOT_EQUALS, label: 'Not Equals', icon: 'not-equal' },
|
|
14
|
+
{
|
|
15
|
+
value: index_esm.Zt.GREATER,
|
|
16
|
+
label: 'Greater Than',
|
|
17
|
+
icon: 'greater-than',
|
|
18
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
value: index_esm.Zt.GREATER_OR_EQUAL,
|
|
22
|
+
label: 'Greater or Equal',
|
|
23
|
+
icon: 'greater-or-equal',
|
|
24
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
value: index_esm.Zt.LESS,
|
|
28
|
+
label: 'Less Than',
|
|
29
|
+
icon: 'less-than',
|
|
30
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
value: index_esm.Zt.LESS_OR_EQUAL,
|
|
34
|
+
label: 'Less or Equal',
|
|
35
|
+
icon: 'less-or-equal',
|
|
36
|
+
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
37
|
+
},
|
|
38
|
+
{ value: index_esm.Zt.IN, label: 'In List', icon: 'list' },
|
|
39
|
+
{
|
|
40
|
+
value: index_esm.Zt.LIKE,
|
|
41
|
+
label: 'Contains',
|
|
42
|
+
icon: '-lime-filter-contain',
|
|
43
|
+
applicableTypes: ['string', 'text'],
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
value: index_esm.Zt.BEGINS,
|
|
47
|
+
label: 'Begins With',
|
|
48
|
+
icon: '-lime-filter-begin',
|
|
49
|
+
applicableTypes: ['string', 'text'],
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
value: index_esm.Zt.ENDS,
|
|
53
|
+
label: 'Ends With',
|
|
54
|
+
icon: '-lime-filter-end',
|
|
55
|
+
applicableTypes: ['string', 'text'],
|
|
56
|
+
},
|
|
57
|
+
];
|
|
58
|
+
const LimeQueryFilterComparisonComponent = class {
|
|
59
|
+
constructor(hostRef) {
|
|
60
|
+
index.registerInstance(this, hostRef);
|
|
61
|
+
this.expressionChange = index.createEvent(this, "expressionChange", 7);
|
|
62
|
+
this.handlePropertyChange = (event) => {
|
|
63
|
+
event.stopPropagation();
|
|
64
|
+
this.expressionChange.emit(Object.assign(Object.assign({}, this.expression), { key: event.detail }));
|
|
65
|
+
};
|
|
66
|
+
this.handleOperatorChange = (event) => {
|
|
67
|
+
event.stopPropagation();
|
|
68
|
+
// TODO: Clear value when switching between IN and other operators
|
|
69
|
+
// since array values are incompatible with single-value operators
|
|
70
|
+
this.expressionChange.emit({
|
|
71
|
+
key: this.expression.key,
|
|
72
|
+
op: event.detail.value,
|
|
73
|
+
exp: this.expression.exp,
|
|
74
|
+
});
|
|
75
|
+
};
|
|
76
|
+
this.handleValueChange = (event) => {
|
|
77
|
+
event.stopPropagation();
|
|
78
|
+
this.expressionChange.emit(Object.assign(Object.assign({}, this.expression), { exp: event.detail }));
|
|
79
|
+
};
|
|
80
|
+
this.removeExpression = () => {
|
|
81
|
+
this.expressionChange.emit(undefined);
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
render() {
|
|
85
|
+
return (index.h("div", { key: 'a077c982ced9840beec3e574cd3e2e336cff6071', class: "expression" }, this.label && index.h("limel-header", { key: 'fbcb5cf515aac2c8e68d29947c7560684f30822c', heading: this.label }), index.h("div", { key: 'ffea426ea1295ae11aaa3c910f835acbeed24cd9', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), index.h("limel-icon-button", { key: '20064f9fe42a4dfa71b2e1e2d393d50bbe20e2cb', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
|
|
86
|
+
}
|
|
87
|
+
renderPropertySelector() {
|
|
88
|
+
return (index.h("limebb-property-selector", { platform: this.platform, context: this.context, label: "Property", limetype: this.limetype, value: this.expression.key, required: true, onChange: this.handlePropertyChange }));
|
|
89
|
+
}
|
|
90
|
+
renderOperator() {
|
|
91
|
+
const operatorHasBeenSet = !!this.expression.op;
|
|
92
|
+
const options = LIME_QUERY_OPERATORS.map((op) => ({
|
|
93
|
+
text: op.label,
|
|
94
|
+
value: op.value,
|
|
95
|
+
icon: op.icon ? { name: op.icon } : undefined,
|
|
96
|
+
}));
|
|
97
|
+
const selectedOption = options.find((o) => o.value === this.expression.op);
|
|
98
|
+
return (index.h("limel-select", { class: "operator", label: "Operator", value: selectedOption, options: options, disabled: !operatorHasBeenSet && !this.expression.key, onChange: this.handleOperatorChange }));
|
|
99
|
+
}
|
|
100
|
+
renderValueInput() {
|
|
101
|
+
if (!this.expression.op) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return (index.h("limebb-lime-query-value-input", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, propertyPath: this.expression.key, operator: this.expression.op, value: this.expression.exp, onChange: this.handleValueChange }));
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
LimeQueryFilterComparisonComponent.style = LimebbLimeQueryFilterComparisonStyle0;
|
|
108
|
+
|
|
109
|
+
const limeQueryFilterExpressionCss = "@charset \"UTF-8\";.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:1rem}";
|
|
110
|
+
const LimebbLimeQueryFilterExpressionStyle0 = limeQueryFilterExpressionCss;
|
|
111
|
+
|
|
112
|
+
const LimeQueryFilterExpressionComponent = class {
|
|
113
|
+
constructor(hostRef) {
|
|
114
|
+
index.registerInstance(this, hostRef);
|
|
115
|
+
this.expressionChange = index.createEvent(this, "expressionChange", 7);
|
|
116
|
+
this.handleExpressionChange = (event) => {
|
|
117
|
+
event.stopPropagation();
|
|
118
|
+
this.expressionChange.emit(event.detail);
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
render() {
|
|
122
|
+
if (!this.expression) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
const props = {
|
|
126
|
+
platform: this.platform,
|
|
127
|
+
context: this.context,
|
|
128
|
+
label: this.label,
|
|
129
|
+
limetype: this.limetype,
|
|
130
|
+
activeLimetype: this.activeLimetype,
|
|
131
|
+
};
|
|
132
|
+
if ('key' in this.expression) {
|
|
133
|
+
return (index.h("limebb-lime-query-filter-comparison", Object.assign({}, props, { expression: this.expression, onExpressionChange: this.handleExpressionChange })));
|
|
134
|
+
}
|
|
135
|
+
if (this.expression.op === index_esm.Zt.AND ||
|
|
136
|
+
this.expression.op === index_esm.Zt.OR) {
|
|
137
|
+
return (index.h("limebb-lime-query-filter-group", Object.assign({}, props, { expression: this.expression, onExpressionChange: this.handleExpressionChange })));
|
|
138
|
+
}
|
|
139
|
+
if (this.expression.op === index_esm.Zt.NOT) {
|
|
140
|
+
return (index.h("limebb-lime-query-filter-not", Object.assign({}, props, { expression: this.expression, onExpressionChange: this.handleExpressionChange })));
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
LimeQueryFilterExpressionComponent.style = LimebbLimeQueryFilterExpressionStyle0;
|
|
145
|
+
|
|
146
|
+
exports.limebb_lime_query_filter_comparison = LimeQueryFilterComparisonComponent;
|
|
147
|
+
exports.limebb_lime_query_filter_expression = LimeQueryFilterExpressionComponent;
|
|
@@ -6,107 +6,6 @@ const index = require('./index-ff255a0d.js');
|
|
|
6
6
|
const index_esm = require('./index.esm-d785eb6e.js');
|
|
7
7
|
const propertyResolution = require('./property-resolution-fb42a46b.js');
|
|
8
8
|
|
|
9
|
-
const limeQueryFilterComparisonCss = ".expression-container{display:flex;flex-direction:row;align-items:flex-start;gap:1rem;flex-wrap:wrap}.expression-container>*{flex-grow:2;width:30%;max-width:calc(100% - 3.25rem)}.expression-container>.operator{flex-grow:1;width:calc(30% + 1rem);min-width:4rem}.expression-container>.remove{flex-grow:0;width:auto;margin-left:auto}@media (max-width: 768px){.expression-container{flex-direction:column}.expression-container>*{width:100%;max-width:100%}.expression-container>.operator{width:100%}.expression-container>.remove{margin-left:0;align-self:flex-end}}";
|
|
10
|
-
const LimebbLimeQueryFilterComparisonStyle0 = limeQueryFilterComparisonCss;
|
|
11
|
-
|
|
12
|
-
const LIME_QUERY_OPERATORS = [
|
|
13
|
-
{ value: index_esm.Zt.EQUALS, label: 'Equals', icon: 'equals' },
|
|
14
|
-
{ value: index_esm.Zt.NOT_EQUALS, label: 'Not Equals', icon: 'not-equal' },
|
|
15
|
-
{
|
|
16
|
-
value: index_esm.Zt.GREATER,
|
|
17
|
-
label: 'Greater Than',
|
|
18
|
-
icon: 'greater-than',
|
|
19
|
-
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
value: index_esm.Zt.GREATER_OR_EQUAL,
|
|
23
|
-
label: 'Greater or Equal',
|
|
24
|
-
icon: 'greater-or-equal',
|
|
25
|
-
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
26
|
-
},
|
|
27
|
-
{
|
|
28
|
-
value: index_esm.Zt.LESS,
|
|
29
|
-
label: 'Less Than',
|
|
30
|
-
icon: 'less-than',
|
|
31
|
-
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
value: index_esm.Zt.LESS_OR_EQUAL,
|
|
35
|
-
label: 'Less or Equal',
|
|
36
|
-
icon: 'less-or-equal',
|
|
37
|
-
applicableTypes: ['integer', 'decimal', 'date', 'time'],
|
|
38
|
-
},
|
|
39
|
-
{ value: index_esm.Zt.IN, label: 'In List', icon: 'list' },
|
|
40
|
-
{
|
|
41
|
-
value: index_esm.Zt.LIKE,
|
|
42
|
-
label: 'Contains',
|
|
43
|
-
icon: '-lime-filter-contain',
|
|
44
|
-
applicableTypes: ['string', 'text'],
|
|
45
|
-
},
|
|
46
|
-
{
|
|
47
|
-
value: index_esm.Zt.BEGINS,
|
|
48
|
-
label: 'Begins With',
|
|
49
|
-
icon: '-lime-filter-begin',
|
|
50
|
-
applicableTypes: ['string', 'text'],
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
value: index_esm.Zt.ENDS,
|
|
54
|
-
label: 'Ends With',
|
|
55
|
-
icon: '-lime-filter-end',
|
|
56
|
-
applicableTypes: ['string', 'text'],
|
|
57
|
-
},
|
|
58
|
-
];
|
|
59
|
-
const LimeQueryFilterComparisonComponent = class {
|
|
60
|
-
constructor(hostRef) {
|
|
61
|
-
index.registerInstance(this, hostRef);
|
|
62
|
-
this.expressionChange = index.createEvent(this, "expressionChange", 7);
|
|
63
|
-
this.handlePropertyChange = (event) => {
|
|
64
|
-
event.stopPropagation();
|
|
65
|
-
this.expressionChange.emit(Object.assign(Object.assign({}, this.expression), { key: event.detail }));
|
|
66
|
-
};
|
|
67
|
-
this.handleOperatorChange = (event) => {
|
|
68
|
-
event.stopPropagation();
|
|
69
|
-
// TODO: Clear value when switching between IN and other operators
|
|
70
|
-
// since array values are incompatible with single-value operators
|
|
71
|
-
this.expressionChange.emit({
|
|
72
|
-
key: this.expression.key,
|
|
73
|
-
op: event.detail.value,
|
|
74
|
-
exp: this.expression.exp,
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
this.handleValueChange = (event) => {
|
|
78
|
-
event.stopPropagation();
|
|
79
|
-
this.expressionChange.emit(Object.assign(Object.assign({}, this.expression), { exp: event.detail }));
|
|
80
|
-
};
|
|
81
|
-
this.removeExpression = () => {
|
|
82
|
-
this.expressionChange.emit(undefined);
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
render() {
|
|
86
|
-
return (index.h("div", { key: '668e0f05bdb1fb25ffd652ea650c34e5431a3332', class: "expression" }, this.label && index.h("limel-header", { key: '5034070b58afe31cf90699dd2a27f884e647f540', heading: this.label }), index.h("div", { key: '14a2b1270e5e6d7e158e29ebc5f61051e5670e80', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), index.h("limel-icon-button", { key: 'b69bde6e88c40d2623ef015794db28cec3676c73', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
|
|
87
|
-
}
|
|
88
|
-
renderPropertySelector() {
|
|
89
|
-
return (index.h("limebb-property-selector", { platform: this.platform, context: this.context, label: "Property", limetype: this.limetype, value: this.expression.key, required: true, onChange: this.handlePropertyChange }));
|
|
90
|
-
}
|
|
91
|
-
renderOperator() {
|
|
92
|
-
const operatorHasBeenSet = !!this.expression.op;
|
|
93
|
-
const options = LIME_QUERY_OPERATORS.map((op) => ({
|
|
94
|
-
text: op.label,
|
|
95
|
-
value: op.value,
|
|
96
|
-
icon: op.icon ? { name: op.icon } : undefined,
|
|
97
|
-
}));
|
|
98
|
-
const selectedOption = options.find((o) => o.value === this.expression.op);
|
|
99
|
-
return (index.h("limel-select", { class: "operator", label: "Operator", value: selectedOption, options: options, disabled: !operatorHasBeenSet && !this.expression.key, onChange: this.handleOperatorChange }));
|
|
100
|
-
}
|
|
101
|
-
renderValueInput() {
|
|
102
|
-
if (!this.expression.op) {
|
|
103
|
-
return null;
|
|
104
|
-
}
|
|
105
|
-
return (index.h("limebb-lime-query-value-input", { platform: this.platform, context: this.context, limetype: this.limetype, activeLimetype: this.activeLimetype, propertyPath: this.expression.key, operator: this.expression.op, value: this.expression.exp, onChange: this.handleValueChange }));
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
LimeQueryFilterComparisonComponent.style = LimebbLimeQueryFilterComparisonStyle0;
|
|
109
|
-
|
|
110
9
|
const limeQueryFilterGroupCss = "@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 .clickable-header{cursor:pointer;user-select:none}.expression .clickable-header:hover{background-color:rgb(var(--contrast-200))}.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;display:flex;gap:0.5rem}";
|
|
111
10
|
const LimebbLimeQueryFilterGroupStyle0 = limeQueryFilterGroupCss;
|
|
112
11
|
|
|
@@ -181,7 +80,7 @@ const LimeQueryFilterGroupComponent = class {
|
|
|
181
80
|
}
|
|
182
81
|
render() {
|
|
183
82
|
const subheading = this.getSubheading();
|
|
184
|
-
return (index.h("div", { key: '
|
|
83
|
+
return (index.h("div", { key: '0ed5a1403d9641926cd6d474910cedf9c7bba89e', class: "expression" }, subheading && (index.h("limel-header", { key: 'ea88a97df09f0fb5a21bf9afb4745256a611c7f8', subheading: subheading, onClick: this.handleToggleOperator, class: "clickable-header" })), index.h("ul", { key: 'cfbcdd539e84f79bf1d778e075cd3317d7409647' }, this.expression.exp.map(this.renderChildExpression), index.h("li", { key: 'ec443459245bf5852920bb4d3e341f2490a7b75b', class: "add-button" }, this.renderAddButton(), this.renderAddGroupButton()))));
|
|
185
84
|
}
|
|
186
85
|
getSubheading() {
|
|
187
86
|
if (this.expression.exp.length <= 1) {
|
|
@@ -238,7 +137,7 @@ const LimeQueryFilterNotComponent = class {
|
|
|
238
137
|
};
|
|
239
138
|
}
|
|
240
139
|
render() {
|
|
241
|
-
return (index.h("div", { key: '
|
|
140
|
+
return (index.h("div", { key: '9ab4a6b1e99668a0bcee3e3ba8cbbbe5185222e0', class: "expression" }, this.label && index.h("limel-header", { key: '85e997b0f96db306dd7a4433da959a74303aacfa', heading: this.label }), index.h("limebb-lime-query-filter-expression", { key: '14f634e125ee78f2aa70c7537b270a31699ba7c2', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
|
|
242
141
|
}
|
|
243
142
|
};
|
|
244
143
|
LimeQueryFilterNotComponent.style = LimebbLimeQueryFilterNotStyle0;
|
|
@@ -246,7 +145,7 @@ LimeQueryFilterNotComponent.style = LimebbLimeQueryFilterNotStyle0;
|
|
|
246
145
|
const limeQueryValueInputCss = ":host{display:block}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;margin-top:0.5rem;opacity:0.7;transition:opacity 0.2s ease}.mode-toggle:hover{opacity:1}.placeholder-input{flex-grow:1;display:flex;flex-direction:column;gap:0.5rem}.placeholder-preview{display:flex;align-items:center;gap:0.5rem;padding:0.5rem;background-color:rgba(var(--color-blue-light), 0.1);border-radius:var(--border-radius-small);font-size:0.875rem;color:rgb(var(--color-blue-default));border-left:3px solid rgb(var(--color-blue-default))}.placeholder-preview limel-icon{flex-shrink:0;color:rgb(var(--color-blue-default))}.placeholder-preview span{font-family:var(--font-monospace);word-break:break-all}";
|
|
247
146
|
const LimebbLimeQueryValueInputStyle0 = limeQueryValueInputCss;
|
|
248
147
|
|
|
249
|
-
var __decorate
|
|
148
|
+
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
250
149
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
251
150
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
252
151
|
r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -388,7 +287,7 @@ const LimeQueryValueInput = class {
|
|
|
388
287
|
}
|
|
389
288
|
renderValueInputByType() {
|
|
390
289
|
// Special handling for IN operator - always use chip set for arrays
|
|
391
|
-
if (this.operator ===
|
|
290
|
+
if (this.operator === index_esm.Zt.IN) {
|
|
392
291
|
return this.renderMultiValueInput();
|
|
393
292
|
}
|
|
394
293
|
const property = this.getProperty();
|
|
@@ -468,238 +367,11 @@ const LimeQueryValueInput = class {
|
|
|
468
367
|
return propertyResolution.getPropertyFromPath(this.limetypes, this.limetype, this.propertyPath);
|
|
469
368
|
}
|
|
470
369
|
};
|
|
471
|
-
__decorate
|
|
370
|
+
__decorate([
|
|
472
371
|
index_esm.Te()
|
|
473
372
|
], LimeQueryValueInput.prototype, "limetypes", void 0);
|
|
474
373
|
LimeQueryValueInput.style = LimebbLimeQueryValueInputStyle0;
|
|
475
374
|
|
|
476
|
-
const propertySelectorCss = ":host(limebb-property-selector){display:block}limel-menu{display:block;width:100%}";
|
|
477
|
-
const LimebbPropertySelectorStyle0 = propertySelectorCss;
|
|
478
|
-
|
|
479
|
-
var __decorate = (undefined && undefined.__decorate) || function (decorators, target, key, desc) {
|
|
480
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
481
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
482
|
-
r = Reflect.decorate(decorators, target, key, desc);
|
|
483
|
-
else
|
|
484
|
-
for (var i = decorators.length - 1; i >= 0; i--)
|
|
485
|
-
if (d = decorators[i])
|
|
486
|
-
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
487
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
488
|
-
};
|
|
489
|
-
const PropertySelector = class {
|
|
490
|
-
constructor(hostRef) {
|
|
491
|
-
index.registerInstance(this, hostRef);
|
|
492
|
-
this.change = index.createEvent(this, "change", 7);
|
|
493
|
-
/**
|
|
494
|
-
* Label for the input
|
|
495
|
-
*/
|
|
496
|
-
this.label = 'Property';
|
|
497
|
-
/**
|
|
498
|
-
* Whether the field is required
|
|
499
|
-
*/
|
|
500
|
-
this.required = false;
|
|
501
|
-
this.isOpen = false;
|
|
502
|
-
this.navigationPath = '';
|
|
503
|
-
this.menuItems = [];
|
|
504
|
-
this.handleChipSetWrapperClick = (event) => {
|
|
505
|
-
// Stop all clicks on the chip-set from bubbling
|
|
506
|
-
// This prevents the menu from opening when clicking chip remove buttons
|
|
507
|
-
event.stopPropagation();
|
|
508
|
-
};
|
|
509
|
-
this.handleChipSetFocus = () => {
|
|
510
|
-
// Open menu when the chip-set input receives focus
|
|
511
|
-
// This happens when user clicks to type/edit
|
|
512
|
-
if (!this.isOpen) {
|
|
513
|
-
this.navigationPath = this.value || '';
|
|
514
|
-
this.loadMenuItems();
|
|
515
|
-
this.isOpen = true;
|
|
516
|
-
}
|
|
517
|
-
};
|
|
518
|
-
this.handleSelect = (event) => {
|
|
519
|
-
event.stopPropagation();
|
|
520
|
-
const selectedPath = event.detail.value;
|
|
521
|
-
if (!selectedPath) {
|
|
522
|
-
return;
|
|
523
|
-
}
|
|
524
|
-
// Check if this is a complete path (leaf property, not a relation)
|
|
525
|
-
const property = propertyResolution.getPropertyFromPath(this.limetypes, this.limetype, selectedPath);
|
|
526
|
-
if (property === null || property === void 0 ? void 0 : property.relation) {
|
|
527
|
-
// This is a relation - update navigation but don't emit
|
|
528
|
-
this.navigationPath = selectedPath;
|
|
529
|
-
}
|
|
530
|
-
else {
|
|
531
|
-
// This is a leaf property - emit and close
|
|
532
|
-
this.change.emit(selectedPath);
|
|
533
|
-
this.isOpen = false;
|
|
534
|
-
this.navigationPath = '';
|
|
535
|
-
}
|
|
536
|
-
};
|
|
537
|
-
this.handleNavigateMenu = (event) => {
|
|
538
|
-
var _a;
|
|
539
|
-
event.stopPropagation();
|
|
540
|
-
if ((_a = event.detail) === null || _a === void 0 ? void 0 : _a.value) {
|
|
541
|
-
// Update navigation path when drilling down
|
|
542
|
-
this.navigationPath = event.detail.value;
|
|
543
|
-
}
|
|
544
|
-
};
|
|
545
|
-
this.handleCancel = () => {
|
|
546
|
-
this.isOpen = false;
|
|
547
|
-
this.navigationPath = '';
|
|
548
|
-
};
|
|
549
|
-
this.handleChipSetChange = (event) => {
|
|
550
|
-
event.stopPropagation();
|
|
551
|
-
const detail = event.detail;
|
|
552
|
-
// Handle both single chip and array of chips
|
|
553
|
-
if (!detail) {
|
|
554
|
-
// Clear all was clicked
|
|
555
|
-
this.change.emit('');
|
|
556
|
-
this.navigationPath = '';
|
|
557
|
-
return;
|
|
558
|
-
}
|
|
559
|
-
// Convert to array if it's a single chip
|
|
560
|
-
const chips = Array.isArray(detail) ? detail : [detail];
|
|
561
|
-
if (chips.length === 0) {
|
|
562
|
-
// All chips removed
|
|
563
|
-
this.change.emit('');
|
|
564
|
-
this.navigationPath = '';
|
|
565
|
-
}
|
|
566
|
-
else {
|
|
567
|
-
// A chip was removed - emit the last remaining chip's value
|
|
568
|
-
const lastChip = chips.at(-1);
|
|
569
|
-
if (lastChip) {
|
|
570
|
-
this.change.emit(lastChip.value);
|
|
571
|
-
}
|
|
572
|
-
this.navigationPath = '';
|
|
573
|
-
}
|
|
574
|
-
};
|
|
575
|
-
}
|
|
576
|
-
render() {
|
|
577
|
-
if (!this.limetype || !this.limetypes) {
|
|
578
|
-
return null;
|
|
579
|
-
}
|
|
580
|
-
const chips = this.getChipsForPath(this.navigationPath || this.value || '');
|
|
581
|
-
return (index.h("limel-menu", { items: this.menuItems, open: this.isOpen, emptyResultMessage: "No available properties", surfaceWidth: "inherit-from-trigger", openDirection: "bottom-end", onSelect: this.handleSelect, onNavigateMenu: this.handleNavigateMenu, onCancel: this.handleCancel }, index.h("div", { slot: "trigger" }, index.h("div", { onClick: this.handleChipSetWrapperClick }, index.h("limel-chip-set", { type: "input", label: this.label, value: chips, required: this.required, helperText: this.helperText, delimiter: "\u203A", maxItems: 1, onChange: this.handleChipSetChange, onFocus: this.handleChipSetFocus })))));
|
|
582
|
-
}
|
|
583
|
-
loadMenuItems() {
|
|
584
|
-
// Get the limetype we're currently navigating in
|
|
585
|
-
const currentLimetype = this.getCurrentLimetype();
|
|
586
|
-
if (!currentLimetype) {
|
|
587
|
-
this.menuItems = [];
|
|
588
|
-
return;
|
|
589
|
-
}
|
|
590
|
-
this.menuItems = this.createMenuItems(currentLimetype, '');
|
|
591
|
-
}
|
|
592
|
-
getCurrentLimetype() {
|
|
593
|
-
if (!this.navigationPath) {
|
|
594
|
-
return this.limetypes[this.limetype];
|
|
595
|
-
}
|
|
596
|
-
// Get the limetype at the current navigation path
|
|
597
|
-
const property = propertyResolution.getPropertyFromPath(this.limetypes, this.limetype, this.navigationPath);
|
|
598
|
-
if (property === null || property === void 0 ? void 0 : property.relation) {
|
|
599
|
-
return property.relation.getLimetype();
|
|
600
|
-
}
|
|
601
|
-
return this.limetypes[this.limetype];
|
|
602
|
-
}
|
|
603
|
-
createMenuItems(limetype, pathPrefix) {
|
|
604
|
-
const results = [];
|
|
605
|
-
if (!limetype) {
|
|
606
|
-
return results;
|
|
607
|
-
}
|
|
608
|
-
const normalizedProperties = propertyResolution.getNormalizedProperties(limetype);
|
|
609
|
-
for (const [propName, property] of Object.entries(normalizedProperties)) {
|
|
610
|
-
// Skip hasMany and hasAndBelongsToMany relations
|
|
611
|
-
if (property.type === 'hasmany' ||
|
|
612
|
-
property.type === 'hasandbelongstomany') {
|
|
613
|
-
continue;
|
|
614
|
-
}
|
|
615
|
-
const fullPath = pathPrefix
|
|
616
|
-
? `${pathPrefix}.${propName}`
|
|
617
|
-
: propName;
|
|
618
|
-
const isRelation = !!property.relation;
|
|
619
|
-
let items;
|
|
620
|
-
if (isRelation && property.relation) {
|
|
621
|
-
// Create submenu for relation (only belongsto at this point)
|
|
622
|
-
const relatedLimetype = property.relation.getLimetype();
|
|
623
|
-
if (relatedLimetype) {
|
|
624
|
-
items = async () => this.createMenuItems(relatedLimetype, fullPath);
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
results.push({
|
|
628
|
-
text: property.localname || propName,
|
|
629
|
-
secondaryText: this.getSecondaryText(property),
|
|
630
|
-
icon: this.getIconForProperty(property),
|
|
631
|
-
value: fullPath,
|
|
632
|
-
items: items,
|
|
633
|
-
});
|
|
634
|
-
}
|
|
635
|
-
if (results.length === 0) {
|
|
636
|
-
return [
|
|
637
|
-
{
|
|
638
|
-
text: 'No available properties',
|
|
639
|
-
value: '',
|
|
640
|
-
disabled: true,
|
|
641
|
-
},
|
|
642
|
-
];
|
|
643
|
-
}
|
|
644
|
-
return results;
|
|
645
|
-
}
|
|
646
|
-
getSecondaryText(property) {
|
|
647
|
-
var _a;
|
|
648
|
-
if (property.relation) {
|
|
649
|
-
const relatedLimetype = property.relation.getLimetype();
|
|
650
|
-
return ((_a = relatedLimetype === null || relatedLimetype === void 0 ? void 0 : relatedLimetype.localname) === null || _a === void 0 ? void 0 : _a.singular) || 'Object';
|
|
651
|
-
}
|
|
652
|
-
// Return the property type as the secondary text
|
|
653
|
-
return property.type.charAt(0).toUpperCase() + property.type.slice(1);
|
|
654
|
-
}
|
|
655
|
-
getIconForProperty(property) {
|
|
656
|
-
if (property.relation) {
|
|
657
|
-
return {
|
|
658
|
-
name: 'link',
|
|
659
|
-
color: 'rgb(var(--color-sky-default))',
|
|
660
|
-
};
|
|
661
|
-
}
|
|
662
|
-
// Use generic property icon
|
|
663
|
-
return {
|
|
664
|
-
name: 'decision',
|
|
665
|
-
color: 'rgb(var(--color-gray-default))',
|
|
666
|
-
};
|
|
667
|
-
}
|
|
668
|
-
getChipsForPath(path) {
|
|
669
|
-
if (!path) {
|
|
670
|
-
return [];
|
|
671
|
-
}
|
|
672
|
-
const parts = path.split('.');
|
|
673
|
-
const chips = [];
|
|
674
|
-
let currentLimetype = this.limetypes[this.limetype];
|
|
675
|
-
let currentPath = '';
|
|
676
|
-
for (const part of parts) {
|
|
677
|
-
currentPath = currentPath ? `${currentPath}.${part}` : part;
|
|
678
|
-
// Use getNormalizedProperties to include _id and _timestamp
|
|
679
|
-
const normalizedProperties = propertyResolution.getNormalizedProperties(currentLimetype);
|
|
680
|
-
const property = normalizedProperties[part];
|
|
681
|
-
if (property) {
|
|
682
|
-
chips.push({
|
|
683
|
-
id: currentPath,
|
|
684
|
-
text: property.localname || part,
|
|
685
|
-
icon: this.getIconForProperty(property),
|
|
686
|
-
value: currentPath,
|
|
687
|
-
});
|
|
688
|
-
if (property.relation) {
|
|
689
|
-
currentLimetype = property.relation.getLimetype();
|
|
690
|
-
}
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
return chips;
|
|
694
|
-
}
|
|
695
|
-
};
|
|
696
|
-
__decorate([
|
|
697
|
-
index_esm.Te()
|
|
698
|
-
], PropertySelector.prototype, "limetypes", void 0);
|
|
699
|
-
PropertySelector.style = LimebbPropertySelectorStyle0;
|
|
700
|
-
|
|
701
|
-
exports.limebb_lime_query_filter_comparison = LimeQueryFilterComparisonComponent;
|
|
702
375
|
exports.limebb_lime_query_filter_group = LimeQueryFilterGroupComponent;
|
|
703
376
|
exports.limebb_lime_query_filter_not = LimeQueryFilterNotComponent;
|
|
704
377
|
exports.limebb_lime_query_value_input = LimeQueryValueInput;
|
|
705
|
-
exports.limebb_property_selector = PropertySelector;
|