@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.
- package/README.md +2 -3
- package/demo/index.html +33 -150
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +639 -1385
- package/dist/internal/form.cjs.js +1 -1
- package/dist/internal/form.cjs.js.map +1 -1
- package/dist/internal/form.esm.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-auto-complete/index.cjs.js +1 -1
- package/dist/nile-auto-complete/index.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +17 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +29 -8
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-card/nile-card.test.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-code-editor/extensionSetup.cjs.js +5 -5
- package/dist/nile-code-editor/extensionSetup.cjs.js.map +1 -1
- package/dist/nile-code-editor/extensionSetup.esm.js +1 -1
- package/dist/nile-code-editor/nile-code-editor.cjs.js +2 -2
- package/dist/nile-code-editor/nile-code-editor.cjs.js.map +1 -1
- package/dist/nile-code-editor/nile-code-editor.esm.js +3 -3
- package/dist/nile-code-editor/theme.cjs.js +1 -1
- package/dist/nile-code-editor/theme.cjs.js.map +1 -1
- package/dist/nile-code-editor/theme.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-link/nile-link.test.cjs.js +1 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.cjs.js +1 -1
- package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.esm.js +1 -1
- package/dist/nile-option/nile-option.esm.js +2 -2
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +2 -2
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +2 -2
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/src/index.d.ts +0 -1
- package/dist/src/index.js +0 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/form.js +2 -2
- package/dist/src/internal/form.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +2 -0
- package/dist/src/nile-code-editor/nile-code-editor.js +46 -4
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +68 -0
- package/dist/src/nile-code-editor/theme.js +68 -0
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/src/nile-option/nile-option.css.js +1 -1
- package/dist/src/nile-option/nile-option.css.js.map +1 -1
- package/dist/src/nile-option/nile-option.d.ts +1 -5
- package/dist/src/nile-option/nile-option.js +6 -21
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-select/nile-select.d.ts +2 -11
- package/dist/src/nile-select/nile-select.js +18 -37
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -1
- package/src/index.ts +1 -3
- package/src/internal/form.ts +2 -2
- package/src/nile-code-editor/nile-code-editor.ts +53 -4
- package/src/nile-code-editor/theme.ts +69 -0
- package/src/nile-option/nile-option.css.ts +1 -1
- package/src/nile-option/nile-option.ts +3 -17
- package/src/nile-select/nile-select.ts +9 -35
- package/vscode-html-custom-data.json +8 -230
- package/dist/nile-select/virtual-scroll-helper.cjs.js +0 -2
- package/dist/nile-select/virtual-scroll-helper.cjs.js.map +0 -1
- package/dist/nile-select/virtual-scroll-helper.esm.js +0 -38
- package/dist/nile-virtual-select/index.cjs.js +0 -2
- package/dist/nile-virtual-select/index.cjs.js.map +0 -1
- package/dist/nile-virtual-select/index.esm.js +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +0 -467
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +0 -227
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +0 -2
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +0 -1
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +0 -49
- package/dist/nile-virtual-select/renderer.cjs.js +0 -2
- package/dist/nile-virtual-select/renderer.cjs.js.map +0 -1
- package/dist/nile-virtual-select/renderer.esm.js +0 -18
- package/dist/nile-virtual-select/search-manager.cjs.js +0 -2
- package/dist/nile-virtual-select/search-manager.cjs.js.map +0 -1
- package/dist/nile-virtual-select/search-manager.esm.js +0 -1
- package/dist/nile-virtual-select/selection-manager.cjs.js +0 -2
- package/dist/nile-virtual-select/selection-manager.cjs.js.map +0 -1
- package/dist/nile-virtual-select/selection-manager.esm.js +0 -1
- package/dist/nile-virtual-select/types.cjs.js +0 -2
- package/dist/nile-virtual-select/types.cjs.js.map +0 -1
- package/dist/nile-virtual-select/types.esm.js +0 -1
- package/dist/src/nile-select/virtual-scroll-helper.d.ts +0 -9
- package/dist/src/nile-select/virtual-scroll-helper.js +0 -51
- package/dist/src/nile-select/virtual-scroll-helper.js.map +0 -1
- package/dist/src/nile-virtual-select/index.d.ts +0 -1
- package/dist/src/nile-virtual-select/index.js +0 -2
- package/dist/src/nile-virtual-select/index.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +0 -12
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js +0 -479
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +0 -263
- package/dist/src/nile-virtual-select/nile-virtual-select.js +0 -1183
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +0 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +0 -7
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +0 -341
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +0 -1
- package/dist/src/nile-virtual-select/renderer.d.ts +0 -11
- package/dist/src/nile-virtual-select/renderer.js +0 -51
- package/dist/src/nile-virtual-select/renderer.js.map +0 -1
- package/dist/src/nile-virtual-select/search-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select/search-manager.js +0 -40
- package/dist/src/nile-virtual-select/search-manager.js.map +0 -1
- package/dist/src/nile-virtual-select/selection-manager.d.ts +0 -12
- package/dist/src/nile-virtual-select/selection-manager.js +0 -64
- package/dist/src/nile-virtual-select/selection-manager.js.map +0 -1
- package/dist/src/nile-virtual-select/types.d.ts +0 -50
- package/dist/src/nile-virtual-select/types.js +0 -8
- package/dist/src/nile-virtual-select/types.js.map +0 -1
- package/dist/virtualize-a4a40d96.esm.js +0 -22
- package/dist/virtualize-b6a2fbe0.cjs.js +0 -18
- package/dist/virtualize-b6a2fbe0.cjs.js.map +0 -1
- package/src/nile-select/virtual-scroll-helper.ts +0 -56
- package/src/nile-virtual-select/index.ts +0 -1
- package/src/nile-virtual-select/nile-virtual-select.css.ts +0 -481
- package/src/nile-virtual-select/nile-virtual-select.test.ts +0 -414
- package/src/nile-virtual-select/nile-virtual-select.ts +0 -1268
- package/src/nile-virtual-select/renderer.ts +0 -73
- package/src/nile-virtual-select/search-manager.ts +0 -50
- package/src/nile-virtual-select/selection-manager.ts +0 -75
- 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.
|
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 {
|
80
|
+
export {NilePagination } from './nile-pagination';
|
package/src/internal/form.ts
CHANGED
@@ -89,7 +89,7 @@ export class FormControlController implements ReactiveController {
|
|
89
89
|
}
|
90
90
|
|
91
91
|
hostConnected() {
|
92
|
-
const form = this.options
|
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
|
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 =
|
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
|
-
|
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
|
-
.
|
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
|
};
|
@@ -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'
|
80
|
-
const parentSelect = this.closest('nile-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
|
104
|
-
|
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
|
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
|
824
|
-
this.formControlController
|
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
|
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
|
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');
|