@limetech/lime-crm-building-blocks 1.103.5 → 1.103.6

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 CHANGED
@@ -1,3 +1,10 @@
1
+ ## [1.103.6](https://github.com/Lundalogik/lime-crm-building-blocks/compare/v1.103.5...v1.103.6) (2025-11-14)
2
+
3
+ ### Bug Fixes
4
+
5
+
6
+ * **lime-query-builder:** render correct input types for date/time properties ([9c8fa6a](https://github.com/Lundalogik/lime-crm-building-blocks/commit/9c8fa6a659ba71dc4b9675f1ce60b4fd7eb30d69)), closes [Lundalogik/crm-insights-and-intelligence#143](https://github.com/Lundalogik/crm-insights-and-intelligence/issues/143)
7
+
1
8
  ## [1.103.5](https://github.com/Lundalogik/lime-crm-building-blocks/compare/v1.103.4...v1.103.5) (2025-11-13)
2
9
 
3
10
  ### Bug Fixes
@@ -246,6 +246,115 @@ const LimeQueryFilterNotComponent = class {
246
246
  };
247
247
  LimeQueryFilterNotComponent.style = LimebbLimeQueryFilterNotStyle0;
248
248
 
249
+ /**
250
+ * System property name to actual type mapping.
251
+ *
252
+ * Maps system property names (with or without underscore prefix) to their actual data types.
253
+ * This mapping is necessary because system properties have `type='system'` in the metadata
254
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
255
+ * actual data types to render appropriate inputs.
256
+ */
257
+ const SYSTEM_TYPE_MAP = {
258
+ timestamp: 'time',
259
+ createdtime: 'time',
260
+ updatedtime: 'time',
261
+ id: 'integer',
262
+ createduser: 'integer',
263
+ updateduser: 'integer',
264
+ descriptive: 'string',
265
+ };
266
+ /**
267
+ * Lime CRM date/time property type to Lime Elements date picker type mapping.
268
+ *
269
+ * Maps Lime CRM property types to the corresponding Lime Elements date picker types,
270
+ * as they use different naming conventions.
271
+ */
272
+ const DATE_TIME_TYPE_MAP = {
273
+ date: 'date',
274
+ time: 'datetime',
275
+ timeofday: 'time',
276
+ month: 'month',
277
+ quarter: 'quarter',
278
+ year: 'year',
279
+ };
280
+ /**
281
+ * Get the actual type of a property, resolving 'system' type to the underlying type.
282
+ *
283
+ * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
284
+ * from the database schema fieldtype 255), but we need to know their actual data types
285
+ * to render appropriate input controls.
286
+ *
287
+ * @param property - The property to get the type for
288
+ * @param property.type
289
+ * @param property.name
290
+ * @returns The actual property type (resolves 'system' to the underlying type)
291
+ *
292
+ * @example
293
+ * ```typescript
294
+ * const property = { name: '_timestamp', type: 'system' };
295
+ * getActualPropertyType(property); // Returns 'time'
296
+ * ```
297
+ */
298
+ function getActualPropertyType(property) {
299
+ if (property.type === 'system') {
300
+ return resolveSystemPropertyType(property.name);
301
+ }
302
+ return property.type;
303
+ }
304
+ /**
305
+ * Map system property names to their actual data types.
306
+ *
307
+ * This mapping is necessary because system properties have `type='system'` in the metadata
308
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
309
+ * actual data types to render appropriate inputs.
310
+ *
311
+ * The mapping is based on the Lime CRM database schema:
312
+ * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
313
+ * - System integer fields: `id`, `createduser`, `updateduser`
314
+ * - System string fields: `descriptive`
315
+ *
316
+ * @param propertyName - The system property name (with or without underscore prefix)
317
+ * @returns The actual property type
318
+ *
319
+ * @example
320
+ * ```typescript
321
+ * resolveSystemPropertyType('_timestamp'); // Returns 'time'
322
+ * resolveSystemPropertyType('timestamp'); // Returns 'time'
323
+ * resolveSystemPropertyType('_id'); // Returns 'integer'
324
+ * resolveSystemPropertyType('unknown'); // Returns 'string' (default)
325
+ * ```
326
+ */
327
+ function resolveSystemPropertyType(propertyName) {
328
+ const name = propertyName.replace(/^_/, '');
329
+ return SYSTEM_TYPE_MAP[name] || 'string';
330
+ }
331
+ /**
332
+ * Map Lime CRM property types to Lime Elements date picker types.
333
+ *
334
+ * Lime CRM and Lime Elements use different naming conventions for date/time types,
335
+ * so we need to translate between them:
336
+ *
337
+ * - `'date'` → `'date'` - Date only
338
+ * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
339
+ * - `'timeofday'` → `'time'` - Time only (hh:mm)
340
+ * - `'month'` → `'month'` - Month picker (YYYY-MM)
341
+ * - `'quarter'` → `'quarter'` - Quarter picker
342
+ * - `'year'` → `'year'` - Year picker
343
+ *
344
+ * @param propertyType - The Lime CRM date/time property type
345
+ * @returns The corresponding Lime Elements date picker type
346
+ *
347
+ * @example
348
+ * ```typescript
349
+ * mapPropertyTypeToPickerType('time'); // Returns 'datetime'
350
+ * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
351
+ * mapPropertyTypeToPickerType('date'); // Returns 'date'
352
+ * ```
353
+ */
354
+ function mapPropertyTypeToPickerType(propertyType) {
355
+ return DATE_TIME_TYPE_MAP[propertyType] || 'date';
356
+ }
357
+
249
358
  const limeQueryValueInputCss = ":host{display:flex;gap:0.5rem}:host>*{flex-grow:1}*{box-sizing:border-box}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;flex-grow:0}.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}";
250
359
  const LimebbLimeQueryValueInputStyle0 = limeQueryValueInputCss;
251
360
 
@@ -408,10 +517,12 @@ const LimeQueryValueInput = class {
408
517
  if (!property) {
409
518
  return this.renderTextInput();
410
519
  }
411
- switch (property.type) {
520
+ // Resolve 'system' type to actual type
521
+ const actualType = getActualPropertyType(property);
522
+ switch (actualType) {
412
523
  case 'integer':
413
524
  case 'decimal': {
414
- return this.renderNumberInput(property.type);
525
+ return this.renderNumberInput(actualType);
415
526
  }
416
527
  case 'yesno': {
417
528
  return this.renderBooleanInput();
@@ -419,11 +530,13 @@ const LimeQueryValueInput = class {
419
530
  case 'option': {
420
531
  return this.renderOptionInput(property);
421
532
  }
422
- case 'date': {
423
- return this.renderDateInput();
424
- }
425
- case 'time': {
426
- return this.renderTimeInput();
533
+ case 'date':
534
+ case 'time':
535
+ case 'timeofday':
536
+ case 'year':
537
+ case 'month':
538
+ case 'quarter': {
539
+ return this.renderDateTimeInput(actualType);
427
540
  }
428
541
  default: {
429
542
  return this.renderTextInput();
@@ -459,13 +572,11 @@ const LimeQueryValueInput = class {
459
572
  const selectedOption = options.find((o) => o.value === this.value);
460
573
  return (index.h("limel-select", { label: this.label, options: options, value: selectedOption, onChange: this.handleSelectChange }));
461
574
  }
462
- renderDateInput() {
575
+ renderDateTimeInput(type) {
463
576
  // Convert string to Date if needed
464
577
  const dateValue = typeof this.value === 'string' ? new Date(this.value) : this.value;
465
- return (index.h("limel-date-picker", { label: this.label, value: dateValue, onChange: this.handleDateChange }));
466
- }
467
- renderTimeInput() {
468
- return (index.h("limel-input-field", { label: this.label, type: "time", value: this.value || '', onChange: this.handleTextChange }));
578
+ const pickerType = mapPropertyTypeToPickerType(type);
579
+ return (index.h("limel-date-picker", { label: this.label, value: dateValue, type: pickerType, onChange: this.handleDateChange }));
469
580
  }
470
581
  renderMultiValueInput() {
471
582
  // For IN operator, allow comma-separated values
@@ -11,6 +11,7 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
11
11
  import { h, Host, } from "@stencil/core";
12
12
  import { Operator, SelectLimeTypes as Limetypes, } from "@limetech/lime-web-components";
13
13
  import { getPropertyFromPath } from "../property-resolution";
14
+ import { getActualPropertyType, mapPropertyTypeToPickerType, } from "../type-resolution";
14
15
  /**
15
16
  * Query Value Input Component
16
17
  *
@@ -182,10 +183,12 @@ export class LimeQueryValueInput {
182
183
  if (!property) {
183
184
  return this.renderTextInput();
184
185
  }
185
- switch (property.type) {
186
+ // Resolve 'system' type to actual type
187
+ const actualType = getActualPropertyType(property);
188
+ switch (actualType) {
186
189
  case 'integer':
187
190
  case 'decimal': {
188
- return this.renderNumberInput(property.type);
191
+ return this.renderNumberInput(actualType);
189
192
  }
190
193
  case 'yesno': {
191
194
  return this.renderBooleanInput();
@@ -193,11 +196,13 @@ export class LimeQueryValueInput {
193
196
  case 'option': {
194
197
  return this.renderOptionInput(property);
195
198
  }
196
- case 'date': {
197
- return this.renderDateInput();
198
- }
199
- case 'time': {
200
- return this.renderTimeInput();
199
+ case 'date':
200
+ case 'time':
201
+ case 'timeofday':
202
+ case 'year':
203
+ case 'month':
204
+ case 'quarter': {
205
+ return this.renderDateTimeInput(actualType);
201
206
  }
202
207
  default: {
203
208
  return this.renderTextInput();
@@ -233,13 +238,11 @@ export class LimeQueryValueInput {
233
238
  const selectedOption = options.find((o) => o.value === this.value);
234
239
  return (h("limel-select", { label: this.label, options: options, value: selectedOption, onChange: this.handleSelectChange }));
235
240
  }
236
- renderDateInput() {
241
+ renderDateTimeInput(type) {
237
242
  // Convert string to Date if needed
238
243
  const dateValue = typeof this.value === 'string' ? new Date(this.value) : this.value;
239
- return (h("limel-date-picker", { label: this.label, value: dateValue, onChange: this.handleDateChange }));
240
- }
241
- renderTimeInput() {
242
- return (h("limel-input-field", { label: this.label, type: "time", value: this.value || '', onChange: this.handleTextChange }));
244
+ const pickerType = mapPropertyTypeToPickerType(type);
245
+ return (h("limel-date-picker", { label: this.label, value: dateValue, type: pickerType, onChange: this.handleDateChange }));
243
246
  }
244
247
  renderMultiValueInput() {
245
248
  // For IN operator, allow comma-separated values
@@ -0,0 +1,108 @@
1
+ /**
2
+ * System property name to actual type mapping.
3
+ *
4
+ * Maps system property names (with or without underscore prefix) to their actual data types.
5
+ * This mapping is necessary because system properties have `type='system'` in the metadata
6
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
7
+ * actual data types to render appropriate inputs.
8
+ */
9
+ const SYSTEM_TYPE_MAP = {
10
+ timestamp: 'time',
11
+ createdtime: 'time',
12
+ updatedtime: 'time',
13
+ id: 'integer',
14
+ createduser: 'integer',
15
+ updateduser: 'integer',
16
+ descriptive: 'string',
17
+ };
18
+ /**
19
+ * Lime CRM date/time property type to Lime Elements date picker type mapping.
20
+ *
21
+ * Maps Lime CRM property types to the corresponding Lime Elements date picker types,
22
+ * as they use different naming conventions.
23
+ */
24
+ const DATE_TIME_TYPE_MAP = {
25
+ date: 'date',
26
+ time: 'datetime',
27
+ timeofday: 'time',
28
+ month: 'month',
29
+ quarter: 'quarter',
30
+ year: 'year',
31
+ };
32
+ /**
33
+ * Get the actual type of a property, resolving 'system' type to the underlying type.
34
+ *
35
+ * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
36
+ * from the database schema fieldtype 255), but we need to know their actual data types
37
+ * to render appropriate input controls.
38
+ *
39
+ * @param property - The property to get the type for
40
+ * @param property.type
41
+ * @param property.name
42
+ * @returns The actual property type (resolves 'system' to the underlying type)
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * const property = { name: '_timestamp', type: 'system' };
47
+ * getActualPropertyType(property); // Returns 'time'
48
+ * ```
49
+ */
50
+ export function getActualPropertyType(property) {
51
+ if (property.type === 'system') {
52
+ return resolveSystemPropertyType(property.name);
53
+ }
54
+ return property.type;
55
+ }
56
+ /**
57
+ * Map system property names to their actual data types.
58
+ *
59
+ * This mapping is necessary because system properties have `type='system'` in the metadata
60
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
61
+ * actual data types to render appropriate inputs.
62
+ *
63
+ * The mapping is based on the Lime CRM database schema:
64
+ * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
65
+ * - System integer fields: `id`, `createduser`, `updateduser`
66
+ * - System string fields: `descriptive`
67
+ *
68
+ * @param propertyName - The system property name (with or without underscore prefix)
69
+ * @returns The actual property type
70
+ *
71
+ * @example
72
+ * ```typescript
73
+ * resolveSystemPropertyType('_timestamp'); // Returns 'time'
74
+ * resolveSystemPropertyType('timestamp'); // Returns 'time'
75
+ * resolveSystemPropertyType('_id'); // Returns 'integer'
76
+ * resolveSystemPropertyType('unknown'); // Returns 'string' (default)
77
+ * ```
78
+ */
79
+ export function resolveSystemPropertyType(propertyName) {
80
+ const name = propertyName.replace(/^_/, '');
81
+ return SYSTEM_TYPE_MAP[name] || 'string';
82
+ }
83
+ /**
84
+ * Map Lime CRM property types to Lime Elements date picker types.
85
+ *
86
+ * Lime CRM and Lime Elements use different naming conventions for date/time types,
87
+ * so we need to translate between them:
88
+ *
89
+ * - `'date'` → `'date'` - Date only
90
+ * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
91
+ * - `'timeofday'` → `'time'` - Time only (hh:mm)
92
+ * - `'month'` → `'month'` - Month picker (YYYY-MM)
93
+ * - `'quarter'` → `'quarter'` - Quarter picker
94
+ * - `'year'` → `'year'` - Year picker
95
+ *
96
+ * @param propertyType - The Lime CRM date/time property type
97
+ * @returns The corresponding Lime Elements date picker type
98
+ *
99
+ * @example
100
+ * ```typescript
101
+ * mapPropertyTypeToPickerType('time'); // Returns 'datetime'
102
+ * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
103
+ * mapPropertyTypeToPickerType('date'); // Returns 'date'
104
+ * ```
105
+ */
106
+ export function mapPropertyTypeToPickerType(propertyType) {
107
+ return DATE_TIME_TYPE_MAP[propertyType] || 'date';
108
+ }
@@ -2,6 +2,115 @@ import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/
2
2
  import { T as Te, Z as Zt } from './index.esm.js';
3
3
  import { g as getPropertyFromPath, d as defineCustomElement$1 } from './property-selector.js';
4
4
 
5
+ /**
6
+ * System property name to actual type mapping.
7
+ *
8
+ * Maps system property names (with or without underscore prefix) to their actual data types.
9
+ * This mapping is necessary because system properties have `type='system'` in the metadata
10
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
11
+ * actual data types to render appropriate inputs.
12
+ */
13
+ const SYSTEM_TYPE_MAP = {
14
+ timestamp: 'time',
15
+ createdtime: 'time',
16
+ updatedtime: 'time',
17
+ id: 'integer',
18
+ createduser: 'integer',
19
+ updateduser: 'integer',
20
+ descriptive: 'string',
21
+ };
22
+ /**
23
+ * Lime CRM date/time property type to Lime Elements date picker type mapping.
24
+ *
25
+ * Maps Lime CRM property types to the corresponding Lime Elements date picker types,
26
+ * as they use different naming conventions.
27
+ */
28
+ const DATE_TIME_TYPE_MAP = {
29
+ date: 'date',
30
+ time: 'datetime',
31
+ timeofday: 'time',
32
+ month: 'month',
33
+ quarter: 'quarter',
34
+ year: 'year',
35
+ };
36
+ /**
37
+ * Get the actual type of a property, resolving 'system' type to the underlying type.
38
+ *
39
+ * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
40
+ * from the database schema fieldtype 255), but we need to know their actual data types
41
+ * to render appropriate input controls.
42
+ *
43
+ * @param property - The property to get the type for
44
+ * @param property.type
45
+ * @param property.name
46
+ * @returns The actual property type (resolves 'system' to the underlying type)
47
+ *
48
+ * @example
49
+ * ```typescript
50
+ * const property = { name: '_timestamp', type: 'system' };
51
+ * getActualPropertyType(property); // Returns 'time'
52
+ * ```
53
+ */
54
+ function getActualPropertyType(property) {
55
+ if (property.type === 'system') {
56
+ return resolveSystemPropertyType(property.name);
57
+ }
58
+ return property.type;
59
+ }
60
+ /**
61
+ * Map system property names to their actual data types.
62
+ *
63
+ * This mapping is necessary because system properties have `type='system'` in the metadata
64
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
65
+ * actual data types to render appropriate inputs.
66
+ *
67
+ * The mapping is based on the Lime CRM database schema:
68
+ * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
69
+ * - System integer fields: `id`, `createduser`, `updateduser`
70
+ * - System string fields: `descriptive`
71
+ *
72
+ * @param propertyName - The system property name (with or without underscore prefix)
73
+ * @returns The actual property type
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * resolveSystemPropertyType('_timestamp'); // Returns 'time'
78
+ * resolveSystemPropertyType('timestamp'); // Returns 'time'
79
+ * resolveSystemPropertyType('_id'); // Returns 'integer'
80
+ * resolveSystemPropertyType('unknown'); // Returns 'string' (default)
81
+ * ```
82
+ */
83
+ function resolveSystemPropertyType(propertyName) {
84
+ const name = propertyName.replace(/^_/, '');
85
+ return SYSTEM_TYPE_MAP[name] || 'string';
86
+ }
87
+ /**
88
+ * Map Lime CRM property types to Lime Elements date picker types.
89
+ *
90
+ * Lime CRM and Lime Elements use different naming conventions for date/time types,
91
+ * so we need to translate between them:
92
+ *
93
+ * - `'date'` → `'date'` - Date only
94
+ * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
95
+ * - `'timeofday'` → `'time'` - Time only (hh:mm)
96
+ * - `'month'` → `'month'` - Month picker (YYYY-MM)
97
+ * - `'quarter'` → `'quarter'` - Quarter picker
98
+ * - `'year'` → `'year'` - Year picker
99
+ *
100
+ * @param propertyType - The Lime CRM date/time property type
101
+ * @returns The corresponding Lime Elements date picker type
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * mapPropertyTypeToPickerType('time'); // Returns 'datetime'
106
+ * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
107
+ * mapPropertyTypeToPickerType('date'); // Returns 'date'
108
+ * ```
109
+ */
110
+ function mapPropertyTypeToPickerType(propertyType) {
111
+ return DATE_TIME_TYPE_MAP[propertyType] || 'date';
112
+ }
113
+
5
114
  const limeQueryValueInputCss = ":host{display:flex;gap:0.5rem}:host>*{flex-grow:1}*{box-sizing:border-box}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;flex-grow:0}.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}";
6
115
  const LimebbLimeQueryValueInputStyle0 = limeQueryValueInputCss;
7
116
 
@@ -166,10 +275,12 @@ const LimeQueryValueInput = /*@__PURE__*/ proxyCustomElement(class LimeQueryValu
166
275
  if (!property) {
167
276
  return this.renderTextInput();
168
277
  }
169
- switch (property.type) {
278
+ // Resolve 'system' type to actual type
279
+ const actualType = getActualPropertyType(property);
280
+ switch (actualType) {
170
281
  case 'integer':
171
282
  case 'decimal': {
172
- return this.renderNumberInput(property.type);
283
+ return this.renderNumberInput(actualType);
173
284
  }
174
285
  case 'yesno': {
175
286
  return this.renderBooleanInput();
@@ -177,11 +288,13 @@ const LimeQueryValueInput = /*@__PURE__*/ proxyCustomElement(class LimeQueryValu
177
288
  case 'option': {
178
289
  return this.renderOptionInput(property);
179
290
  }
180
- case 'date': {
181
- return this.renderDateInput();
182
- }
183
- case 'time': {
184
- return this.renderTimeInput();
291
+ case 'date':
292
+ case 'time':
293
+ case 'timeofday':
294
+ case 'year':
295
+ case 'month':
296
+ case 'quarter': {
297
+ return this.renderDateTimeInput(actualType);
185
298
  }
186
299
  default: {
187
300
  return this.renderTextInput();
@@ -217,13 +330,11 @@ const LimeQueryValueInput = /*@__PURE__*/ proxyCustomElement(class LimeQueryValu
217
330
  const selectedOption = options.find((o) => o.value === this.value);
218
331
  return (h("limel-select", { label: this.label, options: options, value: selectedOption, onChange: this.handleSelectChange }));
219
332
  }
220
- renderDateInput() {
333
+ renderDateTimeInput(type) {
221
334
  // Convert string to Date if needed
222
335
  const dateValue = typeof this.value === 'string' ? new Date(this.value) : this.value;
223
- return (h("limel-date-picker", { label: this.label, value: dateValue, onChange: this.handleDateChange }));
224
- }
225
- renderTimeInput() {
226
- return (h("limel-input-field", { label: this.label, type: "time", value: this.value || '', onChange: this.handleTextChange }));
336
+ const pickerType = mapPropertyTypeToPickerType(type);
337
+ return (h("limel-date-picker", { label: this.label, value: dateValue, type: pickerType, onChange: this.handleDateChange }));
227
338
  }
228
339
  renderMultiValueInput() {
229
340
  // For IN operator, allow comma-separated values
@@ -242,6 +242,115 @@ const LimeQueryFilterNotComponent = class {
242
242
  };
243
243
  LimeQueryFilterNotComponent.style = LimebbLimeQueryFilterNotStyle0;
244
244
 
245
+ /**
246
+ * System property name to actual type mapping.
247
+ *
248
+ * Maps system property names (with or without underscore prefix) to their actual data types.
249
+ * This mapping is necessary because system properties have `type='system'` in the metadata
250
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
251
+ * actual data types to render appropriate inputs.
252
+ */
253
+ const SYSTEM_TYPE_MAP = {
254
+ timestamp: 'time',
255
+ createdtime: 'time',
256
+ updatedtime: 'time',
257
+ id: 'integer',
258
+ createduser: 'integer',
259
+ updateduser: 'integer',
260
+ descriptive: 'string',
261
+ };
262
+ /**
263
+ * Lime CRM date/time property type to Lime Elements date picker type mapping.
264
+ *
265
+ * Maps Lime CRM property types to the corresponding Lime Elements date picker types,
266
+ * as they use different naming conventions.
267
+ */
268
+ const DATE_TIME_TYPE_MAP = {
269
+ date: 'date',
270
+ time: 'datetime',
271
+ timeofday: 'time',
272
+ month: 'month',
273
+ quarter: 'quarter',
274
+ year: 'year',
275
+ };
276
+ /**
277
+ * Get the actual type of a property, resolving 'system' type to the underlying type.
278
+ *
279
+ * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
280
+ * from the database schema fieldtype 255), but we need to know their actual data types
281
+ * to render appropriate input controls.
282
+ *
283
+ * @param property - The property to get the type for
284
+ * @param property.type
285
+ * @param property.name
286
+ * @returns The actual property type (resolves 'system' to the underlying type)
287
+ *
288
+ * @example
289
+ * ```typescript
290
+ * const property = { name: '_timestamp', type: 'system' };
291
+ * getActualPropertyType(property); // Returns 'time'
292
+ * ```
293
+ */
294
+ function getActualPropertyType(property) {
295
+ if (property.type === 'system') {
296
+ return resolveSystemPropertyType(property.name);
297
+ }
298
+ return property.type;
299
+ }
300
+ /**
301
+ * Map system property names to their actual data types.
302
+ *
303
+ * This mapping is necessary because system properties have `type='system'` in the metadata
304
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
305
+ * actual data types to render appropriate inputs.
306
+ *
307
+ * The mapping is based on the Lime CRM database schema:
308
+ * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
309
+ * - System integer fields: `id`, `createduser`, `updateduser`
310
+ * - System string fields: `descriptive`
311
+ *
312
+ * @param propertyName - The system property name (with or without underscore prefix)
313
+ * @returns The actual property type
314
+ *
315
+ * @example
316
+ * ```typescript
317
+ * resolveSystemPropertyType('_timestamp'); // Returns 'time'
318
+ * resolveSystemPropertyType('timestamp'); // Returns 'time'
319
+ * resolveSystemPropertyType('_id'); // Returns 'integer'
320
+ * resolveSystemPropertyType('unknown'); // Returns 'string' (default)
321
+ * ```
322
+ */
323
+ function resolveSystemPropertyType(propertyName) {
324
+ const name = propertyName.replace(/^_/, '');
325
+ return SYSTEM_TYPE_MAP[name] || 'string';
326
+ }
327
+ /**
328
+ * Map Lime CRM property types to Lime Elements date picker types.
329
+ *
330
+ * Lime CRM and Lime Elements use different naming conventions for date/time types,
331
+ * so we need to translate between them:
332
+ *
333
+ * - `'date'` → `'date'` - Date only
334
+ * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
335
+ * - `'timeofday'` → `'time'` - Time only (hh:mm)
336
+ * - `'month'` → `'month'` - Month picker (YYYY-MM)
337
+ * - `'quarter'` → `'quarter'` - Quarter picker
338
+ * - `'year'` → `'year'` - Year picker
339
+ *
340
+ * @param propertyType - The Lime CRM date/time property type
341
+ * @returns The corresponding Lime Elements date picker type
342
+ *
343
+ * @example
344
+ * ```typescript
345
+ * mapPropertyTypeToPickerType('time'); // Returns 'datetime'
346
+ * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
347
+ * mapPropertyTypeToPickerType('date'); // Returns 'date'
348
+ * ```
349
+ */
350
+ function mapPropertyTypeToPickerType(propertyType) {
351
+ return DATE_TIME_TYPE_MAP[propertyType] || 'date';
352
+ }
353
+
245
354
  const limeQueryValueInputCss = ":host{display:flex;gap:0.5rem}:host>*{flex-grow:1}*{box-sizing:border-box}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;flex-grow:0}.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}";
246
355
  const LimebbLimeQueryValueInputStyle0 = limeQueryValueInputCss;
247
356
 
@@ -404,10 +513,12 @@ const LimeQueryValueInput = class {
404
513
  if (!property) {
405
514
  return this.renderTextInput();
406
515
  }
407
- switch (property.type) {
516
+ // Resolve 'system' type to actual type
517
+ const actualType = getActualPropertyType(property);
518
+ switch (actualType) {
408
519
  case 'integer':
409
520
  case 'decimal': {
410
- return this.renderNumberInput(property.type);
521
+ return this.renderNumberInput(actualType);
411
522
  }
412
523
  case 'yesno': {
413
524
  return this.renderBooleanInput();
@@ -415,11 +526,13 @@ const LimeQueryValueInput = class {
415
526
  case 'option': {
416
527
  return this.renderOptionInput(property);
417
528
  }
418
- case 'date': {
419
- return this.renderDateInput();
420
- }
421
- case 'time': {
422
- return this.renderTimeInput();
529
+ case 'date':
530
+ case 'time':
531
+ case 'timeofday':
532
+ case 'year':
533
+ case 'month':
534
+ case 'quarter': {
535
+ return this.renderDateTimeInput(actualType);
423
536
  }
424
537
  default: {
425
538
  return this.renderTextInput();
@@ -455,13 +568,11 @@ const LimeQueryValueInput = class {
455
568
  const selectedOption = options.find((o) => o.value === this.value);
456
569
  return (h("limel-select", { label: this.label, options: options, value: selectedOption, onChange: this.handleSelectChange }));
457
570
  }
458
- renderDateInput() {
571
+ renderDateTimeInput(type) {
459
572
  // Convert string to Date if needed
460
573
  const dateValue = typeof this.value === 'string' ? new Date(this.value) : this.value;
461
- return (h("limel-date-picker", { label: this.label, value: dateValue, onChange: this.handleDateChange }));
462
- }
463
- renderTimeInput() {
464
- return (h("limel-input-field", { label: this.label, type: "time", value: this.value || '', onChange: this.handleTextChange }));
574
+ const pickerType = mapPropertyTypeToPickerType(type);
575
+ return (h("limel-date-picker", { label: this.label, value: dateValue, type: pickerType, onChange: this.handleDateChange }));
465
576
  }
466
577
  renderMultiValueInput() {
467
578
  // For IN operator, allow comma-separated values
@@ -1 +1 @@
1
- import{p as e,b as t}from"./p-1556b545.js";export{s as setNonce}from"./p-1556b545.js";import{g as i}from"./p-e1255160.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((async e=>(await i(),t(JSON.parse('[["p-4f605428",[[1,"limebb-lime-query-builder",{"platform":[16],"context":[16],"value":[16],"label":[1],"activeLimetype":[1,"active-limetype"],"limetypes":[32],"mode":[32],"codeValue":[32],"limetype":[32],"filter":[32],"internalResponseFormat":[32],"limit":[32],"orderBy":[32]}]]],["p-ee1b00b9",[[1,"limebb-feed",{"platform":[16],"context":[16],"items":[16],"emptyStateMessage":[1,"empty-state-message"],"heading":[1],"loading":[4],"minutesOfProximity":[2,"minutes-of-proximity"],"totalCount":[2,"total-count"],"direction":[513],"lastVisitedTimestamp":[1,"last-visited-timestamp"],"highlightedItemId":[8,"highlighted-item-id"]},null,{"highlightedItemId":["highlightedItemIdChanged"]}]]],["p-3a406a20",[[1,"limebb-kanban",{"platform":[16],"context":[16],"groups":[16]}]]],["p-96fee7ee",[[1,"limebb-lime-query-response-format-builder",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"helperText":[1,"helper-text"],"limetypes":[32],"mode":[32],"codeValue":[32],"internalValue":[32]}]]],["p-32534eb7",[[1,"limebb-chat-list",{"platform":[16],"context":[16],"items":[16],"loading":[516],"isTypingIndicatorVisible":[516,"is-typing-indicator-visible"],"lastVisitedTimestamp":[513,"last-visited-timestamp"],"order":[513]},null,{"items":["handleItemsChange"]}]]],["p-03af0e66",[[1,"limebb-limeobject-file-viewer",{"platform":[16],"context":[16],"property":[1],"fileTypes":[16],"limeobject":[32],"limetype":[32]}]]],["p-36ea13c0",[[1,"limebb-text-editor",{"platform":[16],"context":[16],"allowMentioning":[4,"allow-mentioning"],"contentType":[1,"content-type"],"language":[513],"disabled":[516],"readonly":[516],"helperText":[513,"helper-text"],"placeholder":[513],"label":[513],"invalid":[516],"required":[516],"selectedContext":[16],"ui":[513],"allowResize":[4,"allow-resize"],"value":[1],"draftIdentifier":[1,"draft-identifier"],"triggerMap":[16],"customElements":[16],"allowInlineImages":[4,"allow-inline-images"],"items":[32],"highlightedItemIndex":[32],"editorPickerQuery":[32],"searchableLimetypes":[32],"isPickerOpen":[32],"isSearching":[32]},null,{"isPickerOpen":["watchOpen"],"editorPickerQuery":["watchQuery"]}]]],["p-8491aaa1",[[1,"limebb-date-range",{"platform":[16],"context":[16],"startTime":[16],"endTime":[16],"startTimeLabel":[1,"start-time-label"],"endTimeLabel":[1,"end-time-label"],"language":[1],"timeFormat":[1,"time-format"],"type":[1]}]]],["p-4a82410e",[[1,"limebb-document-picker",{"platform":[16],"context":[16],"items":[16],"label":[513],"helperText":[513,"helper-text"],"invalid":[516],"required":[516],"type":[513]}]]],["p-568b7520",[[1,"limebb-info-tile-currency-format",{"platform":[16],"context":[16],"value":[16]}]]],["p-2fdcb868",[[1,"limebb-notification-list",{"platform":[16],"context":[16],"items":[16],"loading":[4],"lastVisitedTimestamp":[1,"last-visited-timestamp"]},null,{"items":["handleItemsChange"]}]]],["p-5464f0de",[[17,"limebb-browser",{"platform":[16],"context":[16],"items":[16],"layout":[1],"filter":[32]}]]],["p-3175883d",[[1,"limebb-component-config",{"platform":[16],"context":[16],"value":[16],"required":[4],"readonly":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"formInfo":[16],"type":[1],"nameField":[1,"name-field"],"configComponent":[32],"configViewType":[32]},null,{"formInfo":["watchFormInfo"],"configComponent":["watchconfigComponent"]}]]],["p-1be0eec7",[[1,"limebb-component-picker",{"platform":[16],"context":[16],"type":[1],"tags":[16],"value":[1],"copyLabel":[1,"copy-label"],"hideCopyButton":[4,"hide-copy-button"],"required":[4],"readonly":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["p-10ac8b3e",[[1,"limebb-dashboard-widget",{"heading":[513],"subheading":[513],"supportingText":[513,"supporting-text"],"icon":[513]}]]],["p-e35299e0",[[1,"limebb-icon-picker",{"value":[1],"required":[4],"readonly":[4],"invalid":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["p-a200954f",[[1,"limebb-info-tile",{"platform":[16],"context":[16],"filterId":[513,"filter-id"],"disabled":[4],"icon":[513],"label":[1],"prefix":[1],"suffix":[1],"propertyName":[1,"property-name"],"aggregateOperator":[1,"aggregate-operator"],"format":[16],"config":[32],"filters":[32],"value":[32],"loading":[32],"error":[32]},null,{"filterId":["watchFilterId"],"propertyName":["watchPropertyName"],"aggregateOperator":["watchAggregateOperator"]}]]],["p-01cff04f",[[1,"limebb-info-tile-date-format",{"value":[16]}]]],["p-4caa8bbe",[[1,"limebb-info-tile-decimal-format",{"value":[16]}]]],["p-ff0b244b",[[1,"limebb-info-tile-format",{"platform":[16],"context":[16],"type":[1],"value":[16]}]]],["p-25e1a434",[[1,"limebb-info-tile-relative-date-format",{"value":[16]}]]],["p-6c56121c",[[1,"limebb-info-tile-unit-format",{"value":[16]}]]],["p-206575e4",[[1,"limebb-loader",{"platform":[16],"context":[16]}]]],["p-e8946134",[[1,"limebb-locale-picker",{"platform":[16],"context":[16],"value":[1],"required":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"readonly":[4],"multipleChoice":[4,"multiple-choice"],"allLanguages":[32]}]]],["p-cfa1a4ad",[[1,"limebb-mention",{"limetype":[1],"objectid":[2],"limeobject":[32]}]]],["p-9cac4de2",[[1,"limebb-mention-group-counter",{"count":[2],"limetype":[16],"helperLabel":[1,"helper-label"]}]]],["p-569c86b5",[[1,"limebb-percentage-visualizer",{"platform":[16],"context":[16],"value":[520],"rangeMax":[514,"range-max"],"rangeMin":[514,"range-min"],"multiplier":[514],"label":[513],"invalid":[516],"required":[516],"helperText":[513,"helper-text"],"reducePresence":[516,"reduce-presence"],"displayPercentageColors":[516,"display-percentage-colors"]},null,{"value":["valueChanged"]}]]],["p-3122ea05",[[1,"limebb-trend-indicator",{"platform":[16],"context":[16],"value":[520],"formerValue":[514,"former-value"],"suffix":[513],"label":[513],"invalid":[516],"required":[516],"helperText":[513,"helper-text"],"reducePresence":[516,"reduce-presence"]},null,{"value":["valueChanged"]}]]],["p-7271f47a",[[1,"limebb-feed-timeline-item",{"platform":[16],"context":[16],"item":[16],"ui":[513],"helperText":[1,"helper-text"],"hasError":[516,"has-error"],"isBundled":[516,"is-bundled"],"headingCanExpand":[32],"isHeadingExpanded":[32],"showMore":[32],"isTall":[32]}]]],["p-eb81bceb",[[1,"limebb-kanban-item",{"platform":[16],"context":[16],"item":[16]}]]],["p-2faaacbc",[[1,"limebb-kanban-group",{"platform":[16],"context":[16],"identifier":[1],"heading":[513],"help":[1],"items":[16],"summary":[1],"loading":[516],"totalCount":[514,"total-count"]}]]],["p-218b7f38",[[1,"limebb-text-editor-picker",{"items":[16],"open":[516],"isSearching":[4,"is-searching"],"emptyMessage":[1,"empty-message"]},null,{"open":["watchOpen"]}]]],["p-9031f136",[[1,"limebb-currency-picker",{"platform":[16],"context":[16],"label":[513],"currencies":[16],"helperText":[513,"helper-text"],"required":[516],"readonly":[516],"invalid":[516],"disabled":[516],"value":[1]}]]],["p-098ee6c1",[[1,"limebb-date-picker",{"platform":[16],"context":[16],"disabled":[516],"readonly":[516],"invalid":[516],"label":[513],"placeholder":[513],"helperText":[513,"helper-text"],"required":[516],"value":[1],"type":[513]}]]],["p-9d25ed5a",[[17,"limebb-document-item",{"platform":[16],"context":[16],"item":[16],"type":[513]}]]],["p-93cadc1e",[[1,"limebb-live-docs-info"]]],["p-b9b954d9",[[1,"limebb-notification-item",{"platform":[16],"context":[16],"item":[16]}]]],["p-fdd5600b",[[1,"limebb-lime-query-order-by-item",{"platform":[16],"context":[16],"limetype":[1],"item":[16]}]]],["p-5dc574a3",[[1,"limebb-chat-item",{"platform":[16],"context":[16],"item":[16],"helperText":[1,"helper-text"],"hasError":[516,"has-error"]}],[1,"limebb-typing-indicator"]]],["p-61282e1a",[[1,"limebb-feed-item-thumbnail-file-info",{"description":[1]}]]],["p-6c7af6bb",[[1,"limebb-lime-query-filter-builder",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}],[1,"limebb-lime-query-order-by-editor",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"items":[32]},null,{"value":["handleValueChange"]}],[0,"limebb-limetype-field",{"platform":[16],"context":[16],"label":[513],"required":[516],"readonly":[516],"disabled":[516],"value":[513],"helperText":[513,"helper-text"],"invalid":[4],"limetypes":[16],"propertyFields":[16],"fieldName":[1,"field-name"],"formInfo":[16]}]]],["p-292631ea",[[1,"limebb-empty-state",{"heading":[513],"value":[513],"icon":[16]}]]],["p-d8696b23",[[1,"limebb-property-selector",{"platform":[16],"context":[16],"limetype":[1],"value":[1],"label":[1],"required":[4],"helperText":[1,"helper-text"],"limetypes":[32],"isOpen":[32],"navigationPath":[32]}]]],["p-d635e6fc",[[1,"limebb-lime-query-response-format-editor",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"items":[32]}],[1,"limebb-lime-query-response-format-item",{"platform":[16],"context":[16],"limetype":[1],"item":[16],"showAliasInput":[32],"showDescriptionInput":[32]}]]],["p-631ca5a5",[[1,"limebb-summary-popover",{"triggerDelay":[514,"trigger-delay"],"heading":[513],"subheading":[513],"image":[16],"icon":[513],"value":[1],"openDirection":[513,"open-direction"],"popoverMaxWidth":[513,"popover-max-width"],"popoverMaxHeight":[513,"popover-max-height"],"actions":[16],"isPopoverOpen":[32]}],[17,"limebb-navigation-button",{"href":[513],"tooltipLabel":[513,"tooltip-label"],"tooltipHelperLabel":[513,"tooltip-helper-label"],"type":[513]}]]],["p-47f4f505",[[1,"limebb-lime-query-value-input",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"propertyPath":[1,"property-path"],"operator":[1],"value":[8],"label":[1],"limetypes":[32],"inputMode":[32]}],[1,"limebb-lime-query-filter-group",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16],"value":[32]}],[1,"limebb-lime-query-filter-not",{"platform":[16],"context":[16],"label":[1],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}]]],["p-761c7c7c",[[1,"limebb-lime-query-filter-expression",{"platform":[16],"context":[16],"label":[1],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}],[1,"limebb-lime-query-filter-comparison",{"platform":[16],"context":[16],"label":[513],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}]]]]'),e))));
1
+ import{p as e,b as t}from"./p-1556b545.js";export{s as setNonce}from"./p-1556b545.js";import{g as i}from"./p-e1255160.js";(()=>{const t=import.meta.url,i={};return""!==t&&(i.resourcesUrl=new URL(".",t).href),e(i)})().then((async e=>(await i(),t(JSON.parse('[["p-4f605428",[[1,"limebb-lime-query-builder",{"platform":[16],"context":[16],"value":[16],"label":[1],"activeLimetype":[1,"active-limetype"],"limetypes":[32],"mode":[32],"codeValue":[32],"limetype":[32],"filter":[32],"internalResponseFormat":[32],"limit":[32],"orderBy":[32]}]]],["p-ee1b00b9",[[1,"limebb-feed",{"platform":[16],"context":[16],"items":[16],"emptyStateMessage":[1,"empty-state-message"],"heading":[1],"loading":[4],"minutesOfProximity":[2,"minutes-of-proximity"],"totalCount":[2,"total-count"],"direction":[513],"lastVisitedTimestamp":[1,"last-visited-timestamp"],"highlightedItemId":[8,"highlighted-item-id"]},null,{"highlightedItemId":["highlightedItemIdChanged"]}]]],["p-3a406a20",[[1,"limebb-kanban",{"platform":[16],"context":[16],"groups":[16]}]]],["p-96fee7ee",[[1,"limebb-lime-query-response-format-builder",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"helperText":[1,"helper-text"],"limetypes":[32],"mode":[32],"codeValue":[32],"internalValue":[32]}]]],["p-32534eb7",[[1,"limebb-chat-list",{"platform":[16],"context":[16],"items":[16],"loading":[516],"isTypingIndicatorVisible":[516,"is-typing-indicator-visible"],"lastVisitedTimestamp":[513,"last-visited-timestamp"],"order":[513]},null,{"items":["handleItemsChange"]}]]],["p-03af0e66",[[1,"limebb-limeobject-file-viewer",{"platform":[16],"context":[16],"property":[1],"fileTypes":[16],"limeobject":[32],"limetype":[32]}]]],["p-36ea13c0",[[1,"limebb-text-editor",{"platform":[16],"context":[16],"allowMentioning":[4,"allow-mentioning"],"contentType":[1,"content-type"],"language":[513],"disabled":[516],"readonly":[516],"helperText":[513,"helper-text"],"placeholder":[513],"label":[513],"invalid":[516],"required":[516],"selectedContext":[16],"ui":[513],"allowResize":[4,"allow-resize"],"value":[1],"draftIdentifier":[1,"draft-identifier"],"triggerMap":[16],"customElements":[16],"allowInlineImages":[4,"allow-inline-images"],"items":[32],"highlightedItemIndex":[32],"editorPickerQuery":[32],"searchableLimetypes":[32],"isPickerOpen":[32],"isSearching":[32]},null,{"isPickerOpen":["watchOpen"],"editorPickerQuery":["watchQuery"]}]]],["p-8491aaa1",[[1,"limebb-date-range",{"platform":[16],"context":[16],"startTime":[16],"endTime":[16],"startTimeLabel":[1,"start-time-label"],"endTimeLabel":[1,"end-time-label"],"language":[1],"timeFormat":[1,"time-format"],"type":[1]}]]],["p-4a82410e",[[1,"limebb-document-picker",{"platform":[16],"context":[16],"items":[16],"label":[513],"helperText":[513,"helper-text"],"invalid":[516],"required":[516],"type":[513]}]]],["p-568b7520",[[1,"limebb-info-tile-currency-format",{"platform":[16],"context":[16],"value":[16]}]]],["p-2fdcb868",[[1,"limebb-notification-list",{"platform":[16],"context":[16],"items":[16],"loading":[4],"lastVisitedTimestamp":[1,"last-visited-timestamp"]},null,{"items":["handleItemsChange"]}]]],["p-5464f0de",[[17,"limebb-browser",{"platform":[16],"context":[16],"items":[16],"layout":[1],"filter":[32]}]]],["p-3175883d",[[1,"limebb-component-config",{"platform":[16],"context":[16],"value":[16],"required":[4],"readonly":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"formInfo":[16],"type":[1],"nameField":[1,"name-field"],"configComponent":[32],"configViewType":[32]},null,{"formInfo":["watchFormInfo"],"configComponent":["watchconfigComponent"]}]]],["p-1be0eec7",[[1,"limebb-component-picker",{"platform":[16],"context":[16],"type":[1],"tags":[16],"value":[1],"copyLabel":[1,"copy-label"],"hideCopyButton":[4,"hide-copy-button"],"required":[4],"readonly":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["p-10ac8b3e",[[1,"limebb-dashboard-widget",{"heading":[513],"subheading":[513],"supportingText":[513,"supporting-text"],"icon":[513]}]]],["p-e35299e0",[[1,"limebb-icon-picker",{"value":[1],"required":[4],"readonly":[4],"invalid":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"]}]]],["p-a200954f",[[1,"limebb-info-tile",{"platform":[16],"context":[16],"filterId":[513,"filter-id"],"disabled":[4],"icon":[513],"label":[1],"prefix":[1],"suffix":[1],"propertyName":[1,"property-name"],"aggregateOperator":[1,"aggregate-operator"],"format":[16],"config":[32],"filters":[32],"value":[32],"loading":[32],"error":[32]},null,{"filterId":["watchFilterId"],"propertyName":["watchPropertyName"],"aggregateOperator":["watchAggregateOperator"]}]]],["p-01cff04f",[[1,"limebb-info-tile-date-format",{"value":[16]}]]],["p-4caa8bbe",[[1,"limebb-info-tile-decimal-format",{"value":[16]}]]],["p-ff0b244b",[[1,"limebb-info-tile-format",{"platform":[16],"context":[16],"type":[1],"value":[16]}]]],["p-25e1a434",[[1,"limebb-info-tile-relative-date-format",{"value":[16]}]]],["p-6c56121c",[[1,"limebb-info-tile-unit-format",{"value":[16]}]]],["p-206575e4",[[1,"limebb-loader",{"platform":[16],"context":[16]}]]],["p-e8946134",[[1,"limebb-locale-picker",{"platform":[16],"context":[16],"value":[1],"required":[4],"disabled":[4],"label":[1],"helperText":[1,"helper-text"],"readonly":[4],"multipleChoice":[4,"multiple-choice"],"allLanguages":[32]}]]],["p-cfa1a4ad",[[1,"limebb-mention",{"limetype":[1],"objectid":[2],"limeobject":[32]}]]],["p-9cac4de2",[[1,"limebb-mention-group-counter",{"count":[2],"limetype":[16],"helperLabel":[1,"helper-label"]}]]],["p-569c86b5",[[1,"limebb-percentage-visualizer",{"platform":[16],"context":[16],"value":[520],"rangeMax":[514,"range-max"],"rangeMin":[514,"range-min"],"multiplier":[514],"label":[513],"invalid":[516],"required":[516],"helperText":[513,"helper-text"],"reducePresence":[516,"reduce-presence"],"displayPercentageColors":[516,"display-percentage-colors"]},null,{"value":["valueChanged"]}]]],["p-3122ea05",[[1,"limebb-trend-indicator",{"platform":[16],"context":[16],"value":[520],"formerValue":[514,"former-value"],"suffix":[513],"label":[513],"invalid":[516],"required":[516],"helperText":[513,"helper-text"],"reducePresence":[516,"reduce-presence"]},null,{"value":["valueChanged"]}]]],["p-7271f47a",[[1,"limebb-feed-timeline-item",{"platform":[16],"context":[16],"item":[16],"ui":[513],"helperText":[1,"helper-text"],"hasError":[516,"has-error"],"isBundled":[516,"is-bundled"],"headingCanExpand":[32],"isHeadingExpanded":[32],"showMore":[32],"isTall":[32]}]]],["p-eb81bceb",[[1,"limebb-kanban-item",{"platform":[16],"context":[16],"item":[16]}]]],["p-2faaacbc",[[1,"limebb-kanban-group",{"platform":[16],"context":[16],"identifier":[1],"heading":[513],"help":[1],"items":[16],"summary":[1],"loading":[516],"totalCount":[514,"total-count"]}]]],["p-218b7f38",[[1,"limebb-text-editor-picker",{"items":[16],"open":[516],"isSearching":[4,"is-searching"],"emptyMessage":[1,"empty-message"]},null,{"open":["watchOpen"]}]]],["p-9031f136",[[1,"limebb-currency-picker",{"platform":[16],"context":[16],"label":[513],"currencies":[16],"helperText":[513,"helper-text"],"required":[516],"readonly":[516],"invalid":[516],"disabled":[516],"value":[1]}]]],["p-098ee6c1",[[1,"limebb-date-picker",{"platform":[16],"context":[16],"disabled":[516],"readonly":[516],"invalid":[516],"label":[513],"placeholder":[513],"helperText":[513,"helper-text"],"required":[516],"value":[1],"type":[513]}]]],["p-9d25ed5a",[[17,"limebb-document-item",{"platform":[16],"context":[16],"item":[16],"type":[513]}]]],["p-93cadc1e",[[1,"limebb-live-docs-info"]]],["p-b9b954d9",[[1,"limebb-notification-item",{"platform":[16],"context":[16],"item":[16]}]]],["p-fdd5600b",[[1,"limebb-lime-query-order-by-item",{"platform":[16],"context":[16],"limetype":[1],"item":[16]}]]],["p-5dc574a3",[[1,"limebb-chat-item",{"platform":[16],"context":[16],"item":[16],"helperText":[1,"helper-text"],"hasError":[516,"has-error"]}],[1,"limebb-typing-indicator"]]],["p-61282e1a",[[1,"limebb-feed-item-thumbnail-file-info",{"description":[1]}]]],["p-6c7af6bb",[[1,"limebb-lime-query-filter-builder",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}],[1,"limebb-lime-query-order-by-editor",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"items":[32]},null,{"value":["handleValueChange"]}],[0,"limebb-limetype-field",{"platform":[16],"context":[16],"label":[513],"required":[516],"readonly":[516],"disabled":[516],"value":[513],"helperText":[513,"helper-text"],"invalid":[4],"limetypes":[16],"propertyFields":[16],"fieldName":[1,"field-name"],"formInfo":[16]}]]],["p-292631ea",[[1,"limebb-empty-state",{"heading":[513],"value":[513],"icon":[16]}]]],["p-d8696b23",[[1,"limebb-property-selector",{"platform":[16],"context":[16],"limetype":[1],"value":[1],"label":[1],"required":[4],"helperText":[1,"helper-text"],"limetypes":[32],"isOpen":[32],"navigationPath":[32]}]]],["p-d635e6fc",[[1,"limebb-lime-query-response-format-editor",{"platform":[16],"context":[16],"limetype":[1],"value":[16],"label":[1],"items":[32]}],[1,"limebb-lime-query-response-format-item",{"platform":[16],"context":[16],"limetype":[1],"item":[16],"showAliasInput":[32],"showDescriptionInput":[32]}]]],["p-631ca5a5",[[1,"limebb-summary-popover",{"triggerDelay":[514,"trigger-delay"],"heading":[513],"subheading":[513],"image":[16],"icon":[513],"value":[1],"openDirection":[513,"open-direction"],"popoverMaxWidth":[513,"popover-max-width"],"popoverMaxHeight":[513,"popover-max-height"],"actions":[16],"isPopoverOpen":[32]}],[17,"limebb-navigation-button",{"href":[513],"tooltipLabel":[513,"tooltip-label"],"tooltipHelperLabel":[513,"tooltip-helper-label"],"type":[513]}]]],["p-908dd7d5",[[1,"limebb-lime-query-value-input",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"propertyPath":[1,"property-path"],"operator":[1],"value":[8],"label":[1],"limetypes":[32],"inputMode":[32]}],[1,"limebb-lime-query-filter-group",{"platform":[16],"context":[16],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16],"value":[32]}],[1,"limebb-lime-query-filter-not",{"platform":[16],"context":[16],"label":[1],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}]]],["p-761c7c7c",[[1,"limebb-lime-query-filter-expression",{"platform":[16],"context":[16],"label":[1],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}],[1,"limebb-lime-query-filter-comparison",{"platform":[16],"context":[16],"label":[513],"limetype":[1],"activeLimetype":[1,"active-limetype"],"expression":[16]}]]]]'),e))));
@@ -0,0 +1 @@
1
+ import{r as e,c as t,h as i,H as r}from"./p-1556b545.js";import{Z as s,T as l}from"./p-4838284a.js";import{g as o}from"./p-b748c770.js";function n(){return{key:"",op:s.EQUALS,exp:""}}function a(e,t){return{op:e.op,exp:[...e.exp,t]}}const h=class{constructor(r){e(this,r),this.expressionChange=t(this,"expressionChange",7),this.options=[{text:"All",secondaryText:"AND operator",value:"and"},{text:"Any",secondaryText:"OR operator",value:"or"}],this.renderChildExpression=(e,t)=>i("limebb-lime-query-filter-expression",{role:"listitem",platform:this.platform,context:this.context,limetype:this.limetype,activeLimetype:this.activeLimetype,expression:e,onExpressionChange:this.handleExpressionChange(t)}),this.handleDeleteGroup=()=>{this.expressionChange.emit()},this.handleToggleOperator=e=>{const t=Array.isArray(e.detail)?e.detail[0]:e.detail;if(this.value=t,("and"===t.value?s.AND:s.OR)!==this.expression.op){const e={op:(i=this.expression).op===s.AND?s.OR:s.AND,exp:[...i.exp]};this.expressionChange.emit(e)}var i},this.handleAddChildExpression=()=>{const e=n(),t=a(this.expression,e);this.expressionChange.emit(t)},this.handleAddChildGroup=()=>{const e={op:this.expression.op===s.AND?s.OR:s.AND,exp:[n()]},t=a(this.expression,e);this.expressionChange.emit(t)},this.handleExpressionChange=e=>t=>{t.stopPropagation();const i=function(e,t,i){const r=[...e.exp];return i?(r[t]=i,{type:"updated",expression:{op:e.op,exp:r}}):(r.splice(t,1),0===r.length?{type:"removed",expression:void 0}:1===r.length?{type:"unwrapped",expression:r[0]}:{type:"updated",expression:{op:e.op,exp:r}})}(this.expression,e,t.detail);this.expressionChange.emit(i.expression)}}componentWillLoad(){this.value=this.options.find((e=>e.value===(this.expression.op===s.AND?"and":"or")))||this.options[0]}render(){return i(r,{key:"324805229eab509d12b6d41a99a54c1a4d8560a1",style:{"--limebb-lime-query-filter-group-operator":`"${this.expression.op===s.AND?"AND":"OR"}"`}},i("div",{key:"948dda71aac51cbfd8b93bc657a79c00a6bd6f68",class:"expression"},this.renderHeader(),i("ul",{key:"b1dbce8f4f20f72e00567d431eed0fe5900f4fbf"},this.expression.exp.map(this.renderChildExpression),this.renderAddButton()),this.renderAddGroupButton()))}renderHeader(){const e=this.getSubheading();return e?i("limel-header",{subheading:e},this.renderOperators(),this.renderDeleteGroupButton()):null}renderOperators(){return i("limel-select",{class:"operator-select",slot:"actions",value:this.value,options:this.options,onChange:this.handleToggleOperator})}renderDeleteGroupButton(){return i("limel-icon-button",{class:"delete-group",slot:"actions",icon:"trash",label:"Delete This Group",onClick:this.handleDeleteGroup})}getSubheading(){return this.expression.exp.length<=1?"":this.expression.op===s.AND?"All of these conditions are met":"Any of these conditions are met"}renderAddButton(){return i("limel-button",{role:"listitem",label:"Condition",icon:{name:"plus_math",title:"Add"},onClick:this.handleAddChildExpression})}renderAddGroupButton(){return i("limel-button",{class:"add-group",label:"Group",icon:{name:"plus_math",title:"Add"},onClick:this.handleAddChildGroup})}};h.style='@charset "UTF-8";*,*::before,*::after{box-sizing:border-box}limebb-lime-query-filter-expression{position:relative;isolation:isolate}limebb-lime-query-filter-expression:not(:first-of-type):after{content:"";position:absolute;top:-0.5rem;left:0.75rem;display:block;border-radius:1rem;height:2rem;width:0.125rem;background-color:var(--limebb-lime-query-builder-group-color)}limebb-lime-query-filter-expression:not(:first-of-type):before{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;height:1rem;content:var(--limebb-lime-query-filter-group-operator);display:inline-block;margin:0 auto 0.5rem auto;transform:translateY(-50%);font-size:0.625rem;padding:0 0.5rem;color:rgb(var(--color-blue-dark));background-color:var(--limebb-lime-query-builder-group-color);border-radius:2rem}.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:0;background-color:rgb(var(--contrast-100));border-radius:0.75rem;border:1px solid var(--limebb-lime-query-builder-group-color)}.expression ul{list-style:none;margin:0;padding:0.5rem;display:flex;flex-direction:column;align-items:center;gap:1rem}.expression ul [role=listitem]{list-style:none;width:100%}limel-button.add-group{width:fit-content;margin:0.5rem}limel-icon-button.delete-group{margin-left:0.5rem}limel-select.operator-select{min-width:8rem}';const c=class{constructor(i){e(this,i),this.expressionChange=t(this,"expressionChange",7),this.handleExpressionChange=e=>{var t;e.stopPropagation();const i=null!==(t=e.detail)&&void 0!==t?t:void 0;this.expressionChange.emit(void 0!==i?{op:s.NOT,exp:i}:void 0)}}render(){return i("div",{key:"8f234a17a56f899640f503dcc58e6ef7d8e6a998",class:"expression"},this.label&&i("limel-header",{key:"1e71be2c56690aa3c603c88028860093b54a2a84",heading:this.label}),i("limebb-lime-query-filter-expression",{key:"1fde4344ca12d9ced489ee8e4f1b9de806da1dc4",platform:this.platform,context:this.context,label:"Not",limetype:this.limetype,activeLimetype:this.activeLimetype,expression:this.expression.exp,onExpressionChange:this.handleExpressionChange}))}};c.style='@charset "UTF-8";.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:1rem;padding:1rem;border-left:0.25rem solid rgb(var(--contrast-400));background-color:rgb(var(--contrast-100))}';const d={timestamp:"time",createdtime:"time",updatedtime:"time",id:"integer",createduser:"integer",updateduser:"integer",descriptive:"string"},u={date:"date",time:"datetime",timeofday:"time",month:"month",quarter:"quarter",year:"year"};const p=class{constructor(i){e(this,i),this.change=t(this,"change",7),this.label="Value",this.inputMode="value",this.handleTextChange=e=>{e.stopPropagation();const t=e.detail,i=Number(t);Number.isNaN(i)||""===t?this.change.emit(t):this.change.emit(i)},this.handleSelectChange=e=>{e.stopPropagation();const t=e.detail;Array.isArray(t)?this.change.emit(t.map((e=>e.value))):this.change.emit(null==t?void 0:t.value)},this.handleBooleanChange=e=>{e.stopPropagation();const t=e.detail;Array.isArray(t)||this.change.emit("true"===(null==t?void 0:t.value))},this.handleDateChange=e=>{e.stopPropagation();const t=e.detail;this.change.emit(t?t.toISOString():null)},this.handleMultiValueChange=e=>{e.stopPropagation();const t=e.detail.split(",").map((e=>e.trim())).filter((e=>e.length>0));this.change.emit(t)},this.handleModeToggle=()=>{"value"===this.inputMode?(this.inputMode="placeholder",this.change.emit("%activeObject%")):(this.inputMode="value",this.change.emit(""))},this.handlePlaceholderPropertyChange=e=>{e.stopPropagation();const t=this.buildPlaceholderValue(e.detail);this.change.emit(t)}}componentWillLoad(){this.isPlaceholder(this.value)&&(this.inputMode="placeholder")}componentWillUpdate(){this.isPlaceholder(this.value)&&"placeholder"!==this.inputMode?this.inputMode="placeholder":this.isPlaceholder(this.value)||"placeholder"!==this.inputMode||(this.inputMode="value")}isPlaceholder(e){return"string"==typeof e&&e.startsWith("%activeObject%")}parsePlaceholderPath(e){return this.isPlaceholder(e)?e.replace(/^%activeObject%\.?/,""):""}buildPlaceholderValue(e){return e?`%activeObject%.${e}`:"%activeObject%"}render(){return this.operator?i(r,null,this.renderModeToggle(),this.renderInputByMode()):null}renderInputByMode(){return"placeholder"===this.inputMode?this.renderPlaceholderInput():this.renderValueInputByType()}renderModeToggle(){if(!this.activeLimetype)return null;const e="placeholder"===this.inputMode;return i("limel-icon-button",{class:"mode-toggle",icon:e?"text":"link",label:e?"Use Value":"Use Placeholder",onClick:this.handleModeToggle})}renderPlaceholderInput(){const e=this.parsePlaceholderPath(this.value);return i("div",{class:"placeholder-input"},i("limebb-property-selector",{platform:this.platform,context:this.context,limetype:this.activeLimetype,label:"Active Object Property",value:e,required:!1,helperText:"Select property from the active object",onChange:this.handlePlaceholderPropertyChange}),this.renderPlaceholderPreview())}renderPlaceholderPreview(){if(this.isPlaceholder(this.value))return i("div",{class:"placeholder-preview"},i("limel-icon",{name:"info",size:"small"}),i("span",null,"Placeholder: ",this.value))}renderValueInputByType(){if(this.operator===s.IN)return this.renderMultiValueInput();const e=this.getProperty();if(!e)return this.renderTextInput();const t=function(e){return"system"===e.type?function(e){const t=e.replace(/^_/,"");return d[t]||"string"}(e.name):e.type}(e);switch(t){case"integer":case"decimal":return this.renderNumberInput(t);case"yesno":return this.renderBooleanInput();case"option":return this.renderOptionInput(e);case"date":case"time":case"timeofday":case"year":case"month":case"quarter":return this.renderDateTimeInput(t);default:return this.renderTextInput()}}renderTextInput(){var e;return i("limel-input-field",{label:this.label,value:(null===(e=this.value)||void 0===e?void 0:e.toString())||"",placeholder:"Enter value",onChange:this.handleTextChange})}renderNumberInput(e){var t;const r="integer"===e?1:.01;return i("limel-input-field",{label:this.label,type:"number",value:(null===(t=this.value)||void 0===t?void 0:t.toString())||"",step:r,onChange:this.handleTextChange})}renderBooleanInput(){const e=[{text:"True",value:"true"},{text:"False",value:"false"}],t=!0===this.value||"true"===this.value?"true":"false",r=e.find((e=>e.value===t));return i("limel-select",{label:this.label,options:e,value:r,onChange:this.handleBooleanChange})}renderOptionInput(e){if(!e.options||0===e.options.length)return this.renderTextInput();const t=e.options.map((e=>({text:e.text||e.key,value:e.key}))),r=t.find((e=>e.value===this.value));return i("limel-select",{label:this.label,options:t,value:r,onChange:this.handleSelectChange})}renderDateTimeInput(e){const t="string"==typeof this.value?new Date(this.value):this.value;return i("limel-date-picker",{label:this.label,value:t,type:u[e]||"date",onChange:this.handleDateChange})}renderMultiValueInput(){const e=Array.isArray(this.value)?this.value.join(", "):this.value||"";return i("limel-input-field",{label:this.label+" (comma-separated)",value:e,placeholder:"e.g., won, lost, tender",onChange:this.handleMultiValueChange})}getProperty(){if(this.limetypes&&this.limetype&&this.propertyPath)return o(this.limetypes,this.limetype,this.propertyPath)}};(function(e,t,i,r){var s,l=arguments.length,o=l<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var n=e.length-1;n>=0;n--)(s=e[n])&&(o=(l<3?s(o):l>3?s(t,i,o):s(t,i))||o);l>3&&o&&Object.defineProperty(t,i,o)})([l()],p.prototype,"limetypes",void 0),p.style=":host{display:flex;gap:0.5rem}:host>*{flex-grow:1}*{box-sizing:border-box}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;flex-grow:0}.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}";export{h as limebb_lime_query_filter_group,c as limebb_lime_query_filter_not,p as limebb_lime_query_value_input}
@@ -78,8 +78,7 @@ export declare class LimeQueryValueInput {
78
78
  private renderNumberInput;
79
79
  private renderBooleanInput;
80
80
  private renderOptionInput;
81
- private renderDateInput;
82
- private renderTimeInput;
81
+ private renderDateTimeInput;
83
82
  private renderMultiValueInput;
84
83
  private handleTextChange;
85
84
  private handleSelectChange;
@@ -0,0 +1,73 @@
1
+ import { DateTimePropertyType, PropertyType } from '@limetech/lime-web-components';
2
+ import { DateType } from '@limetech/lime-elements';
3
+ /**
4
+ * Get the actual type of a property, resolving 'system' type to the underlying type.
5
+ *
6
+ * System properties in Lime CRM have `type: 'system'` in the metadata (a categorical marker
7
+ * from the database schema fieldtype 255), but we need to know their actual data types
8
+ * to render appropriate input controls.
9
+ *
10
+ * @param property - The property to get the type for
11
+ * @param property.type
12
+ * @param property.name
13
+ * @returns The actual property type (resolves 'system' to the underlying type)
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const property = { name: '_timestamp', type: 'system' };
18
+ * getActualPropertyType(property); // Returns 'time'
19
+ * ```
20
+ */
21
+ export declare function getActualPropertyType(property: {
22
+ type: PropertyType;
23
+ name: string;
24
+ }): PropertyType;
25
+ /**
26
+ * Map system property names to their actual data types.
27
+ *
28
+ * This mapping is necessary because system properties have `type='system'` in the metadata
29
+ * (for historical reasons - database schema fieldtype 255), but we need to know their
30
+ * actual data types to render appropriate inputs.
31
+ *
32
+ * The mapping is based on the Lime CRM database schema:
33
+ * - System datetime fields: `timestamp`, `createdtime`, `updatedtime`
34
+ * - System integer fields: `id`, `createduser`, `updateduser`
35
+ * - System string fields: `descriptive`
36
+ *
37
+ * @param propertyName - The system property name (with or without underscore prefix)
38
+ * @returns The actual property type
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * resolveSystemPropertyType('_timestamp'); // Returns 'time'
43
+ * resolveSystemPropertyType('timestamp'); // Returns 'time'
44
+ * resolveSystemPropertyType('_id'); // Returns 'integer'
45
+ * resolveSystemPropertyType('unknown'); // Returns 'string' (default)
46
+ * ```
47
+ */
48
+ export declare function resolveSystemPropertyType(propertyName: string): PropertyType;
49
+ /**
50
+ * Map Lime CRM property types to Lime Elements date picker types.
51
+ *
52
+ * Lime CRM and Lime Elements use different naming conventions for date/time types,
53
+ * so we need to translate between them:
54
+ *
55
+ * - `'date'` → `'date'` - Date only
56
+ * - `'time'` → `'datetime'` - Full datetime (date + time) in Lime CRM
57
+ * - `'timeofday'` → `'time'` - Time only (hh:mm)
58
+ * - `'month'` → `'month'` - Month picker (YYYY-MM)
59
+ * - `'quarter'` → `'quarter'` - Quarter picker
60
+ * - `'year'` → `'year'` - Year picker
61
+ *
62
+ * @param propertyType - The Lime CRM date/time property type
63
+ * @returns The corresponding Lime Elements date picker type
64
+ *
65
+ * @example
66
+ * ```typescript
67
+ * mapPropertyTypeToPickerType('time'); // Returns 'datetime'
68
+ * mapPropertyTypeToPickerType('timeofday'); // Returns 'time'
69
+ * mapPropertyTypeToPickerType('date'); // Returns 'date'
70
+ * ```
71
+ */
72
+ export declare function mapPropertyTypeToPickerType(propertyType: DateTimePropertyType): DateType;
73
+ //# sourceMappingURL=type-resolution.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@limetech/lime-crm-building-blocks",
3
- "version": "1.103.5",
3
+ "version": "1.103.6",
4
4
  "description": "A home for shared components meant for use with Lime CRM",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.js",
@@ -1 +0,0 @@
1
- import{r as e,c as t,h as i,H as r}from"./p-1556b545.js";import{Z as s,T as l}from"./p-4838284a.js";import{g as o}from"./p-b748c770.js";function n(){return{key:"",op:s.EQUALS,exp:""}}function a(e,t){return{op:e.op,exp:[...e.exp,t]}}const h=class{constructor(r){e(this,r),this.expressionChange=t(this,"expressionChange",7),this.options=[{text:"All",secondaryText:"AND operator",value:"and"},{text:"Any",secondaryText:"OR operator",value:"or"}],this.renderChildExpression=(e,t)=>i("limebb-lime-query-filter-expression",{role:"listitem",platform:this.platform,context:this.context,limetype:this.limetype,activeLimetype:this.activeLimetype,expression:e,onExpressionChange:this.handleExpressionChange(t)}),this.handleDeleteGroup=()=>{this.expressionChange.emit()},this.handleToggleOperator=e=>{const t=Array.isArray(e.detail)?e.detail[0]:e.detail;if(this.value=t,("and"===t.value?s.AND:s.OR)!==this.expression.op){const e={op:(i=this.expression).op===s.AND?s.OR:s.AND,exp:[...i.exp]};this.expressionChange.emit(e)}var i},this.handleAddChildExpression=()=>{const e=n(),t=a(this.expression,e);this.expressionChange.emit(t)},this.handleAddChildGroup=()=>{const e={op:this.expression.op===s.AND?s.OR:s.AND,exp:[n()]},t=a(this.expression,e);this.expressionChange.emit(t)},this.handleExpressionChange=e=>t=>{t.stopPropagation();const i=function(e,t,i){const r=[...e.exp];return i?(r[t]=i,{type:"updated",expression:{op:e.op,exp:r}}):(r.splice(t,1),0===r.length?{type:"removed",expression:void 0}:1===r.length?{type:"unwrapped",expression:r[0]}:{type:"updated",expression:{op:e.op,exp:r}})}(this.expression,e,t.detail);this.expressionChange.emit(i.expression)}}componentWillLoad(){this.value=this.options.find((e=>e.value===(this.expression.op===s.AND?"and":"or")))||this.options[0]}render(){return i(r,{key:"324805229eab509d12b6d41a99a54c1a4d8560a1",style:{"--limebb-lime-query-filter-group-operator":`"${this.expression.op===s.AND?"AND":"OR"}"`}},i("div",{key:"948dda71aac51cbfd8b93bc657a79c00a6bd6f68",class:"expression"},this.renderHeader(),i("ul",{key:"b1dbce8f4f20f72e00567d431eed0fe5900f4fbf"},this.expression.exp.map(this.renderChildExpression),this.renderAddButton()),this.renderAddGroupButton()))}renderHeader(){const e=this.getSubheading();return e?i("limel-header",{subheading:e},this.renderOperators(),this.renderDeleteGroupButton()):null}renderOperators(){return i("limel-select",{class:"operator-select",slot:"actions",value:this.value,options:this.options,onChange:this.handleToggleOperator})}renderDeleteGroupButton(){return i("limel-icon-button",{class:"delete-group",slot:"actions",icon:"trash",label:"Delete This Group",onClick:this.handleDeleteGroup})}getSubheading(){return this.expression.exp.length<=1?"":this.expression.op===s.AND?"All of these conditions are met":"Any of these conditions are met"}renderAddButton(){return i("limel-button",{role:"listitem",label:"Condition",icon:{name:"plus_math",title:"Add"},onClick:this.handleAddChildExpression})}renderAddGroupButton(){return i("limel-button",{class:"add-group",label:"Group",icon:{name:"plus_math",title:"Add"},onClick:this.handleAddChildGroup})}};h.style='@charset "UTF-8";*,*::before,*::after{box-sizing:border-box}limebb-lime-query-filter-expression{position:relative;isolation:isolate}limebb-lime-query-filter-expression:not(:first-of-type):after{content:"";position:absolute;top:-0.5rem;left:0.75rem;display:block;border-radius:1rem;height:2rem;width:0.125rem;background-color:var(--limebb-lime-query-builder-group-color)}limebb-lime-query-filter-expression:not(:first-of-type):before{position:relative;z-index:1;display:flex;justify-content:center;align-items:center;height:1rem;content:var(--limebb-lime-query-filter-group-operator);display:inline-block;margin:0 auto 0.5rem auto;transform:translateY(-50%);font-size:0.625rem;padding:0 0.5rem;color:rgb(var(--color-blue-dark));background-color:var(--limebb-lime-query-builder-group-color);border-radius:2rem}.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:0;background-color:rgb(var(--contrast-100));border-radius:0.75rem;border:1px solid var(--limebb-lime-query-builder-group-color)}.expression ul{list-style:none;margin:0;padding:0.5rem;display:flex;flex-direction:column;align-items:center;gap:1rem}.expression ul [role=listitem]{list-style:none;width:100%}limel-button.add-group{width:fit-content;margin:0.5rem}limel-icon-button.delete-group{margin-left:0.5rem}limel-select.operator-select{min-width:8rem}';const c=class{constructor(i){e(this,i),this.expressionChange=t(this,"expressionChange",7),this.handleExpressionChange=e=>{var t;e.stopPropagation();const i=null!==(t=e.detail)&&void 0!==t?t:void 0;this.expressionChange.emit(void 0!==i?{op:s.NOT,exp:i}:void 0)}}render(){return i("div",{key:"8f234a17a56f899640f503dcc58e6ef7d8e6a998",class:"expression"},this.label&&i("limel-header",{key:"1e71be2c56690aa3c603c88028860093b54a2a84",heading:this.label}),i("limebb-lime-query-filter-expression",{key:"1fde4344ca12d9ced489ee8e4f1b9de806da1dc4",platform:this.platform,context:this.context,label:"Not",limetype:this.limetype,activeLimetype:this.activeLimetype,expression:this.expression.exp,onExpressionChange:this.handleExpressionChange}))}};c.style='@charset "UTF-8";.expression{display:flex;flex-direction:column;margin-bottom:1rem;gap:1rem;padding:1rem;border-left:0.25rem solid rgb(var(--contrast-400));background-color:rgb(var(--contrast-100))}';const d=class{constructor(i){e(this,i),this.change=t(this,"change",7),this.label="Value",this.inputMode="value",this.handleTextChange=e=>{e.stopPropagation();const t=e.detail,i=Number(t);Number.isNaN(i)||""===t?this.change.emit(t):this.change.emit(i)},this.handleSelectChange=e=>{e.stopPropagation();const t=e.detail;Array.isArray(t)?this.change.emit(t.map((e=>e.value))):this.change.emit(null==t?void 0:t.value)},this.handleBooleanChange=e=>{e.stopPropagation();const t=e.detail;Array.isArray(t)||this.change.emit("true"===(null==t?void 0:t.value))},this.handleDateChange=e=>{e.stopPropagation();const t=e.detail;this.change.emit(t?t.toISOString():null)},this.handleMultiValueChange=e=>{e.stopPropagation();const t=e.detail.split(",").map((e=>e.trim())).filter((e=>e.length>0));this.change.emit(t)},this.handleModeToggle=()=>{"value"===this.inputMode?(this.inputMode="placeholder",this.change.emit("%activeObject%")):(this.inputMode="value",this.change.emit(""))},this.handlePlaceholderPropertyChange=e=>{e.stopPropagation();const t=this.buildPlaceholderValue(e.detail);this.change.emit(t)}}componentWillLoad(){this.isPlaceholder(this.value)&&(this.inputMode="placeholder")}componentWillUpdate(){this.isPlaceholder(this.value)&&"placeholder"!==this.inputMode?this.inputMode="placeholder":this.isPlaceholder(this.value)||"placeholder"!==this.inputMode||(this.inputMode="value")}isPlaceholder(e){return"string"==typeof e&&e.startsWith("%activeObject%")}parsePlaceholderPath(e){return this.isPlaceholder(e)?e.replace(/^%activeObject%\.?/,""):""}buildPlaceholderValue(e){return e?`%activeObject%.${e}`:"%activeObject%"}render(){return this.operator?i(r,null,this.renderModeToggle(),this.renderInputByMode()):null}renderInputByMode(){return"placeholder"===this.inputMode?this.renderPlaceholderInput():this.renderValueInputByType()}renderModeToggle(){if(!this.activeLimetype)return null;const e="placeholder"===this.inputMode;return i("limel-icon-button",{class:"mode-toggle",icon:e?"text":"link",label:e?"Use Value":"Use Placeholder",onClick:this.handleModeToggle})}renderPlaceholderInput(){const e=this.parsePlaceholderPath(this.value);return i("div",{class:"placeholder-input"},i("limebb-property-selector",{platform:this.platform,context:this.context,limetype:this.activeLimetype,label:"Active Object Property",value:e,required:!1,helperText:"Select property from the active object",onChange:this.handlePlaceholderPropertyChange}),this.renderPlaceholderPreview())}renderPlaceholderPreview(){if(this.isPlaceholder(this.value))return i("div",{class:"placeholder-preview"},i("limel-icon",{name:"info",size:"small"}),i("span",null,"Placeholder: ",this.value))}renderValueInputByType(){if(this.operator===s.IN)return this.renderMultiValueInput();const e=this.getProperty();if(!e)return this.renderTextInput();switch(e.type){case"integer":case"decimal":return this.renderNumberInput(e.type);case"yesno":return this.renderBooleanInput();case"option":return this.renderOptionInput(e);case"date":return this.renderDateInput();case"time":return this.renderTimeInput();default:return this.renderTextInput()}}renderTextInput(){var e;return i("limel-input-field",{label:this.label,value:(null===(e=this.value)||void 0===e?void 0:e.toString())||"",placeholder:"Enter value",onChange:this.handleTextChange})}renderNumberInput(e){var t;const r="integer"===e?1:.01;return i("limel-input-field",{label:this.label,type:"number",value:(null===(t=this.value)||void 0===t?void 0:t.toString())||"",step:r,onChange:this.handleTextChange})}renderBooleanInput(){const e=[{text:"True",value:"true"},{text:"False",value:"false"}],t=!0===this.value||"true"===this.value?"true":"false",r=e.find((e=>e.value===t));return i("limel-select",{label:this.label,options:e,value:r,onChange:this.handleBooleanChange})}renderOptionInput(e){if(!e.options||0===e.options.length)return this.renderTextInput();const t=e.options.map((e=>({text:e.text||e.key,value:e.key}))),r=t.find((e=>e.value===this.value));return i("limel-select",{label:this.label,options:t,value:r,onChange:this.handleSelectChange})}renderDateInput(){const e="string"==typeof this.value?new Date(this.value):this.value;return i("limel-date-picker",{label:this.label,value:e,onChange:this.handleDateChange})}renderTimeInput(){return i("limel-input-field",{label:this.label,type:"time",value:this.value||"",onChange:this.handleTextChange})}renderMultiValueInput(){const e=Array.isArray(this.value)?this.value.join(", "):this.value||"";return i("limel-input-field",{label:this.label+" (comma-separated)",value:e,placeholder:"e.g., won, lost, tender",onChange:this.handleMultiValueChange})}getProperty(){if(this.limetypes&&this.limetype&&this.propertyPath)return o(this.limetypes,this.limetype,this.propertyPath)}};(function(e,t,i,r){var s,l=arguments.length,o=l<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,i):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)o=Reflect.decorate(e,t,i,r);else for(var n=e.length-1;n>=0;n--)(s=e[n])&&(o=(l<3?s(o):l>3?s(t,i,o):s(t,i))||o);l>3&&o&&Object.defineProperty(t,i,o)})([l()],d.prototype,"limetypes",void 0),d.style=":host{display:flex;gap:0.5rem}:host>*{flex-grow:1}*{box-sizing:border-box}.value-input-container{display:flex;flex-direction:row;align-items:flex-start;gap:0.5rem;width:100%}.mode-toggle{flex-shrink:0;flex-grow:0}.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}";export{h as limebb_lime_query_filter_group,c as limebb_lime_query_filter_not,d as limebb_lime_query_value_input}