@limetech/lime-crm-building-blocks 1.103.4 → 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.
Files changed (90) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/lime-crm-building-blocks.cjs.js +1 -1
  3. package/dist/cjs/limebb-lime-query-filter-builder_3.cjs.entry.js +2 -2
  4. package/dist/cjs/limebb-lime-query-filter-comparison_2.cjs.entry.js +1 -1
  5. package/dist/cjs/limebb-lime-query-filter-group_3.cjs.entry.js +126 -15
  6. package/dist/cjs/limebb-lime-query-order-by-item.cjs.entry.js +2 -2
  7. package/dist/cjs/limebb-lime-query-response-format-builder.cjs.entry.js +6 -2
  8. package/dist/cjs/limebb-lime-query-response-format-editor_2.cjs.entry.js +3 -3
  9. package/dist/cjs/limebb-live-docs-info.cjs.entry.js +2 -2
  10. package/dist/cjs/limebb-locale-picker.cjs.entry.js +1 -1
  11. package/dist/cjs/limebb-mention-group-counter.cjs.entry.js +2 -2
  12. package/dist/cjs/limebb-navigation-button_2.cjs.entry.js +3 -3
  13. package/dist/cjs/limebb-notification-item.cjs.entry.js +1 -1
  14. package/dist/cjs/limebb-percentage-visualizer.cjs.entry.js +2 -2
  15. package/dist/cjs/limebb-text-editor.cjs.entry.js +1 -1
  16. package/dist/cjs/limebb-trend-indicator.cjs.entry.js +1 -1
  17. package/dist/cjs/loader.cjs.js +1 -1
  18. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-comparison.js +1 -1
  19. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-group.js +2 -2
  20. package/dist/collection/components/lime-query-builder/expressions/lime-query-filter-not.js +1 -1
  21. package/dist/collection/components/lime-query-builder/expressions/lime-query-value-input.js +15 -12
  22. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.css +12 -3
  23. package/dist/collection/components/lime-query-builder/lime-query-response-format-builder.js +25 -1
  24. package/dist/collection/components/lime-query-builder/limetype-field/limetype-field.js +1 -1
  25. package/dist/collection/components/lime-query-builder/order-by/order-by-editor.js +1 -1
  26. package/dist/collection/components/lime-query-builder/order-by/order-by-item.js +2 -2
  27. package/dist/collection/components/lime-query-builder/response-format/response-format-item.js +3 -3
  28. package/dist/collection/components/lime-query-builder/type-resolution.js +108 -0
  29. package/dist/collection/components/limeobject/file-viewer/live-docs-info.js +2 -2
  30. package/dist/collection/components/locale-picker/locale-picker.js +1 -1
  31. package/dist/collection/components/notification-list/notification-item/notification-item.js +1 -1
  32. package/dist/collection/components/percentage-visualizer/percentage-visualizer.js +2 -2
  33. package/dist/collection/components/summary-popover/summary-popover.js +3 -3
  34. package/dist/collection/components/text-editor/mention-group-counter.js +2 -2
  35. package/dist/collection/components/text-editor/text-editor.js +1 -1
  36. package/dist/collection/components/trend-indicator/trend-indicator.js +1 -1
  37. package/dist/components/lime-query-filter-comparison.js +1 -1
  38. package/dist/components/lime-query-filter-expression.js +3 -3
  39. package/dist/components/lime-query-value-input.js +123 -12
  40. package/dist/components/limebb-lime-query-response-format-builder.js +7 -2
  41. package/dist/components/limebb-locale-picker.js +1 -1
  42. package/dist/components/limebb-mention-group-counter.js +2 -2
  43. package/dist/components/limebb-percentage-visualizer.js +2 -2
  44. package/dist/components/limebb-text-editor.js +1 -1
  45. package/dist/components/limebb-trend-indicator.js +1 -1
  46. package/dist/components/limetype-field.js +1 -1
  47. package/dist/components/live-docs-info.js +2 -2
  48. package/dist/components/notification-item.js +1 -1
  49. package/dist/components/order-by-editor.js +1 -1
  50. package/dist/components/order-by-item.js +2 -2
  51. package/dist/components/response-format-item.js +3 -3
  52. package/dist/components/summary-popover.js +3 -3
  53. package/dist/esm/lime-crm-building-blocks.js +1 -1
  54. package/dist/esm/limebb-lime-query-filter-builder_3.entry.js +2 -2
  55. package/dist/esm/limebb-lime-query-filter-comparison_2.entry.js +1 -1
  56. package/dist/esm/limebb-lime-query-filter-group_3.entry.js +126 -15
  57. package/dist/esm/limebb-lime-query-order-by-item.entry.js +2 -2
  58. package/dist/esm/limebb-lime-query-response-format-builder.entry.js +6 -2
  59. package/dist/esm/limebb-lime-query-response-format-editor_2.entry.js +3 -3
  60. package/dist/esm/limebb-live-docs-info.entry.js +2 -2
  61. package/dist/esm/limebb-locale-picker.entry.js +1 -1
  62. package/dist/esm/limebb-mention-group-counter.entry.js +2 -2
  63. package/dist/esm/limebb-navigation-button_2.entry.js +3 -3
  64. package/dist/esm/limebb-notification-item.entry.js +1 -1
  65. package/dist/esm/limebb-percentage-visualizer.entry.js +2 -2
  66. package/dist/esm/limebb-text-editor.entry.js +1 -1
  67. package/dist/esm/limebb-trend-indicator.entry.js +1 -1
  68. package/dist/esm/loader.js +1 -1
  69. package/dist/lime-crm-building-blocks/lime-crm-building-blocks.esm.js +1 -1
  70. package/dist/lime-crm-building-blocks/{p-5c262387.entry.js → p-3122ea05.entry.js} +1 -1
  71. package/dist/lime-crm-building-blocks/{p-af27a8e5.entry.js → p-36ea13c0.entry.js} +1 -1
  72. package/dist/lime-crm-building-blocks/{p-bb299b18.entry.js → p-569c86b5.entry.js} +1 -1
  73. package/dist/lime-crm-building-blocks/{p-a1f689f4.entry.js → p-631ca5a5.entry.js} +1 -1
  74. package/dist/lime-crm-building-blocks/{p-4ec8bdfe.entry.js → p-6c7af6bb.entry.js} +1 -1
  75. package/dist/lime-crm-building-blocks/{p-6007457c.entry.js → p-761c7c7c.entry.js} +1 -1
  76. package/dist/lime-crm-building-blocks/p-908dd7d5.entry.js +1 -0
  77. package/dist/lime-crm-building-blocks/{p-3a21c270.entry.js → p-93cadc1e.entry.js} +1 -1
  78. package/dist/lime-crm-building-blocks/p-96fee7ee.entry.js +1 -0
  79. package/dist/lime-crm-building-blocks/{p-1c144b84.entry.js → p-9cac4de2.entry.js} +1 -1
  80. package/dist/lime-crm-building-blocks/{p-9e44b983.entry.js → p-b9b954d9.entry.js} +1 -1
  81. package/dist/lime-crm-building-blocks/{p-7d0e8a55.entry.js → p-d635e6fc.entry.js} +1 -1
  82. package/dist/lime-crm-building-blocks/{p-230bdc45.entry.js → p-e8946134.entry.js} +1 -1
  83. package/dist/lime-crm-building-blocks/{p-1dca2c7c.entry.js → p-fdd5600b.entry.js} +1 -1
  84. package/dist/types/components/lime-query-builder/expressions/lime-query-value-input.d.ts +1 -2
  85. package/dist/types/components/lime-query-builder/lime-query-response-format-builder.d.ts +4 -0
  86. package/dist/types/components/lime-query-builder/type-resolution.d.ts +73 -0
  87. package/dist/types/components.d.ts +8 -0
  88. package/package.json +1 -1
  89. package/dist/lime-crm-building-blocks/p-a135fb26.entry.js +0 -1
  90. package/dist/lime-crm-building-blocks/p-f92ca0b8.entry.js +0 -1
@@ -122,7 +122,7 @@ export class LimeQueryFilterComparisonComponent {
122
122
  };
123
123
  }
124
124
  render() {
125
- return (h(Host, { key: '30808c3787ee21466a615e94224062a7a51f408a' }, this.renderHeader(), h("div", { key: 'ba05f0fb17a7e49d1a8e0089d2a2b918c75be39b', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: 'a995527a8d9a5ccb97a6c0f41dc753cc68fa89fc', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
125
+ return (h(Host, { key: '6cb567108d3744ca5ab5973c41d679efa024841a' }, this.renderHeader(), h("div", { key: '16f318ec2ede96a39da5d0aef7206beee43d9176', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: '4de069d1509b3e3a378c882714dccd0d8c9c6dfb', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
126
126
  }
127
127
  renderHeader() {
128
128
  if (!this.label) {
@@ -72,9 +72,9 @@ export class LimeQueryFilterGroupComponent {
72
72
  (this.expression.op === Operator.AND ? 'and' : 'or')) || this.options[0];
73
73
  }
74
74
  render() {
75
- return (h(Host, { key: 'dee472bac75f4b3138fa5972de258a3737b1f66d', style: {
75
+ return (h(Host, { key: '324805229eab509d12b6d41a99a54c1a4d8560a1', style: {
76
76
  '--limebb-lime-query-filter-group-operator': `"${this.expression.op === Operator.AND ? 'AND' : 'OR'}"`,
77
- } }, h("div", { key: 'de3956a999557730304c70e9f7305c8e338bffb2', class: "expression" }, this.renderHeader(), h("ul", { key: 'f87552df1d0d138bb0284f9f3546611017eb847a' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
77
+ } }, h("div", { key: '948dda71aac51cbfd8b93bc657a79c00a6bd6f68', class: "expression" }, this.renderHeader(), h("ul", { key: 'b1dbce8f4f20f72e00567d431eed0fe5900f4fbf' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
78
78
  }
79
79
  renderHeader() {
80
80
  const subheading = this.getSubheading();
@@ -35,7 +35,7 @@ export class LimeQueryFilterNotComponent {
35
35
  };
36
36
  }
37
37
  render() {
38
- return (h("div", { key: 'e64fdcf00f6e88a27341e519f4b86542d3009bf5', class: "expression" }, this.label && h("limel-header", { key: '9b6a2d7f472337b314beb7cec481f9850e6320a0', heading: this.label }), h("limebb-lime-query-filter-expression", { key: 'd8d1b50f2b03b5c239d3f9690a2e9efd683182b1', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
38
+ return (h("div", { key: '8f234a17a56f899640f503dcc58e6ef7d8e6a998', class: "expression" }, this.label && h("limel-header", { key: '1e71be2c56690aa3c603c88028860093b54a2a84', heading: this.label }), h("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 })));
39
39
  }
40
40
  static get is() { return "limebb-lime-query-filter-not"; }
41
41
  static get encapsulation() { return "shadow"; }
@@ -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
@@ -9,9 +9,18 @@
9
9
  }
10
10
 
11
11
  .builder-label {
12
- margin: 0;
13
- font-size: 1.25rem;
14
- font-weight: 600;
12
+ color: rgb(var(--contrast-1100));
13
+ font-size: 1.625rem;
14
+ line-height: 1.25rem;
15
+ font-weight: 300;
16
+ margin-top: 1rem;
17
+ margin-bottom: 0.25rem;
18
+ }
19
+
20
+ .builder-helper-text {
21
+ margin-top: 0px;
22
+ margin-bottom: 0.5rem;
23
+ font-size: var(--limel-theme-default-font-size);
15
24
  color: rgb(var(--contrast-1100));
16
25
  }
17
26
 
@@ -49,6 +49,10 @@ export class LimeQueryResponseFormatBuilder {
49
49
  * Optional label for the builder
50
50
  */
51
51
  this.label = 'Response Format';
52
+ /**
53
+ * Optional helper text for the builder
54
+ */
55
+ this.helperText = '';
52
56
  this.mode = 'gui';
53
57
  this.codeValue = '';
54
58
  this.handleModeChange = (event) => {
@@ -150,7 +154,7 @@ export class LimeQueryResponseFormatBuilder {
150
154
  }
151
155
  render() {
152
156
  const guiSupported = this.checkGuiSupport();
153
- return (h("div", { key: '8b4116d9e6f1653ec429995647481b1df3df2712', class: "response-format-builder" }, this.label && h("h3", { key: 'd5e532a64f4e735b67b0533b4896165f7862561e', class: "builder-label" }, this.label), this.guiModeEnabled && (h("div", { key: '42af934f90de83855ff81306fe0bdb10c45fa808', class: "mode-controls" }, this.renderModeSwitch(guiSupported))), !this.guiModeEnabled || this.mode === 'code' ? (h("div", { class: "code-mode" }, this.renderCodeEditor(guiSupported))) : (h("div", { class: "gui-mode" }, this.renderGuiMode()))));
157
+ return (h("div", { key: '6bc723110dcd545534e93db64a0d6a14963b6bda', class: "response-format-builder" }, this.label && h("h1", { key: '405d373ccb5056af3c0e6201ef5ebf819a3b8154', class: "builder-label" }, this.label), this.helperText && (h("p", { key: '5fb07f0fcd9e57b7c358957afc13485156bd041f', class: "builder-helper-text" }, this.helperText)), this.guiModeEnabled && (h("div", { key: 'd2241f702cfe9e75077542d4d21acb038be0a348', class: "mode-controls" }, this.renderModeSwitch(guiSupported))), !this.guiModeEnabled || this.mode === 'code' ? (h("div", { class: "code-mode" }, this.renderCodeEditor(guiSupported))) : (h("div", { class: "gui-mode" }, this.renderGuiMode()))));
154
158
  }
155
159
  renderModeSwitch(support) {
156
160
  const guiDisabled = !support.guiSupported;
@@ -334,6 +338,26 @@ export class LimeQueryResponseFormatBuilder {
334
338
  "attribute": "label",
335
339
  "reflect": false,
336
340
  "defaultValue": "'Response Format'"
341
+ },
342
+ "helperText": {
343
+ "type": "string",
344
+ "mutable": false,
345
+ "complexType": {
346
+ "original": "string",
347
+ "resolved": "string",
348
+ "references": {}
349
+ },
350
+ "required": false,
351
+ "optional": false,
352
+ "docs": {
353
+ "tags": [],
354
+ "text": "Optional helper text for the builder"
355
+ },
356
+ "getter": false,
357
+ "setter": false,
358
+ "attribute": "helper-text",
359
+ "reflect": false,
360
+ "defaultValue": "''"
337
361
  }
338
362
  };
339
363
  }
@@ -78,7 +78,7 @@ export class LimetypeField {
78
78
  value: '',
79
79
  };
80
80
  options.unshift(emptyOption);
81
- return (h("limel-select", { key: '09ef43595a5822a77f246739fd51ab3c1aa145a5', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
81
+ return (h("limel-select", { key: 'a6df4090bd93b2fb9d3745b69fcd32a51ff3755b', label: this.label, options: options, value: selectedOption, required: this.required, helperText: this.helperText, invalid: invalid, disabled: this.disabled || this.readonly, onChange: this.handleChange }));
82
82
  }
83
83
  componentWillRender() {
84
84
  this.updatePropertyFields(this.value || '');
@@ -69,7 +69,7 @@ export class OrderByEditor {
69
69
  }
70
70
  }
71
71
  render() {
72
- return (h(Host, { key: '5ab38541c44c94b007ba24bee376ceb0836ffedd' }, this.renderEmptyState(), this.renderOrderByEditor()));
72
+ return (h(Host, { key: '601436a1a47be391bf4768d25ef7f8da911fc80d' }, this.renderEmptyState(), this.renderOrderByEditor()));
73
73
  }
74
74
  renderEmptyState() {
75
75
  if (this.limetype) {
@@ -38,9 +38,9 @@ export class OrderByItemComponent {
38
38
  render() {
39
39
  const propertyPath = Object.keys(this.item)[0] || '';
40
40
  const direction = this.item[propertyPath] || 'ASC';
41
- return (h(Host, { key: 'feb240a8e977c5ca24fa68db6cc01a6d747cb05c' }, h("limebb-property-selector", { key: '2244706344661dec4deb93c102eda68a0e555d26', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: '3475f7c72de7faae1fc7798a0aa99dfb917d1d6c', class: "control-buttons" }, h("limel-icon-button", { key: '6f25d070ad97059ef41f09de0e8d75b6da068141', icon: direction === 'ASC'
41
+ return (h(Host, { key: 'f247db1628dee076eb9c6e0a9ee1ca4db955dac9' }, h("limebb-property-selector", { key: 'cd34b69db11df021eea18b9b2832ef8cd65b8e59', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: propertyPath, required: true, onChange: this.handlePathChange }), h("div", { key: '95bfc38b5dd7836737e8b854829a8be7f5a5b878', class: "control-buttons" }, h("limel-icon-button", { key: 'ec9d11534a296546fc57c97188f7c8f95c456d02', icon: direction === 'ASC'
42
42
  ? 'sort_ascending'
43
- : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: '1c1b31fbea3263e9c75622afc59cf888949646e5', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
43
+ : 'sort_descending', label: direction === 'ASC' ? 'Ascending' : 'Descending', onClick: this.handleToggleDirection }), h("limel-icon-button", { key: 'd649b9545e51b86b4877354a7d5fa2521f82a645', icon: "trash", label: "Remove", onClick: this.handleRemove }))));
44
44
  }
45
45
  static get is() { return "limebb-lime-query-order-by-item"; }
46
46
  static get encapsulation() { return "shadow"; }
@@ -66,9 +66,9 @@ export class ResponseFormatItem {
66
66
  }
67
67
  render() {
68
68
  return [
69
- h("div", { key: 'a6750a148adab490c6efbf72d624ddaa754d10bf', class: "property-controls" }, h("div", { key: '3cd3301cbb708c34fb358956fe9063eac66e45d6', class: "property-path" }, h("limebb-property-selector", { key: '40a9353bd2af66f67d5a5e888984f57016d744ce', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange })), h("div", { key: '388d5a8dc7ad4b5b2fa4978e83edb4ddc1a0fd9f', class: "control-buttons" }, h("limel-icon-button", { key: 'caf92ced482bff1cd219d3348976956813dbad65', icon: this.getAliasIcon(), label: "Add alias", class: this.item.alias ? 'has-value' : '', onClick: this.toggleAliasInput }), h("limel-icon-button", { key: '5e5d8df90964c21659fd4327dec65e0b47e355bb', icon: this.getDescriptionIcon(), label: "Add description", class: this.item.description ? 'has-value' : '', onClick: this.toggleDescriptionInput }), h("limel-icon-button", { key: '34981b09d0d1e25b85b02c119da3d02e3f61fb5e', icon: "trash", label: "Remove property", onClick: this.handleRemove }))),
70
- this.showAliasInput && (h("div", { key: 'bf70d1c0ebc568d139d65a5e65c5c841c9164343', class: "alias" }, h("limel-input-field", { key: '7ea01e90e9ff071623cba25f9fa42ce9c19f91e3', label: "Alias", value: this.item.alias || '', placeholder: "Custom property name...", onChange: this.handleAliasChange, onBlur: this.handleAliasBlur }))),
71
- this.showDescriptionInput && (h("div", { key: '2b7c314d24fe24f17f6fc5108c49d1145cbeb869', class: "description" }, h("limel-input-field", { key: 'a71416a5af4fb99cd09155e9fc01a4efe489a551', label: "Description", value: this.item.description || '', placeholder: "Describe this property for AI...", onChange: this.handleDescriptionChange, onBlur: this.handleDescriptionBlur }))),
69
+ h("div", { key: 'f80b67734802324c50613070fd91fde35b1caaaa', class: "property-controls" }, h("div", { key: 'b481a96617ff29690329bff363ee408c42b746d7', class: "property-path" }, h("limebb-property-selector", { key: 'a936e9586348b27250e3b0404eefb0ee5f5a675e', platform: this.platform, context: this.context, limetype: this.limetype, label: "Property", value: this.item.path, required: true, onChange: this.handlePathChange })), h("div", { key: '058b8ade00d076764327fbd85e968fbc9b96cb23', class: "control-buttons" }, h("limel-icon-button", { key: '85614c39df85b3957aac7a31c2fcbb181cf1c351', icon: this.getAliasIcon(), label: "Add alias", class: this.item.alias ? 'has-value' : '', onClick: this.toggleAliasInput }), h("limel-icon-button", { key: 'e09875fdef378d3a4141ba1b428d6239c691dc9f', icon: this.getDescriptionIcon(), label: "Add description", class: this.item.description ? 'has-value' : '', onClick: this.toggleDescriptionInput }), h("limel-icon-button", { key: '5bced548d2cf53d5097d3b6e84a2440d1bb84b11', icon: "trash", label: "Remove property", onClick: this.handleRemove }))),
70
+ this.showAliasInput && (h("div", { key: '052d6e7f01089914a1b9e79e06cb04b1510c79c2', class: "alias" }, h("limel-input-field", { key: '381874f03fdabcedbe07eaf23dd1c31541c42cf4', label: "Alias", value: this.item.alias || '', placeholder: "Custom property name...", onChange: this.handleAliasChange, onBlur: this.handleAliasBlur }))),
71
+ this.showDescriptionInput && (h("div", { key: '083508a61dadb201526b197f60b691bbea7b50df', class: "description" }, h("limel-input-field", { key: 'bd718e98091d4776394365aa7175d61d11856a9f', label: "Description", value: this.item.description || '', placeholder: "Describe this property for AI...", onChange: this.handleDescriptionChange, onBlur: this.handleDescriptionBlur }))),
72
72
  ];
73
73
  }
74
74
  getAliasIcon() {
@@ -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
+ }
@@ -5,8 +5,8 @@ import { h } from "@stencil/core";
5
5
  export class LiveDocsInfo {
6
6
  render() {
7
7
  return [
8
- h("div", { key: '12193a8411806e8876272bed1cdef6de05f8cac3', class: "header" }, h("limel-icon", { key: '4b257f56f6b6969dde29abbe64b1aff5e26832fc', name: "not_showing_video_frames" }), h("h2", { key: '25fa656c792f9b7fbc056c790744f3007318d4cc' }, "Viewing this file type requires ", h("em", { key: '4d5bac586c89134e0f1e0d1265edb61635f7f72a' }, "Live Docs"))),
9
- h("p", { key: '89b29d2a8eeab56b99bacea967b2ff775df13deb' }, h("em", { key: '9b25a2d8b24acf0f8b52993267e1839a195dea10' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'f043f87759fb33843c51ce9482e4a69ec2704c4f', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
8
+ h("div", { key: '849694495956b6afbdfeac8aa7de680e1ab03450', class: "header" }, h("limel-icon", { key: '84117fdfff949d6b41b9ec3f2b3ec73f21e5be7b', name: "not_showing_video_frames" }), h("h2", { key: '90f1738815699808c6353707b4f366d8a2c661ac' }, "Viewing this file type requires ", h("em", { key: 'ef09921e893851f06b756e1e2777847a7e4bd563' }, "Live Docs"))),
9
+ h("p", { key: 'a835a0e1cabd84d7509167b3331878807b083130' }, h("em", { key: '3f9ce9e473f33b89adfeb3b143e46cabb6feb1d4' }, "Live Docs"), " not only enables you to view many file formats such as Microsoft Office documents, but it also empowers you to edit them right in the CRM. No need to download anything on your device!", h("a", { key: 'f3e683b041ddd66e6f23514d9bb5f3faf80f4c3a', target: "_blank", href: "https://www.lime-technologies.com/en/lime-crm/live-docs/" }, "Learn more")),
10
10
  ];
11
11
  }
12
12
  static get is() { return "limebb-live-docs-info"; }
@@ -53,7 +53,7 @@ export class LocalePicker {
53
53
  const value = this.value;
54
54
  selectedOptions = options.find((option) => option.value === value);
55
55
  }
56
- return (h("limel-select", { key: 'cd7807aedacf781540686dd8de210188fdd72ea3', value: selectedOptions, options: sortBy(options, 'text'), helperText: this.helperText, label: this.label, required: this.required, disabled: this.disabled, readonly: this.readonly, onChange: this.handleChange, multiple: this.multipleChoice }));
56
+ return (h("limel-select", { key: '5b3491e9dd6725186c4a2795e7893de43457e147', value: selectedOptions, options: sortBy(options, 'text'), helperText: this.helperText, label: this.label, required: this.required, disabled: this.disabled, readonly: this.readonly, onChange: this.handleChange, multiple: this.multipleChoice }));
57
57
  }
58
58
  static get is() { return "limebb-locale-picker"; }
59
59
  static get encapsulation() { return "shadow"; }
@@ -56,7 +56,7 @@ export class NotificationListItem {
56
56
  }
57
57
  render() {
58
58
  var _a, _b;
59
- return (h(Host, { key: '2af5e4522c278bd3317a8baf7d59295767fc4fa8', id: this.item.id, class: {
59
+ return (h(Host, { key: '39801fd8e10f1dc228741df48561cad3c59d81d7', id: this.item.id, class: {
60
60
  'is-clickable': this.isItemClickable(),
61
61
  'is-read': !!((_a = this.item) === null || _a === void 0 ? void 0 : _a.read),
62
62
  'is-selected': !!((_b = this.item) === null || _b === void 0 ? void 0 : _b.selected),
@@ -91,11 +91,11 @@ export class PercentageVisualizer {
91
91
  render() {
92
92
  const normalizedValue = this.getNormalizedValue();
93
93
  const zeroPoint = this.getZeroPointPosition();
94
- return (h(Host, { key: '3badab611790cec4fc5deb1f6efd2ab63ce07503', class: this.getContainerClassList(), style: {
94
+ return (h(Host, { key: '069ab0188df35e32bca3fe7c000d2c5c874012a5', class: this.getContainerClassList(), style: {
95
95
  '--limebb-percentage-visualizer-zero-point-position': `${zeroPoint}%`,
96
96
  '--limebb-percentage-visualizer-width': `${Math.abs(normalizedValue)}%`,
97
97
  '--limebb-percentage-visualizer-rotate': `${normalizedValue >= 0 ? '0deg' : '180deg'}`,
98
- } }, h("limel-notched-outline", { key: 'e4a70309a7bfac50e9ff5b0d2d043014c059c734', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: 'b5071a3b2f649ced3636ef3deb532fd004092019', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
98
+ } }, h("limel-notched-outline", { key: 'f6e544a1859f3166ee540435c687415bbfd5de1d', tabIndex: 0, role: "meter", "aria-valuemin": this.rangeMin, "aria-valuemax": this.rangeMax, "aria-valuenow": this.numValue, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-controls": this.helperTextId }, h("div", { key: '348f345b2212b3da15c0e081385a5fee76317ebe', slot: "content" }, this.renderVisualization())), this.renderHelperLine()));
99
99
  }
100
100
  renderVisualization() {
101
101
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -118,14 +118,14 @@ export class SummaryPopover {
118
118
  top: '0.125rem',
119
119
  right: '0.125rem',
120
120
  };
121
- return (h("limel-popover", { key: '804f40009efde10a2044df35aa7be03743925a85', style: {
121
+ return (h("limel-popover", { key: '1681bf3578fb29886f68070e3e07397d1e312dc1', style: {
122
122
  '--limebb-summary-popover-timeout': `${this.triggerDelay}ms`,
123
- }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '1cd360401352cecbdf2cbf8b19fba5e9e6d01373', slot: "trigger", tabIndex: 0, onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocus: this.openPopoverWithDelay }, h("slot", { key: 'e548a7fb224d0c5c6db98c3a88ef628011028d33', name: "trigger" }), h("div", { key: '60b74bd7fe1c1c08b2b89d8c7edfe35a7754c07d', class: "opening-countdown-indicator" })), h("limel-card", { key: '32fddd3a5f8f9bf42d91b306aa455ba87d42eeaa', style: {
123
+ }, open: this.isPopoverOpen, onClose: this.onPopoverClose, openDirection: this.openDirection }, h("div", { key: '1e2daa75c518f4949a7ca6fdd0ff29bc1a6d529e', slot: "trigger", tabIndex: 0, onMouseEnter: this.openPopoverWithDelay, onMouseLeave: this.resetTimeout, onFocus: this.openPopoverWithDelay }, h("slot", { key: '9d1a9b69db8ac1c4cfddd62fb9949c98700e61b7', name: "trigger" }), h("div", { key: '95fcc70f46106c426ae191b6a8d66c7d7a025ca9', class: "opening-countdown-indicator" })), h("limel-card", { key: '9294ae443aa9f279c3c01f0af48ca6a2d0d1409f', style: {
124
124
  'max-width': this.popoverMaxWidth,
125
125
  'max-height': this.popoverMaxHeight,
126
126
  'min-width': '7rem',
127
127
  'min-height': '3rem',
128
- }, orientation: "landscape", heading: this.heading, subheading: this.subheading, icon: this.icon, value: this.value, image: this.image, actions: this.actions, onActionSelected: this.handleSelected }, h("limebb-navigation-button", { key: 'f491b051f7e2a7d0fe6981e7ae7b9e7add9eab0e', slot: "component", type: "close", style: closeButtonStyle, tooltipLabel: "Close", tooltipHelperLabel: "Esc", onClick: this.handleCloseClick }))));
128
+ }, orientation: "landscape", heading: this.heading, subheading: this.subheading, icon: this.icon, value: this.value, image: this.image, actions: this.actions, onActionSelected: this.handleSelected }, h("limebb-navigation-button", { key: 'b26fecf7c748fcd82fea453ece55189bcd1302ef', slot: "component", type: "close", style: closeButtonStyle, tooltipLabel: "Close", tooltipHelperLabel: "Esc", onClick: this.handleCloseClick }))));
129
129
  }
130
130
  static get is() { return "limebb-summary-popover"; }
131
131
  static get encapsulation() { return "shadow"; }
@@ -13,8 +13,8 @@ export class MentionGroupCounter {
13
13
  render() {
14
14
  const label = this.getLabel();
15
15
  return [
16
- h("span", { key: 'b2955eb6da4189788bab7f5bc19e78654f92def6', id: this.tooltipId }, label),
17
- h("limel-tooltip", { key: 'f0ffd52237ffa981067b36859552142770ebcebe', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
16
+ h("span", { key: 'dcd5792c82409e75e149e263fc7b4864e195a387', id: this.tooltipId }, label),
17
+ h("limel-tooltip", { key: '2c17e50ac616348df3a98da324b6538891cff75c', elementId: this.tooltipId, label: label, helperLabel: this.helperLabel }),
18
18
  ];
19
19
  }
20
20
  getLabel() {
@@ -389,7 +389,7 @@ export class LimeBBTextEditor {
389
389
  }
390
390
  render() {
391
391
  return [
392
- h("limel-text-editor", { key: '62d54c8801141f2f2604ddd471c8d07a2ef6e3df', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
392
+ h("limel-text-editor", { key: '277ec61f05d5edff319ed8bb37df9bc385cb3941', ref: (el) => (this.textEditor = el), tabindex: this.disabled ? -1 : 0, value: this.value, contentType: this.contentType, customElements: this.registeredCustomElements, "aria-disabled": this.disabled, language: this.language, triggers: this.registeredTriggers, onTriggerStart: this.handleTriggerStart, onTriggerStop: this.handleTriggerStop, onTriggerChange: this.handleTriggerChange, onImagePasted: this.handleImagePasted, onMetadataChange: this.handleMetadataChange, ui: this.ui, allowResize: this.allowResize, required: this.required, disabled: this.disabled, readonly: this.readonly, helperText: this.helperText, placeholder: this.placeholder, label: this.label, invalid: this.invalid }),
393
393
  this.renderPicker(),
394
394
  ];
395
395
  }
@@ -52,7 +52,7 @@ export class TrendIndicator {
52
52
  this.numValue = this.parseValue(this.value);
53
53
  }
54
54
  render() {
55
- return (h(Host, { key: '80d161871c2e6749f5f5d8d4ebd9b7aa73303f9e', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '0ef73c3ba0aefc87b5e7e47010ef12c5b2edfe76', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: 'cdc9fec8509df26aa830585e9019034fdb5f87c8', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
55
+ return (h(Host, { key: '8c503e1a099f65fe29e2ef1903f78ddf62f815d9', class: this.getContainerClassList() }, h("limel-notched-outline", { key: '76d8b456dec89cea949ae427091256dffc1e71ab', id: this.tooltipId, label: this.label, labelId: this.labelId, invalid: this.invalid, required: this.required, hasValue: true, hasFloatingLabel: true, "aria-labelledby": this.labelId, "aria-describedby": this.helperTextId, "aria-controls": this.helperTextId }, h("div", { key: 'e295b50dcc7a3d4cb017f7d1ca5dd187bf52299c', slot: "content", tabIndex: 0 }, this.renderVisualization())), this.renderHelperLine(), this.renderTooltip()));
56
56
  }
57
57
  renderVisualization() {
58
58
  if (this.reducePresence && (this.numValue === 0 || !this.hasValue())) {
@@ -110,7 +110,7 @@ const LimeQueryFilterComparisonComponent = /*@__PURE__*/ proxyCustomElement(clas
110
110
  };
111
111
  }
112
112
  render() {
113
- return (h(Host, { key: '30808c3787ee21466a615e94224062a7a51f408a' }, this.renderHeader(), h("div", { key: 'ba05f0fb17a7e49d1a8e0089d2a2b918c75be39b', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: 'a995527a8d9a5ccb97a6c0f41dc753cc68fa89fc', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
113
+ return (h(Host, { key: '6cb567108d3744ca5ab5973c41d679efa024841a' }, this.renderHeader(), h("div", { key: '16f318ec2ede96a39da5d0aef7206beee43d9176', class: "expression-container" }, this.renderPropertySelector(), this.renderOperator(), this.renderValueInput(), h("limel-icon-button", { key: '4de069d1509b3e3a378c882714dccd0d8c9c6dfb', class: "remove", icon: "trash", label: "Remove condition", onClick: this.removeExpression }))));
114
114
  }
115
115
  renderHeader() {
116
116
  if (!this.label) {
@@ -148,7 +148,7 @@ const LimeQueryFilterNotComponent = /*@__PURE__*/ proxyCustomElement(class LimeQ
148
148
  };
149
149
  }
150
150
  render() {
151
- return (h("div", { key: 'e64fdcf00f6e88a27341e519f4b86542d3009bf5', class: "expression" }, this.label && h("limel-header", { key: '9b6a2d7f472337b314beb7cec481f9850e6320a0', heading: this.label }), h("limebb-lime-query-filter-expression", { key: 'd8d1b50f2b03b5c239d3f9690a2e9efd683182b1', platform: this.platform, context: this.context, label: "Not", limetype: this.limetype, activeLimetype: this.activeLimetype, expression: this.expression.exp, onExpressionChange: this.handleExpressionChange })));
151
+ return (h("div", { key: '8f234a17a56f899640f503dcc58e6ef7d8e6a998', class: "expression" }, this.label && h("limel-header", { key: '1e71be2c56690aa3c603c88028860093b54a2a84', heading: this.label }), h("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 })));
152
152
  }
153
153
  static get style() { return LimebbLimeQueryFilterNotStyle0; }
154
154
  }, [1, "limebb-lime-query-filter-not", {
@@ -253,9 +253,9 @@ const LimeQueryFilterGroupComponent = /*@__PURE__*/ proxyCustomElement(class Lim
253
253
  (this.expression.op === Zt.AND ? 'and' : 'or')) || this.options[0];
254
254
  }
255
255
  render() {
256
- return (h(Host, { key: 'dee472bac75f4b3138fa5972de258a3737b1f66d', style: {
256
+ return (h(Host, { key: '324805229eab509d12b6d41a99a54c1a4d8560a1', style: {
257
257
  '--limebb-lime-query-filter-group-operator': `"${this.expression.op === Zt.AND ? 'AND' : 'OR'}"`,
258
- } }, h("div", { key: 'de3956a999557730304c70e9f7305c8e338bffb2', class: "expression" }, this.renderHeader(), h("ul", { key: 'f87552df1d0d138bb0284f9f3546611017eb847a' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
258
+ } }, h("div", { key: '948dda71aac51cbfd8b93bc657a79c00a6bd6f68', class: "expression" }, this.renderHeader(), h("ul", { key: 'b1dbce8f4f20f72e00567d431eed0fe5900f4fbf' }, this.expression.exp.map(this.renderChildExpression), this.renderAddButton()), this.renderAddGroupButton())));
259
259
  }
260
260
  renderHeader() {
261
261
  const subheading = this.getSubheading();