@aquera/nile-elements 0.1.67-beta-2.8 → 0.1.68
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 +12 -0
- package/demo/index.html +0 -18
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +69 -11
- 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 +2 -2
- 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-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.esm.js +2 -2
- package/dist/nile-option-group/index.cjs.js +2 -0
- package/dist/nile-option-group/index.cjs.js.map +1 -0
- package/dist/nile-option-group/index.esm.js +1 -0
- package/dist/nile-option-group/nile-option-group.cjs.js +2 -0
- package/dist/nile-option-group/nile-option-group.cjs.js.map +1 -0
- package/dist/nile-option-group/nile-option-group.css.cjs.js +2 -0
- package/dist/nile-option-group/nile-option-group.css.cjs.js.map +1 -0
- package/dist/nile-option-group/nile-option-group.css.esm.js +46 -0
- package/dist/nile-option-group/nile-option-group.esm.js +14 -0
- package/dist/nile-option-group/nile-option-group.interface.cjs.js +2 -0
- package/dist/nile-option-group/nile-option-group.interface.cjs.js.map +1 -0
- package/dist/nile-option-group/nile-option-group.interface.esm.js +1 -0
- 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 +9 -9
- package/dist/nile-select/nile-select.interface.cjs.js +2 -0
- package/dist/nile-select/nile-select.interface.cjs.js.map +1 -0
- package/dist/nile-select/nile-select.interface.esm.js +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/nile-code-editor/nile-code-editor.d.ts +1 -0
- package/dist/src/nile-code-editor/nile-code-editor.js +13 -5
- package/dist/src/nile-code-editor/nile-code-editor.js.map +1 -1
- package/dist/src/nile-code-editor/theme.d.ts +9 -0
- package/dist/src/nile-code-editor/theme.js +9 -0
- package/dist/src/nile-code-editor/theme.js.map +1 -1
- package/dist/src/nile-option/nile-option.d.ts +1 -0
- package/dist/src/nile-option/nile-option.js +5 -0
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-option-group/index.d.ts +1 -0
- package/dist/src/nile-option-group/index.js +2 -0
- package/dist/src/nile-option-group/index.js.map +1 -0
- package/dist/src/{nile-table-row-content/nile-table-row-content.css.d.ts → nile-option-group/nile-option-group.css.d.ts} +2 -2
- package/dist/src/nile-option-group/nile-option-group.css.js +58 -0
- package/dist/src/nile-option-group/nile-option-group.css.js.map +1 -0
- package/dist/src/nile-option-group/nile-option-group.d.ts +23 -0
- package/dist/src/nile-option-group/nile-option-group.interface.d.ts +22 -0
- package/dist/src/nile-option-group/nile-option-group.interface.js +2 -0
- package/dist/src/nile-option-group/nile-option-group.interface.js.map +1 -0
- package/dist/src/nile-option-group/nile-option-group.js +76 -0
- package/dist/src/nile-option-group/nile-option-group.js.map +1 -0
- package/dist/src/nile-select/nile-select.d.ts +6 -0
- package/dist/src/nile-select/nile-select.interface.d.ts +5 -0
- package/dist/src/nile-select/nile-select.interface.js +2 -0
- package/dist/src/nile-select/nile-select.interface.js.map +1 -0
- package/dist/src/nile-select/nile-select.js +59 -1
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/index.ts +2 -1
- package/src/nile-code-editor/nile-code-editor.ts +13 -9
- package/src/nile-code-editor/theme.ts +11 -1
- package/src/nile-option/nile-option.ts +3 -0
- package/src/nile-option-group/index.ts +1 -0
- package/src/nile-option-group/nile-option-group.css.ts +60 -0
- package/src/nile-option-group/nile-option-group.interface.ts +25 -0
- package/src/nile-option-group/nile-option-group.ts +84 -0
- package/src/nile-select/nile-select.interface.ts +5 -0
- package/src/nile-select/nile-select.ts +74 -2
- package/vscode-html-custom-data.json +32 -3
- package/dist/src/nile-table-row-content/index.d.ts +0 -1
- package/dist/src/nile-table-row-content/index.js +0 -2
- package/dist/src/nile-table-row-content/index.js.map +0 -1
- package/dist/src/nile-table-row-content/nile-table-row-content.css.js +0 -30
- package/dist/src/nile-table-row-content/nile-table-row-content.css.js.map +0 -1
- package/dist/src/nile-table-row-content/nile-table-row-content.d.ts +0 -32
- package/dist/src/nile-table-row-content/nile-table-row-content.js +0 -46
- package/dist/src/nile-table-row-content/nile-table-row-content.js.map +0 -1
@@ -0,0 +1,76 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2025
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
import { __decorate } from "tslib";
|
8
|
+
import { html } from 'lit';
|
9
|
+
import { customElement, property } from 'lit/decorators.js';
|
10
|
+
import { styles } from './nile-option-group.css';
|
11
|
+
import NileElement from '../internal/nile-element';
|
12
|
+
let NileOptionGroup = class NileOptionGroup extends NileElement {
|
13
|
+
constructor() {
|
14
|
+
super(...arguments);
|
15
|
+
this.name = "";
|
16
|
+
this.data = null;
|
17
|
+
}
|
18
|
+
static get styles() {
|
19
|
+
return [styles];
|
20
|
+
}
|
21
|
+
checkForImageOrIcon() {
|
22
|
+
return this.data?.prefix?.icon?.name || this.data?.prefix?.image?.src || this.data?.prefix?.prefixText;
|
23
|
+
}
|
24
|
+
normalizeImageDimension(value) {
|
25
|
+
if (value === undefined || value === null || value === "") {
|
26
|
+
return "20";
|
27
|
+
}
|
28
|
+
const dimension = Number(value);
|
29
|
+
if (isNaN(dimension) || dimension <= 0) {
|
30
|
+
return "20";
|
31
|
+
}
|
32
|
+
return dimension > 40 ? "25" : dimension.toString();
|
33
|
+
}
|
34
|
+
render() {
|
35
|
+
return html `
|
36
|
+
<div part="option-group-header" class="option-group-header">
|
37
|
+
<div part="content-container" class="content-container ${this.checkForImageOrIcon() ? 'gap-18px' : ''}">
|
38
|
+
<!-- prefix content -->
|
39
|
+
${this.data?.prefix?.icon?.name
|
40
|
+
? html `<nile-icon part="prefix-icon" name="${this.data?.prefix?.icon?.name}" size="${this.data?.prefix?.icon?.size || "16"}" color="${this.data?.prefix?.icon?.color || "var(--nile-colors-dark-500)"}" method="${this.data?.prefix?.icon?.method || "fill"}"></nile-icon>`
|
41
|
+
: this.data?.prefix?.prefixText
|
42
|
+
? html `<span part="prefix-text">${this.data?.prefix?.prefixText}</span>`
|
43
|
+
: this.data?.prefix?.image?.src
|
44
|
+
? html `<img part="prefix-image" src="${this.data?.prefix?.image?.src}" width="${this.normalizeImageDimension(this.data?.prefix?.image?.width)}" height="${this.normalizeImageDimension(this.data?.prefix?.image?.height)}">`
|
45
|
+
: html `<slot part="prefix" name="prefix" class="option-group-prefix"></slot>`}
|
46
|
+
|
47
|
+
<!-- main content -->
|
48
|
+
${this.data?.textContent
|
49
|
+
? html `<span part="content-text">${this.data?.textContent}</span>`
|
50
|
+
: html `<slot part="content"></slot>`}
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<!-- suffix content -->
|
54
|
+
${this.data?.suffix?.icon?.name
|
55
|
+
? html `<nile-icon part="suffix-icon" name="${this.data?.suffix?.icon?.name}" size="${this.data?.suffix?.icon?.size || "16"}" color="${this.data?.suffix?.icon?.color || "var(--nile-colors-dark-500)"}" method="${this.data?.suffix?.icon?.method || "fill"}"></nile-icon>`
|
56
|
+
: this.data?.suffix?.suffixText
|
57
|
+
? html `<span part="suffix-text">${this.data?.suffix?.suffixText}</span>`
|
58
|
+
: this.data?.suffix?.image?.src
|
59
|
+
? html `<img part="suffix-image" src="${this.data?.prefix?.image?.src}" width="${this.normalizeImageDimension(this.data?.suffix?.image?.width)}" height="${this.normalizeImageDimension(this.data?.suffix?.image?.height)}">`
|
60
|
+
: html `<slot part="suffix" name="suffix" class="option-group-suffix"></slot>`}
|
61
|
+
</div>
|
62
|
+
`;
|
63
|
+
}
|
64
|
+
};
|
65
|
+
__decorate([
|
66
|
+
property({ type: String, reflect: true, attribute: true })
|
67
|
+
], NileOptionGroup.prototype, "name", void 0);
|
68
|
+
__decorate([
|
69
|
+
property({ type: Object, attribute: true })
|
70
|
+
], NileOptionGroup.prototype, "data", void 0);
|
71
|
+
NileOptionGroup = __decorate([
|
72
|
+
customElement('nile-option-group')
|
73
|
+
], NileOptionGroup);
|
74
|
+
export { NileOptionGroup };
|
75
|
+
export default NileOptionGroup;
|
76
|
+
//# sourceMappingURL=nile-option-group.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nile-option-group.js","sourceRoot":"","sources":["../../../src/nile-option-group/nile-option-group.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Copyright Aquera Inc 2025\n *\n * This source code is licensed under the BSD-3-Clause license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport {LitElement, html, CSSResultArray, TemplateResult} from 'lit';\nimport { customElement, property} from 'lit/decorators.js';\nimport {styles} from './nile-option-group.css';\nimport NileElement from '../internal/nile-element';\nimport { OptionGroupData } from './nile-option-group.interface';\n\n@customElement('nile-option-group')\nexport class NileOptionGroup extends NileElement {\n\n\tpublic static get styles(): CSSResultArray {\n\t\treturn [styles];\n\t}\n\n\t@property({type: String, reflect: true, attribute: true}) name: string = \"\";\n\t@property({type: Object, attribute: true}) data: OptionGroupData | null = null;\n\n\tprivate checkForImageOrIcon() {\n\t\treturn this.data?.prefix?.icon?.name || this.data?.prefix?.image?.src || this.data?.prefix?.prefixText;\n\t}\n\n\tprivate normalizeImageDimension(value?: string | number): string {\n\t\tif (value === undefined || value === null || value === \"\") {\n\t\t\treturn \"20\";\n\t\t}\n\t\t\n\t\tconst dimension = Number(value);\n\t\tif (isNaN(dimension) || dimension <= 0) {\n\t\t\treturn \"20\";\n\t\t}\t\n\t\treturn dimension > 40 ? \"25\" : dimension.toString();\n\t}\t\n\n\tpublic render(): TemplateResult {\n\t\treturn html`\n\t\t\t<div part=\"option-group-header\" class=\"option-group-header\">\n\t\t\t\t<div part=\"content-container\" class=\"content-container ${this.checkForImageOrIcon() ? 'gap-18px' : ''}\">\n\t\t\t\t\t<!-- prefix content -->\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.data?.prefix?.icon?.name\n\t\t\t\t\t\t? html`<nile-icon part=\"prefix-icon\" name=\"${this.data?.prefix?.icon?.name}\" size=\"${this.data?.prefix?.icon?.size || \"16\"}\" color=\"${this.data?.prefix?.icon?.color || \"var(--nile-colors-dark-500)\"}\" method=\"${this.data?.prefix?.icon?.method || \"fill\"}\"></nile-icon>`\n\t\t\t\t\t\t: this.data?.prefix?.prefixText\n\t\t\t\t\t\t\t? html`<span part=\"prefix-text\">${this.data?.prefix?.prefixText}</span>`\n\t\t\t\t\t\t\t: this.data?.prefix?.image?.src\n\t\t\t\t\t\t\t\t? html`<img part=\"prefix-image\" src=\"${this.data?.prefix?.image?.src}\" width=\"${this.normalizeImageDimension(this.data?.prefix?.image?.width)}\" height=\"${this.normalizeImageDimension(this.data?.prefix?.image?.height)}\">`\n\t\t\t\t\t\t\t\t: html`<slot part=\"prefix\" name=\"prefix\" class=\"option-group-prefix\"></slot>`\n\t\t\t\t\t}\n\n\t\t\t\t\t<!-- main content -->\n\t\t\t\t\t${\n\t\t\t\t\t\tthis.data?.textContent\n\t\t\t\t\t\t? html`<span part=\"content-text\">${this.data?.textContent}</span>`\n\t\t\t\t\t\t: html`<slot part=\"content\"></slot>`\n\t\t\t\t\t}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- suffix content -->\n\t\t\t\t${\n\t\t\t\t\tthis.data?.suffix?.icon?.name\n\t\t\t\t\t? html`<nile-icon part=\"suffix-icon\" name=\"${this.data?.suffix?.icon?.name}\" size=\"${this.data?.suffix?.icon?.size || \"16\"}\" color=\"${this.data?.suffix?.icon?.color || \"var(--nile-colors-dark-500)\"}\" method=\"${this.data?.suffix?.icon?.method || \"fill\"}\"></nile-icon>`\n\t\t\t\t\t: this.data?.suffix?.suffixText\n\t\t\t\t\t\t? html`<span part=\"suffix-text\">${this.data?.suffix?.suffixText}</span>`\n\t\t\t\t\t\t: this.data?.suffix?.image?.src\n\t\t\t\t\t\t\t? html`<img part=\"suffix-image\" src=\"${this.data?.prefix?.image?.src}\" width=\"${this.normalizeImageDimension(this.data?.suffix?.image?.width)}\" height=\"${this.normalizeImageDimension(this.data?.suffix?.image?.height)}\">`\n\t\t\t\t\t\t\t: html`<slot part=\"suffix\" name=\"suffix\" class=\"option-group-suffix\"></slot>`\n\t\t\t\t}\n\t\t\t</div>\n\t\t\t`;\n\t}\n}\n\nexport default NileOptionGroup;\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'nile-option-group': NileOptionGroup;\n }\n}"]}
|
@@ -159,6 +159,8 @@ export declare class NileSelect extends NileElement implements NileFormControl {
|
|
159
159
|
renderItemConfig?: RenderItemConfig;
|
160
160
|
data: any;
|
161
161
|
enableVirtualScroll: boolean;
|
162
|
+
/** To enable the group header in the select */
|
163
|
+
enableGroupHeader: boolean;
|
162
164
|
/** Gets the validity state object */
|
163
165
|
get validity(): ValidityState;
|
164
166
|
/** Gets the validation message */
|
@@ -214,6 +216,10 @@ export declare class NileSelect extends NileElement implements NileFormControl {
|
|
214
216
|
handleDisabledChange(): void;
|
215
217
|
handleValueChange(): void;
|
216
218
|
handleOpenChange(): Promise<void>;
|
219
|
+
private getAllGroupAttributes;
|
220
|
+
getUniqueGroupNames(arr: NileOption[]): string[];
|
221
|
+
handleGroupSearchChange(): void;
|
222
|
+
handleGroupShowSelected(): void;
|
217
223
|
/** Shows the listbox. */
|
218
224
|
show(): Promise<void>;
|
219
225
|
/** Hides the listbox. */
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"nile-select.interface.js","sourceRoot":"","sources":["../../../src/nile-select/nile-select.interface.ts"],"names":[],"mappings":"","sourcesContent":["export interface GroupAttributes {\n name: string;\n data: any;\n element: HTMLElement;\n}"]}
|
@@ -169,6 +169,8 @@ let NileSelect = class NileSelect extends NileElement {
|
|
169
169
|
this.noResultsMessage = 'No results found';
|
170
170
|
this.data = [];
|
171
171
|
this.enableVirtualScroll = false;
|
172
|
+
/** To enable the group header in the select */
|
173
|
+
this.enableGroupHeader = false;
|
172
174
|
this.options = [];
|
173
175
|
}
|
174
176
|
connectedCallback() {
|
@@ -196,6 +198,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
196
198
|
}
|
197
199
|
}
|
198
200
|
firstUpdated(_changedProperties) {
|
201
|
+
if (this.enableGroupHeader) {
|
202
|
+
this.handleGroupSearchChange();
|
203
|
+
}
|
199
204
|
if (_changedProperties.has('multiple')) {
|
200
205
|
this.setCheckBoxInOption(this.multiple);
|
201
206
|
}
|
@@ -262,6 +267,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
262
267
|
el.hidden = this.showSelected;
|
263
268
|
}
|
264
269
|
});
|
270
|
+
if (this.enableGroupHeader) {
|
271
|
+
this.handleGroupShowSelected();
|
272
|
+
}
|
265
273
|
// this.requestUpdate();
|
266
274
|
}
|
267
275
|
/**
|
@@ -274,6 +282,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
274
282
|
el.selected = false;
|
275
283
|
el.hidden = false;
|
276
284
|
});
|
285
|
+
if (this.enableGroupHeader) {
|
286
|
+
this.handleGroupShowSelected();
|
287
|
+
}
|
277
288
|
this.value = '';
|
278
289
|
this.selectionChanged();
|
279
290
|
this.emit('nile-change', { value: this.value, name: this.name });
|
@@ -391,6 +402,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
391
402
|
this.showSelected = false;
|
392
403
|
this.value = '';
|
393
404
|
this.displayInput.focus({ preventScroll: true });
|
405
|
+
if (this.enableGroupHeader) {
|
406
|
+
this.handleGroupShowSelected();
|
407
|
+
}
|
394
408
|
// Emit after update
|
395
409
|
this.updateComplete.then(() => {
|
396
410
|
const val = { value: this.multiple ? this.value : '', name: this.name };
|
@@ -443,6 +457,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
443
457
|
el.hidden = this.showSelected;
|
444
458
|
}
|
445
459
|
});
|
460
|
+
if (this.enableGroupHeader) {
|
461
|
+
this.handleGroupShowSelected();
|
462
|
+
}
|
446
463
|
this.requestUpdate();
|
447
464
|
}
|
448
465
|
}
|
@@ -473,6 +490,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
473
490
|
el.hidden = this.showSelected;
|
474
491
|
}
|
475
492
|
});
|
493
|
+
if (this.enableGroupHeader) {
|
494
|
+
this.handleGroupShowSelected();
|
495
|
+
}
|
476
496
|
// Emit after updating
|
477
497
|
this.updateComplete.then(() => {
|
478
498
|
this.nileInput({ value: this.value, name: this.name });
|
@@ -616,6 +636,9 @@ let NileSelect = class NileSelect extends NileElement {
|
|
616
636
|
}
|
617
637
|
handleSearchChange(e) {
|
618
638
|
this.searchValue = e.detail.value;
|
639
|
+
if (this.enableGroupHeader) {
|
640
|
+
this.handleGroupSearchChange();
|
641
|
+
}
|
619
642
|
if (!this.disableLocalSearch) {
|
620
643
|
let filteredOptions = this.filterOptions(this.searchValue);
|
621
644
|
if (filteredOptions.length === 0) {
|
@@ -666,8 +689,12 @@ let NileSelect = class NileSelect extends NileElement {
|
|
666
689
|
if (this.open && !this.disabled) {
|
667
690
|
// Reset the current option
|
668
691
|
this.setCurrentOption(this.selectedOptions[0] || this.getFirstOption());
|
669
|
-
// Show
|
670
692
|
this.emit('nile-show', { value: this.value, name: this.name });
|
693
|
+
if (this.enableGroupHeader) {
|
694
|
+
this.getAllGroupAttributes().forEach((el) => {
|
695
|
+
el.element.classList.remove('nile-group-hidden');
|
696
|
+
});
|
697
|
+
}
|
671
698
|
this.addOpenListeners();
|
672
699
|
this.showNoResults = !this.getAllOptions()?.length;
|
673
700
|
await stopAnimations(this);
|
@@ -705,6 +732,34 @@ let NileSelect = class NileSelect extends NileElement {
|
|
705
732
|
this.emit('nile-after-hide', { value: this.value, name: this.name });
|
706
733
|
}
|
707
734
|
}
|
735
|
+
getAllGroupAttributes() {
|
736
|
+
return Array.from(this.querySelectorAll('nile-option-group[name]')).map((el) => ({
|
737
|
+
name: el?.getAttribute('name') || '',
|
738
|
+
data: el?.getAttribute('data'),
|
739
|
+
element: el
|
740
|
+
}));
|
741
|
+
}
|
742
|
+
getUniqueGroupNames(arr) {
|
743
|
+
return Array.from(new Set(arr.map(obj => obj?.groupName)));
|
744
|
+
}
|
745
|
+
handleGroupSearchChange() {
|
746
|
+
const filtered = new Set(this.getUniqueGroupNames(this.filterOptions(this.searchValue)));
|
747
|
+
this.getAllGroupAttributes().forEach(({ name, element }) => {
|
748
|
+
element?.classList.toggle('nile-group-hidden', !filtered.has(name));
|
749
|
+
});
|
750
|
+
}
|
751
|
+
handleGroupShowSelected() {
|
752
|
+
const visibleGroups = new Set();
|
753
|
+
if (this.showSelected) {
|
754
|
+
this.getAllOptions().forEach((option) => {
|
755
|
+
if (!option.hidden)
|
756
|
+
visibleGroups.add(option.groupName);
|
757
|
+
});
|
758
|
+
}
|
759
|
+
this.getAllGroupAttributes().forEach(({ name, element }) => {
|
760
|
+
element?.classList.toggle('nile-group-hidden', this.showSelected && !visibleGroups.has(name));
|
761
|
+
});
|
762
|
+
}
|
708
763
|
/** Shows the listbox. */
|
709
764
|
async show() {
|
710
765
|
if (this.open || this.disabled) {
|
@@ -1282,6 +1337,9 @@ __decorate([
|
|
1282
1337
|
__decorate([
|
1283
1338
|
property({ type: Boolean })
|
1284
1339
|
], NileSelect.prototype, "enableVirtualScroll", void 0);
|
1340
|
+
__decorate([
|
1341
|
+
property({ type: Boolean, reflect: true, attribute: true })
|
1342
|
+
], NileSelect.prototype, "enableGroupHeader", void 0);
|
1285
1343
|
__decorate([
|
1286
1344
|
watch('disabled', { waitUntilFirstUpdate: true })
|
1287
1345
|
], NileSelect.prototype, "handleDisabledChange", null);
|