@aquera/nile-elements 0.1.52-beta-1.2 → 0.1.52-beta-1.5

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 (168) hide show
  1. package/README.md +2 -3
  2. package/demo/index.html +33 -150
  3. package/dist/index.cjs.js +1 -1
  4. package/dist/index.esm.js +1 -1
  5. package/dist/index.js +639 -1385
  6. package/dist/internal/form.cjs.js +1 -1
  7. package/dist/internal/form.cjs.js.map +1 -1
  8. package/dist/internal/form.esm.js +1 -1
  9. package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
  10. package/dist/nile-auto-complete/index.cjs.js +1 -1
  11. package/dist/nile-auto-complete/index.esm.js +1 -1
  12. package/dist/nile-auto-complete/nile-auto-complete.cjs.js +17 -1
  13. package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
  14. package/dist/nile-auto-complete/nile-auto-complete.esm.js +29 -8
  15. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
  16. package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
  17. package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
  18. package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
  19. package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
  20. package/dist/nile-button/nile-button.test.cjs.js +1 -1
  21. package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
  22. package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
  23. package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
  24. package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
  25. package/dist/nile-card/nile-card.test.cjs.js +1 -1
  26. package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
  27. package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
  28. package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
  29. package/dist/nile-chip/nile-chip.test.esm.js +1 -1
  30. package/dist/nile-code-editor/extensionSetup.cjs.js +5 -5
  31. package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
  32. package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
  33. package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
  34. package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
  35. package/dist/nile-code-editor/nile-code-editor.esm.js +3 -3
  36. package/dist/nile-code-editor/theme.cjs.js +1 -1
  37. package/dist/nile-code-editor/theme.cjs.js.map +1 -1
  38. package/dist/nile-code-editor/theme.esm.js +1 -1
  39. package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
  40. package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
  41. package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
  42. package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
  43. package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
  44. package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
  45. package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
  46. package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
  47. package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
  48. package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
  49. package/dist/nile-input/nile-input.test.cjs.js +1 -1
  50. package/dist/nile-link/nile-link.test.cjs.js +1 -1
  51. package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
  52. package/dist/nile-option/nile-option.cjs.js +1 -1
  53. package/dist/nile-option/nile-option.cjs.js.map +1 -1
  54. package/dist/nile-option/nile-option.css.cjs.js +1 -1
  55. package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
  56. package/dist/nile-option/nile-option.css.esm.js +1 -1
  57. package/dist/nile-option/nile-option.esm.js +2 -2
  58. package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
  59. package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
  60. package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
  61. package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
  62. package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
  63. package/dist/nile-select/index.cjs.js +1 -1
  64. package/dist/nile-select/index.esm.js +1 -1
  65. package/dist/nile-select/nile-select.cjs.js +1 -1
  66. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  67. package/dist/nile-select/nile-select.esm.js +2 -2
  68. package/dist/nile-select/nile-select.test.cjs.js +1 -1
  69. package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
  70. package/dist/nile-select/nile-select.test.esm.js +2 -2
  71. package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
  72. package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
  73. package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
  74. package/dist/src/index.d.ts +0 -1
  75. package/dist/src/index.js +0 -1
  76. package/dist/src/index.js.map +1 -1
  77. package/dist/src/internal/form.js +2 -2
  78. package/dist/src/internal/form.js.map +1 -1
  79. package/dist/src/nile-code-editor/nile-code-editor.d.ts +2 -0
  80. package/dist/src/nile-code-editor/nile-code-editor.js +46 -4
  81. package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
  82. package/dist/src/nile-code-editor/theme.d.ts +68 -0
  83. package/dist/src/nile-code-editor/theme.js +68 -0
  84. package/dist/src/nile-code-editor/theme.js.map +1 -1
  85. package/dist/src/nile-option/nile-option.css.js +1 -1
  86. package/dist/src/nile-option/nile-option.css.js.map +1 -1
  87. package/dist/src/nile-option/nile-option.d.ts +1 -5
  88. package/dist/src/nile-option/nile-option.js +6 -21
  89. package/dist/src/nile-option/nile-option.js.map +1 -1
  90. package/dist/src/nile-select/nile-select.d.ts +2 -11
  91. package/dist/src/nile-select/nile-select.js +18 -37
  92. package/dist/src/nile-select/nile-select.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +4 -1
  95. package/src/index.ts +1 -3
  96. package/src/internal/form.ts +2 -2
  97. package/src/nile-code-editor/nile-code-editor.ts +53 -4
  98. package/src/nile-code-editor/theme.ts +69 -0
  99. package/src/nile-option/nile-option.css.ts +1 -1
  100. package/src/nile-option/nile-option.ts +3 -17
  101. package/src/nile-select/nile-select.ts +9 -35
  102. package/vscode-html-custom-data.json +8 -230
  103. package/dist/nile-select/virtual-scroll-helper.cjs.js +0 -2
  104. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +0 -1
  105. package/dist/nile-select/virtual-scroll-helper.esm.js +0 -38
  106. package/dist/nile-virtual-select/index.cjs.js +0 -2
  107. package/dist/nile-virtual-select/index.cjs.js.map +0 -1
  108. package/dist/nile-virtual-select/index.esm.js +0 -1
  109. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +0 -2
  110. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +0 -1
  111. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +0 -2
  112. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +0 -1
  113. package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +0 -467
  114. package/dist/nile-virtual-select/nile-virtual-select.esm.js +0 -227
  115. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
  116. package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
  117. package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -49
  118. package/dist/nile-virtual-select/renderer.cjs.js +0 -2
  119. package/dist/nile-virtual-select/renderer.cjs.js.map +0 -1
  120. package/dist/nile-virtual-select/renderer.esm.js +0 -18
  121. package/dist/nile-virtual-select/search-manager.cjs.js +0 -2
  122. package/dist/nile-virtual-select/search-manager.cjs.js.map +0 -1
  123. package/dist/nile-virtual-select/search-manager.esm.js +0 -1
  124. package/dist/nile-virtual-select/selection-manager.cjs.js +0 -2
  125. package/dist/nile-virtual-select/selection-manager.cjs.js.map +0 -1
  126. package/dist/nile-virtual-select/selection-manager.esm.js +0 -1
  127. package/dist/nile-virtual-select/types.cjs.js +0 -2
  128. package/dist/nile-virtual-select/types.cjs.js.map +0 -1
  129. package/dist/nile-virtual-select/types.esm.js +0 -1
  130. package/dist/src/nile-select/virtual-scroll-helper.d.ts +0 -9
  131. package/dist/src/nile-select/virtual-scroll-helper.js +0 -51
  132. package/dist/src/nile-select/virtual-scroll-helper.js.map +0 -1
  133. package/dist/src/nile-virtual-select/index.d.ts +0 -1
  134. package/dist/src/nile-virtual-select/index.js +0 -2
  135. package/dist/src/nile-virtual-select/index.js.map +0 -1
  136. package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +0 -12
  137. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +0 -479
  138. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +0 -1
  139. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +0 -263
  140. package/dist/src/nile-virtual-select/nile-virtual-select.js +0 -1183
  141. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +0 -1
  142. package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +0 -7
  143. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +0 -341
  144. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +0 -1
  145. package/dist/src/nile-virtual-select/renderer.d.ts +0 -11
  146. package/dist/src/nile-virtual-select/renderer.js +0 -51
  147. package/dist/src/nile-virtual-select/renderer.js.map +0 -1
  148. package/dist/src/nile-virtual-select/search-manager.d.ts +0 -12
  149. package/dist/src/nile-virtual-select/search-manager.js +0 -40
  150. package/dist/src/nile-virtual-select/search-manager.js.map +0 -1
  151. package/dist/src/nile-virtual-select/selection-manager.d.ts +0 -12
  152. package/dist/src/nile-virtual-select/selection-manager.js +0 -64
  153. package/dist/src/nile-virtual-select/selection-manager.js.map +0 -1
  154. package/dist/src/nile-virtual-select/types.d.ts +0 -50
  155. package/dist/src/nile-virtual-select/types.js +0 -8
  156. package/dist/src/nile-virtual-select/types.js.map +0 -1
  157. package/dist/virtualize-a4a40d96.esm.js +0 -22
  158. package/dist/virtualize-b6a2fbe0.cjs.js +0 -18
  159. package/dist/virtualize-b6a2fbe0.cjs.js.map +0 -1
  160. package/src/nile-select/virtual-scroll-helper.ts +0 -56
  161. package/src/nile-virtual-select/index.ts +0 -1
  162. package/src/nile-virtual-select/nile-virtual-select.css.ts +0 -481
  163. package/src/nile-virtual-select/nile-virtual-select.test.ts +0 -414
  164. package/src/nile-virtual-select/nile-virtual-select.ts +0 -1268
  165. package/src/nile-virtual-select/renderer.ts +0 -73
  166. package/src/nile-virtual-select/search-manager.ts +0 -50
  167. package/src/nile-virtual-select/selection-manager.ts +0 -75
  168. package/src/nile-virtual-select/types.ts +0 -54
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.52-beta-1.2",
6
+ "version": "0.1.52-beta-1.5",
7
7
  "main": "dist/src/index.js",
8
8
  "type": "module",
9
9
  "module": "dist/src/index.js",
@@ -155,6 +155,8 @@
155
155
  "x": "^0.1.2",
156
156
  "@web/test-runner-puppeteer": "0.16.0"
157
157
  },
158
+ "overrides": {
159
+ },
158
160
  "customElements": "custom-elements.json",
159
161
  "eslintConfig": {
160
162
  "parser": "@typescript-eslint/parser",
@@ -191,3 +193,4 @@
191
193
  ]
192
194
  }
193
195
  }
196
+
package/src/index.ts CHANGED
@@ -16,7 +16,6 @@ export { NileLoader } from './nile-loader';
16
16
  export { NileProgressBar } from './nile-progress-bar';
17
17
  export { NileSpinner } from './nile-spinner';
18
18
  export { NileSelect } from './nile-select';
19
- export { NileVirtualSelect } from './nile-virtual-select';
20
19
  export { NileOption } from './nile-option';
21
20
  export { NileTag } from './nile-tag';
22
21
  export { NileIconButton } from './nile-icon-button';
@@ -77,6 +76,5 @@ export { NileSectionMessage } from './nile-section-message';
77
76
  export { NileToolbar } from './nile-toolbar';
78
77
  export { NileInlineEdit } from './nile-inline-edit';
79
78
  export { NileTable } from './nile-table';
80
-
81
79
  export { NileFilterChip } from './nile-filter-chip';
82
- export { NilePagination } from './nile-pagination';
80
+ export {NilePagination } from './nile-pagination';
@@ -89,7 +89,7 @@ export class FormControlController implements ReactiveController {
89
89
  }
90
90
 
91
91
  hostConnected() {
92
- const form = this.options?.form(this.host);
92
+ const form = this.options.form(this.host);
93
93
 
94
94
  if (form) {
95
95
  this.attachForm(form);
@@ -97,7 +97,7 @@ export class FormControlController implements ReactiveController {
97
97
 
98
98
  // Listen for interactions
99
99
  interactions.set(this.host, []);
100
- this.options?.assumeInteractionOn.forEach(event => {
100
+ this.options.assumeInteractionOn.forEach(event => {
101
101
  this.host.addEventListener(event, this.handleInteraction);
102
102
  });
103
103
  }
@@ -39,7 +39,9 @@ import { autocompletion,CompletionContext,CompletionResult } from '@codemirror/a
39
39
  import NileElement from '../internal/nile-element';
40
40
  import { basicSetup } from './extensionSetup';
41
41
  import { classMap } from 'lit/directives/class-map.js';
42
- import { Theme as DefaultTheme } from './theme';
42
+ import { Theme as DefaultTheme, CustomThemeCSS } from './theme';
43
+ import { keymap } from '@codemirror/view';
44
+ import { acceptCompletion } from '@codemirror/autocomplete';
43
45
 
44
46
  // Choose the appropriate mode for your use case
45
47
 
@@ -84,7 +86,7 @@ export class NileCodeEditor extends NileElement {
84
86
 
85
87
  @property({ type: Boolean, reflect: true , attribute: false }) disableSyntaxHighlighting: boolean = false;
86
88
 
87
- @property({ type: Object, attribute: false }) customThemeCSS: object | null = null;
89
+ @property({ type: Object, attribute: false }) customThemeCSS: object | null = CustomThemeCSS;
88
90
 
89
91
  @property({ type: Boolean, reflect: true , attribute: true }) lineNumbersMultiline: boolean = true;
90
92
 
@@ -100,6 +102,8 @@ export class NileCodeEditor extends NileElement {
100
102
 
101
103
  @property({ type: Boolean, reflect: true , attribute: true}) aboveCursor: boolean = false;
102
104
 
105
+ @property({ type: Boolean, reflect: true, attribute: true }) tabCompletion: boolean = false;
106
+
103
107
  public view: EditorView;
104
108
  public viewState:EditorState;
105
109
  private timeOut: any = null;
@@ -141,6 +145,17 @@ export class NileCodeEditor extends NileElement {
141
145
  }, false )
142
146
  }
143
147
 
148
+ getTabCompletionKeymap() {
149
+ return this.tabCompletion
150
+ ? keymap.of([
151
+ {
152
+ key: 'Tab',
153
+ run: acceptCompletion,
154
+ }
155
+ ])
156
+ : [];
157
+ }
158
+
144
159
  protected updated(changedProperties: PropertyValueMap<any> | Map<PropertyKey, unknown>): void{
145
160
  super.updated(changedProperties);
146
161
  if (changedProperties.has('value') && this.view.state.doc.toString()!=this.value) {
@@ -277,6 +292,7 @@ export class NileCodeEditor extends NileElement {
277
292
  autocompletion({aboveCursor: this.aboveCursor}),
278
293
  language,
279
294
  customThemeExtension,
295
+ this.getTabCompletionKeymap(),
280
296
  EditorView.updateListener.of((v: ViewUpdate) => {
281
297
  if (v.docChanged) {
282
298
  this.debounce ? this.emitAfterTimeout({ value: this.view.state.doc.toString() }) : this.emit('nile-change', { value: this.view.state.doc.toString() })
@@ -362,7 +378,39 @@ export class NileCodeEditor extends NileElement {
362
378
  */
363
379
  getTopLevelSuggestions(context: CompletionContext,textBeforeCursor:string){
364
380
  const baseMatch: any = textBeforeCursor.match(/([a-zA-Z_$][\w$]*)$/);
365
- if (!baseMatch) return null;
381
+
382
+ if (!baseMatch) {
383
+ const trimmedText = textBeforeCursor.trim();
384
+ if (trimmedText === '') {
385
+ const optionsList = Object.keys(this.customAutoCompletions).filter(key =>
386
+ Object.keys(this.customAutoCompletions[key]).length
387
+ );
388
+
389
+ const options = optionsList.map((key) => ({
390
+ label: key,
391
+ type: 'property',
392
+ apply: key,
393
+ boost: 999
394
+ }));
395
+
396
+ if(this.customCompletionsPaths.length){
397
+ this.customCompletionsPaths.forEach(path => {
398
+ options.push({
399
+ label: ''+path,
400
+ type: 'property',
401
+ apply: ''+path,
402
+ boost: 998
403
+ });
404
+ });
405
+ }
406
+
407
+ return {
408
+ from: context.pos,
409
+ options: options
410
+ };
411
+ }
412
+ return null;
413
+ }
366
414
 
367
415
  const optionsList = Object.keys(this.customAutoCompletions).filter(key =>
368
416
  Object.keys(this.customAutoCompletions[key]).length &&
@@ -378,7 +426,7 @@ export class NileCodeEditor extends NileElement {
378
426
  if(this.customCompletionsPaths.length){
379
427
  this.customCompletionsPaths
380
428
  .filter(path=>path.toLocaleLowerCase().includes(textBeforeCursor.toLocaleLowerCase()))
381
- .map(path=>{
429
+ .forEach(path=>{
382
430
  options.push({
383
431
  label: ''+path,
384
432
  type: 'property',
@@ -571,3 +619,4 @@ function convertToSingleLine(code: string) {
571
619
  // Remove line breaks and unnecessary whitespace
572
620
  return code.replace(/\s+/g, ' ').trim();
573
621
  }
622
+
@@ -36,4 +36,73 @@ export const CustomTheme = {
36
36
  ".cm-gutters": {
37
37
  fontFamily: 'inherit', // Ensure the gutter font matches
38
38
  },
39
+ };
40
+
41
+ export const CustomThemeCSS = {
42
+ '.cm-tooltip-autocomplete': {
43
+ padding: '9px 12px',
44
+ backgroundColor: 'white',
45
+ display: 'block',
46
+ fontSize: '16px',
47
+ background: 'white',
48
+ border: 'solid 1px #C7CED4',
49
+ borderRadius: '0.25rem',
50
+ paddingBlock: '0',
51
+ paddingInline: '0',
52
+ overflow: 'auto',
53
+ overscrollBehavior: 'none',
54
+ color: 'hsl(240 5.3% 26.1%)',
55
+ },
56
+ '.cm-tooltip.cm-tooltip-autocomplete > ul': {
57
+ fontFamily: 'colfax-regular',
58
+ fontWeight: '400',
59
+ },
60
+ '.cm-tooltip.cm-tooltip-autocomplete > ul > li': {
61
+ padding: '9px 12px'
62
+ },
63
+ '.cm-tooltip.cm-tooltip-autocomplete > ul > li:hover': {
64
+ backgroundColor: '#005ea61a',
65
+ color: 'rgb(0, 0, 0)',
66
+ },
67
+ '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected="true"]': {
68
+ backgroundColor: '#005ea61a',
69
+ color: '#005EA6',
70
+ },
71
+ '.cm-tooltip.cm-tooltip-autocomplete > ul > li[aria-selected="true"]:hover': {
72
+ color: '#005EA6',
73
+ },
74
+ '.cm-completionIcon': {
75
+ display: 'block',
76
+ position: 'relative',
77
+ },
78
+ '.cm-completionMatchedText' : {
79
+ textDecoration: 'none',
80
+ },
81
+ '.cm-completionIcon.cm-completionIcon-property::after': {
82
+ content: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMDAwOTIgMTJDNi4zMTI5NCAxMiA1LjY2NTI2IDExLjg2ODggNS4wNTc4OSAxMS42MDYzQzQuNDUwNTMgMTEuMzQzOSAzLjkyMDMxIDEwLjk4NjIgMy40NjcyNCAxMC41MzM0QzMuMDE0MjUgMTAuMDgwNSAyLjY1NjQ1IDkuNTUwNTMgMi4zOTM4MiA4Ljk0MzQyQzIuMTMxMjcgOC4zMzYzMiAyIDcuNjg4ODIgMiA3LjAwMDkyQzIgNi4zMDkzNCAyLjEzMTIzIDUuNjU5MyAyLjM5MzY4IDUuMDUwNzlDMi42NTYxNCA0LjQ0MjI4IDMuMDEzNzcgMy45MTI5OCAzLjQ2NjU4IDMuNDYyODlDMy45MTk0NyAzLjAxMjgxIDQuNDQ5NDcgMi42NTY0NSA1LjA1NjU4IDIuMzkzODJDNS42NjM2OCAyLjEzMTI3IDYuMzExMTggMiA2Ljk5OTA4IDJDNy42OTA2NiAyIDguMzQwNyAyLjEzMTIzIDguOTQ5MjEgMi4zOTM2OEM5LjU1NzcyIDIuNjU2MTQgMTAuMDg3IDMuMDEyMzIgMTAuNTM3MSAzLjQ2MjI0QzEwLjk4NzIgMy45MTIxNSAxMS4zNDM2IDQuNDQxMjMgMTEuNjA2MiA1LjA0OTQ3QzExLjg2ODcgNS42NTc3MiAxMiA2LjMwNzU5IDEyIDYuOTk5MDhDMTIgNy42ODcwNiAxMS44Njg4IDguMzM0NzQgMTEuNjA2MyA4Ljk0MjFDMTEuMzQzOSA5LjU0OTQ3IDEwLjk4NzcgMTAuMDc5NyAxMC41Mzc4IDEwLjUzMjhDMTAuMDg3OSAxMC45ODU3IDkuNTU4NzcgMTEuMzQzNiA4Ljk1MDUzIDExLjYwNjJDOC4zNDIyOCAxMS44Njg3IDcuNjkyNDEgMTIgNy4wMDA5MiAxMlpNNyAxMS4zMzg3QzguMjA4NjggMTEuMzM4NyA5LjIzMzk5IDEwLjkxNjggMTAuMDc1OSAxMC4wNzMyQzEwLjkxNzggOS4yMjk0NyAxMS4zMzg3IDguMjA1MDkgMTEuMzM4NyA3QzExLjMzODcgNS43OTEzMiAxMC45MTc4IDQuNzY2MDEgMTAuMDc1OSAzLjkyNDA4QzkuMjMzOTkgMy4wODIyNCA4LjIwODY4IDIuNjYxMzIgNyAyLjY2MTMyQzUuNzk0OTEgMi42NjEzMiA0Ljc3MDUzIDMuMDgyMjQgMy45MjY4NCAzLjkyNDA4QzMuMDgzMTYgNC43NjYwMSAyLjY2MTMyIDUuNzkxMzIgMi42NjEzMiA3QzIuNjYxMzIgOC4yMDUwOSAzLjA4MzE2IDkuMjI5NDcgMy45MjY4NCAxMC4wNzMyQzQuNzcwNTMgMTAuOTE2OCA1Ljc5NDkxIDExLjMzODcgNyAxMS4zMzg3WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTUuMTA1MzQgOS4yODM1NVY1LjM5OTkzQzUuMTA1MzQgNS4yMjMyMiA1LjE2MjkxIDUuMDc3MyA1LjI3ODA0IDQuOTYyMTdDNS4zOTMxNyA0Ljg0NzA0IDUuNTM5MDkgNC43ODk0NyA1LjcxNTggNC43ODk0N0g4LjI5OTc1QzguNDgxNDYgNC43ODk0NyA4LjYyODU2IDQuODQ3MDQgOC43NDEwNiA0Ljk2MjE3QzguODUzNyA1LjA3NzMgOC45MTAwMSA1LjIyMzIyIDguOTEwMDEgNS4zOTk5M1Y5LjI4MzU1SDguMTQ0ODFWNy43Nzg4MUg1Ljg3MDU0VjkuMjgzNTVINS4xMDUzNFpNNS44NzA1NCA3LjAwNjEySDguMTQ0ODFWNS41NTQ2N0g1Ljg3MDU0VjcuMDA2MTJaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K")',
83
+ position: 'absolute',
84
+ top: '3px',
85
+ left: '0px'
86
+ },
87
+ '.cm-completionIcon.cm-completionIcon-keyword::after': {
88
+ content: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuMTk5OTUgNC4wMTQ0OUM2LjE5OTk1IDMuNzkyNyA2LjI3ODE0IDMuNjAzMjkgNi40MzQ1IDMuNDQ2MjZDNi41OTA3NyAzLjI4OTE0IDYuNzc5MjcgMy4yMTA1OCA3IDMuMjEwNThDNy4yMjA3MyAzLjIxMDU4IDcuNDA5MjMgMy4yODkxNCA3LjU2NTUgMy40NDYyNkM3LjcyMTg2IDMuNjAzMjkgNy44MDAwNSAzLjc5MjcgNy44MDAwNSA0LjAxNDQ5QzcuODAwMDUgNC4yMzYyOCA3LjcyMTg2IDQuNDI1NjkgNy41NjU1IDQuNTgyNzJDNy40MDkyMyA0LjczOTg0IDcuMjIwNzMgNC44MTg0IDcgNC44MTg0QzYuNzc5MjcgNC44MTg0IDYuNTkwNzcgNC43Mzk4NCA2LjQzNDUgNC41ODI3MkM2LjI3ODE0IDQuNDI1NjkgNi4xOTk5NSA0LjIzNjI4IDYuMTk5OTUgNC4wMTQ0OVpNNi45MzM1OSAxM0w1LjAyNTE4IDEwLjk3OTFMNS44MTE1OSA5LjkwNjQ1TDUuMDE0NjggOC44MTA5NUw1Ljc0OSA3LjgwNzk1VjYuNzU2OTlDNS4yMzggNi41MDY4OCA0LjgxODc3IDYuMTQ3MSA0LjQ5MTMyIDUuNjc3NjdDNC4xNjM3NyA1LjIwODMyIDQgNC42NTM5MyA0IDQuMDE0NDlDNCAzLjE3ODI5IDQuMjkxOTUgMi40NjY4MiA0Ljg3NTg2IDEuODgwMDlDNS40NTk3NyAxLjI5MzM2IDYuMTY3ODIgMSA3IDFDNy44MzIxOCAxIDguNTQwMjMgMS4yOTMzNiA5LjEyNDE0IDEuODgwMDlDOS43MDgwNSAyLjQ2NjgyIDEwIDMuMTc4MjkgMTAgNC4wMTQ0OUMxMCA0LjYyMzA1IDkuODQ2NjggNS4xNjEwNSA5LjU0MDA1IDUuNjI4NDhDOS4yMzM0MSA2LjA5NTk5IDguODAzNzMgNi40NzIxNyA4LjI1MSA2Ljc1Njk5VjExLjY3NjFMNi45MzM1OSAxM1pNNC42ODUzNiA0LjAxNDQ5QzQuNjg1MzYgNC41NDc2IDQuODUzNTUgNS4wMjc4MiA1LjE4OTkxIDUuNDU1MTRDNS41MjYyNyA1Ljg4MjQ3IDUuOTQxMDUgNi4xNTQ4MiA2LjQzNDIzIDYuMjcyMjFWOC4wNDU4Mkw1Ljg2NTA1IDguODA5MTdMNi42NTkwOSA5LjkyMDg0TDUuOTAxNDUgMTAuOTI0TDYuOTQ4MzIgMTIuMDEzTDcuNTY1NzcgMTEuMzkyNlY2LjI3MjIxQzguMDg2MDUgNi4xMzE0NCA4LjUwNzU5IDUuODU3NTggOC44MzA0MSA1LjQ1MDYyQzkuMTUzMjMgNS4wNDM2NiA5LjMxNDY0IDQuNTY0OTUgOS4zMTQ2NCA0LjAxNDQ5QzkuMzE0NjQgMy4zNzA4NSA5LjA4OSAyLjgyMjMxIDguNjM3NzMgMi4zNjg4NUM4LjE4NjQ1IDEuOTE1NCA3LjY0MDU1IDEuNjg4NjcgNyAxLjY4ODY3QzYuMzU5NDUgMS42ODg2NyA1LjgxMzU1IDEuOTE1NCA1LjM2MjI3IDIuMzY4ODVDNC45MTEgMi44MjIzMSA0LjY4NTM2IDMuMzcwODUgNC42ODUzNiA0LjAxNDQ5WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==")',
89
+ position: 'absolute',
90
+ top: '3px',
91
+ left: '0px'
92
+ },
93
+ '.cm-completionIcon.cm-completionIcon-variable::after': {
94
+ content: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTcuMDAwOTIgMTJDNi4zMTI5NCAxMiA1LjY2NTI2IDExLjg2ODggNS4wNTc4OSAxMS42MDYzQzQuNDUwNTMgMTEuMzQzOSAzLjkyMDMxIDEwLjk4NjIgMy40NjcyNCAxMC41MzM0QzMuMDE0MjUgMTAuMDgwNSAyLjY1NjQ1IDkuNTUwNTMgMi4zOTM4MiA4Ljk0MzQyQzIuMTMxMjcgOC4zMzYzMiAyIDcuNjg4ODIgMiA3LjAwMDkyQzIgNi4zMDkzNCAyLjEzMTIzIDUuNjU5MyAyLjM5MzY4IDUuMDUwNzlDMi42NTYxNCA0LjQ0MjI4IDMuMDEzNzcgMy45MTI5OCAzLjQ2NjU4IDMuNDYyODlDMy45MTk0NyAzLjAxMjgxIDQuNDQ5NDcgMi42NTY0NSA1LjA1NjU4IDIuMzkzODJDNS42NjM2OCAyLjEzMTI3IDYuMzExMTggMiA2Ljk5OTA4IDJDNy42OTA2NiAyIDguMzQwNyAyLjEzMTIzIDguOTQ5MjEgMi4zOTM2OEM5LjU1NzcyIDIuNjU2MTQgMTAuMDg3IDMuMDEyMzIgMTAuNTM3MSAzLjQ2MjI0QzEwLjk4NzIgMy45MTIxNSAxMS4zNDM2IDQuNDQxMjMgMTEuNjA2MiA1LjA0OTQ3QzExLjg2ODcgNS42NTc3MiAxMiA2LjMwNzU5IDEyIDYuOTk5MDhDMTIgNy42ODcwNiAxMS44Njg4IDguMzM0NzQgMTEuNjA2MyA4Ljk0MjFDMTEuMzQzOSA5LjU0OTQ3IDEwLjk4NzcgMTAuMDc5NyAxMC41Mzc4IDEwLjUzMjhDMTAuMDg3OSAxMC45ODU3IDkuNTU4NzcgMTEuMzQzNiA4Ljk1MDUzIDExLjYwNjJDOC4zNDIyOCAxMS44Njg3IDcuNjkyNDEgMTIgNy4wMDA5MiAxMlpNNyAxMS4zMzg3QzguMjA4NjggMTEuMzM4NyA5LjIzMzk5IDEwLjkxNjggMTAuMDc1OSAxMC4wNzMyQzEwLjkxNzggOS4yMjk0NyAxMS4zMzg3IDguMjA1MDkgMTEuMzM4NyA3QzExLjMzODcgNS43OTEzMiAxMC45MTc4IDQuNzY2MDEgMTAuMDc1OSAzLjkyNDA4QzkuMjMzOTkgMy4wODIyNCA4LjIwODY4IDIuNjYxMzIgNyAyLjY2MTMyQzUuNzk0OTEgMi42NjEzMiA0Ljc3MDUzIDMuMDgyMjQgMy45MjY4NCAzLjkyNDA4QzMuMDgzMTYgNC43NjYwMSAyLjY2MTMyIDUuNzkxMzIgMi42NjEzMiA3QzIuNjYxMzIgOC4yMDUwOSAzLjA4MzE2IDkuMjI5NDcgMy45MjY4NCAxMC4wNzMyQzQuNzcwNTMgMTAuOTE2OCA1Ljc5NDkxIDExLjMzODcgNyAxMS4zMzg3WiIgZmlsbD0iYmxhY2siLz4KPHBhdGggZD0iTTUuMTA1MzQgOS4yODM1NVY1LjM5OTkzQzUuMTA1MzQgNS4yMjMyMiA1LjE2MjkxIDUuMDc3MyA1LjI3ODA0IDQuOTYyMTdDNS4zOTMxNyA0Ljg0NzA0IDUuNTM5MDkgNC43ODk0NyA1LjcxNTggNC43ODk0N0g4LjI5OTc1QzguNDgxNDYgNC43ODk0NyA4LjYyODU2IDQuODQ3MDQgOC43NDEwNiA0Ljk2MjE3QzguODUzNyA1LjA3NzMgOC45MTAwMSA1LjIyMzIyIDguOTEwMDEgNS4zOTk5M1Y5LjI4MzU1SDguMTQ0ODFWNy43Nzg4MUg1Ljg3MDU0VjkuMjgzNTVINS4xMDUzNFpNNS44NzA1NCA3LjAwNjEySDguMTQ0ODFWNS41NTQ2N0g1Ljg3MDU0VjcuMDA2MTJaIiBmaWxsPSJibGFjayIvPgo8L3N2Zz4K")',
95
+ position: 'absolute',
96
+ top: '3px',
97
+ left: '0px'
98
+ },
99
+ '.cm-completionIcon.cm-completionIcon-text::after': {
100
+ content: 'url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTQiIGhlaWdodD0iMTQiIHZpZXdCb3g9IjAgMCAxNCAxNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTYuMTk5OTUgNC4wMTQ0OUM2LjE5OTk1IDMuNzkyNyA2LjI3ODE0IDMuNjAzMjkgNi40MzQ1IDMuNDQ2MjZDNi41OTA3NyAzLjI4OTE0IDYuNzc5MjcgMy4yMTA1OCA3IDMuMjEwNThDNy4yMjA3MyAzLjIxMDU4IDcuNDA5MjMgMy4yODkxNCA3LjU2NTUgMy40NDYyNkM3LjcyMTg2IDMuNjAzMjkgNy44MDAwNSAzLjc5MjcgNy44MDAwNSA0LjAxNDQ5QzcuODAwMDUgNC4yMzYyOCA3LjcyMTg2IDQuNDI1NjkgNy41NjU1IDQuNTgyNzJDNy40MDkyMyA0LjczOTg0IDcuMjIwNzMgNC44MTg0IDcgNC44MTg0QzYuNzc5MjcgNC44MTg0IDYuNTkwNzcgNC43Mzk4NCA2LjQzNDUgNC41ODI3MkM2LjI3ODE0IDQuNDI1NjkgNi4xOTk5NSA0LjIzNjI4IDYuMTk5OTUgNC4wMTQ0OVpNNi45MzM1OSAxM0w1LjAyNTE4IDEwLjk3OTFMNS44MTE1OSA5LjkwNjQ1TDUuMDE0NjggOC44MTA5NUw1Ljc0OSA3LjgwNzk1VjYuNzU2OTlDNS4yMzggNi41MDY4OCA0LjgxODc3IDYuMTQ3MSA0LjQ5MTMyIDUuNjc3NjdDNC4xNjM3NyA1LjIwODMyIDQgNC42NTM5MyA0IDQuMDE0NDlDNCAzLjE3ODI5IDQuMjkxOTUgMi40NjY4MiA0Ljg3NTg2IDEuODgwMDlDNS40NTk3NyAxLjI5MzM2IDYuMTY3ODIgMSA3IDFDNy44MzIxOCAxIDguNTQwMjMgMS4yOTMzNiA5LjEyNDE0IDEuODgwMDlDOS43MDgwNSAyLjQ2NjgyIDEwIDMuMTc4MjkgMTAgNC4wMTQ0OUMxMCA0LjYyMzA1IDkuODQ2NjggNS4xNjEwNSA5LjU0MDA1IDUuNjI4NDhDOS4yMzM0MSA2LjA5NTk5IDguODAzNzMgNi40NzIxNyA4LjI1MSA2Ljc1Njk5VjExLjY3NjFMNi45MzM1OSAxM1pNNC42ODUzNiA0LjAxNDQ5QzQuNjg1MzYgNC41NDc2IDQuODUzNTUgNS4wMjc4MiA1LjE4OTkxIDUuNDU1MTRDNS41MjYyNyA1Ljg4MjQ3IDUuOTQxMDUgNi4xNTQ4MiA2LjQzNDIzIDYuMjcyMjFWOC4wNDU4Mkw1Ljg2NTA1IDguODA5MTdMNi42NTkwOSA5LjkyMDg0TDUuOTAxNDUgMTAuOTI0TDYuOTQ4MzIgMTIuMDEzTDcuNTY1NzcgMTEuMzkyNlY2LjI3MjIxQzguMDg2MDUgNi4xMzE0NCA4LjUwNzU5IDUuODU3NTggOC44MzA0MSA1LjQ1MDYyQzkuMTUzMjMgNS4wNDM2NiA5LjMxNDY0IDQuNTY0OTUgOS4zMTQ2NCA0LjAxNDQ5QzkuMzE0NjQgMy4zNzA4NSA5LjA4OSAyLjgyMjMxIDguNjM3NzMgMi4zNjg4NUM4LjE4NjQ1IDEuOTE1NCA3LjY0MDU1IDEuNjg4NjcgNyAxLjY4ODY3QzYuMzU5NDUgMS42ODg2NyA1LjgxMzU1IDEuOTE1NCA1LjM2MjI3IDIuMzY4ODVDNC45MTEgMi44MjIzMSA0LjY4NTM2IDMuMzcwODUgNC42ODUzNiA0LjAxNDQ5WiIgZmlsbD0iYmxhY2siLz4KPC9zdmc+Cg==")',
101
+ position: 'absolute',
102
+ top: '3px',
103
+ left: '0px'
104
+ },
105
+ '.cm-completionLabel': {
106
+ paddingLeft: '16px',
107
+ }
39
108
  };
@@ -35,7 +35,7 @@ export const styles = css`
35
35
  }
36
36
 
37
37
  .option--single-select {
38
- padding: 8px 12px;
38
+ padding: 9px 12px;
39
39
  }
40
40
 
41
41
  .option--hover:not(.option--current):not(.option--disabled) {
@@ -49,6 +49,7 @@ export class NileOption extends NileElement {
49
49
  @query('.option__label') defaultSlot: HTMLSlotElement;
50
50
 
51
51
  @state() current = false; // the user has keyed into the option, but hasn't selected it yet (shows a highlight)
52
+ @state() selected = false; // the option is selected and has aria-selected="true"
52
53
  @state() hasHover = false; // we need this because Safari doesn't honor :hover styles while dragging
53
54
  @state() hidden = false; // the option is hidden
54
55
  @state() isMultipleSelect = false;
@@ -65,19 +66,13 @@ export class NileOption extends NileElement {
65
66
  /** Draws the option in a disabled state, preventing selection. */
66
67
  @property({ type: Boolean, reflect: true }) disabled = false;
67
68
 
68
- /** Forces the option to display in multiple select mode with checkboxes. */
69
- @property({ type: Boolean, reflect: true }) multiple = false;
70
-
71
- /** Indicates whether the option is selected. */
72
- @property({ type: Boolean, reflect: true }) selected = false;
73
-
74
69
  connectedCallback() {
75
70
  super.connectedCallback();
76
71
  this.setAttribute('role', 'option');
77
72
  this.setAttribute('aria-selected', 'false');
78
73
 
79
- // Find the closest parent 'nile-select' or 'nile-virtual-select' element
80
- const parentSelect = this.closest('nile-select') || this.closest('nile-virtual-select');
74
+ // Find the closest parent 'nile-select' element
75
+ const parentSelect = this.closest('nile-select');
81
76
 
82
77
  // Check if the parent has the 'multiple' attribute
83
78
  if (parentSelect && parentSelect.hasAttribute('multiple')) {
@@ -89,10 +84,6 @@ export class NileOption extends NileElement {
89
84
  this.isMultipleSelect = Boolean(multipleValue);
90
85
  }
91
86
  }
92
-
93
- if (this.multiple) {
94
- this.isMultipleSelect = true;
95
- }
96
87
  }
97
88
 
98
89
  protected updated(_changedProperties: PropertyValues): void {
@@ -135,11 +126,6 @@ export class NileOption extends NileElement {
135
126
  this.setAttribute('aria-selected', this.selected ? 'true' : 'false');
136
127
  }
137
128
 
138
- @watch('multiple')
139
- handleMultipleChange() {
140
- this.isMultipleSelect = this.multiple;
141
- }
142
-
143
129
  @watch('value')
144
130
  handleValueChange() {
145
131
  // Ensure the value is a string. This ensures the next line doesn't error and allows framework users to pass numbers
@@ -33,11 +33,8 @@ import type { CSSResultGroup, PropertyValues } from 'lit';
33
33
  import type { NileFormControl } from '../internal/nile-element';
34
34
  import type NileOption from '../nile-option/nile-option';
35
35
  import type NilePopup from '../nile-popup/nile-popup';
36
- import type { RenderItemConfig } from '../nile-virtual-select/types.js';
37
36
  import { unsafeHTML } from 'lit/directives/unsafe-html.js';
38
37
  import { ifDefined } from 'lit/directives/if-defined.js';
39
- import '../nile-virtual-select/nile-virtual-select';
40
- import { VirtualScrollHelper } from './virtual-scroll-helper';
41
38
 
42
39
  type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
43
40
 
@@ -56,7 +53,6 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
56
53
  * @dependency nile-icon
57
54
  * @dependency nile-popup
58
55
  * @dependency nile-tag
59
- * @dependency nile-virtual-select
60
56
  *
61
57
  * @slot - The listbox options. Must be `<nile-option>` elements. You can use `<nile-divider>` to group items visually.
62
58
  * @slot label - The input's label. Alternatively, you can use the `label` attribute.
@@ -95,15 +91,14 @@ type NileRemoveEvent = CustomEvent<Record<PropertyKey, never>>;
95
91
  */
96
92
 
97
93
  @customElement('nile-select')
98
- export class NileSelect extends NileElement implements NileFormControl{
94
+ export class NileSelect extends NileElement implements NileFormControl {
99
95
  static styles: CSSResultGroup = styles;
100
96
 
101
97
  // protected override BUBBLES=false;
102
98
 
103
- private formControlController: FormControlController | null;
104
- private virtualScrollHelper!: VirtualScrollHelper;
105
-
106
-
99
+ private readonly formControlController = new FormControlController(this, {
100
+ assumeInteractionOn: ['nile-blur', 'nile-input'],
101
+ });
107
102
  private readonly hasSlotController = new HasSlotController(
108
103
  this,
109
104
  'help-text',
@@ -237,13 +232,6 @@ export class NileSelect extends NileElement implements NileFormControl{
237
232
 
238
233
  @property({ type: String }) noResultsMessage: string = 'No results found';
239
234
 
240
- /** Enhanced configuration for rendering items with support for display text, value, and search text */
241
- @property({ attribute: false }) renderItemConfig?: RenderItemConfig;
242
-
243
- @property({ type: Array }) data: any = [];
244
-
245
- @property({ type: Boolean }) enableVirtualScroll = false;
246
-
247
235
  /** Gets the validity state object */
248
236
  get validity() {
249
237
  return this.valueInput?.validity;
@@ -254,18 +242,8 @@ export class NileSelect extends NileElement implements NileFormControl{
254
242
  return this.valueInput?.validationMessage;
255
243
  }
256
244
 
257
- constructor() {
258
- super();
259
- }
260
-
261
245
  connectedCallback() {
262
246
  super.connectedCallback();
263
- if(!this.enableVirtualScroll) {
264
- this.formControlController = new FormControlController(this, {
265
- assumeInteractionOn: ['nile-blur', 'nile-input'],
266
- });
267
- }
268
- this.virtualScrollHelper = new VirtualScrollHelper(this);
269
247
  this.handleDocumentFocusIn = this.handleDocumentFocusIn.bind(this);
270
248
  this.handleDocumentKeyDown = this.handleDocumentKeyDown.bind(this);
271
249
  this.handleDocumentMouseDown = this.handleDocumentMouseDown.bind(this);
@@ -769,7 +747,7 @@ export class NileSelect extends NileElement implements NileFormControl{
769
747
 
770
748
  // Update validity
771
749
  this.updateComplete.then(() => {
772
- this.formControlController?.updateValidity();
750
+ this.formControlController.updateValidity();
773
751
  });
774
752
 
775
753
  this.calculateTotalWidthOfTags();
@@ -820,8 +798,8 @@ export class NileSelect extends NileElement implements NileFormControl{
820
798
  }
821
799
 
822
800
  private handleInvalid(event: Event) {
823
- this.formControlController?.setValidity(false);
824
- this.formControlController?.emitInvalidEvent(event);
801
+ this.formControlController.setValidity(false);
802
+ this.formControlController.emitInvalidEvent(event);
825
803
  }
826
804
 
827
805
  @watch('disabled', { waitUntilFirstUpdate: true })
@@ -924,7 +902,7 @@ export class NileSelect extends NileElement implements NileFormControl{
924
902
 
925
903
  /** Gets the associated form, if one exists. */
926
904
  getForm(): HTMLFormElement | null {
927
- return this.formControlController?.getForm() || null;
905
+ return this.formControlController.getForm();
928
906
  }
929
907
 
930
908
  /** Checks for validity and shows the browser's validation message if the control is invalid. */
@@ -935,7 +913,7 @@ export class NileSelect extends NileElement implements NileFormControl{
935
913
  /** Sets a custom validation message. Pass an empty string to restore validity. */
936
914
  setCustomValidity(message: string) {
937
915
  this.valueInput.setCustomValidity(message);
938
- this.formControlController?.updateValidity();
916
+ this.formControlController.updateValidity();
939
917
  }
940
918
 
941
919
  /** Sets focus on the control. */
@@ -1008,10 +986,6 @@ export class NileSelect extends NileElement implements NileFormControl{
1008
986
  }
1009
987
 
1010
988
  render() {
1011
- if(this.enableVirtualScroll) {
1012
- return this.virtualScrollHelper.renderVirtualizedContent();
1013
- }
1014
-
1015
989
  const hasLabelSlot = this.hasSlotController.test('label');
1016
990
  const hasHelpTextSlot = this.hasSlotController.test('help-text');
1017
991
  const hasLabelSuffixSlot = this.hasSlotController.test('label-suffix');