@aquera/nile-elements 0.1.34-beta-1.2 → 0.1.35-beta-1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (30) hide show
  1. package/README.md +2 -0
  2. package/demo/index.html +1 -1
  3. package/dist/nile-code-editor/nile-code-editor.cjs.js +1 -1
  4. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  5. package/dist/nile-code-editor/nile-code-editor.esm.js +2 -2
  6. package/dist/nile-tooltip/nile-tooltip-utils.cjs.js +1 -1
  7. package/dist/nile-tooltip/nile-tooltip-utils.cjs.js.map +1 -1
  8. package/dist/nile-tooltip/nile-tooltip-utils.esm.js +1 -1
  9. package/dist/nile-tooltip/nile-tooltip.cjs.js +1 -1
  10. package/dist/nile-tooltip/nile-tooltip.cjs.js.map +1 -1
  11. package/dist/nile-tooltip/nile-tooltip.esm.js +2 -2
  12. package/dist/nile-tooltip/nile-tooltip.test.cjs.js +1 -1
  13. package/dist/nile-tooltip/nile-tooltip.test.cjs.js.map +1 -1
  14. package/dist/nile-tooltip/nile-tooltip.test.esm.js +2 -2
  15. package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -0
  16. package/dist/src/nile-code-editor/nile-code-editor.js +5 -1
  17. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  18. package/dist/src/nile-tooltip/nile-tooltip-utils.js +40 -12
  19. package/dist/src/nile-tooltip/nile-tooltip-utils.js.map +1 -1
  20. package/dist/src/nile-tooltip/nile-tooltip.js +60 -4
  21. package/dist/src/nile-tooltip/nile-tooltip.js.map +1 -1
  22. package/dist/src/nile-tooltip/nile-tooltip.test.js +2 -2
  23. package/dist/src/nile-tooltip/nile-tooltip.test.js.map +1 -1
  24. package/dist/tsconfig.tsbuildinfo +1 -1
  25. package/package.json +1 -1
  26. package/src/nile-code-editor/nile-code-editor.ts +4 -2
  27. package/src/nile-tooltip/nile-tooltip-utils.ts +91 -60
  28. package/src/nile-tooltip/nile-tooltip.test.ts +2 -2
  29. package/src/nile-tooltip/nile-tooltip.ts +91 -6
  30. package/vscode-html-custom-data.json +7 -2
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "description": "Webcomponent nile-elements following open-wc recommendations",
4
4
  "license": "MIT",
5
5
  "author": "nile-elements",
6
- "version": "0.1.34-beta-1.2",
6
+ "version": "0.1.35-beta-1.0",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -98,6 +98,8 @@ export class NileCodeEditor extends NileElement {
98
98
 
99
99
  @property({ type: Number, reflect: true , attribute: true}) debounceTimeout: number = 200;
100
100
 
101
+ @property({ type: Boolean, reflect: true , attribute: true}) aboveCursor: boolean = false;
102
+
101
103
  public view: EditorView;
102
104
  public viewState:EditorState;
103
105
  private timeOut: any = null;
@@ -272,7 +274,7 @@ export class NileCodeEditor extends NileElement {
272
274
  customAutoCompletions,
273
275
  placeholderExtension,
274
276
  defaultSyntaxHighlightingExtension,
275
- autocompletion(),
277
+ autocompletion({aboveCursor: this.aboveCursor}),
276
278
  language,
277
279
  customThemeExtension,
278
280
  EditorView.updateListener.of((v: ViewUpdate) => {
@@ -568,4 +570,4 @@ function convertToSingleLine(code: string) {
568
570
  if (!code) return '';
569
571
  // Remove line breaks and unnecessary whitespace
570
572
  return code.replace(/\s+/g, ' ').trim();
571
- }
573
+ }
@@ -30,70 +30,91 @@ export function getValidTooltipPosition(
30
30
  top = triggerRect.top - tooltipRect.height - distance;
31
31
  left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
32
32
  break;
33
- case 'top-start': {
33
+ case 'top-start': {
34
34
  top = triggerRect.top - tooltipRect.height - distance;
35
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
36
- left = Math.max(triggerRect.left + skidding, centeredLeft);
37
- break;}
38
- case 'top-end': {
39
-
40
- top = triggerRect.top - tooltipRect.height - distance;
41
-
42
-
43
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
44
-
45
-
46
- const maxLeft = triggerRect.right - tooltipRect.width + skidding;
47
-
48
-
49
- left = Math.min(centeredLeft, maxLeft);
50
- break;
51
- }
52
-
35
+ const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
36
+ left = Math.max(triggerRect.left + skidding, centeredLeft);
37
+ break;
38
+ }
39
+ case 'top-end': {
40
+ top = triggerRect.top - tooltipRect.height - distance;
41
+ const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
42
+ const maxLeft = triggerRect.right - tooltipRect.width + skidding;
43
+ left = Math.min(centeredLeft, maxLeft);
44
+ break;
45
+ }
46
+
53
47
  case 'bottom':
54
48
  top = triggerRect.bottom + distance;
55
49
  left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
56
50
  break;
57
- case 'bottom-start': {
58
- top = triggerRect.bottom + distance;
59
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
60
- left = Math.max(triggerRect.left + skidding, centeredLeft);
61
-
62
- break;
63
- }
64
-
65
- case 'bottom-end': {
66
- top = triggerRect.bottom + distance;
67
- const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
68
- const maxLeft = triggerRect.right - tooltipRect.width + skidding;
69
- left = Math.min(centeredLeft, maxLeft);
70
- break;
71
- }
72
-
51
+ case 'bottom-start': {
52
+ top = triggerRect.bottom + distance;
53
+ const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
54
+ left = Math.max(triggerRect.left + skidding, centeredLeft);
55
+
56
+ break;
57
+ }
58
+
59
+ case 'bottom-end': {
60
+ top = triggerRect.bottom + distance;
61
+ const centeredLeft = triggerRect.left + (triggerRect.width / 2) - (tooltipRect.width / 2) + skidding;
62
+ const maxLeft = triggerRect.right - tooltipRect.width + skidding;
63
+ left = Math.min(centeredLeft, maxLeft);
64
+ break;
65
+ }
66
+
73
67
  case 'left':
74
68
  top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;
75
69
  left = triggerRect.left - tooltipRect.width - distance;
76
70
  break;
77
- case 'left-start':
78
- top = triggerRect.top + skidding;
71
+ case 'left-start': {
72
+ const triggerCenterY = triggerRect.top + triggerRect.height / 2;
73
+ top = triggerCenterY - tooltipRect.height / 2;
79
74
  left = triggerRect.left - tooltipRect.width - distance;
75
+ if (top < triggerRect.top) {
76
+ top = triggerRect.top;
77
+ }
80
78
  break;
81
- case 'left-end':
82
- top = triggerRect.bottom - tooltipRect.height + skidding;
79
+ }
80
+
81
+ case 'left-end': {
82
+ const triggerCenterY = triggerRect.top + triggerRect.height / 2;
83
+ top = triggerCenterY - tooltipRect.height / 2;
83
84
  left = triggerRect.left - tooltipRect.width - distance;
85
+ if (top + tooltipRect.height > triggerRect.bottom) {
86
+ top = triggerRect.bottom - tooltipRect.height;
87
+ }
88
+
84
89
  break;
90
+ }
91
+
85
92
  case 'right':
86
93
  top = triggerRect.top + (triggerRect.height - tooltipRect.height) / 2 + skidding;
87
94
  left = triggerRect.right + distance;
88
95
  break;
89
- case 'right-start':
90
- top = triggerRect.top + skidding;
96
+ case 'right-start': {
97
+ const triggerCenterY = triggerRect.top + triggerRect.height / 2;
98
+ top = triggerCenterY - tooltipRect.height / 2;
91
99
  left = triggerRect.right + distance;
100
+ if (top < triggerRect.top) {
101
+ top = triggerRect.top;
102
+ }
103
+
92
104
  break;
93
- case 'right-end':
94
- top = triggerRect.bottom - tooltipRect.height + skidding;
105
+ }
106
+
107
+ case 'right-end': {
108
+ const triggerCenterY = triggerRect.top + triggerRect.height / 2;
109
+ top = triggerCenterY - tooltipRect.height / 2;
95
110
  left = triggerRect.right + distance;
111
+ if (top + tooltipRect.height > triggerRect.bottom) {
112
+ top = triggerRect.bottom - tooltipRect.height;
113
+ }
114
+
96
115
  break;
116
+ }
117
+
97
118
  default:
98
119
  top = triggerRect.top - tooltipRect.height - distance;
99
120
  left = triggerRect.left + (triggerRect.width - tooltipRect.width) / 2 + skidding;
@@ -189,18 +210,18 @@ export function getCaretPosition({
189
210
  let caretTop = 0;
190
211
 
191
212
  switch (primaryPlacement) {
192
- case 'top':
193
- caretTop = tooltipRect.height - caretSize;
194
- caretLeft = triggerCenterX - left - caretSize;
195
- if (placement === 'top-end') {
196
- caretLeft = triggerCenterX - left - caretSize;
197
- } else if (secondaryPlacement === 'start') {
198
- caretLeft = triggerCenterX - left - caretSize;
199
- } else if (secondaryPlacement === 'end') {
200
- caretLeft = tooltipRect.width - 2 * caretSize + 8;
201
- }
202
- caretLeft = Math.max(caretSize, Math.min(caretLeft, tooltipRect.width - 2 * caretSize));
203
- break;
213
+ case 'top':
214
+ caretTop = tooltipRect.height - caretSize;
215
+ caretLeft = triggerCenterX - left - caretSize;
216
+ if (placement === 'top-end') {
217
+ caretLeft = triggerCenterX - left - caretSize;
218
+ } else if (secondaryPlacement === 'start') {
219
+ caretLeft = triggerCenterX - left - caretSize;
220
+ } else if (secondaryPlacement === 'end') {
221
+ caretLeft = tooltipRect.width - 2 * caretSize + 8;
222
+ }
223
+ caretLeft = Math.max(caretSize, Math.min(caretLeft, tooltipRect.width - 2 * caretSize));
224
+ break;
204
225
 
205
226
  case 'bottom':
206
227
  caretTop = -caretSize;
@@ -210,31 +231,41 @@ export function getCaretPosition({
210
231
  case 'left':
211
232
  caretLeft = tooltipRect.width - caretSize;
212
233
  if (secondaryPlacement === 'start') {
213
- caretTop = triggerRect.height / 2 - caretSize;
234
+ const computedCaretTop = triggerCenterY - top - caretSize;
235
+ const minCaretTop = triggerRect.top - top;
236
+ caretTop = Math.max(computedCaretTop, minCaretTop);
214
237
  } else if (secondaryPlacement === 'end') {
215
- caretTop = tooltipRect.height - triggerRect.height / 2 - caretSize;
238
+ const computedCaretTop = triggerCenterY - top - caretSize;
239
+ const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;
240
+ caretTop = Math.min(computedCaretTop, maxCaretTop);
216
241
  } else {
217
242
  caretTop = triggerCenterY - top - caretSize;
218
243
  }
219
244
  caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));
220
245
  break;
221
246
 
247
+
222
248
  case 'right':
223
249
  caretLeft = -caretSize;
224
250
  if (secondaryPlacement === 'start') {
225
- caretTop = triggerRect.height / 2 - caretSize;
251
+ const computedCaretTop = triggerCenterY - top - caretSize;
252
+ const minCaretTop = triggerRect.top - top;
253
+ caretTop = Math.max(computedCaretTop, minCaretTop);
226
254
  } else if (secondaryPlacement === 'end') {
227
- caretTop = tooltipRect.height - triggerRect.height / 2 - caretSize;
255
+ const computedCaretTop = triggerCenterY - top - caretSize;
256
+ const maxCaretTop = triggerRect.bottom - top - 2 * caretSize;
257
+ caretTop = Math.min(computedCaretTop, maxCaretTop);
228
258
  } else {
229
259
  caretTop = triggerCenterY - top - caretSize;
230
260
  }
231
261
  caretTop = Math.max(caretSize, Math.min(caretTop, tooltipRect.height - 2 * caretSize));
232
262
  break;
233
263
 
264
+
234
265
  default:
235
266
  caretLeft = tooltipRect.width / 2 - caretSize;
236
267
  caretTop = tooltipRect.height / 2 - caretSize;
237
268
  }
238
269
 
239
270
  return { caretLeft, caretTop };
240
- }
271
+ }
@@ -7,7 +7,7 @@ describe('NileTooltip', () => {
7
7
  it('renders with default properties', async () => {
8
8
  const el = await fixture<NileTooltip>(html`<nile-tooltip content="Hello"><button>Hover me</button></nile-tooltip>`);
9
9
  assert.equal(el.content, 'Hello');
10
- assert.equal(el.placement, 'bottom');
10
+ assert.equal(el.placement, 'top');
11
11
  assert.equal(el.disabled, false);
12
12
  assert.equal(el.open, false);
13
13
  });
@@ -133,7 +133,7 @@ describe('NileTooltip', () => {
133
133
  </nile-tooltip>
134
134
  `);
135
135
  await el.updateComplete;
136
- assert.equal(el.placement, 'bottom');
136
+ assert.equal(el.placement, 'top');
137
137
  });
138
138
 
139
139
 
@@ -1,3 +1,4 @@
1
+
1
2
  /**
2
3
  * Copyright Aquera Inc 2023
3
4
  *
@@ -33,7 +34,7 @@ export class NileTooltip extends NileElement {
33
34
  | 'bottom-end'
34
35
  | 'left'
35
36
  | 'left-start'
36
- | 'left-end' = 'bottom';
37
+ | 'left-end' = 'top';
37
38
  @property({ type: Boolean, reflect: true }) disabled = false;
38
39
  @property({ type: Boolean, reflect: true }) open = false;
39
40
  /**
@@ -81,11 +82,11 @@ export class NileTooltip extends NileElement {
81
82
 
82
83
  if (!validPlacements.includes(this.placement)) {
83
84
  console.warn(`[nile-tooltip] Invalid placement "${this.placement}", defaulting to "bottom".`);
84
- this.placement = 'bottom';
85
+ this.placement = 'top';
85
86
  }
86
87
 
87
88
  if (!validPlacements.includes(this.originalPlacement)) {
88
- this.originalPlacement = 'bottom';
89
+ this.originalPlacement = 'top';
89
90
  }
90
91
 
91
92
  if (changedProps.has('open') && this.open) {
@@ -132,7 +133,9 @@ export class NileTooltip extends NileElement {
132
133
  viewportHeight
133
134
  );
134
135
 
135
-
136
+ // FallBack Positions
137
+
138
+ // Bottom
136
139
  if (this.originalPlacement.startsWith('bottom')) {
137
140
  const availableSpaceBelow = viewportHeight - triggerRect.bottom;
138
141
  if (availableSpaceBelow < tooltipRect.height + this.distance) {
@@ -158,6 +161,89 @@ export class NileTooltip extends NileElement {
158
161
  placement = newPosition.placement;
159
162
  }
160
163
  }
164
+ // Top
165
+ if (this.originalPlacement.startsWith('top')) {
166
+ const availableSpaceAbove = triggerRect.top;
167
+ const availableSpaceBelow = viewportHeight - triggerRect.bottom;
168
+ if (availableSpaceAbove < tooltipRect.height + this.distance && availableSpaceBelow >= tooltipRect.height + this.distance) {
169
+ let newPlacement: typeof this.originalPlacement = 'bottom';
170
+ if (this.originalPlacement === 'top-start') {
171
+ newPlacement = 'bottom-start';
172
+ } else if (this.originalPlacement === 'top-end') {
173
+ newPlacement = 'bottom-end';
174
+ }
175
+
176
+ const newPosition = getValidTooltipPosition(
177
+ triggerRect,
178
+ tooltipRect,
179
+ newPlacement,
180
+ this.distance,
181
+ this.skidding,
182
+ this.caretSize,
183
+ viewportWidth,
184
+ viewportHeight
185
+ );
186
+ top = newPosition.top;
187
+ left = newPosition.left;
188
+ placement = newPosition.placement;
189
+ }
190
+ }
191
+
192
+ // Left
193
+ if (this.originalPlacement.startsWith('left')) {
194
+ const availableSpaceLeft = triggerRect.left;
195
+ const availableSpaceRight = viewportWidth - triggerRect.right;
196
+ if (availableSpaceLeft < tooltipRect.width + this.distance && availableSpaceRight >= tooltipRect.width + this.distance) {
197
+ let newPlacement: typeof this.originalPlacement = 'right';
198
+ if (this.originalPlacement === 'left-start') {
199
+ newPlacement = 'right-start';
200
+ } else if (this.originalPlacement === 'left-end') {
201
+ newPlacement = 'right-end';
202
+ }
203
+
204
+ const newPosition = getValidTooltipPosition(
205
+ triggerRect,
206
+ tooltipRect,
207
+ newPlacement,
208
+ this.distance,
209
+ this.skidding,
210
+ this.caretSize,
211
+ viewportWidth,
212
+ viewportHeight
213
+ );
214
+ top = newPosition.top;
215
+ left = newPosition.left;
216
+ placement = newPosition.placement;
217
+ }
218
+ }
219
+
220
+ // Right
221
+ if (this.originalPlacement.startsWith('right')) {
222
+ const availableSpaceRight = viewportWidth - triggerRect.right;
223
+ const availableSpaceLeft = triggerRect.left;
224
+ if (availableSpaceRight < tooltipRect.width + this.distance && availableSpaceLeft >= tooltipRect.width + this.distance) {
225
+ let newPlacement: typeof this.originalPlacement = 'left';
226
+ if (this.originalPlacement === 'right-start') {
227
+ newPlacement = 'left-start';
228
+ } else if (this.originalPlacement === 'right-end') {
229
+ newPlacement = 'left-end';
230
+ }
231
+
232
+ const newPosition = getValidTooltipPosition(
233
+ triggerRect,
234
+ tooltipRect,
235
+ newPlacement,
236
+ this.distance,
237
+ this.skidding,
238
+ this.caretSize,
239
+ viewportWidth,
240
+ viewportHeight
241
+ );
242
+ top = newPosition.top;
243
+ left = newPosition.left;
244
+ placement = newPosition.placement;
245
+ }
246
+ }
161
247
 
162
248
  this.setAttribute('placement', placement);
163
249
  this.tooltip.style.top = `${top}px`;
@@ -263,7 +349,7 @@ export class NileTooltip extends NileElement {
263
349
  @focusout=${this.handleBlur}
264
350
  aria-describedby="tooltip"
265
351
  >
266
- <slot></slot>
352
+ <slot></slot>
267
353
  </div>
268
354
  `;
269
355
  }
@@ -274,4 +360,3 @@ declare global {
274
360
  'nile-tooltip': NileTooltip;
275
361
  }
276
362
  }
277
-
@@ -818,7 +818,7 @@
818
818
  },
819
819
  {
820
820
  "name": "nile-code-editor",
821
- "description": "Nile icon component.\n\nEvents:\n\n * `nile-focus` {`Event`} - \n\n * `nile-blur` {`Event`} - \n\nAttributes:\n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `error-message` {`string`} - \n\n * `error` {`boolean`} - \n\n * `enableSearch` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `enableFoldGutters` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\nProperties:\n\n * `codeEditor` {`HTMLInputElement`} - \n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `errorMessage` {`string`} - \n\n * `error` {`boolean`} - \n\n * `enableSearch` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `enableFoldGutters` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `disableSyntaxHighlighting` {`boolean`} - \n\n * `customThemeCSS` {`object | null`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\n * `view` - \n\n * `viewState` - \n\n * `timeOut` - \n\n * `lineNumbersComp` - \n\n * `restrictSingleLineComp` - \n\n * `readOnlyComp` - \n\n * `customCompletionComp` - \n\n * `placeholderComp` - \n\n * `defaultSyntaxHighlightingComp` - \n\n * `themeComp` - \n\n * `customAutocomplete` - Custom autocomplete handler for code editor suggestions\n\n * `insertBetweenCode` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
821
+ "description": "Nile icon component.\n\nEvents:\n\n * `nile-focus` {`Event`} - \n\n * `nile-blur` {`Event`} - \n\nAttributes:\n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `error-message` {`string`} - \n\n * `error` {`boolean`} - \n\n * `enableSearch` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `enableFoldGutters` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\n * `aboveCursor` {`boolean`} - \n\nProperties:\n\n * `codeEditor` {`HTMLInputElement`} - \n\n * `value` {`string`} - \n\n * `expandIcon` {`string`} - \n\n * `placeholder` {`string`} - \n\n * `customAutoCompletions` - \n\n * `customCompletionsPaths` {`string[]`} - \n\n * `language` {`\"html\" | \"javascript\" | \"sql\" | \"json\"`} - \n\n * `errorMessage` {`string`} - \n\n * `error` {`boolean`} - \n\n * `enableSearch` {`boolean`} - \n\n * `noborder` {`boolean`} - \n\n * `multiline` {`boolean`} - \n\n * `enableFoldGutters` {`boolean`} - \n\n * `allowVariableInCustomSuggestion` {`boolean`} - \n\n * `lineNumbers` {`boolean`} - \n\n * `disableSyntaxHighlighting` {`boolean`} - \n\n * `customThemeCSS` {`object | null`} - \n\n * `lineNumbersMultiline` {`boolean`} - \n\n * `hasScroller` {`boolean`} - \n\n * `expandable` {`boolean`} - \n\n * `readonly` {`boolean`} - \n\n * `debounce` {`boolean`} - \n\n * `debounceTimeout` {`number`} - \n\n * `aboveCursor` {`boolean`} - \n\n * `view` - \n\n * `viewState` - \n\n * `timeOut` - \n\n * `lineNumbersComp` - \n\n * `restrictSingleLineComp` - \n\n * `readOnlyComp` - \n\n * `customCompletionComp` - \n\n * `placeholderComp` - \n\n * `defaultSyntaxHighlightingComp` - \n\n * `themeComp` - \n\n * `customAutocomplete` - Custom autocomplete handler for code editor suggestions\n\n * `insertBetweenCode` - \n\n * `BUBBLES` {`boolean`} - \n\n * `COMPOSED` {`boolean`} - \n\n * `CANCELABLE` {`boolean`} - ",
822
822
  "attributes": [
823
823
  {
824
824
  "name": "value",
@@ -926,6 +926,11 @@
926
926
  "name": "debounceTimeout",
927
927
  "description": "`debounceTimeout` {`number`} - \n\nProperty: debounceTimeout\n\nDefault: 200"
928
928
  },
929
+ {
930
+ "name": "aboveCursor",
931
+ "description": "`aboveCursor` {`boolean`} - \n\nProperty: aboveCursor\n\nDefault: false",
932
+ "valueSet": "v"
933
+ },
929
934
  {
930
935
  "name": "onnile-focus",
931
936
  "description": "`nile-focus` {`Event`} - "
@@ -3778,7 +3783,7 @@
3778
3783
  },
3779
3784
  {
3780
3785
  "name": "placement",
3781
- "description": "`placement` {`\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"`} - \n\nProperty: placement\n\nDefault: bottom",
3786
+ "description": "`placement` {`\"top\" | \"top-start\" | \"top-end\" | \"right\" | \"right-start\" | \"right-end\" | \"bottom\" | \"bottom-start\" | \"bottom-end\" | \"left\" | \"left-start\" | \"left-end\"`} - \n\nProperty: placement\n\nDefault: top",
3782
3787
  "values": [
3783
3788
  {
3784
3789
  "name": "top"