@aquera/nile-elements 2.0.18 → 2.0.20
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 +10 -0
- package/demo/index.js +0 -1
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/index.js +1275 -490
- package/dist/nile-badge/index.cjs.js +1 -1
- package/dist/nile-badge/index.esm.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.css.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.css.cjs.js.map +1 -1
- package/dist/nile-badge/nile-badge.css.esm.js +24 -3
- package/dist/nile-badge/nile-badge.esm.js +5 -3
- package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js +1 -1
- package/dist/nile-breadcrumb/nile-breadcrumb.cjs.js.map +1 -1
- package/dist/nile-breadcrumb/nile-breadcrumb.esm.js +2 -2
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.cjs.js.map +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.cjs.js.map +1 -1
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.css.esm.js +14 -2
- package/dist/nile-breadcrumb-item/nile-breadcrumb-item.esm.js +4 -4
- package/dist/nile-calendar/index.cjs.js +1 -1
- package/dist/nile-calendar/index.esm.js +1 -1
- package/dist/nile-calendar/nile-calendar.cjs.js +2 -1
- package/dist/nile-calendar/nile-calendar.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.css.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.css.esm.js +357 -2
- package/dist/nile-calendar/nile-calendar.esm.js +365 -41
- package/dist/nile-calendar/timezones.cjs.js +1 -1
- package/dist/nile-calendar/timezones.cjs.js.map +1 -1
- package/dist/nile-calendar/timezones.esm.js +1 -1
- package/dist/nile-date-time-picker/index.cjs.js +2 -0
- package/dist/nile-date-time-picker/index.cjs.js.map +1 -0
- package/dist/nile-date-time-picker/index.esm.js +1 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.cjs.js +2 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.cjs.js.map +1 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.css.cjs.js +2 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.css.cjs.js.map +1 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.css.esm.js +13 -0
- package/dist/nile-date-time-picker/nile-date-time-picker.esm.js +53 -0
- 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 +2 -2
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +1 -1
- package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
- package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
- package/dist/nile-select/virtual-scroll-helper.esm.js +48 -47
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -4
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +2 -2
- 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-badge/nile-badge.css.js +24 -3
- package/dist/src/nile-badge/nile-badge.css.js.map +1 -1
- package/dist/src/nile-badge/nile-badge.d.ts +7 -4
- package/dist/src/nile-badge/nile-badge.js +22 -5
- package/dist/src/nile-badge/nile-badge.js.map +1 -1
- package/dist/src/nile-badge/nile-badge.test.js +88 -0
- package/dist/src/nile-badge/nile-badge.test.js.map +1 -1
- package/dist/src/nile-breadcrumb/nile-breadcrumb.d.ts +7 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.js +24 -1
- package/dist/src/nile-breadcrumb/nile-breadcrumb.js.map +1 -1
- package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js +51 -0
- package/dist/src/nile-breadcrumb/nile-breadcrumb.test.js.map +1 -1
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js +12 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.css.js.map +1 -1
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.d.ts +5 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js +9 -0
- package/dist/src/nile-breadcrumb-item/nile-breadcrumb-item.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.css.js +355 -0
- package/dist/src/nile-calendar/nile-calendar.css.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.d.ts +175 -0
- package/dist/src/nile-calendar/nile-calendar.js +1726 -26
- package/dist/src/nile-calendar/nile-calendar.js.map +1 -1
- package/dist/src/nile-calendar/nile-calendar.test.d.ts +1 -0
- package/dist/src/nile-calendar/nile-calendar.test.js +3580 -0
- package/dist/src/nile-calendar/nile-calendar.test.js.map +1 -1
- package/dist/src/nile-calendar/timezones.d.ts +21 -0
- package/dist/src/nile-calendar/timezones.js +49 -0
- package/dist/src/nile-calendar/timezones.js.map +1 -1
- package/dist/src/nile-date-time-picker/index.d.ts +1 -0
- package/dist/src/nile-date-time-picker/index.js +2 -0
- package/dist/src/nile-date-time-picker/index.js.map +1 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.css.d.ts +11 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.css.js +49 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.css.js.map +1 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.d.ts +173 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.js +1270 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.js.map +1 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.test.d.ts +143 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.test.js +7277 -0
- package/dist/src/nile-date-time-picker/nile-date-time-picker.test.js.map +1 -0
- package/dist/src/nile-select/nile-select.d.ts +1 -0
- package/dist/src/nile-select/nile-select.js +16 -1
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-select/nile-select.test.js +430 -5
- package/dist/src/nile-select/nile-select.test.js.map +1 -1
- package/dist/src/nile-select/virtual-scroll-helper.js +7 -4
- package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +3 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.js +14 -6
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +115 -1
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utilities/animation-registry.cjs.js +1 -1
- package/dist/utilities/animation-registry.cjs.js.map +1 -1
- package/dist/utilities/animation-registry.esm.js +1 -1
- package/package.json +3 -1
- package/scripts/coverage-report.mjs +96 -0
- package/src/index.ts +1 -0
- package/src/nile-badge/nile-badge.css.ts +24 -3
- package/src/nile-badge/nile-badge.test.ts +102 -0
- package/src/nile-badge/nile-badge.ts +28 -5
- package/src/nile-breadcrumb/nile-breadcrumb.test.ts +57 -0
- package/src/nile-breadcrumb/nile-breadcrumb.ts +19 -0
- package/src/nile-breadcrumb-item/nile-breadcrumb-item.css.ts +12 -0
- package/src/nile-breadcrumb-item/nile-breadcrumb-item.ts +7 -0
- package/src/nile-calendar/nile-calendar.css.ts +355 -0
- package/src/nile-calendar/nile-calendar.test.ts +3793 -0
- package/src/nile-calendar/nile-calendar.ts +1760 -28
- package/src/nile-calendar/timezones.ts +57 -0
- package/src/nile-date-time-picker/index.ts +1 -0
- package/src/nile-date-time-picker/nile-date-time-picker.css.ts +54 -0
- package/src/nile-date-time-picker/nile-date-time-picker.test.ts +7886 -0
- package/src/nile-date-time-picker/nile-date-time-picker.ts +1153 -0
- package/src/nile-select/nile-select.test.ts +560 -5
- package/src/nile-select/nile-select.ts +21 -1
- package/src/nile-select/virtual-scroll-helper.ts +7 -4
- package/src/nile-virtual-select/nile-virtual-select.test.ts +139 -1
- package/src/nile-virtual-select/nile-virtual-select.ts +17 -6
- package/vscode-html-custom-data.json +200 -20
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { html } from 'lit';
|
|
1
|
+
import { html, noChange, nothing } from 'lit';
|
|
2
|
+
import { guard } from 'lit/directives/guard.js';
|
|
2
3
|
import type NileElement from '../internal/nile-element';
|
|
3
4
|
|
|
4
5
|
/**
|
|
@@ -13,12 +14,14 @@ export class VirtualScrollHelper {
|
|
|
13
14
|
|
|
14
15
|
renderVirtualizedContent(): any {
|
|
15
16
|
const component = this.component as any;
|
|
17
|
+
const tooltipPath = !!component.showTooltip;
|
|
16
18
|
|
|
17
19
|
return html`
|
|
18
20
|
<div class="virtual-select">
|
|
19
21
|
<nile-virtual-select
|
|
20
22
|
.name=${component.name}
|
|
21
23
|
.value=${component.value}
|
|
24
|
+
.maxOptionsVisible=${tooltipPath || !component.maxOptionsVisibleExplicit ? noChange : component.maxOptionsVisible}
|
|
22
25
|
.autoResize=${component.autoResize}
|
|
23
26
|
.showTooltip=${component.showTooltip}
|
|
24
27
|
.chipMinWidth=${component.chipMinWidth}
|
|
@@ -51,7 +54,7 @@ export class VirtualScrollHelper {
|
|
|
51
54
|
.blockValueChange=${component.blockValueChange}
|
|
52
55
|
.noWidthSync=${component.noWidthSync}
|
|
53
56
|
.enableTabClose=${component.enableTabClose}
|
|
54
|
-
.data=${component.data}
|
|
57
|
+
.data=${tooltipPath ? guard([component.data], () => component.data) : component.data}
|
|
55
58
|
.open=${component.open}
|
|
56
59
|
.loading=${component.loading}
|
|
57
60
|
.portal=${component.portal}
|
|
@@ -60,8 +63,8 @@ export class VirtualScrollHelper {
|
|
|
60
63
|
.enableDescription=${component.enableDescription}
|
|
61
64
|
.tickOnSelect=${component.tickOnSelect}
|
|
62
65
|
.legacy=${component.legacy}
|
|
63
|
-
@nile-input=${(e: CustomEvent) => component.syncValueFromVirtualSelect(e)}
|
|
64
|
-
@nile-change=${(e: CustomEvent) => component.syncValueFromVirtualSelect(e)}
|
|
66
|
+
@nile-input=${tooltipPath ? (e: CustomEvent) => component.syncValueFromVirtualSelect(e) : nothing}
|
|
67
|
+
@nile-change=${tooltipPath ? (e: CustomEvent) => component.syncValueFromVirtualSelect(e) : nothing}
|
|
65
68
|
exportparts="
|
|
66
69
|
select-options,
|
|
67
70
|
select-no-results,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { aTimeout, expect, fixture, html, nextFrame, waitUntil } from '@open-wc/testing';
|
|
1
|
+
import { aTimeout, expect, fixture, html, nextFrame, oneEvent, waitUntil } from '@open-wc/testing';
|
|
2
2
|
import './nile-virtual-select';
|
|
3
3
|
import '../nile-input/nile-input';
|
|
4
4
|
import type { NileVirtualSelect } from './nile-virtual-select';
|
|
@@ -843,3 +843,141 @@ describe('NileVirtualSelect showtooltip tooltip on sub-pixel truncation', () =>
|
|
|
843
843
|
}
|
|
844
844
|
});
|
|
845
845
|
});
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
describe('NileVirtualSelect external value while Selected is open', () => {
|
|
849
|
+
const OPTIONS = Array.from({ length: 200 }, (_, i) => ({ value: `option-${i + 1}`, label: `Option ${i + 1}` }));
|
|
850
|
+
let mounted: any;
|
|
851
|
+
|
|
852
|
+
// Let the dropdown finish hiding before the fixture is torn down, so the virtualizer is not still laying out
|
|
853
|
+
// a list that has already been detached.
|
|
854
|
+
afterEach(async () => {
|
|
855
|
+
if (mounted?.open) {
|
|
856
|
+
const hidden = oneEvent(mounted, 'nile-after-hide');
|
|
857
|
+
mounted.open = false;
|
|
858
|
+
await Promise.race([hidden, aTimeout(1500)]);
|
|
859
|
+
await nextFrame();
|
|
860
|
+
await nextFrame();
|
|
861
|
+
}
|
|
862
|
+
mounted = undefined;
|
|
863
|
+
});
|
|
864
|
+
|
|
865
|
+
// Known, pre-existing noise from @lit-labs/virtualizer (a "ResizeObserver loop" notice, and a detached-list error
|
|
866
|
+
// when the visible list swaps between a short and a long data set). The browser raises them as window errors,
|
|
867
|
+
// which would fail whichever test is running; the assertions below still decide pass or fail. The detached-list
|
|
868
|
+
// errors are matched on message AND a `virtualizer` frame in the stack, so the same message from anywhere else
|
|
869
|
+
// still fails the test. "ResizeObserver loop" is a browser notice with no stack.
|
|
870
|
+
const virtualizerErrors = ['ChildPart` has no `parentNode`', "reading 'insertBefore'"];
|
|
871
|
+
let previousOnError: OnErrorEventHandler;
|
|
872
|
+
before(() => {
|
|
873
|
+
previousOnError = window.onerror;
|
|
874
|
+
window.onerror = (message, source, lineno, colno, error) => {
|
|
875
|
+
if (typeof message === 'string') {
|
|
876
|
+
if (message.includes('ResizeObserver loop')) return true;
|
|
877
|
+
if (virtualizerErrors.some(known => message.includes(known)) && error?.stack?.toLowerCase().includes('virtualizer')) {
|
|
878
|
+
return true;
|
|
879
|
+
}
|
|
880
|
+
}
|
|
881
|
+
return previousOnError ? previousOnError.call(window, message, source, lineno, colno, error) : false;
|
|
882
|
+
};
|
|
883
|
+
});
|
|
884
|
+
after(() => {
|
|
885
|
+
window.onerror = previousOnError;
|
|
886
|
+
});
|
|
887
|
+
|
|
888
|
+
async function mount(showTooltip: boolean, value: string[] = ['option-1', 'option-2']) {
|
|
889
|
+
const el = await fixture<NileVirtualSelect>(html`<nile-virtual-select
|
|
890
|
+
multiple
|
|
891
|
+
?showTooltip=${showTooltip}
|
|
892
|
+
.data=${OPTIONS}
|
|
893
|
+
.value=${value}
|
|
894
|
+
></nile-virtual-select>`);
|
|
895
|
+
await el.updateComplete;
|
|
896
|
+
const shown = oneEvent(el, 'nile-after-show');
|
|
897
|
+
(el.shadowRoot!.querySelector('[part="combobox"]') as HTMLElement).dispatchEvent(
|
|
898
|
+
new MouseEvent('mousedown', { bubbles: true, composed: true, button: 0 })
|
|
899
|
+
);
|
|
900
|
+
await shown;
|
|
901
|
+
await aTimeout(50);
|
|
902
|
+
mounted = el;
|
|
903
|
+
return el as any;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
async function toggleSelected(el: any) {
|
|
907
|
+
(el.shadowRoot.querySelector('.select__footer nile-checkbox') as HTMLElement).click();
|
|
908
|
+
await el.updateComplete;
|
|
909
|
+
await aTimeout(30);
|
|
910
|
+
}
|
|
911
|
+
|
|
912
|
+
// The standalone select has no sized container here, so its options are not laid out; drive the same
|
|
913
|
+
// selection handler the option click uses.
|
|
914
|
+
async function pick(el: any, value: string) {
|
|
915
|
+
el.handleOptionSelection({ value });
|
|
916
|
+
await el.updateComplete;
|
|
917
|
+
await aTimeout(30);
|
|
918
|
+
}
|
|
919
|
+
|
|
920
|
+
const values = (el: any) => el.data.map((item: any) => item.value);
|
|
921
|
+
|
|
922
|
+
it('E1. showtooltip: an external value replace recomputes the Selected list', async () => {
|
|
923
|
+
const el = await mount(true);
|
|
924
|
+
await toggleSelected(el);
|
|
925
|
+
expect(values(el)).to.deep.equal(['option-1', 'option-2']);
|
|
926
|
+
|
|
927
|
+
el.value = ['option-5'];
|
|
928
|
+
await el.updateComplete;
|
|
929
|
+
await aTimeout(30);
|
|
930
|
+
|
|
931
|
+
expect(el.showSelected).to.be.true;
|
|
932
|
+
expect(values(el)).to.deep.equal(['option-5']);
|
|
933
|
+
});
|
|
934
|
+
|
|
935
|
+
it('E2. showtooltip: an external value that adds or removes items follows the Selected list', async () => {
|
|
936
|
+
const el = await mount(true);
|
|
937
|
+
await toggleSelected(el);
|
|
938
|
+
|
|
939
|
+
el.value = ['option-1', 'option-2', 'option-7'];
|
|
940
|
+
await el.updateComplete;
|
|
941
|
+
await aTimeout(30);
|
|
942
|
+
expect(values(el)).to.deep.equal(['option-1', 'option-2', 'option-7']);
|
|
943
|
+
|
|
944
|
+
el.value = ['option-2'];
|
|
945
|
+
await el.updateComplete;
|
|
946
|
+
await aTimeout(30);
|
|
947
|
+
expect(values(el)).to.deep.equal(['option-2']);
|
|
948
|
+
});
|
|
949
|
+
|
|
950
|
+
it('E3. showtooltip: an external empty value leaves the Selected view', async () => {
|
|
951
|
+
const el = await mount(true);
|
|
952
|
+
await toggleSelected(el);
|
|
953
|
+
|
|
954
|
+
el.value = [];
|
|
955
|
+
await el.updateComplete;
|
|
956
|
+
await aTimeout(30);
|
|
957
|
+
|
|
958
|
+
expect(el.showSelected).to.be.false;
|
|
959
|
+
expect(el.data.length).to.equal(200);
|
|
960
|
+
});
|
|
961
|
+
|
|
962
|
+
it('E4. showtooltip: a normal uncheck in the Selected view is not treated as external', async () => {
|
|
963
|
+
const el = await mount(true);
|
|
964
|
+
await toggleSelected(el);
|
|
965
|
+
|
|
966
|
+
await pick(el, 'option-2');
|
|
967
|
+
|
|
968
|
+
expect(el.value).to.deep.equal(['option-1']);
|
|
969
|
+
expect(values(el)).to.deep.equal(['option-1', 'option-2']);
|
|
970
|
+
});
|
|
971
|
+
|
|
972
|
+
it('E5. without showtooltip an external value leaves the Selected list as it was (pre-2.0.9)', async () => {
|
|
973
|
+
const el = await mount(false);
|
|
974
|
+
await toggleSelected(el);
|
|
975
|
+
|
|
976
|
+
el.value = ['option-5'];
|
|
977
|
+
await el.updateComplete;
|
|
978
|
+
await aTimeout(30);
|
|
979
|
+
|
|
980
|
+
expect(el.showSelected).to.be.true;
|
|
981
|
+
expect(values(el)).to.deep.equal(['option-1', 'option-2']);
|
|
982
|
+
});
|
|
983
|
+
});
|
|
@@ -135,9 +135,10 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
135
135
|
/** The name of the select, submitted as a name/value pair with form data. */
|
|
136
136
|
@property() name = '';
|
|
137
137
|
|
|
138
|
-
/** Array of all option items for virtual scrolling */
|
|
139
138
|
@property({ type: Array }) data: any = [];
|
|
140
139
|
|
|
140
|
+
private lastSeenValue: string | string[] | undefined;
|
|
141
|
+
|
|
141
142
|
/** Original unfiltered option items for search functionality */
|
|
142
143
|
@state() private originalOptionItems: any = [];
|
|
143
144
|
|
|
@@ -658,6 +659,15 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
658
659
|
event.preventDefault();
|
|
659
660
|
}
|
|
660
661
|
|
|
662
|
+
/** Narrows `data` to the items that are currently selected (the "Selected" view). */
|
|
663
|
+
private applySelectedFilter(): void {
|
|
664
|
+
const selectedValues = Array.isArray(this.value) ? this.value : [this.value];
|
|
665
|
+
this.data = this.originalOptionItems.filter((item: any) => {
|
|
666
|
+
const itemValue = this.getItemValue(item);
|
|
667
|
+
return selectedValues.some(val => String(val) === String(itemValue));
|
|
668
|
+
});
|
|
669
|
+
}
|
|
670
|
+
|
|
661
671
|
private toggleShowSelected(event: Event): void {
|
|
662
672
|
event.stopPropagation();
|
|
663
673
|
event.preventDefault();
|
|
@@ -668,11 +678,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
668
678
|
|
|
669
679
|
if (this.showSelected) {
|
|
670
680
|
this.searchValue = "";
|
|
671
|
-
|
|
672
|
-
this.data = this.originalOptionItems.filter((item: any) => {
|
|
673
|
-
const itemValue = this.getItemValue(item);
|
|
674
|
-
return selectedValues.some(val => String(val) === String(itemValue));
|
|
675
|
-
});
|
|
681
|
+
this.applySelectedFilter();
|
|
676
682
|
} else {
|
|
677
683
|
this.data = [...this.originalOptionItems];
|
|
678
684
|
}
|
|
@@ -859,6 +865,7 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
859
865
|
}
|
|
860
866
|
|
|
861
867
|
private selectionChanged(): void {
|
|
868
|
+
this.lastSeenValue = this.value;
|
|
862
869
|
const itemsToSearch = this.originalOptionItems.length > 0 ? this.originalOptionItems : this.data;
|
|
863
870
|
this.selectedOptions = VirtualSelectSelectionManager.createVirtualOptionsFromValues(
|
|
864
871
|
this.value,
|
|
@@ -1018,7 +1025,11 @@ export class NileVirtualSelect extends NileElement implements NileFormControl {
|
|
|
1018
1025
|
|
|
1019
1026
|
@watch('value', { waitUntilFirstUpdate: true })
|
|
1020
1027
|
handleValueChange(): void {
|
|
1028
|
+
const externalValueChange = this.value !== this.lastSeenValue;
|
|
1021
1029
|
this.selectionChanged();
|
|
1030
|
+
if (externalValueChange && this.showTooltip && this.showSelected) {
|
|
1031
|
+
this.applySelectedFilter();
|
|
1032
|
+
}
|
|
1022
1033
|
this.requestUpdate();
|
|
1023
1034
|
|
|
1024
1035
|
// Update body append content if it's active
|