@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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nile-select.test.js","sourceRoot":"","sources":["../../../src/nile-select/nile-select.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { aTimeout, expect, fixture, html, nextFrame, waitUntil } from '@open-wc/testing';\nimport './nile-select';\nimport '../nile-option/nile-option';\nimport '../nile-input/nile-input';\nimport type { NileSelect } from './nile-select';\n\ndescribe('NileSelect', () => {\n it('1. renders', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el).to.exist; });\n it('2. shadow root', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot).to.not.be.null; });\n it('3. tag name', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.tagName.toLowerCase()).to.equal('nile-select'); });\n it('4. is defined', async () => { expect(customElements.get('nile-select')).to.exist; });\n it('5. has styles', async () => { expect((await import('./nile-select')).NileSelect.styles).to.exist; });\n it('6. shadow mode', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.mode).to.equal('open'); });\n it('7. isConnected', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.isConnected).to.be.true; });\n it('8. removal', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.remove(); expect(el.isConnected).to.be.false; });\n it('9. outerHTML', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.outerHTML).to.contain('nile-select'); });\n it('10. matches', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"x\"></nile-select>`); expect(el.matches('.x')).to.be.true; });\n it('11. closest', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.closest('nile-select')).to.equal(el); });\n it('12. cloneNode', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect((el.cloneNode(true) as Element).tagName.toLowerCase()).to.equal('nile-select'); });\n it('13. dispatchEvent', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); let f = false; el.addEventListener('c', () => (f = true)); el.dispatchEvent(new Event('c')); expect(f).to.be.true; });\n it('14. updateComplete', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); const r = await el.updateComplete; expect(r).to.not.be.undefined; });\n it('15. render method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.render).to.be.a('function'); });\n it('16. shadowRoot host', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.host).to.equal(el); });\n it('17. class attr', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"sl\"></nile-select>`); expect(el.classList.contains('sl')).to.be.true; });\n it('18. id attr', async () => { const el = await fixture<NileSelect>(html`<nile-select id=\"sl1\"></nile-select>`); expect(el.id).to.equal('sl1'); });\n it('19. hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select hidden></nile-select>`); expect(el.hidden).to.be.true; });\n it('20. nodeType', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.nodeType).to.equal(1); });\n it('21. localName', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.localName).to.equal('nile-select'); });\n it('22. namespaceURI', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.namespaceURI).to.equal('http://www.w3.org/1999/xhtml'); });\n it('23. ownerDocument', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.ownerDocument).to.equal(document); });\n it('24. multiple instances', async () => { const c = await fixture(html`<div><nile-select></nile-select><nile-select></nile-select></div>`); expect(c.querySelectorAll('nile-select').length).to.equal(2); });\n it('25. parent-child', async () => { const c = await fixture(html`<div><nile-select></nile-select></div>`); expect(c.querySelector('nile-select')!.parentElement).to.equal(c); });\n it('26. createElement', async () => { const el = document.createElement('nile-select') as NileSelect; document.body.appendChild(el); await el.updateComplete; expect(el.shadowRoot).to.not.be.null; document.body.removeChild(el); });\n it('27. dataset', async () => { const el = await fixture<NileSelect>(html`<nile-select data-idx=\"0\"></nile-select>`); expect(el.dataset.idx).to.equal('0'); });\n it('28. classList add', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.classList.add('z'); expect(el.classList.contains('z')).to.be.true; });\n it('29. getBoundingClientRect', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.getBoundingClientRect()).to.exist; });\n it('30. style attr', async () => { const el = await fixture<NileSelect>(html`<nile-select style=\"color:red\"></nile-select>`); expect(el.style.color).to.equal('red'); });\n it('31. aria-label', async () => { const el = await fixture<NileSelect>(html`<nile-select aria-label=\"Select\"></nile-select>`); expect(el.getAttribute('aria-label')).to.equal('Select'); });\n it('32. dir', async () => { const el = await fixture<NileSelect>(html`<nile-select dir=\"rtl\"></nile-select>`); expect(el.dir).to.equal('rtl'); });\n it('33. lang attr', async () => { const el = await fixture<NileSelect>(html`<nile-select lang=\"en\"></nile-select>`); expect(el.lang).to.equal('en'); });\n it('34. tabindex', async () => { const el = await fixture<NileSelect>(html`<nile-select tabindex=\"0\"></nile-select>`); expect(el.getAttribute('tabindex')).to.equal('0'); });\n it('35. requestUpdate', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.requestUpdate(); await el.updateComplete; expect(el.shadowRoot).to.not.be.null; });\n it('36. shadow childNodes', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.childNodes.length).to.be.greaterThan(0); });\n it('37. scrollIntoView', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.scrollIntoView).to.be.a('function'); });\n it('38. focus method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.focus).to.be.a('function'); });\n it('39. blur method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.blur).to.be.a('function'); });\n it('40. class toggle', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.classList.toggle('a'); expect(el.classList.contains('a')).to.be.true; });\n it('41. toggle hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.hidden = true; expect(el.hidden).to.be.true; });\n it('42. dispatchCustomEvent', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); let d: any; el.addEventListener('t', ((e: CustomEvent) => { d = e.detail; }) as EventListener); el.dispatchEvent(new CustomEvent('t', { detail: 'x' })); expect(d).to.equal('x'); });\n it('43. nested in div', async () => { const c = await fixture(html`<div><nile-select></nile-select></div>`); expect(c.querySelector('nile-select')).to.exist; });\n it('44. no table', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('table')).to.be.null; });\n it('45. no canvas', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('canvas')).to.be.null; });\n it('46. no video', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('video')).to.be.null; });\n it('47. no audio', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('audio')).to.be.null; });\n it('48. no nav', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nav')).to.be.null; });\n it('49. no aside', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('aside')).to.be.null; });\n it('50. setAttribute data', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.setAttribute('data-test', '1'); expect(el.dataset.test).to.equal('1'); });\n it('51. removeAttribute hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select hidden></nile-select>`); el.removeAttribute('hidden'); expect(el.hidden).to.be.false; });\n it('52. setAttribute class', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.setAttribute('class', 'test'); expect(el.classList.contains('test')).to.be.true; });\n it('53. aria-describedby', async () => { const el = await fixture<NileSelect>(html`<nile-select aria-describedby=\"d\"></nile-select>`); expect(el.getAttribute('aria-describedby')).to.equal('d'); });\n it('54. multiple re-renders', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); for (let i = 0; i < 3; i++) { el.requestUpdate(); await el.updateComplete; } expect(el.shadowRoot).to.not.be.null; });\n it('55. no h1', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('h1')).to.be.null; });\n it('56. no pre', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('pre')).to.be.null; });\n it('57. no code', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('code')).to.be.null; });\n it('58. no hr', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('hr')).to.be.null; });\n it('59. no p', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('p')).to.be.null; });\n it('60. title attr', async () => { const el = await fixture<NileSelect>(html`<nile-select title=\"SL\"></nile-select>`); expect(el.title).to.equal('SL'); });\n it('61. no ul', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('ul')).to.be.null; });\n it('62. no textarea', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('textarea')).to.be.null; });\n it('63. label slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"label\"]')).to.exist; });\n it('64. label slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"label\"]')).to.exist; });\n it('65. no img', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('img')).to.be.null; });\n it('66. no anchor', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('a')).to.be.null; });\n it('67. no svg', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('svg')).to.be.null; });\n it('68. no form', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('form')).to.be.null; });\n it('69. show method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.show).to.be.a('function'); });\n it('70. hide method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.hide).to.be.a('function'); });\n it('71. data attr', async () => { const el = await fixture<NileSelect>(html`<nile-select data-x=\"1\"></nile-select>`); expect(el.getAttribute('data-x')).to.equal('1'); });\n it('72. role attr', async () => { const el = await fixture<NileSelect>(html`<nile-select role=\"listbox\"></nile-select>`); expect(el.getAttribute('role')).to.equal('listbox'); });\n it('73. contains', async () => { const el = await fixture<NileSelect>(html`<nile-select><span id=\"s1\">C</span></nile-select>`); expect(el.contains(el.querySelector('#s1'))).to.be.true; });\n it('74. no button', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('button')).to.be.null; });\n it('75. no select', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('select')).to.be.null; });\n it('76. prefix slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"prefix\"]')).to.exist; });\n it('77. no nile-badge', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-badge')).to.be.null; });\n it('78. no nile-button', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-button')).to.be.null; });\n it('79. no nile-checkbox', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-checkbox')).to.be.null; });\n it('80. no section', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('section')).to.be.null; });\n it('81. no header', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('header')).to.be.null; });\n it('82. no footer', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('footer')).to.be.null; });\n it('83. no main', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('main')).to.be.null; });\n it('84. no article', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('article')).to.be.null; });\n it('85. combobox role on inner', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('[role=\"combobox\"]')).to.exist; });\n it('86. listbox role on inner', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('[role=\"listbox\"]')).to.exist; });\n it('87. expand-icon slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"expand-icon\"]')).to.exist; });\n it('88. expand-icon slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"expand-icon\"]')).to.exist; });\n it('89. default slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot:not([name])')).to.exist; });\n it('90. no nile-radio', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-radio')).to.be.null; });\n it('91. no nile-slider', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-slider')).to.be.null; });\n it('92. no nile-dialog', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-dialog')).to.be.null; });\n it('93. no nile-drawer', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-drawer')).to.be.null; });\n it('94. no nile-accordion', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-accordion')).to.be.null; });\n it('95. no nile-input', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-input')).to.be.null; });\n it('96. no nile-textarea', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-textarea')).to.be.null; });\n it('97. no nile-stepper', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-stepper')).to.be.null; });\n it('98. no nile-tab', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-tab')).to.be.null; });\n it('99. no nile-card', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-card')).to.be.null; });\n it('100. full integration', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"sl\" id=\"sl1\"></nile-select>`); expect(el.id).to.equal('sl1'); expect(el.shadowRoot).to.not.be.null; expect(el.shadowRoot!.querySelector('slot:not([name])')).to.exist; });\n});\n\ndescribe('NileSelect chip fitting behaviour matrix', () => {\n const LABELS = [\n 'Engineering Operations Team',\n 'Human Resources Department',\n 'Finance And Accounting Group',\n 'Customer Success Organisation',\n 'Product Design Studio Unit'\n ];\n\n const options = () =>\n LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n function tagsRoot(el: NileSelect) {\n return el.shadowRoot!.querySelector('.select__tags');\n }\n\n function chips(el: NileSelect) {\n return Array.from(\n el.shadowRoot!.querySelectorAll('.select__tags nile-tag')\n ) as HTMLElement[];\n }\n\n function hiddenChips(el: NileSelect) {\n return chips(el).filter(chip => chip.style.display === 'none');\n }\n\n it('M1. multiple + no max-options-visible + autoResize=false renders fitted chips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.autoResize).to.be.false;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.exist;\n expect(chips(el).length).to.equal(LABELS.length);\n });\n\n it('M2. multiple + no max-options-visible + autoResize=true refits when the container resizes', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select showtooltip multiple autoresize .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.autoResize).to.be.true;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n const wideHidden = hiddenChips(el).length;\n\n host.style.width = '180px';\n await aTimeout(200);\n await settle(el);\n\n expect(hiddenChips(el).length).to.be.at.least(wideHidden);\n });\n\n it('M3. explicit max-options-visible switches to fixed-count layout', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple max-options-visible=\"2\" .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.maxOptionsVisible).to.equal(2);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(chips(el).length).to.equal(2);\n expect(el.shadowRoot!.querySelector('span.select__tags-count')).to.exist;\n });\n\n it('M3b. max-options-visible set as a property also switches to fixed-count layout', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n\n el.maxOptionsVisible = 1;\n await settle(el);\n\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(chips(el).length).to.equal(1);\n });\n\n it('M3c. the default max-options-visible is still 3 and reading it does not opt out', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.maxOptionsVisible).to.equal(3);\n expect(el.maxOptionsVisible).to.equal(3);\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n });\n\n it('M5. autoresize works as a markup attribute', async () => {\n const b = await fixture<NileSelect>(\n html`<nile-select multiple autoresize></nile-select>`\n );\n await b.updateComplete;\n expect(b.autoResize).to.be.true;\n\n const c = await fixture<NileSelect>(\n html`<nile-select multiple></nile-select>`\n );\n await c.updateComplete;\n expect(c.autoResize).to.be.false;\n });\n\n it('M8. virtual-scroll mode keeps fitted chips when max-options-visible was never set', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip\n multiple\n enable-virtual-scroll\n .enableVirtualScroll=${true}\n .data=${LABELS.map(label => ({ label, value: label }))}\n .value=${LABELS}\n ></nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n expect(inner, 'inner nile-virtual-select should render').to.exist;\n await inner.updateComplete;\n await nextFrame();\n\n const innerTags = inner.shadowRoot.querySelector('.select__tags');\n expect(innerTags, 'inner .select__tags should render').to.exist;\n expect(innerTags.classList.contains('select__tags--fitted')).to.be.true;\n });\n\n it('M9. virtual-scroll mode forwards an explicit max-options-visible', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip\n multiple\n max-options-visible=\"2\"\n .enableVirtualScroll=${true}\n .data=${LABELS.map(label => ({ label, value: label }))}\n .value=${LABELS}\n ></nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n await nextFrame();\n\n expect(inner.maxOptionsVisible).to.equal(2);\n expect(\n inner.shadowRoot\n .querySelector('.select__tags')\n .classList.contains('select__tags--fitted')\n ).to.be.false;\n });\n\n it('M10. autoResize reflects to the autoresize attribute', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple></nile-select>`\n );\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.false;\n\n el.autoResize = true;\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.true;\n\n el.autoResize = false;\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.false;\n });\n\n it('M11. toggling max-options-visible does not leak resize observers or lose the observed container', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select showtooltip multiple autoresize .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.maxOptionsVisible = 2;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n\n const observed = (el as any).observedTagsContainer;\n expect(observed, 'observer detached in fixed-count mode').to.be.undefined;\n });\n\n it('M6. the +N button count matches the number of hidden chips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 220px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const overflow = el.shadowRoot!.querySelector(\n 'button.select__tags-count'\n ) as HTMLElement | null;\n const hidden = hiddenChips(el).length;\n\n if (hidden > 0) {\n expect(overflow).to.exist;\n expect(overflow!.textContent!.trim()).to.equal(`+${hidden}`);\n expect(overflow!.getAttribute('aria-label')).to.equal(\n `${hidden} more selected`\n );\n } else {\n // Nothing overflows, so the button is not rendered at all.\n expect(overflow).to.not.exist;\n }\n });\n\n // The tooltip is opt-in: `showtooltip` present, and the chip's text clipped.\n function tips(el: NileSelect) {\n return Array.from(\n el.shadowRoot!.querySelectorAll('.select__tag-tip')\n ) as HTMLElement[];\n }\n\n function liveTips(el: NileSelect) {\n return tips(el).filter(tip => !tip.hasAttribute('disabled'));\n }\n\n it('M12. no showtooltip attribute renders no chip tooltips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(el.hasAttribute('showtooltip')).to.be.false;\n expect(tips(el).length).to.equal(0);\n });\n\n it('M13. showtooltip shows the chip tooltip', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.true;\n expect(liveTips(el).length).to.be.greaterThan(0);\n });\n\n // Truncation is bound to the tooltip: a clipped chip is only acceptable when\n // something can reveal the value it hid. A chip wider than the whole field is\n // the one exception - there is nowhere for it to go.\n function chipContent(chip: HTMLElement) {\n return chip.shadowRoot!.querySelector('[part~=\"content\"]') as HTMLElement;\n }\n\n function clippedChipCount(el: NileSelect) {\n return chips(el)\n .filter(chip => chip.style.display !== 'none')\n .filter(chip => {\n const content = chipContent(chip);\n return content.scrollWidth > content.clientWidth + 1;\n }).length;\n }\n\n it('M16. without showtooltip the pre-2.0.9 chip row is used', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not.exist;\n expect(chips(el).every(chip => !chip.style.maxWidth)).to.be.true;\n const overflowCount = el.shadowRoot!.querySelector('span.select__tags-count');\n expect(overflowCount).to.exist;\n expect(overflowCount!.textContent).to.contain('More');\n });\n\n it('M17. showtooltip is what allows a fitted chip to be truncated', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.true;\n expect(clippedChipCount(el)).to.be.greaterThan(0);\n });\n\n it('M14. removing showtooltip hides the chip tooltip again', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const [el, control] = Array.from(\n host.querySelectorAll('nile-select')\n ) as NileSelect[];\n await settle(el);\n await settle(control);\n\n expect(liveTips(el).length).to.be.greaterThan(0);\n\n el.removeAttribute('showtooltip');\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(liveTips(el).length).to.equal(0);\n // Removing the attribute must land back on the default.\n expect(tips(el).map(tip => tip.hasAttribute('disabled'))).to.deep.equal(\n tips(control).map(tip => tip.hasAttribute('disabled'))\n );\n });\n\n it('M15. the overflow button label and text never disagree, including first paint', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 220px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n\n // Before the layout frame runs, no button may claim a count it cannot back up.\n await el.updateComplete;\n const early = el.shadowRoot!.querySelector('button.select__tags-count');\n if (early) {\n const shown = early.textContent!.trim().replace('+', '');\n expect(early.getAttribute('aria-label')).to.equal(\n `${shown} more selected`\n );\n }\n\n await settle(el);\n\n const overflow = el.shadowRoot!.querySelector(\n 'button.select__tags-count'\n ) as HTMLElement | null;\n expect(overflow).to.exist;\n const shown = overflow!.textContent!.trim().replace('+', '');\n expect(overflow!.getAttribute('aria-label')).to.equal(\n `${shown} more selected`\n );\n expect(Number(shown)).to.equal(hiddenChips(el).length);\n });\n\n it('M16. no overflow button is rendered when every chip fits', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 1200px\">\n <nile-select multiple .value=${LABELS.slice(0, 1)}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(hiddenChips(el).length).to.equal(0);\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not\n .exist;\n });\n\n // `<nile-select enableVirtualScroll>` renders a nile-virtual-select in its own\n // shadow root and hands it the public API by hand. Anything added to one and\n // not to that list is silently dead on the wrapper form, which is how\n // showTooltip / chipMinWidth / chipMaxWidth were missed - so assert the whole\n // chip-fitting surface crosses over, defaults included.\n function innerVirtual(el: NileSelect) {\n return el.shadowRoot!.querySelector('nile-virtual-select') as unknown as {\n showTooltip: boolean;\n chipMinWidth: number;\n chipMaxWidth: number;\n autoResize: boolean;\n } | null;\n }\n\n it('M17. enableVirtualScroll forwards the chip-fitting properties inward', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select\n multiple\n enableVirtualScroll\n showtooltip\n autoresize\n chipminwidth=\"90\"\n chipmaxwidth=\"160\"\n ></nile-select>`\n );\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner).to.exist;\n expect(el.showTooltip).to.be.true;\n expect(el.chipMinWidth).to.equal(90);\n expect(el.chipMaxWidth).to.equal(160);\n expect(el.autoResize).to.be.true;\n\n expect(inner!.showTooltip).to.equal(el.showTooltip);\n expect(inner!.chipMinWidth).to.equal(el.chipMinWidth);\n expect(inner!.chipMaxWidth).to.equal(el.chipMaxWidth);\n expect(inner!.autoResize).to.equal(el.autoResize);\n });\n\n it('M18. enableVirtualScroll forwards the chip-fitting defaults too', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple enableVirtualScroll></nile-select>`\n );\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner).to.exist;\n // chipMinWidth defaults to 110 on both sides, so a missing forward looks\n // correct here - the other two are what actually catch a dropped property.\n expect(inner!.showTooltip).to.be.false;\n expect(inner!.chipMinWidth).to.equal(110);\n expect(inner!.chipMaxWidth).to.equal(180);\n });\n\n it('M19. changing a chip property after first render reaches the inner select', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple enableVirtualScroll></nile-select>`\n );\n await el.updateComplete;\n\n el.showTooltip = true;\n el.chipMaxWidth = 240;\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner!.showTooltip).to.be.true;\n expect(inner!.chipMaxWidth).to.equal(240);\n });\n\n it('G1. default chips are not capped or squeezed by the 2.0.9 chip styles', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple .value=${LABELS.slice(0, 2)}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const [chip] = chips(el);\n expect(chip, 'select rendered no chips').to.exist;\n expect(getComputedStyle(chip).maxWidth).to.equal('none');\n expect(getComputedStyle(chip).minWidth).to.not.equal('0px');\n});\n\n it('G2. showtooltip caps chips at the chip max width', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple showtooltip .value=${LABELS.slice(0, 2)}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const [firstChip] = chips(el);\n expect(firstChip, 'select rendered no chips').to.exist;\n expect(getComputedStyle(firstChip).maxWidth).to.not.equal('none');\n });\n\n it('G3. autoresize without showtooltip refits with the 2.0.8 width fit', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 1200px\">\n <nile-select multiple autoresize .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n await aTimeout(20);\n const wide = el.maxOptionsVisible;\n\n host.style.width = '300px';\n await aTimeout(200);\n await settle(el);\n\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(wide).to.equal(0);\n expect(el.maxOptionsVisible).to.be.greaterThan(0);\n expect(el.shadowRoot!.querySelector('span.select__tags-count')).to.exist;\n });\n\n it('G4. toggling showTooltip switches between the fitted and the 2.0.8 chip row', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n\n el.showTooltip = true;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.exist;\n\n el.showTooltip = false;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not.exist;\n });\n});\n\ndescribe('NileSelect enableVirtualScroll value sync', () => {\n const ROLES = ['Administrators', 'Users', 'Guests', 'Print Operators'];\n const DATA = ROLES.map(role => ({ label: role, value: role }));\n\n type InnerVirtual = HTMLElement & {\n value: string | string[];\n updateComplete: Promise<boolean>;\n handleOptionSelection(option: { value: string }): void;\n handleTagRemove(event: Event, option: { value: string }): void;\n };\n\n async function virtualSelect(tpl = html`<nile-select\n multiple\n .enableVirtualScroll=${true}\n .data=${DATA}\n .value=${[]}\n ></nile-select>`) {\n const el = await fixture<NileSelect>(tpl);\n await el.updateComplete;\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as unknown as InnerVirtual;\n await inner.updateComplete;\n return { el, inner };\n }\n\n async function settle(el: NileSelect, inner: InnerVirtual) {\n await inner.updateComplete;\n await el.updateComplete;\n await inner.updateComplete;\n }\n\n it('V1. picking an option updates the wrapper value', async () => {\n const { el, inner } = await virtualSelect();\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('V2. the first pick survives a wrapper re-render', async () => {\n const { el, inner } = await virtualSelect();\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n\n el.requestUpdate();\n await settle(el, inner);\n\n expect(inner.value).to.deep.equal(['Administrators']);\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('V3. a removed chip stays removed after a wrapper re-render', async () => {\n const { el, inner } = await virtualSelect(html`<nile-select\n multiple\n .enableVirtualScroll=${true}\n .data=${DATA}\n .value=${['Administrators', 'Users', 'Guests']}\n ></nile-select>`);\n\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Administrators' });\n await settle(el, inner);\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Users' });\n await settle(el, inner);\n\n el.requestUpdate();\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Guests']);\n expect(inner.value).to.deep.equal(['Guests']);\n });\n\n it('V4. nile-change listeners on the wrapper already see the new value', async () => {\n const { el, inner } = await virtualSelect();\n const seen: unknown[] = [];\n el.addEventListener('nile-change', () => seen.push(el.value));\n\n inner.handleOptionSelection({ value: 'Guests' });\n await settle(el, inner);\n\n expect(seen).to.deep.equal([['Guests']]);\n });\n\n it('V5. single-select virtual mode keeps the wrapper value in sync', async () => {\n const { el, inner } = await virtualSelect(html`<nile-select\n .enableVirtualScroll=${true}\n .data=${DATA}\n ></nile-select>`);\n\n inner.handleOptionSelection({ value: 'Users' });\n await settle(el, inner);\n el.requestUpdate();\n await settle(el, inner);\n\n expect(el.value).to.equal('Users');\n expect(inner.value).to.equal('Users');\n });\n\n it('V6. resizing the host does not re-render the wrapper without autoResize', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 400px\">\n <nile-select multiple .enableVirtualScroll=${true} .data=${DATA}></nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n\n let updates = 0;\n const update = (el as any).update;\n (el as any).update = function (this: NileSelect, changed: Map<string, unknown>) {\n updates++;\n return update.call(this, changed);\n };\n\n host.style.width = '250px';\n await nextFrame();\n await nextFrame();\n await aTimeout(50);\n\n expect(updates).to.equal(0);\n });\n});\n\ndescribe('NileSelect enableVirtualScroll + searchEnabled value sync', () => {\n const ROLES = ['Administrators', 'Users', 'Guests', 'Print Operators'];\n const DATA = ROLES.map(role => ({ label: role, value: role }));\n\n type InnerVirtual = HTMLElement & {\n value: string | string[];\n updateComplete: Promise<boolean>;\n handleOptionSelection(option: { value: string }): void;\n handleTagRemove(event: Event, option: { value: string }): void;\n };\n\n async function settle(el: NileSelect, inner: InnerVirtual) {\n await inner.updateComplete;\n await el.updateComplete;\n await inner.updateComplete;\n await nextFrame();\n await el.updateComplete;\n await inner.updateComplete;\n }\n\n async function searchableVirtual({ multiple = true, portal = false, value = ['Users'] as string | string[] } = {}) {\n const el = await fixture<NileSelect>(html`<nile-select\n ?multiple=${multiple}\n .searchEnabled=${true}\n .enableVirtualScroll=${true}\n .portal=${portal}\n .data=${DATA}\n .value=${value}\n ></nile-select>`);\n await el.updateComplete;\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as unknown as InnerVirtual;\n await inner.updateComplete;\n (inner as any).open = true;\n await settle(el, inner);\n if (portal) {\n await waitUntil(() => document.body.querySelector('.nile-virtual-select-portal-append #listbox'), 'listbox never portalled');\n }\n await waitUntil(() => searchInput(inner)?.shadowRoot?.querySelector('input'), 'search box never rendered');\n return { el, inner };\n }\n\n function searchInput(inner: InnerVirtual): HTMLElement {\n const inShadow = inner.shadowRoot!.querySelector('.select__search nile-input');\n const inPortal = document.body.querySelector('.nile-virtual-select-portal-append .select__search nile-input');\n return (inShadow ?? inPortal) as HTMLElement;\n }\n\n async function typeSearch(el: NileSelect, inner: InnerVirtual, text: string) {\n const input = searchInput(inner).shadowRoot!.querySelector('input') as HTMLInputElement;\n input.value = text;\n input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n await settle(el, inner);\n }\n\n afterEach(() => {\n document.body.querySelectorAll('.nile-virtual-select-portal-append').forEach(n => n.remove());\n });\n\n it('R1a. typing in the search box keeps the selected values (multiple)', async () => {\n const { el, inner } = await searchableVirtual();\n expect(searchInput(inner), 'search box rendered').to.exist;\n\n await typeSearch(el, inner, 'Adm');\n\n expect(el.value).to.deep.equal(['Users']);\n expect(inner.value).to.deep.equal(['Users']);\n });\n\n it('R1b. typing in the search box keeps the selected value (single)', async () => {\n const { el, inner } = await searchableVirtual({ multiple: false, value: 'Users' });\n\n await typeSearch(el, inner, 'zz');\n\n expect(el.value).to.equal('Users');\n expect(inner.value).to.equal('Users');\n });\n\n it('R1c. clearing the search text does not clear the selection', async () => {\n const { el, inner } = await searchableVirtual({ value: ['Users', 'Guests'] });\n\n await typeSearch(el, inner, 'Gu');\n await typeSearch(el, inner, '');\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n\n await typeSearch(el, inner, 'Gu');\n const clear = searchInput(inner).shadowRoot!.querySelector('.input__clear') as HTMLElement;\n expect(clear, 'search clear button rendered').to.exist;\n clear.click();\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n expect(inner.value).to.deep.equal(['Users', 'Guests']);\n });\n\n it('R1d. a real selection while searching still updates the wrapper value', async () => {\n const { el, inner } = await searchableVirtual();\n\n await typeSearch(el, inner, 'Gu');\n inner.handleOptionSelection({ value: 'Guests' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n el.requestUpdate();\n await settle(el, inner);\n expect(inner.value).to.deep.equal(['Users', 'Guests']);\n });\n\n it('R1e. removing a chip still updates the wrapper value', async () => {\n const { el, inner } = await searchableVirtual({ value: ['Users', 'Guests'] });\n\n await typeSearch(el, inner, 'U');\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Users' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Guests']);\n });\n\n it('R1f. nile-input and nile-change from the inner select sync; nested ones do not', async () => {\n const { el, inner } = await searchableVirtual();\n const nested = inner.shadowRoot!.querySelector('.select__search') as HTMLElement;\n const fire = (target: EventTarget, name: string, value: unknown) =>\n target.dispatchEvent(new CustomEvent(name, { detail: { value }, bubbles: true, composed: true }));\n\n fire(nested, 'nile-input', 'nested-input');\n fire(nested, 'nile-change', 'nested-change');\n expect(el.value).to.deep.equal(['Users']);\n\n fire(inner, 'nile-input', ['Guests']);\n expect(el.value).to.deep.equal(['Guests']);\n fire(inner, 'nile-change', ['Administrators']);\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('R1g. portal mode: list is portalled, search keeps the value, selection syncs', async () => {\n const { el, inner } = await searchableVirtual({ portal: true });\n\n const listbox = document.body.querySelector('.nile-virtual-select-portal-append #listbox');\n expect(listbox, 'listbox moved under document.body').to.exist;\n expect(inner.shadowRoot!.querySelector('#listbox')).to.equal(null);\n\n await typeSearch(el, inner, 'Adm');\n expect(el.value).to.deep.equal(['Users']);\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n expect(el.value).to.deep.equal(['Users', 'Administrators']);\n\n (inner as any).open = false;\n await settle(el, inner);\n await waitUntil(() => !document.body.querySelector('.nile-virtual-select-portal-append'), 'portal not cleaned up');\n });\n});\n\ndescribe('NileSelect chipMinWidth / chipMaxWidth attributes', () => {\n const LABELS = ['Engineering Operations Team', 'Human Resources Department'];\n const options = () => LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const firstChip = (el: NileSelect) =>\n el.shadowRoot!.querySelector('.select__tags nile-tag') as HTMLElement;\n\n it('R4a. defaults are 110 / 180 and are not written to the host', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple>${options()}</nile-select>`);\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(110);\n expect(el.chipMaxWidth).to.equal(180);\n expect(el.hasAttribute('chipminwidth')).to.be.false;\n expect(el.hasAttribute('chipmaxwidth')).to.be.false;\n });\n\n it('R4b. the chipminwidth / chipmaxwidth attributes still set the properties', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple chipminwidth=\"90\" chipmaxwidth=\"150\">${options()}</nile-select>`\n );\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(90);\n expect(el.chipMaxWidth).to.equal(150);\n\n el.setAttribute('chipmaxwidth', '160');\n await settle(el);\n expect(el.chipMaxWidth).to.equal(160);\n });\n\n it('R4c. setting the properties programmatically works and does not add attributes', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple>${options()}</nile-select>`);\n await settle(el);\n\n el.chipMinWidth = 95;\n el.chipMaxWidth = 140;\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(95);\n expect(el.chipMaxWidth).to.equal(140);\n expect(el.hasAttribute('chipmaxwidth')).to.be.false;\n });\n\n it('R4d. showtooltip still caps squeezed chips at chipMaxWidth (attribute and property)', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 300px\">\n <nile-select multiple showtooltip chipmaxwidth=\"150\" .value=${LABELS}>${options()}</nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const chip = firstChip(el);\n expect(chip, 'select rendered no chips').to.exist;\n expect(chip.getBoundingClientRect().width).to.be.within(1, 150.5);\n\n el.chipMaxWidth = 120;\n await settle(el);\n await nextFrame();\n expect(firstChip(el).getBoundingClientRect().width).to.be.within(1, 120.5);\n });\n\n it('R4e. virtual mode forwards explicit values without reflecting defaults on either host', async () => {\n const data = LABELS.map(label => ({ label, value: label }));\n const el = await fixture<NileSelect>(\n html`<nile-select multiple .enableVirtualScroll=${true} .data=${data} chipmaxwidth=\"150\"></nile-select>`\n );\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n\n expect(inner.chipMaxWidth).to.equal(150);\n expect(inner.chipMinWidth).to.equal(110);\n expect(el.hasAttribute('chipminwidth')).to.be.false;\n expect(inner.hasAttribute('chipminwidth')).to.be.false;\n expect(inner.hasAttribute('chipmaxwidth')).to.be.false;\n });\n});\n\ndescribe('NileSelect footer width with and without noWidthSync', () => {\n async function openSelect(width: number, noWidthSync: boolean) {\n const host = await fixture<HTMLElement>(html`<div style=\"width: ${width}px\">\n <nile-select multiple .noWidthSync=${noWidthSync} .value=${['a']}>\n <nile-option value=\"a\">a</nile-option>\n <nile-option value=\"b\">b</nile-option>\n </nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await el.updateComplete;\n await el.show();\n await nextFrame();\n const listbox = el.shadowRoot!.querySelector('#listbox') as HTMLElement;\n const footer = el.shadowRoot!.querySelector('.select__footer') as HTMLElement;\n const combobox = el.shadowRoot!.querySelector('[part~=\"combobox\"]') as HTMLElement;\n return { el, listbox, footer, combobox };\n }\n\n const labelShown = (footer: HTMLElement, selector: string) =>\n getComputedStyle(footer.querySelector(selector) as HTMLElement).display !== 'none';\n\n before(() => document.documentElement.style.setProperty('--nile-display-flex', 'flex'));\n after(() => document.documentElement.style.removeProperty('--nile-display-flex'));\n\n for (const width of [120, 400]) {\n it(`R3a. noWidthSync + multiple at ${width}px does not collapse and shows the whole footer`, async () => {\n const { listbox, footer } = await openSelect(width, true);\n\n expect(listbox.offsetWidth).to.be.greaterThan(60);\n expect(listbox.offsetWidth).to.be.at.least(footer.offsetWidth);\n expect(footer.scrollWidth).to.be.at.most(footer.clientWidth + 1);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.true;\n expect(labelShown(footer, '.select__footer-action .select__footer-label')).to.be.true;\n });\n }\n\n it('R3b. width sync at normal width keeps the dropdown as wide as the trigger', async () => {\n const { listbox, combobox, footer } = await openSelect(400, false);\n\n expect(Math.abs(listbox.offsetWidth - combobox.offsetWidth)).to.be.below(2);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.true;\n });\n\n it('R3c. width sync at a narrow width still collapses the footer labels (container queries kept)', async () => {\n const { listbox, combobox, footer } = await openSelect(130, false);\n\n expect(Math.abs(listbox.offsetWidth - combobox.offsetWidth)).to.be.below(2);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.false;\n });\n});\n\ndescribe('NileSelect showtooltip chip fit recovery (hidden, reconnect, re-parent)', () => {\n const LABELS = [\n 'Engineering Operations Team',\n 'Human Resources Department',\n 'Finance And Accounting Group',\n 'Customer Success Organisation',\n 'Product Design Studio Unit'\n ];\n const options = () => LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n const NativeRO = window.ResizeObserver;\n const active = new Map<ResizeObserver, Set<Element>>();\n const liveCount = () => Array.from(active.values()).filter(targets => targets.size > 0).length;\n before(() => {\n (window as any).ResizeObserver = class extends NativeRO {\n observe(target: Element, options?: ResizeObserverOptions) {\n if (!active.has(this)) active.set(this, new Set());\n active.get(this)!.add(target);\n super.observe(target, options);\n }\n unobserve(target: Element) {\n active.get(this)?.delete(target);\n super.unobserve(target);\n }\n disconnect() {\n active.get(this)?.clear();\n super.disconnect();\n }\n };\n });\n after(() => {\n (window as any).ResizeObserver = NativeRO;\n });\n\n async function frames(n = 4) {\n for (let i = 0; i < n; i++) await nextFrame();\n }\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await frames();\n await el.updateComplete;\n await frames(2);\n }\n\n const chipsOf = (el: NileSelect) =>\n Array.from(el.shadowRoot!.querySelectorAll('.select__tags nile-tag')) as HTMLElement[];\n\n const watchActive = (el: NileSelect) => !!(el as any).measurableWatch;\n\n function fitOf(el: NileSelect) {\n const chips = chipsOf(el);\n const visible = chips.filter(chip => chip.style.display !== 'none');\n const button = el.shadowRoot!.querySelector('button.select__tags-count') as HTMLElement | null;\n return {\n chips: chips.length,\n visible: visible.length,\n more: button ? button.textContent!.trim() : '',\n widths: visible.map(chip => chip.offsetWidth)\n };\n }\n\n function box(width: number, display = 'block') {\n const div = document.createElement('div');\n div.style.width = `${width}px`;\n div.style.display = display;\n document.body.appendChild(div);\n boxes.push(div);\n return div;\n }\n let boxes: HTMLElement[] = [];\n afterEach(() => {\n boxes.forEach(b => b.remove());\n boxes = [];\n });\n\n async function makeSelect(parent: HTMLElement, { showTooltip = true, autoResize = false, value = LABELS } = {}) {\n const el = document.createElement('nile-select') as NileSelect;\n el.multiple = true;\n el.showTooltip = showTooltip;\n el.autoResize = autoResize;\n for (const label of LABELS) {\n const option = document.createElement('nile-option') as any;\n option.value = label;\n option.textContent = label;\n el.appendChild(option);\n }\n el.value = value;\n parent.appendChild(el);\n await settle(el);\n return el;\n }\n\n async function reference(width: number, opts: { showTooltip?: boolean; value?: string[] } = {}) {\n const el = await makeSelect(box(width), opts);\n const fit = fitOf(el);\n el.parentElement!.remove();\n return fit;\n }\n\n function expectFitted(actual: ReturnType<typeof fitOf>, expected: ReturnType<typeof fitOf>, el: NileSelect) {\n expect(actual.chips).to.equal(expected.chips);\n expect(actual.visible, 'visible chips').to.equal(expected.visible);\n expect(actual.more, '+N button').to.equal(expected.more);\n actual.widths.forEach((w, i) => {\n expect(w, `chip ${i} width`).to.be.within(el.chipMinWidth - 1, el.chipMaxWidth + 1);\n expect(Math.abs(w - expected.widths[i]), `chip ${i} matches reference`).to.be.at.most(2);\n });\n }\n\n it('R5-ref. the 300px reference really is a fitted row (so a stale row cannot match it)', async () => {\n const ref = await reference(300);\n expect(ref.chips).to.equal(5);\n expect(ref.visible).to.be.within(1, 4);\n expect(ref.more).to.equal(`+${5 - ref.visible}`);\n });\n\n it('R5a. hidden -> visible without reconnect recovers the fitted row, then the watch ends', async () => {\n const ref = await reference(300);\n const parent = box(300, 'none');\n const el = await makeSelect(parent);\n expect(watchActive(el), 'watch armed while hidden').to.be.true;\n\n parent.style.display = 'block';\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5b. hidden -> reconnected into a visible 300px parent re-fits, twice, without extra observers', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300, 'none'));\n expect(watchActive(el)).to.be.true;\n\n el.remove();\n expect(watchActive(el), 'disconnect stops the watch').to.be.false;\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n const liveAfterFirst = liveCount();\n\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n expect(liveCount(), 'no observer growth across reconnects').to.equal(liveAfterFirst);\n });\n\n it('R5c. visible -> disconnect -> reconnect into a narrower parent re-fits to the new width', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(700));\n expect(fitOf(el).visible).to.be.greaterThan(ref.visible);\n\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5d. value changed while hidden and detached, then reconnected, fits the new value', async () => {\n const four = LABELS.slice(0, 4);\n const ref = await reference(300, { value: four });\n const el = await makeSelect(box(300, 'none'));\n\n el.remove();\n el.value = four;\n await settle(el);\n expect(watchActive(el), 'no watch left on a detached select').to.be.false;\n\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5e. reconnect into another hidden parent keeps one watch, and recovers when shown', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300, 'none'));\n const liveHidden = liveCount();\n\n el.remove();\n const second = box(300, 'none');\n second.appendChild(el);\n await settle(el);\n expect(watchActive(el), 're-armed in the new hidden parent').to.be.true;\n expect(liveCount(), 'the old watch was replaced, not duplicated').to.equal(liveHidden);\n\n second.style.display = 'block';\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5f. showTooltip true -> false before reconnect gives the untouched 2.0.8 row', async () => {\n const legacy = await makeSelect(box(300), { showTooltip: false });\n const legacyText = legacy.shadowRoot!.querySelector('.select__tags')!.textContent!.replace(/\\s+/g, ' ').trim();\n\n const el = await makeSelect(box(300, 'none'));\n el.remove();\n el.showTooltip = false;\n box(300).appendChild(el);\n await settle(el);\n\n expect(watchActive(el)).to.be.false;\n expect(el.shadowRoot!.querySelector('.select__tags--fitted')).to.equal(null);\n chipsOf(el).forEach(chip => expect(chip.style.width, 'no fitted width on the 2.0.8 row').to.equal(''));\n expect(el.shadowRoot!.querySelector('.select__tags')!.textContent!.replace(/\\s+/g, ' ').trim()).to.equal(legacyText);\n });\n\n it('R5g. showtooltip=false: hidden -> shown and reconnect never arm a watch or write chip widths', async () => {\n const parent = box(300, 'none');\n const el = await makeSelect(parent, { showTooltip: false });\n expect(watchActive(el)).to.be.false;\n\n parent.style.display = 'block';\n await settle(el);\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n\n expect(watchActive(el)).to.be.false;\n chipsOf(el).forEach(chip => expect(chip.style.width).to.equal(''));\n });\n\n it('R5h. a visible showtooltip select never arms the watch', async () => {\n const el = await makeSelect(box(300));\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5i. repeated disconnect/reconnect cycles stay stable', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300));\n const baseline = liveCount();\n\n for (let i = 0; i < 5; i++) {\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n }\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n expect(liveCount(), 'no observer growth across cycles').to.equal(baseline);\n });\n\n async function updatesOver(el: NileSelect, ms: number) {\n let updates = 0;\n const update = (el as any).update;\n (el as any).update = function (this: NileSelect, changed: Map<string, unknown>) {\n updates++;\n return update.call(this, changed);\n };\n await aTimeout(ms);\n (el as any).update = update;\n return updates;\n }\n\n it('R5j. autoResize + showtooltip: hidden -> reconnect fits, resizes refit, and it settles', async () => {\n const ref300 = await reference(300);\n const ref500 = await reference(500);\n const el = await makeSelect(box(300, 'none'), { autoResize: true });\n\n el.remove();\n const parent = box(300);\n parent.appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref300, el);\n\n parent.style.width = '500px';\n await settle(el);\n expectFitted(fitOf(el), ref500, el);\n\n expect(await updatesOver(el, 300), 'no render loop with showtooltip').to.equal(0);\n });\n\n it('R5k. autoResize: turning showtooltip on over the 2.0.8 row gives the fitted row and settles', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300), { showTooltip: false, autoResize: true });\n\n el.showTooltip = true;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(await updatesOver(el, 300), 'no render loop once showtooltip is on').to.equal(0);\n });\n});\n\nclass R7PrefixProbe extends HTMLElement {\n static created = 0;\n constructor() {\n super();\n R7PrefixProbe.created++;\n }\n}\nif (!customElements.get('r7-prefix-probe')) customElements.define('r7-prefix-probe', R7PrefixProbe);\n\ndescribe('NileSelect option prefix copies across re-renders', () => {\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const prefixIn = (el: NileSelect, selector: string) =>\n el.shadowRoot!.querySelector(`${selector} r7-prefix-probe`) as HTMLElement | null;\n\n const withPrefix = (value: string) =>\n html`<nile-option value=${value}><r7-prefix-probe slot=\"prefix\" data-v=${value}></r7-prefix-probe>${value}</nile-option>`;\n\n it('R7a. single select: the trigger prefix node is reused across re-renders', async () => {\n const el = await fixture<NileSelect>(html`<nile-select .value=${'a'}>${withPrefix('a')}${withPrefix('b')}</nile-select>`);\n await settle(el);\n\n const first = prefixIn(el, '.select__prefix--from-options');\n expect(first, 'prefix copied into the trigger').to.exist;\n const created = R7PrefixProbe.created;\n\n for (let i = 0; i < 3; i++) {\n el.requestUpdate();\n await settle(el);\n }\n\n expect(prefixIn(el, '.select__prefix--from-options')).to.equal(first);\n expect(R7PrefixProbe.created).to.equal(created);\n });\n\n for (const showTooltip of [false, true]) {\n it(`R7b. multiple (showtooltip=${showTooltip}): chip prefix nodes are reused across re-renders`, async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple ?showtooltip=${showTooltip} .value=${['a', 'b']}>\n ${withPrefix('a')}${withPrefix('b')}\n </nile-select>`);\n await settle(el);\n\n const before = Array.from(el.shadowRoot!.querySelectorAll('.select__tags r7-prefix-probe'));\n expect(before.length).to.equal(2);\n const created = R7PrefixProbe.created;\n\n el.requestUpdate();\n await settle(el);\n\n const after = Array.from(el.shadowRoot!.querySelectorAll('.select__tags r7-prefix-probe'));\n expect(after.length).to.equal(2);\n after.forEach((node, i) => expect(node === before[i], `chip ${i} prefix replaced`).to.be.true);\n expect(R7PrefixProbe.created).to.equal(created);\n });\n }\n\n it('R7c. changing the selection or the option prefix still updates the copy', async () => {\n const el = await fixture<NileSelect>(html`<nile-select .value=${'a'}>${withPrefix('a')}${withPrefix('b')}</nile-select>`);\n await settle(el);\n\n el.value = 'b';\n await settle(el);\n expect(prefixIn(el, '.select__prefix--from-options')!.dataset.v).to.equal('b');\n\n const source = el.querySelector('nile-option[value=\"b\"] r7-prefix-probe') as HTMLElement;\n source.setAttribute('data-v', 'b2');\n el.requestUpdate();\n await settle(el);\n expect(prefixIn(el, '.select__prefix--from-options')!.dataset.v).to.equal('b2');\n });\n});\n\ndescribe('NileSelect 2.0.8 compatibility matrix', () => {\n const OPTS = ['a', 'b', 'c'];\n const options = () => OPTS.map(v => html`<nile-option value=${v}>L${v}</nile-option>`);\n const DATA = OPTS.map(v => ({ label: `L${v}`, value: v }));\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const selectedValues = (el: NileSelect) =>\n Array.from(el.querySelectorAll('nile-option'))\n .filter(o => (o as any).selected)\n .map(o => (o as any).value);\n const chipCount = (el: NileSelect) => el.shadowRoot!.querySelectorAll('.select__tags nile-tag').length;\n\n function record(el: EventTarget, names: string[]) {\n const seen: [string, unknown][] = [];\n names.forEach(name =>\n el.addEventListener(name, e => seen.push([name, JSON.parse(JSON.stringify((e as CustomEvent).detail ?? null))]))\n );\n return seen;\n }\n\n it('C1. a value in the template is applied when the options arrive later (multiple and single)', async () => {\n const multi = await fixture<NileSelect>(html`<nile-select multiple .value=${['a', 'b']}></nile-select>`);\n await settle(multi);\n OPTS.forEach(v => { const o = document.createElement('nile-option'); (o as any).value = v; o.textContent = v; multi.appendChild(o); });\n await settle(multi);\n expect(multi.value).to.deep.equal(['a', 'b']);\n expect(selectedValues(multi)).to.deep.equal(['a', 'b']);\n expect(chipCount(multi)).to.equal(2);\n\n const single = await fixture<NileSelect>(html`<nile-select .value=${'b'}></nile-select>`);\n await settle(single);\n OPTS.forEach(v => { const o = document.createElement('nile-option'); (o as any).value = v; o.textContent = v; single.appendChild(o); });\n await settle(single);\n expect(single.value).to.equal('b');\n expect(selectedValues(single)).to.deep.equal(['b']);\n });\n\n it('C2. programmatic value updates reach options, chips and the form value', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple name=\"s\">${options()}</nile-select>`);\n await settle(el);\n\n el.value = ['b', 'c'];\n await settle(el);\n expect(selectedValues(el)).to.deep.equal(['b', 'c']);\n expect(chipCount(el)).to.equal(2);\n\n el.value = [];\n await settle(el);\n expect(selectedValues(el)).to.deep.equal([]);\n expect(chipCount(el)).to.equal(0);\n });\n\n it('C3. removing a chip updates the value and emits input, change, tag-remove in order', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .value=${['a', 'b']}>${options()}</nile-select>`);\n await settle(el);\n const seen = record(el, ['nile-input', 'nile-change', 'nile-tag-remove']);\n\n const chip = el.shadowRoot!.querySelector('.select__tags nile-tag') as HTMLElement;\n expect(chip, 'select rendered no chips').to.exist;\n chip.dispatchEvent(new CustomEvent('nile-remove', { bubbles: true, composed: true }));\n await settle(el);\n\n expect(el.value).to.deep.equal(['b']);\n expect(seen.map(([name]) => name)).to.deep.equal(['nile-input', 'nile-change', 'nile-tag-remove']);\n expect((seen[2][1] as any).removedtagvalue).to.equal('a');\n });\n\n it('C4. the clear button empties the value and emits clear, input, change', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple clearable .value=${['a', 'b']}>${options()}</nile-select>`);\n await settle(el);\n const seen = record(el, ['nile-clear', 'nile-input', 'nile-change']);\n\n const clear = el.shadowRoot!.querySelector('[part~=\"clear-button\"]') as HTMLElement;\n expect(clear, 'clear button rendered').to.exist;\n clear.click();\n await settle(el);\n\n expect(el.value).to.deep.equal([]);\n expect(chipCount(el)).to.equal(0);\n expect(seen.map(([name]) => name)).to.deep.equal(['nile-clear', 'nile-input', 'nile-change']);\n });\n\n it('C5. form reset restores the value attribute', async () => {\n const form = await fixture<HTMLFormElement>(html`<form>\n <nile-select name=\"s\" multiple value=\"a b\">${options()}</nile-select>\n </form>`);\n const el = form.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.value = ['c'];\n await settle(el);\n form.reset();\n await settle(el);\n\n expect(el.value).to.deep.equal(['a', 'b']);\n expect(selectedValues(el)).to.deep.equal(['a', 'b']);\n });\n\n it('C6. portal + search: typing filters without touching the value', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple portal searchEnabled .value=${['a']}>${options()}</nile-select>`);\n await settle(el);\n await el.show();\n await aTimeout(50);\n\n const search = Array.from(document.body.querySelectorAll('nile-input')).find(n => !el.shadowRoot!.contains(n)) as HTMLElement | undefined;\n expect(search, 'portal search box rendered').to.exist;\n await (search as any).updateComplete;\n const input = search!.shadowRoot!.querySelector('input') as HTMLInputElement;\n input.value = 'Lb';\n input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n await settle(el);\n\n expect(el.value).to.deep.equal(['a']);\n await el.hide();\n });\n\n it('C7. reconnecting a multiple select without showtooltip keeps value and chips', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 500px\">\n <nile-select multiple .value=${['a', 'b']}>${options()}</nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.remove();\n host.appendChild(el);\n await settle(el);\n\n expect(el.value).to.deep.equal(['a', 'b']);\n expect(chipCount(el)).to.equal(2);\n });\n\n it('C8. enableVirtualScroll: a value set before data arrives is kept and shown', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .enableVirtualScroll=${true} .value=${['b']}></nile-select>`);\n await settle(el);\n el.data = DATA;\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n\n expect(el.value).to.deep.equal(['b']);\n expect(inner.value).to.deep.equal(['b']);\n expect(inner.shadowRoot.querySelectorAll('.select__tags nile-tag').length).to.equal(1);\n });\n\n it('C9. enableVirtualScroll: programmatic value and clear-all reach both selects', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .enableVirtualScroll=${true} .data=${DATA}></nile-select>`);\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n\n el.value = ['a', 'c'];\n await settle(el);\n await inner.updateComplete;\n expect(inner.value).to.deep.equal(['a', 'c']);\n\n inner.unSelectAll();\n await inner.updateComplete;\n await settle(el);\n expect(inner.value).to.deep.equal([]);\n expect(el.value).to.deep.equal([]);\n });\n});\n\ndescribe('NileSelect showtooltip tooltip on sub-pixel truncation', () => {\n const A = 'Engineering Operations';\n const B = 'Human Resources Department And Payroll';\n\n async function frames(n = 5) {\n for (let i = 0; i < n; i++) await nextFrame();\n }\n\n async function mount(width: number, chipMaxWidth: number) {\n const host = await fixture<HTMLElement>(html`<div style=\"width: ${width}px\">\n <nile-select multiple showtooltip chipminwidth=\"40\" chipmaxwidth=${chipMaxWidth} .value=${[A, B]}>\n <nile-option value=${A}>${A}</nile-option>\n <nile-option value=${B}>${B}</nile-option>\n </nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as any;\n await el.updateComplete;\n await frames();\n await el.updateComplete;\n await frames(2);\n return el;\n }\n\n function visiblyCut(chip: HTMLElement) {\n const content = chip.shadowRoot!.querySelector('[part=\"content\"]') as HTMLSlotElement;\n const text = content.assignedNodes({ flatten: true }).find(n => n.textContent?.trim())!;\n const range = document.createRange();\n range.selectNodeContents(text);\n const over = range.getBoundingClientRect().right - content.getBoundingClientRect().right;\n return { cut: over > 1 / 64, over, pxGap: content.scrollWidth - content.clientWidth };\n }\n\n function chipsAndTips(el: any) {\n const chips = Array.from(el.shadowRoot.querySelectorAll('.select__tags nile-tag')) as HTMLElement[];\n const tips = Array.from(el.shadowRoot.querySelectorAll('.select__tags nile-lite-tooltip')) as HTMLElement[];\n return chips\n .map((chip, i) => ({ chip, tipOn: !!tips[i] && !tips[i].hasAttribute('disabled') }))\n .filter(({ chip }) => chip.style.display !== 'none');\n }\n\n it('TT1. every visibly cut chip has its tooltip, every uncut chip has none (sweep across the edge)', async () => {\n const wide = await mount(900, 400);\n const natural = chipsAndTips(wide)[0].chip.offsetWidth;\n\n let subPixelCuts = 0;\n for (let max = natural - 4; max <= natural + 1; max += 0.25) {\n const el = await mount(330, max);\n for (const { chip, tipOn } of chipsAndTips(el)) {\n const { cut, pxGap } = visiblyCut(chip);\n expect(tipOn, `chipMaxWidth ${max}: tooltip ${tipOn} but cut ${cut}`).to.equal(cut);\n if (cut && pxGap <= 1) subPixelCuts++;\n }\n }\n expect(subPixelCuts, 'sweep reached the sub-pixel truncation window').to.be.greaterThan(0);\n });\n\n it('TT2. chips at their natural width get no tooltip', async () => {\n const el = await mount(900, 400);\n for (const { chip, tipOn } of chipsAndTips(el)) {\n expect(visiblyCut(chip).cut).to.be.false;\n expect(tipOn).to.be.false;\n }\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"nile-select.test.js","sourceRoot":"","sources":["../../../src/nile-select/nile-select.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { aTimeout, expect, fixture, html, nextFrame, oneEvent, waitUntil } from '@open-wc/testing';\nimport './nile-select';\nimport '../nile-option/nile-option';\nimport '../nile-input/nile-input';\nimport type { NileSelect } from './nile-select';\n\ndescribe('NileSelect', () => {\n it('1. renders', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el).to.exist; });\n it('2. shadow root', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot).to.not.be.null; });\n it('3. tag name', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.tagName.toLowerCase()).to.equal('nile-select'); });\n it('4. is defined', async () => { expect(customElements.get('nile-select')).to.exist; });\n it('5. has styles', async () => { expect((await import('./nile-select')).NileSelect.styles).to.exist; });\n it('6. shadow mode', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.mode).to.equal('open'); });\n it('7. isConnected', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.isConnected).to.be.true; });\n it('8. removal', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.remove(); expect(el.isConnected).to.be.false; });\n it('9. outerHTML', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.outerHTML).to.contain('nile-select'); });\n it('10. matches', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"x\"></nile-select>`); expect(el.matches('.x')).to.be.true; });\n it('11. closest', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.closest('nile-select')).to.equal(el); });\n it('12. cloneNode', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect((el.cloneNode(true) as Element).tagName.toLowerCase()).to.equal('nile-select'); });\n it('13. dispatchEvent', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); let f = false; el.addEventListener('c', () => (f = true)); el.dispatchEvent(new Event('c')); expect(f).to.be.true; });\n it('14. updateComplete', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); const r = await el.updateComplete; expect(r).to.not.be.undefined; });\n it('15. render method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.render).to.be.a('function'); });\n it('16. shadowRoot host', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.host).to.equal(el); });\n it('17. class attr', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"sl\"></nile-select>`); expect(el.classList.contains('sl')).to.be.true; });\n it('18. id attr', async () => { const el = await fixture<NileSelect>(html`<nile-select id=\"sl1\"></nile-select>`); expect(el.id).to.equal('sl1'); });\n it('19. hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select hidden></nile-select>`); expect(el.hidden).to.be.true; });\n it('20. nodeType', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.nodeType).to.equal(1); });\n it('21. localName', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.localName).to.equal('nile-select'); });\n it('22. namespaceURI', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.namespaceURI).to.equal('http://www.w3.org/1999/xhtml'); });\n it('23. ownerDocument', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.ownerDocument).to.equal(document); });\n it('24. multiple instances', async () => { const c = await fixture(html`<div><nile-select></nile-select><nile-select></nile-select></div>`); expect(c.querySelectorAll('nile-select').length).to.equal(2); });\n it('25. parent-child', async () => { const c = await fixture(html`<div><nile-select></nile-select></div>`); expect(c.querySelector('nile-select')!.parentElement).to.equal(c); });\n it('26. createElement', async () => { const el = document.createElement('nile-select') as NileSelect; document.body.appendChild(el); await el.updateComplete; expect(el.shadowRoot).to.not.be.null; document.body.removeChild(el); });\n it('27. dataset', async () => { const el = await fixture<NileSelect>(html`<nile-select data-idx=\"0\"></nile-select>`); expect(el.dataset.idx).to.equal('0'); });\n it('28. classList add', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.classList.add('z'); expect(el.classList.contains('z')).to.be.true; });\n it('29. getBoundingClientRect', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.getBoundingClientRect()).to.exist; });\n it('30. style attr', async () => { const el = await fixture<NileSelect>(html`<nile-select style=\"color:red\"></nile-select>`); expect(el.style.color).to.equal('red'); });\n it('31. aria-label', async () => { const el = await fixture<NileSelect>(html`<nile-select aria-label=\"Select\"></nile-select>`); expect(el.getAttribute('aria-label')).to.equal('Select'); });\n it('32. dir', async () => { const el = await fixture<NileSelect>(html`<nile-select dir=\"rtl\"></nile-select>`); expect(el.dir).to.equal('rtl'); });\n it('33. lang attr', async () => { const el = await fixture<NileSelect>(html`<nile-select lang=\"en\"></nile-select>`); expect(el.lang).to.equal('en'); });\n it('34. tabindex', async () => { const el = await fixture<NileSelect>(html`<nile-select tabindex=\"0\"></nile-select>`); expect(el.getAttribute('tabindex')).to.equal('0'); });\n it('35. requestUpdate', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.requestUpdate(); await el.updateComplete; expect(el.shadowRoot).to.not.be.null; });\n it('36. shadow childNodes', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.childNodes.length).to.be.greaterThan(0); });\n it('37. scrollIntoView', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.scrollIntoView).to.be.a('function'); });\n it('38. focus method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.focus).to.be.a('function'); });\n it('39. blur method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.blur).to.be.a('function'); });\n it('40. class toggle', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.classList.toggle('a'); expect(el.classList.contains('a')).to.be.true; });\n it('41. toggle hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.hidden = true; expect(el.hidden).to.be.true; });\n it('42. dispatchCustomEvent', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); let d: any; el.addEventListener('t', ((e: CustomEvent) => { d = e.detail; }) as EventListener); el.dispatchEvent(new CustomEvent('t', { detail: 'x' })); expect(d).to.equal('x'); });\n it('43. nested in div', async () => { const c = await fixture(html`<div><nile-select></nile-select></div>`); expect(c.querySelector('nile-select')).to.exist; });\n it('44. no table', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('table')).to.be.null; });\n it('45. no canvas', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('canvas')).to.be.null; });\n it('46. no video', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('video')).to.be.null; });\n it('47. no audio', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('audio')).to.be.null; });\n it('48. no nav', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nav')).to.be.null; });\n it('49. no aside', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('aside')).to.be.null; });\n it('50. setAttribute data', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.setAttribute('data-test', '1'); expect(el.dataset.test).to.equal('1'); });\n it('51. removeAttribute hidden', async () => { const el = await fixture<NileSelect>(html`<nile-select hidden></nile-select>`); el.removeAttribute('hidden'); expect(el.hidden).to.be.false; });\n it('52. setAttribute class', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); el.setAttribute('class', 'test'); expect(el.classList.contains('test')).to.be.true; });\n it('53. aria-describedby', async () => { const el = await fixture<NileSelect>(html`<nile-select aria-describedby=\"d\"></nile-select>`); expect(el.getAttribute('aria-describedby')).to.equal('d'); });\n it('54. multiple re-renders', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); for (let i = 0; i < 3; i++) { el.requestUpdate(); await el.updateComplete; } expect(el.shadowRoot).to.not.be.null; });\n it('55. no h1', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('h1')).to.be.null; });\n it('56. no pre', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('pre')).to.be.null; });\n it('57. no code', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('code')).to.be.null; });\n it('58. no hr', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('hr')).to.be.null; });\n it('59. no p', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('p')).to.be.null; });\n it('60. title attr', async () => { const el = await fixture<NileSelect>(html`<nile-select title=\"SL\"></nile-select>`); expect(el.title).to.equal('SL'); });\n it('61. no ul', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('ul')).to.be.null; });\n it('62. no textarea', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('textarea')).to.be.null; });\n it('63. label slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"label\"]')).to.exist; });\n it('64. label slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"label\"]')).to.exist; });\n it('65. no img', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('img')).to.be.null; });\n it('66. no anchor', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('a')).to.be.null; });\n it('67. no svg', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('svg')).to.be.null; });\n it('68. no form', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('form')).to.be.null; });\n it('69. show method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.show).to.be.a('function'); });\n it('70. hide method', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.hide).to.be.a('function'); });\n it('71. data attr', async () => { const el = await fixture<NileSelect>(html`<nile-select data-x=\"1\"></nile-select>`); expect(el.getAttribute('data-x')).to.equal('1'); });\n it('72. role attr', async () => { const el = await fixture<NileSelect>(html`<nile-select role=\"listbox\"></nile-select>`); expect(el.getAttribute('role')).to.equal('listbox'); });\n it('73. contains', async () => { const el = await fixture<NileSelect>(html`<nile-select><span id=\"s1\">C</span></nile-select>`); expect(el.contains(el.querySelector('#s1'))).to.be.true; });\n it('74. no button', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('button')).to.be.null; });\n it('75. no select', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('select')).to.be.null; });\n it('76. prefix slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"prefix\"]')).to.exist; });\n it('77. no nile-badge', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-badge')).to.be.null; });\n it('78. no nile-button', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-button')).to.be.null; });\n it('79. no nile-checkbox', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-checkbox')).to.be.null; });\n it('80. no section', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('section')).to.be.null; });\n it('81. no header', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('header')).to.be.null; });\n it('82. no footer', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('footer')).to.be.null; });\n it('83. no main', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('main')).to.be.null; });\n it('84. no article', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('article')).to.be.null; });\n it('85. combobox role on inner', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('[role=\"combobox\"]')).to.exist; });\n it('86. listbox role on inner', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('[role=\"listbox\"]')).to.exist; });\n it('87. expand-icon slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"expand-icon\"]')).to.exist; });\n it('88. expand-icon slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot[name=\"expand-icon\"]')).to.exist; });\n it('89. default slot', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('slot:not([name])')).to.exist; });\n it('90. no nile-radio', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-radio')).to.be.null; });\n it('91. no nile-slider', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-slider')).to.be.null; });\n it('92. no nile-dialog', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-dialog')).to.be.null; });\n it('93. no nile-drawer', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-drawer')).to.be.null; });\n it('94. no nile-accordion', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-accordion')).to.be.null; });\n it('95. no nile-input', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-input')).to.be.null; });\n it('96. no nile-textarea', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-textarea')).to.be.null; });\n it('97. no nile-stepper', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-stepper')).to.be.null; });\n it('98. no nile-tab', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-tab')).to.be.null; });\n it('99. no nile-card', async () => { const el = await fixture<NileSelect>(html`<nile-select></nile-select>`); expect(el.shadowRoot!.querySelector('nile-card')).to.be.null; });\n it('100. full integration', async () => { const el = await fixture<NileSelect>(html`<nile-select class=\"sl\" id=\"sl1\"></nile-select>`); expect(el.id).to.equal('sl1'); expect(el.shadowRoot).to.not.be.null; expect(el.shadowRoot!.querySelector('slot:not([name])')).to.exist; });\n});\n\ndescribe('NileSelect chip fitting behaviour matrix', () => {\n const LABELS = [\n 'Engineering Operations Team',\n 'Human Resources Department',\n 'Finance And Accounting Group',\n 'Customer Success Organisation',\n 'Product Design Studio Unit'\n ];\n\n const options = () =>\n LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n function tagsRoot(el: NileSelect) {\n return el.shadowRoot!.querySelector('.select__tags');\n }\n\n function chips(el: NileSelect) {\n return Array.from(\n el.shadowRoot!.querySelectorAll('.select__tags nile-tag')\n ) as HTMLElement[];\n }\n\n function hiddenChips(el: NileSelect) {\n return chips(el).filter(chip => chip.style.display === 'none');\n }\n\n it('M1. multiple + no max-options-visible + autoResize=false renders fitted chips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.autoResize).to.be.false;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.exist;\n expect(chips(el).length).to.equal(LABELS.length);\n });\n\n it('M2. multiple + no max-options-visible + autoResize=true refits when the container resizes', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select showtooltip multiple autoresize .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.autoResize).to.be.true;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n const wideHidden = hiddenChips(el).length;\n\n host.style.width = '180px';\n await aTimeout(200);\n await settle(el);\n\n expect(hiddenChips(el).length).to.be.at.least(wideHidden);\n });\n\n it('M3. explicit max-options-visible switches to fixed-count layout', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple max-options-visible=\"2\" .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.maxOptionsVisible).to.equal(2);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(chips(el).length).to.equal(2);\n expect(el.shadowRoot!.querySelector('span.select__tags-count')).to.exist;\n });\n\n it('M3b. max-options-visible set as a property also switches to fixed-count layout', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n\n el.maxOptionsVisible = 1;\n await settle(el);\n\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(chips(el).length).to.equal(1);\n });\n\n it('M3c. the default max-options-visible is still 3 and reading it does not opt out', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.maxOptionsVisible).to.equal(3);\n expect(el.maxOptionsVisible).to.equal(3);\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n });\n\n it('M5. autoresize works as a markup attribute', async () => {\n const b = await fixture<NileSelect>(\n html`<nile-select multiple autoresize></nile-select>`\n );\n await b.updateComplete;\n expect(b.autoResize).to.be.true;\n\n const c = await fixture<NileSelect>(\n html`<nile-select multiple></nile-select>`\n );\n await c.updateComplete;\n expect(c.autoResize).to.be.false;\n });\n\n it('M8. virtual-scroll mode keeps fitted chips when max-options-visible was never set', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip\n multiple\n enable-virtual-scroll\n .enableVirtualScroll=${true}\n .data=${LABELS.map(label => ({ label, value: label }))}\n .value=${LABELS}\n ></nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n expect(inner, 'inner nile-virtual-select should render').to.exist;\n await inner.updateComplete;\n await nextFrame();\n\n const innerTags = inner.shadowRoot.querySelector('.select__tags');\n expect(innerTags, 'inner .select__tags should render').to.exist;\n expect(innerTags.classList.contains('select__tags--fitted')).to.be.true;\n });\n\n it('M9. virtual-scroll mode forwards an explicit max-options-visible', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select showtooltip\n multiple\n max-options-visible=\"2\"\n .enableVirtualScroll=${true}\n .data=${LABELS.map(label => ({ label, value: label }))}\n .value=${LABELS}\n ></nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n await nextFrame();\n\n expect(inner.maxOptionsVisible).to.equal(2);\n expect(\n inner.shadowRoot\n .querySelector('.select__tags')\n .classList.contains('select__tags--fitted')\n ).to.be.false;\n });\n\n it('M10. autoResize reflects to the autoresize attribute', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple></nile-select>`\n );\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.false;\n\n el.autoResize = true;\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.true;\n\n el.autoResize = false;\n await el.updateComplete;\n expect(el.hasAttribute('autoresize')).to.be.false;\n });\n\n it('M11. toggling max-options-visible does not leak resize observers or lose the observed container', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select showtooltip multiple autoresize .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.maxOptionsVisible = 2;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n\n const observed = (el as any).observedTagsContainer;\n expect(observed, 'observer detached in fixed-count mode').to.be.undefined;\n });\n\n it('M6. the +N button count matches the number of hidden chips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 220px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const overflow = el.shadowRoot!.querySelector(\n 'button.select__tags-count'\n ) as HTMLElement | null;\n const hidden = hiddenChips(el).length;\n\n if (hidden > 0) {\n expect(overflow).to.exist;\n expect(overflow!.textContent!.trim()).to.equal(`+${hidden}`);\n expect(overflow!.getAttribute('aria-label')).to.equal(\n `${hidden} more selected`\n );\n } else {\n // Nothing overflows, so the button is not rendered at all.\n expect(overflow).to.not.exist;\n }\n });\n\n // The tooltip is opt-in: `showtooltip` present, and the chip's text clipped.\n function tips(el: NileSelect) {\n return Array.from(\n el.shadowRoot!.querySelectorAll('.select__tag-tip')\n ) as HTMLElement[];\n }\n\n function liveTips(el: NileSelect) {\n return tips(el).filter(tip => !tip.hasAttribute('disabled'));\n }\n\n it('M12. no showtooltip attribute renders no chip tooltips', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(el.hasAttribute('showtooltip')).to.be.false;\n expect(tips(el).length).to.equal(0);\n });\n\n it('M13. showtooltip shows the chip tooltip', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.true;\n expect(liveTips(el).length).to.be.greaterThan(0);\n });\n\n // Truncation is bound to the tooltip: a clipped chip is only acceptable when\n // something can reveal the value it hid. A chip wider than the whole field is\n // the one exception - there is nowhere for it to go.\n function chipContent(chip: HTMLElement) {\n return chip.shadowRoot!.querySelector('[part~=\"content\"]') as HTMLElement;\n }\n\n function clippedChipCount(el: NileSelect) {\n return chips(el)\n .filter(chip => chip.style.display !== 'none')\n .filter(chip => {\n const content = chipContent(chip);\n return content.scrollWidth > content.clientWidth + 1;\n }).length;\n }\n\n it('M16. without showtooltip the pre-2.0.9 chip row is used', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not.exist;\n expect(chips(el).every(chip => !chip.style.maxWidth)).to.be.true;\n const overflowCount = el.shadowRoot!.querySelector('span.select__tags-count');\n expect(overflowCount).to.exist;\n expect(overflowCount!.textContent).to.contain('More');\n });\n\n it('M17. showtooltip is what allows a fitted chip to be truncated', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(el.showTooltip).to.be.true;\n expect(clippedChipCount(el)).to.be.greaterThan(0);\n });\n\n it('M14. removing showtooltip hides the chip tooltip again', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 200px\">\n <nile-select multiple showtooltip .value=${LABELS}>\n ${options()}\n </nile-select>\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const [el, control] = Array.from(\n host.querySelectorAll('nile-select')\n ) as NileSelect[];\n await settle(el);\n await settle(control);\n\n expect(liveTips(el).length).to.be.greaterThan(0);\n\n el.removeAttribute('showtooltip');\n await settle(el);\n\n expect(el.showTooltip).to.be.false;\n expect(liveTips(el).length).to.equal(0);\n // Removing the attribute must land back on the default.\n expect(tips(el).map(tip => tip.hasAttribute('disabled'))).to.deep.equal(\n tips(control).map(tip => tip.hasAttribute('disabled'))\n );\n });\n\n it('M15. the overflow button label and text never disagree, including first paint', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 220px\">\n <nile-select showtooltip multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n\n // Before the layout frame runs, no button may claim a count it cannot back up.\n await el.updateComplete;\n const early = el.shadowRoot!.querySelector('button.select__tags-count');\n if (early) {\n const shown = early.textContent!.trim().replace('+', '');\n expect(early.getAttribute('aria-label')).to.equal(\n `${shown} more selected`\n );\n }\n\n await settle(el);\n\n const overflow = el.shadowRoot!.querySelector(\n 'button.select__tags-count'\n ) as HTMLElement | null;\n expect(overflow).to.exist;\n const shown = overflow!.textContent!.trim().replace('+', '');\n expect(overflow!.getAttribute('aria-label')).to.equal(\n `${shown} more selected`\n );\n expect(Number(shown)).to.equal(hiddenChips(el).length);\n });\n\n it('M16. no overflow button is rendered when every chip fits', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 1200px\">\n <nile-select multiple .value=${LABELS.slice(0, 1)}>\n ${options()}\n </nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n expect(hiddenChips(el).length).to.equal(0);\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not\n .exist;\n });\n\n // `<nile-select enableVirtualScroll>` renders a nile-virtual-select in its own\n // shadow root and hands it the public API by hand. Anything added to one and\n // not to that list is silently dead on the wrapper form, which is how\n // showTooltip / chipMinWidth / chipMaxWidth were missed - so assert the whole\n // chip-fitting surface crosses over, defaults included.\n function innerVirtual(el: NileSelect) {\n return el.shadowRoot!.querySelector('nile-virtual-select') as unknown as {\n showTooltip: boolean;\n chipMinWidth: number;\n chipMaxWidth: number;\n autoResize: boolean;\n } | null;\n }\n\n it('M17. enableVirtualScroll forwards the chip-fitting properties inward', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select\n multiple\n enableVirtualScroll\n showtooltip\n autoresize\n chipminwidth=\"90\"\n chipmaxwidth=\"160\"\n ></nile-select>`\n );\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner).to.exist;\n expect(el.showTooltip).to.be.true;\n expect(el.chipMinWidth).to.equal(90);\n expect(el.chipMaxWidth).to.equal(160);\n expect(el.autoResize).to.be.true;\n\n expect(inner!.showTooltip).to.equal(el.showTooltip);\n expect(inner!.chipMinWidth).to.equal(el.chipMinWidth);\n expect(inner!.chipMaxWidth).to.equal(el.chipMaxWidth);\n expect(inner!.autoResize).to.equal(el.autoResize);\n });\n\n it('M18. enableVirtualScroll forwards the chip-fitting defaults too', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple enableVirtualScroll></nile-select>`\n );\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner).to.exist;\n // chipMinWidth defaults to 110 on both sides, so a missing forward looks\n // correct here - the other two are what actually catch a dropped property.\n expect(inner!.showTooltip).to.be.false;\n expect(inner!.chipMinWidth).to.equal(110);\n expect(inner!.chipMaxWidth).to.equal(180);\n });\n\n it('M19. changing a chip property after first render reaches the inner select', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple enableVirtualScroll></nile-select>`\n );\n await el.updateComplete;\n\n el.showTooltip = true;\n el.chipMaxWidth = 240;\n await el.updateComplete;\n\n const inner = innerVirtual(el);\n expect(inner!.showTooltip).to.be.true;\n expect(inner!.chipMaxWidth).to.equal(240);\n });\n\n it('G1. default chips are not capped or squeezed by the 2.0.9 chip styles', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple .value=${LABELS.slice(0, 2)}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const [chip] = chips(el);\n expect(chip, 'select rendered no chips').to.exist;\n expect(getComputedStyle(chip).maxWidth).to.equal('none');\n expect(getComputedStyle(chip).minWidth).to.not.equal('0px');\n});\n\n it('G2. showtooltip caps chips at the chip max width', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 480px\">\n <nile-select multiple showtooltip .value=${LABELS.slice(0, 2)}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const [firstChip] = chips(el);\n expect(firstChip, 'select rendered no chips').to.exist;\n expect(getComputedStyle(firstChip).maxWidth).to.not.equal('none');\n });\n\n it('G3. autoresize without showtooltip refits with the 2.0.8 width fit', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 1200px\">\n <nile-select multiple autoresize .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n await aTimeout(20);\n const wide = el.maxOptionsVisible;\n\n host.style.width = '300px';\n await aTimeout(200);\n await settle(el);\n\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(wide).to.equal(0);\n expect(el.maxOptionsVisible).to.be.greaterThan(0);\n expect(el.shadowRoot!.querySelector('span.select__tags-count')).to.exist;\n });\n\n it('G4. toggling showTooltip switches between the fitted and the 2.0.8 chip row', async () => {\n const host = await fixture<HTMLElement>(\n html`<div style=\"width: 320px\">\n <nile-select multiple .value=${LABELS}>${options()}</nile-select>\n </div>`\n );\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n\n el.showTooltip = true;\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.true;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.exist;\n\n el.showTooltip = false;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n expect(tagsRoot(el)!.classList.contains('select__tags--fitted')).to.be.false;\n expect(el.shadowRoot!.querySelector('button.select__tags-count')).to.not.exist;\n });\n});\n\ndescribe('NileSelect enableVirtualScroll value sync (showTooltip)', () => {\n const ROLES = ['Administrators', 'Users', 'Guests', 'Print Operators'];\n const DATA = ROLES.map(role => ({ label: role, value: role }));\n\n type InnerVirtual = HTMLElement & {\n value: string | string[];\n updateComplete: Promise<boolean>;\n handleOptionSelection(option: { value: string }): void;\n handleTagRemove(event: Event, option: { value: string }): void;\n };\n\n async function virtualSelect(tpl = html`<nile-select\n multiple\n .enableVirtualScroll=${true}\n .showTooltip=${true}\n .data=${DATA}\n .value=${[]}\n ></nile-select>`) {\n const el = await fixture<NileSelect>(tpl);\n await el.updateComplete;\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as unknown as InnerVirtual;\n await inner.updateComplete;\n return { el, inner };\n }\n\n async function settle(el: NileSelect, inner: InnerVirtual) {\n await inner.updateComplete;\n await el.updateComplete;\n await inner.updateComplete;\n }\n\n it('V1. picking an option updates the wrapper value', async () => {\n const { el, inner } = await virtualSelect();\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('V2. the first pick survives a wrapper re-render', async () => {\n const { el, inner } = await virtualSelect();\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n\n el.requestUpdate();\n await settle(el, inner);\n\n expect(inner.value).to.deep.equal(['Administrators']);\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('V3. a removed chip stays removed after a wrapper re-render', async () => {\n const { el, inner } = await virtualSelect(html`<nile-select\n multiple\n .enableVirtualScroll=${true}\n .showTooltip=${true}\n .data=${DATA}\n .value=${['Administrators', 'Users', 'Guests']}\n ></nile-select>`);\n\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Administrators' });\n await settle(el, inner);\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Users' });\n await settle(el, inner);\n\n el.requestUpdate();\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Guests']);\n expect(inner.value).to.deep.equal(['Guests']);\n });\n\n it('V4. nile-change listeners on the wrapper already see the new value', async () => {\n const { el, inner } = await virtualSelect();\n const seen: unknown[] = [];\n el.addEventListener('nile-change', () => seen.push(el.value));\n\n inner.handleOptionSelection({ value: 'Guests' });\n await settle(el, inner);\n\n expect(seen).to.deep.equal([['Guests']]);\n });\n\n it('V5. single-select virtual mode keeps the wrapper value in sync', async () => {\n const { el, inner } = await virtualSelect(html`<nile-select\n .enableVirtualScroll=${true}\n .showTooltip=${true}\n .data=${DATA}\n ></nile-select>`);\n\n inner.handleOptionSelection({ value: 'Users' });\n await settle(el, inner);\n el.requestUpdate();\n await settle(el, inner);\n\n expect(el.value).to.equal('Users');\n expect(inner.value).to.equal('Users');\n });\n\n it('V6. resizing the host does not re-render the wrapper without autoResize', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 400px\">\n <nile-select multiple .enableVirtualScroll=${true}\n .showTooltip=${true} .data=${DATA}></nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n\n let updates = 0;\n const update = (el as any).update;\n (el as any).update = function (this: NileSelect, changed: Map<string, unknown>) {\n updates++;\n return update.call(this, changed);\n };\n\n host.style.width = '250px';\n await nextFrame();\n await nextFrame();\n await aTimeout(50);\n\n expect(updates).to.equal(0);\n });\n});\n\ndescribe('NileSelect enableVirtualScroll + searchEnabled value sync (showTooltip)', () => {\n const ROLES = ['Administrators', 'Users', 'Guests', 'Print Operators'];\n const DATA = ROLES.map(role => ({ label: role, value: role }));\n\n type InnerVirtual = HTMLElement & {\n value: string | string[];\n updateComplete: Promise<boolean>;\n handleOptionSelection(option: { value: string }): void;\n handleTagRemove(event: Event, option: { value: string }): void;\n };\n\n async function settle(el: NileSelect, inner: InnerVirtual) {\n await inner.updateComplete;\n await el.updateComplete;\n await inner.updateComplete;\n await nextFrame();\n await el.updateComplete;\n await inner.updateComplete;\n }\n\n async function searchableVirtual({ multiple = true, portal = false, value = ['Users'] as string | string[] } = {}) {\n const el = await fixture<NileSelect>(html`<nile-select\n ?multiple=${multiple}\n .searchEnabled=${true}\n .enableVirtualScroll=${true}\n .showTooltip=${true}\n .portal=${portal}\n .data=${DATA}\n .value=${value}\n ></nile-select>`);\n await el.updateComplete;\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as unknown as InnerVirtual;\n await inner.updateComplete;\n (inner as any).open = true;\n await settle(el, inner);\n if (portal) {\n await waitUntil(() => document.body.querySelector('.nile-virtual-select-portal-append #listbox'), 'listbox never portalled');\n }\n await waitUntil(() => searchInput(inner)?.shadowRoot?.querySelector('input'), 'search box never rendered');\n return { el, inner };\n }\n\n function searchInput(inner: InnerVirtual): HTMLElement {\n const inShadow = inner.shadowRoot!.querySelector('.select__search nile-input');\n const inPortal = document.body.querySelector('.nile-virtual-select-portal-append .select__search nile-input');\n return (inShadow ?? inPortal) as HTMLElement;\n }\n\n async function typeSearch(el: NileSelect, inner: InnerVirtual, text: string) {\n const input = searchInput(inner).shadowRoot!.querySelector('input') as HTMLInputElement;\n input.value = text;\n input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n await settle(el, inner);\n }\n\n afterEach(() => {\n document.body.querySelectorAll('.nile-virtual-select-portal-append').forEach(n => n.remove());\n });\n\n it('R1a. typing in the search box keeps the selected values (multiple)', async () => {\n const { el, inner } = await searchableVirtual();\n expect(searchInput(inner), 'search box rendered').to.exist;\n\n await typeSearch(el, inner, 'Adm');\n\n expect(el.value).to.deep.equal(['Users']);\n expect(inner.value).to.deep.equal(['Users']);\n });\n\n it('R1b. typing in the search box keeps the selected value (single)', async () => {\n const { el, inner } = await searchableVirtual({ multiple: false, value: 'Users' });\n\n await typeSearch(el, inner, 'zz');\n\n expect(el.value).to.equal('Users');\n expect(inner.value).to.equal('Users');\n });\n\n it('R1c. clearing the search text does not clear the selection', async () => {\n const { el, inner } = await searchableVirtual({ value: ['Users', 'Guests'] });\n\n await typeSearch(el, inner, 'Gu');\n await typeSearch(el, inner, '');\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n\n await typeSearch(el, inner, 'Gu');\n const clear = searchInput(inner).shadowRoot!.querySelector('.input__clear') as HTMLElement;\n expect(clear, 'search clear button rendered').to.exist;\n clear.click();\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n expect(inner.value).to.deep.equal(['Users', 'Guests']);\n });\n\n it('R1d. a real selection while searching still updates the wrapper value', async () => {\n const { el, inner } = await searchableVirtual();\n\n await typeSearch(el, inner, 'Gu');\n inner.handleOptionSelection({ value: 'Guests' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Users', 'Guests']);\n el.requestUpdate();\n await settle(el, inner);\n expect(inner.value).to.deep.equal(['Users', 'Guests']);\n });\n\n it('R1e. removing a chip still updates the wrapper value', async () => {\n const { el, inner } = await searchableVirtual({ value: ['Users', 'Guests'] });\n\n await typeSearch(el, inner, 'U');\n inner.handleTagRemove(new CustomEvent('nile-remove'), { value: 'Users' });\n await settle(el, inner);\n\n expect(el.value).to.deep.equal(['Guests']);\n });\n\n it('R1f. nile-input and nile-change from the inner select sync; nested ones do not', async () => {\n const { el, inner } = await searchableVirtual();\n const nested = inner.shadowRoot!.querySelector('.select__search') as HTMLElement;\n const fire = (target: EventTarget, name: string, value: unknown) =>\n target.dispatchEvent(new CustomEvent(name, { detail: { value }, bubbles: true, composed: true }));\n\n fire(nested, 'nile-input', 'nested-input');\n fire(nested, 'nile-change', 'nested-change');\n expect(el.value).to.deep.equal(['Users']);\n\n fire(inner, 'nile-input', ['Guests']);\n expect(el.value).to.deep.equal(['Guests']);\n fire(inner, 'nile-change', ['Administrators']);\n expect(el.value).to.deep.equal(['Administrators']);\n });\n\n it('R1g. portal mode: list is portalled, search keeps the value, selection syncs', async () => {\n const { el, inner } = await searchableVirtual({ portal: true });\n\n const listbox = document.body.querySelector('.nile-virtual-select-portal-append #listbox');\n expect(listbox, 'listbox moved under document.body').to.exist;\n expect(inner.shadowRoot!.querySelector('#listbox')).to.equal(null);\n\n await typeSearch(el, inner, 'Adm');\n expect(el.value).to.deep.equal(['Users']);\n\n inner.handleOptionSelection({ value: 'Administrators' });\n await settle(el, inner);\n expect(el.value).to.deep.equal(['Users', 'Administrators']);\n\n (inner as any).open = false;\n await settle(el, inner);\n await waitUntil(() => !document.body.querySelector('.nile-virtual-select-portal-append'), 'portal not cleaned up');\n });\n});\n\ndescribe('NileSelect chipMinWidth / chipMaxWidth attributes', () => {\n const LABELS = ['Engineering Operations Team', 'Human Resources Department'];\n const options = () => LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const firstChip = (el: NileSelect) =>\n el.shadowRoot!.querySelector('.select__tags nile-tag') as HTMLElement;\n\n it('R4a. defaults are 110 / 180 and are not written to the host', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple>${options()}</nile-select>`);\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(110);\n expect(el.chipMaxWidth).to.equal(180);\n expect(el.hasAttribute('chipminwidth')).to.be.false;\n expect(el.hasAttribute('chipmaxwidth')).to.be.false;\n });\n\n it('R4b. the chipminwidth / chipmaxwidth attributes still set the properties', async () => {\n const el = await fixture<NileSelect>(\n html`<nile-select multiple chipminwidth=\"90\" chipmaxwidth=\"150\">${options()}</nile-select>`\n );\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(90);\n expect(el.chipMaxWidth).to.equal(150);\n\n el.setAttribute('chipmaxwidth', '160');\n await settle(el);\n expect(el.chipMaxWidth).to.equal(160);\n });\n\n it('R4c. setting the properties programmatically works and does not add attributes', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple>${options()}</nile-select>`);\n await settle(el);\n\n el.chipMinWidth = 95;\n el.chipMaxWidth = 140;\n await settle(el);\n\n expect(el.chipMinWidth).to.equal(95);\n expect(el.chipMaxWidth).to.equal(140);\n expect(el.hasAttribute('chipmaxwidth')).to.be.false;\n });\n\n it('R4d. showtooltip still caps squeezed chips at chipMaxWidth (attribute and property)', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 300px\">\n <nile-select multiple showtooltip chipmaxwidth=\"150\" .value=${LABELS}>${options()}</nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n const chip = firstChip(el);\n expect(chip, 'select rendered no chips').to.exist;\n expect(chip.getBoundingClientRect().width).to.be.within(1, 150.5);\n\n el.chipMaxWidth = 120;\n await settle(el);\n await nextFrame();\n expect(firstChip(el).getBoundingClientRect().width).to.be.within(1, 120.5);\n });\n\n it('R4e. virtual mode forwards explicit values without reflecting defaults on either host', async () => {\n const data = LABELS.map(label => ({ label, value: label }));\n const el = await fixture<NileSelect>(\n html`<nile-select multiple .enableVirtualScroll=${true} .data=${data} chipmaxwidth=\"150\"></nile-select>`\n );\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n\n expect(inner.chipMaxWidth).to.equal(150);\n expect(inner.chipMinWidth).to.equal(110);\n expect(el.hasAttribute('chipminwidth')).to.be.false;\n expect(inner.hasAttribute('chipminwidth')).to.be.false;\n expect(inner.hasAttribute('chipmaxwidth')).to.be.false;\n });\n});\n\ndescribe('NileSelect footer width with and without noWidthSync', () => {\n async function openSelect(width: number, noWidthSync: boolean) {\n const host = await fixture<HTMLElement>(html`<div style=\"width: ${width}px\">\n <nile-select multiple .noWidthSync=${noWidthSync} .value=${['a']}>\n <nile-option value=\"a\">a</nile-option>\n <nile-option value=\"b\">b</nile-option>\n </nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await el.updateComplete;\n await el.show();\n await nextFrame();\n const listbox = el.shadowRoot!.querySelector('#listbox') as HTMLElement;\n const footer = el.shadowRoot!.querySelector('.select__footer') as HTMLElement;\n const combobox = el.shadowRoot!.querySelector('[part~=\"combobox\"]') as HTMLElement;\n return { el, listbox, footer, combobox };\n }\n\n const labelShown = (footer: HTMLElement, selector: string) =>\n getComputedStyle(footer.querySelector(selector) as HTMLElement).display !== 'none';\n\n before(() => document.documentElement.style.setProperty('--nile-display-flex', 'flex'));\n after(() => document.documentElement.style.removeProperty('--nile-display-flex'));\n\n for (const width of [120, 400]) {\n it(`R3a. noWidthSync + multiple at ${width}px does not collapse and shows the whole footer`, async () => {\n const { listbox, footer } = await openSelect(width, true);\n\n expect(listbox.offsetWidth).to.be.greaterThan(60);\n expect(listbox.offsetWidth).to.be.at.least(footer.offsetWidth);\n expect(footer.scrollWidth).to.be.at.most(footer.clientWidth + 1);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.true;\n expect(labelShown(footer, '.select__footer-action .select__footer-label')).to.be.true;\n });\n }\n\n it('R3b. width sync at normal width keeps the dropdown as wide as the trigger', async () => {\n const { listbox, combobox, footer } = await openSelect(400, false);\n\n expect(Math.abs(listbox.offsetWidth - combobox.offsetWidth)).to.be.below(2);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.true;\n });\n\n it('R3c. width sync at a narrow width still collapses the footer labels (container queries kept)', async () => {\n const { listbox, combobox, footer } = await openSelect(130, false);\n\n expect(Math.abs(listbox.offsetWidth - combobox.offsetWidth)).to.be.below(2);\n expect(labelShown(footer, '.select__clear .select__footer-label')).to.be.false;\n });\n});\n\ndescribe('NileSelect showtooltip chip fit recovery (hidden, reconnect, re-parent)', () => {\n const LABELS = [\n 'Engineering Operations Team',\n 'Human Resources Department',\n 'Finance And Accounting Group',\n 'Customer Success Organisation',\n 'Product Design Studio Unit'\n ];\n const options = () => LABELS.map(label => html`<nile-option value=${label}>${label}</nile-option>`);\n\n const NativeRO = window.ResizeObserver;\n const active = new Map<ResizeObserver, Set<Element>>();\n const liveCount = () => Array.from(active.values()).filter(targets => targets.size > 0).length;\n before(() => {\n (window as any).ResizeObserver = class extends NativeRO {\n observe(target: Element, options?: ResizeObserverOptions) {\n if (!active.has(this)) active.set(this, new Set());\n active.get(this)!.add(target);\n super.observe(target, options);\n }\n unobserve(target: Element) {\n active.get(this)?.delete(target);\n super.unobserve(target);\n }\n disconnect() {\n active.get(this)?.clear();\n super.disconnect();\n }\n };\n });\n after(() => {\n (window as any).ResizeObserver = NativeRO;\n });\n\n async function frames(n = 4) {\n for (let i = 0; i < n; i++) await nextFrame();\n }\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await frames();\n await el.updateComplete;\n await frames(2);\n }\n\n const chipsOf = (el: NileSelect) =>\n Array.from(el.shadowRoot!.querySelectorAll('.select__tags nile-tag')) as HTMLElement[];\n\n const watchActive = (el: NileSelect) => !!(el as any).measurableWatch;\n\n function fitOf(el: NileSelect) {\n const chips = chipsOf(el);\n const visible = chips.filter(chip => chip.style.display !== 'none');\n const button = el.shadowRoot!.querySelector('button.select__tags-count') as HTMLElement | null;\n return {\n chips: chips.length,\n visible: visible.length,\n more: button ? button.textContent!.trim() : '',\n widths: visible.map(chip => chip.offsetWidth)\n };\n }\n\n function box(width: number, display = 'block') {\n const div = document.createElement('div');\n div.style.width = `${width}px`;\n div.style.display = display;\n document.body.appendChild(div);\n boxes.push(div);\n return div;\n }\n let boxes: HTMLElement[] = [];\n afterEach(() => {\n boxes.forEach(b => b.remove());\n boxes = [];\n });\n\n async function makeSelect(parent: HTMLElement, { showTooltip = true, autoResize = false, value = LABELS } = {}) {\n const el = document.createElement('nile-select') as NileSelect;\n el.multiple = true;\n el.showTooltip = showTooltip;\n el.autoResize = autoResize;\n for (const label of LABELS) {\n const option = document.createElement('nile-option') as any;\n option.value = label;\n option.textContent = label;\n el.appendChild(option);\n }\n el.value = value;\n parent.appendChild(el);\n await settle(el);\n return el;\n }\n\n async function reference(width: number, opts: { showTooltip?: boolean; value?: string[] } = {}) {\n const el = await makeSelect(box(width), opts);\n const fit = fitOf(el);\n el.parentElement!.remove();\n return fit;\n }\n\n function expectFitted(actual: ReturnType<typeof fitOf>, expected: ReturnType<typeof fitOf>, el: NileSelect) {\n expect(actual.chips).to.equal(expected.chips);\n expect(actual.visible, 'visible chips').to.equal(expected.visible);\n expect(actual.more, '+N button').to.equal(expected.more);\n actual.widths.forEach((w, i) => {\n expect(w, `chip ${i} width`).to.be.within(el.chipMinWidth - 1, el.chipMaxWidth + 1);\n expect(Math.abs(w - expected.widths[i]), `chip ${i} matches reference`).to.be.at.most(2);\n });\n }\n\n it('R5-ref. the 300px reference really is a fitted row (so a stale row cannot match it)', async () => {\n const ref = await reference(300);\n expect(ref.chips).to.equal(5);\n expect(ref.visible).to.be.within(1, 4);\n expect(ref.more).to.equal(`+${5 - ref.visible}`);\n });\n\n it('R5a. hidden -> visible without reconnect recovers the fitted row, then the watch ends', async () => {\n const ref = await reference(300);\n const parent = box(300, 'none');\n const el = await makeSelect(parent);\n expect(watchActive(el), 'watch armed while hidden').to.be.true;\n\n parent.style.display = 'block';\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5b. hidden -> reconnected into a visible 300px parent re-fits, twice, without extra observers', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300, 'none'));\n expect(watchActive(el)).to.be.true;\n\n el.remove();\n expect(watchActive(el), 'disconnect stops the watch').to.be.false;\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n const liveAfterFirst = liveCount();\n\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n expect(liveCount(), 'no observer growth across reconnects').to.equal(liveAfterFirst);\n });\n\n it('R5c. visible -> disconnect -> reconnect into a narrower parent re-fits to the new width', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(700));\n expect(fitOf(el).visible).to.be.greaterThan(ref.visible);\n\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5d. value changed while hidden and detached, then reconnected, fits the new value', async () => {\n const four = LABELS.slice(0, 4);\n const ref = await reference(300, { value: four });\n const el = await makeSelect(box(300, 'none'));\n\n el.remove();\n el.value = four;\n await settle(el);\n expect(watchActive(el), 'no watch left on a detached select').to.be.false;\n\n box(300).appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5e. reconnect into another hidden parent keeps one watch, and recovers when shown', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300, 'none'));\n const liveHidden = liveCount();\n\n el.remove();\n const second = box(300, 'none');\n second.appendChild(el);\n await settle(el);\n expect(watchActive(el), 're-armed in the new hidden parent').to.be.true;\n expect(liveCount(), 'the old watch was replaced, not duplicated').to.equal(liveHidden);\n\n second.style.display = 'block';\n await settle(el);\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5f. showTooltip true -> false before reconnect gives the untouched 2.0.8 row', async () => {\n const legacy = await makeSelect(box(300), { showTooltip: false });\n const legacyText = legacy.shadowRoot!.querySelector('.select__tags')!.textContent!.replace(/\\s+/g, ' ').trim();\n\n const el = await makeSelect(box(300, 'none'));\n el.remove();\n el.showTooltip = false;\n box(300).appendChild(el);\n await settle(el);\n\n expect(watchActive(el)).to.be.false;\n expect(el.shadowRoot!.querySelector('.select__tags--fitted')).to.equal(null);\n chipsOf(el).forEach(chip => expect(chip.style.width, 'no fitted width on the 2.0.8 row').to.equal(''));\n expect(el.shadowRoot!.querySelector('.select__tags')!.textContent!.replace(/\\s+/g, ' ').trim()).to.equal(legacyText);\n });\n\n it('R5g. showtooltip=false: hidden -> shown and reconnect never arm a watch or write chip widths', async () => {\n const parent = box(300, 'none');\n const el = await makeSelect(parent, { showTooltip: false });\n expect(watchActive(el)).to.be.false;\n\n parent.style.display = 'block';\n await settle(el);\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n\n expect(watchActive(el)).to.be.false;\n chipsOf(el).forEach(chip => expect(chip.style.width).to.equal(''));\n });\n\n it('R5h. a visible showtooltip select never arms the watch', async () => {\n const el = await makeSelect(box(300));\n expect(watchActive(el)).to.be.false;\n });\n\n it('R5i. repeated disconnect/reconnect cycles stay stable', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300));\n const baseline = liveCount();\n\n for (let i = 0; i < 5; i++) {\n el.remove();\n box(300).appendChild(el);\n await settle(el);\n }\n\n expectFitted(fitOf(el), ref, el);\n expect(watchActive(el)).to.be.false;\n expect(liveCount(), 'no observer growth across cycles').to.equal(baseline);\n });\n\n async function updatesOver(el: NileSelect, ms: number) {\n let updates = 0;\n const update = (el as any).update;\n (el as any).update = function (this: NileSelect, changed: Map<string, unknown>) {\n updates++;\n return update.call(this, changed);\n };\n await aTimeout(ms);\n (el as any).update = update;\n return updates;\n }\n\n it('R5j. autoResize + showtooltip: hidden -> reconnect fits, resizes refit, and it settles', async () => {\n const ref300 = await reference(300);\n const ref500 = await reference(500);\n const el = await makeSelect(box(300, 'none'), { autoResize: true });\n\n el.remove();\n const parent = box(300);\n parent.appendChild(el);\n await settle(el);\n expectFitted(fitOf(el), ref300, el);\n\n parent.style.width = '500px';\n await settle(el);\n expectFitted(fitOf(el), ref500, el);\n\n expect(await updatesOver(el, 300), 'no render loop with showtooltip').to.equal(0);\n });\n\n it('R5k. autoResize: turning showtooltip on over the 2.0.8 row gives the fitted row and settles', async () => {\n const ref = await reference(300);\n const el = await makeSelect(box(300), { showTooltip: false, autoResize: true });\n\n el.showTooltip = true;\n await settle(el);\n await aTimeout(20);\n await settle(el);\n\n expectFitted(fitOf(el), ref, el);\n expect(await updatesOver(el, 300), 'no render loop once showtooltip is on').to.equal(0);\n });\n});\n\nclass R7PrefixProbe extends HTMLElement {\n static created = 0;\n constructor() {\n super();\n R7PrefixProbe.created++;\n }\n}\nif (!customElements.get('r7-prefix-probe')) customElements.define('r7-prefix-probe', R7PrefixProbe);\n\ndescribe('NileSelect option prefix copies across re-renders', () => {\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const prefixIn = (el: NileSelect, selector: string) =>\n el.shadowRoot!.querySelector(`${selector} r7-prefix-probe`) as HTMLElement | null;\n\n const withPrefix = (value: string) =>\n html`<nile-option value=${value}><r7-prefix-probe slot=\"prefix\" data-v=${value}></r7-prefix-probe>${value}</nile-option>`;\n\n it('R7a. single select: the trigger prefix node is reused across re-renders', async () => {\n const el = await fixture<NileSelect>(html`<nile-select .value=${'a'}>${withPrefix('a')}${withPrefix('b')}</nile-select>`);\n await settle(el);\n\n const first = prefixIn(el, '.select__prefix--from-options');\n expect(first, 'prefix copied into the trigger').to.exist;\n const created = R7PrefixProbe.created;\n\n for (let i = 0; i < 3; i++) {\n el.requestUpdate();\n await settle(el);\n }\n\n expect(prefixIn(el, '.select__prefix--from-options')).to.equal(first);\n expect(R7PrefixProbe.created).to.equal(created);\n });\n\n for (const showTooltip of [false, true]) {\n it(`R7b. multiple (showtooltip=${showTooltip}): chip prefix nodes are reused across re-renders`, async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple ?showtooltip=${showTooltip} .value=${['a', 'b']}>\n ${withPrefix('a')}${withPrefix('b')}\n </nile-select>`);\n await settle(el);\n\n const before = Array.from(el.shadowRoot!.querySelectorAll('.select__tags r7-prefix-probe'));\n expect(before.length).to.equal(2);\n const created = R7PrefixProbe.created;\n\n el.requestUpdate();\n await settle(el);\n\n const after = Array.from(el.shadowRoot!.querySelectorAll('.select__tags r7-prefix-probe'));\n expect(after.length).to.equal(2);\n after.forEach((node, i) => expect(node === before[i], `chip ${i} prefix replaced`).to.be.true);\n expect(R7PrefixProbe.created).to.equal(created);\n });\n }\n\n it('R7c. changing the selection or the option prefix still updates the copy', async () => {\n const el = await fixture<NileSelect>(html`<nile-select .value=${'a'}>${withPrefix('a')}${withPrefix('b')}</nile-select>`);\n await settle(el);\n\n el.value = 'b';\n await settle(el);\n expect(prefixIn(el, '.select__prefix--from-options')!.dataset.v).to.equal('b');\n\n const source = el.querySelector('nile-option[value=\"b\"] r7-prefix-probe') as HTMLElement;\n source.setAttribute('data-v', 'b2');\n el.requestUpdate();\n await settle(el);\n expect(prefixIn(el, '.select__prefix--from-options')!.dataset.v).to.equal('b2');\n });\n});\n\ndescribe('NileSelect 2.0.8 compatibility matrix', () => {\n const OPTS = ['a', 'b', 'c'];\n const options = () => OPTS.map(v => html`<nile-option value=${v}>L${v}</nile-option>`);\n const DATA = OPTS.map(v => ({ label: `L${v}`, value: v }));\n\n async function settle(el: NileSelect) {\n await el.updateComplete;\n await nextFrame();\n await nextFrame();\n await el.updateComplete;\n }\n\n const selectedValues = (el: NileSelect) =>\n Array.from(el.querySelectorAll('nile-option'))\n .filter(o => (o as any).selected)\n .map(o => (o as any).value);\n const chipCount = (el: NileSelect) => el.shadowRoot!.querySelectorAll('.select__tags nile-tag').length;\n\n function record(el: EventTarget, names: string[]) {\n const seen: [string, unknown][] = [];\n names.forEach(name =>\n el.addEventListener(name, e => seen.push([name, JSON.parse(JSON.stringify((e as CustomEvent).detail ?? null))]))\n );\n return seen;\n }\n\n it('C1. a value in the template is applied when the options arrive later (multiple and single)', async () => {\n const multi = await fixture<NileSelect>(html`<nile-select multiple .value=${['a', 'b']}></nile-select>`);\n await settle(multi);\n OPTS.forEach(v => { const o = document.createElement('nile-option'); (o as any).value = v; o.textContent = v; multi.appendChild(o); });\n await settle(multi);\n expect(multi.value).to.deep.equal(['a', 'b']);\n expect(selectedValues(multi)).to.deep.equal(['a', 'b']);\n expect(chipCount(multi)).to.equal(2);\n\n const single = await fixture<NileSelect>(html`<nile-select .value=${'b'}></nile-select>`);\n await settle(single);\n OPTS.forEach(v => { const o = document.createElement('nile-option'); (o as any).value = v; o.textContent = v; single.appendChild(o); });\n await settle(single);\n expect(single.value).to.equal('b');\n expect(selectedValues(single)).to.deep.equal(['b']);\n });\n\n it('C2. programmatic value updates reach options, chips and the form value', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple name=\"s\">${options()}</nile-select>`);\n await settle(el);\n\n el.value = ['b', 'c'];\n await settle(el);\n expect(selectedValues(el)).to.deep.equal(['b', 'c']);\n expect(chipCount(el)).to.equal(2);\n\n el.value = [];\n await settle(el);\n expect(selectedValues(el)).to.deep.equal([]);\n expect(chipCount(el)).to.equal(0);\n });\n\n it('C3. removing a chip updates the value and emits input, change, tag-remove in order', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .value=${['a', 'b']}>${options()}</nile-select>`);\n await settle(el);\n const seen = record(el, ['nile-input', 'nile-change', 'nile-tag-remove']);\n\n const chip = el.shadowRoot!.querySelector('.select__tags nile-tag') as HTMLElement;\n expect(chip, 'select rendered no chips').to.exist;\n chip.dispatchEvent(new CustomEvent('nile-remove', { bubbles: true, composed: true }));\n await settle(el);\n\n expect(el.value).to.deep.equal(['b']);\n expect(seen.map(([name]) => name)).to.deep.equal(['nile-input', 'nile-change', 'nile-tag-remove']);\n expect((seen[2][1] as any).removedtagvalue).to.equal('a');\n });\n\n it('C4. the clear button empties the value and emits clear, input, change', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple clearable .value=${['a', 'b']}>${options()}</nile-select>`);\n await settle(el);\n const seen = record(el, ['nile-clear', 'nile-input', 'nile-change']);\n\n const clear = el.shadowRoot!.querySelector('[part~=\"clear-button\"]') as HTMLElement;\n expect(clear, 'clear button rendered').to.exist;\n clear.click();\n await settle(el);\n\n expect(el.value).to.deep.equal([]);\n expect(chipCount(el)).to.equal(0);\n expect(seen.map(([name]) => name)).to.deep.equal(['nile-clear', 'nile-input', 'nile-change']);\n });\n\n it('C5. form reset restores the value attribute', async () => {\n const form = await fixture<HTMLFormElement>(html`<form>\n <nile-select name=\"s\" multiple value=\"a b\">${options()}</nile-select>\n </form>`);\n const el = form.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.value = ['c'];\n await settle(el);\n form.reset();\n await settle(el);\n\n expect(el.value).to.deep.equal(['a', 'b']);\n expect(selectedValues(el)).to.deep.equal(['a', 'b']);\n });\n\n it('C6. portal + search: typing filters without touching the value', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple portal searchEnabled .value=${['a']}>${options()}</nile-select>`);\n await settle(el);\n await el.show();\n await aTimeout(50);\n\n const search = Array.from(document.body.querySelectorAll('nile-input')).find(n => !el.shadowRoot!.contains(n)) as HTMLElement | undefined;\n expect(search, 'portal search box rendered').to.exist;\n await (search as any).updateComplete;\n const input = search!.shadowRoot!.querySelector('input') as HTMLInputElement;\n input.value = 'Lb';\n input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n await settle(el);\n\n expect(el.value).to.deep.equal(['a']);\n await el.hide();\n });\n\n it('C7. reconnecting a multiple select without showtooltip keeps value and chips', async () => {\n const host = await fixture<HTMLElement>(html`<div style=\"width: 500px\">\n <nile-select multiple .value=${['a', 'b']}>${options()}</nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as NileSelect;\n await settle(el);\n\n el.remove();\n host.appendChild(el);\n await settle(el);\n\n expect(el.value).to.deep.equal(['a', 'b']);\n expect(chipCount(el)).to.equal(2);\n });\n\n it('C8. enableVirtualScroll: a value set before data arrives is kept and shown', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .enableVirtualScroll=${true} .value=${['b']}></nile-select>`);\n await settle(el);\n el.data = DATA;\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n await inner.updateComplete;\n\n expect(el.value).to.deep.equal(['b']);\n expect(inner.value).to.deep.equal(['b']);\n expect(inner.shadowRoot.querySelectorAll('.select__tags nile-tag').length).to.equal(1);\n });\n\n it('C9. enableVirtualScroll: programmatic value reaches the inner select; clear-all leaves the outer value alone (pre-2.0.9)', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple .enableVirtualScroll=${true} .data=${DATA}></nile-select>`);\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n\n el.value = ['a', 'c'];\n await settle(el);\n await inner.updateComplete;\n expect(inner.value).to.deep.equal(['a', 'c']);\n\n inner.unSelectAll();\n await inner.updateComplete;\n await settle(el);\n expect(inner.value).to.deep.equal([]);\n // Without showTooltip the inner select owns the selection; the outer value is not written back.\n expect(el.value).to.deep.equal(['a', 'c']);\n });\n\n it('C9b. enableVirtualScroll + showTooltip: programmatic value and clear-all reach both selects', async () => {\n const el = await fixture<NileSelect>(html`<nile-select multiple showTooltip .enableVirtualScroll=${true} .data=${DATA}></nile-select>`);\n await settle(el);\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as any;\n\n el.value = ['a', 'c'];\n await settle(el);\n await inner.updateComplete;\n expect(inner.value).to.deep.equal(['a', 'c']);\n\n inner.unSelectAll();\n await inner.updateComplete;\n await settle(el);\n expect(inner.value).to.deep.equal([]);\n expect(el.value).to.deep.equal([]);\n });\n});\n\ndescribe('NileSelect showtooltip tooltip on sub-pixel truncation', () => {\n const A = 'Engineering Operations';\n const B = 'Human Resources Department And Payroll';\n\n async function frames(n = 5) {\n for (let i = 0; i < n; i++) await nextFrame();\n }\n\n async function mount(width: number, chipMaxWidth: number) {\n const host = await fixture<HTMLElement>(html`<div style=\"width: ${width}px\">\n <nile-select multiple showtooltip chipminwidth=\"40\" chipmaxwidth=${chipMaxWidth} .value=${[A, B]}>\n <nile-option value=${A}>${A}</nile-option>\n <nile-option value=${B}>${B}</nile-option>\n </nile-select>\n </div>`);\n const el = host.querySelector('nile-select') as any;\n await el.updateComplete;\n await frames();\n await el.updateComplete;\n await frames(2);\n return el;\n }\n\n function visiblyCut(chip: HTMLElement) {\n const content = chip.shadowRoot!.querySelector('[part=\"content\"]') as HTMLSlotElement;\n const text = content.assignedNodes({ flatten: true }).find(n => n.textContent?.trim())!;\n const range = document.createRange();\n range.selectNodeContents(text);\n const over = range.getBoundingClientRect().right - content.getBoundingClientRect().right;\n return { cut: over > 1 / 64, over, pxGap: content.scrollWidth - content.clientWidth };\n }\n\n function chipsAndTips(el: any) {\n const chips = Array.from(el.shadowRoot.querySelectorAll('.select__tags nile-tag')) as HTMLElement[];\n const tips = Array.from(el.shadowRoot.querySelectorAll('.select__tags nile-lite-tooltip')) as HTMLElement[];\n return chips\n .map((chip, i) => ({ chip, tipOn: !!tips[i] && !tips[i].hasAttribute('disabled') }))\n .filter(({ chip }) => chip.style.display !== 'none');\n }\n\n it('TT1. every visibly cut chip has its tooltip, every uncut chip has none (sweep across the edge)', async () => {\n const wide = await mount(900, 400);\n const natural = chipsAndTips(wide)[0].chip.offsetWidth;\n\n let subPixelCuts = 0;\n for (let max = natural - 4; max <= natural + 1; max += 0.25) {\n const el = await mount(330, max);\n for (const { chip, tipOn } of chipsAndTips(el)) {\n const { cut, pxGap } = visiblyCut(chip);\n expect(tipOn, `chipMaxWidth ${max}: tooltip ${tipOn} but cut ${cut}`).to.equal(cut);\n if (cut && pxGap <= 1) subPixelCuts++;\n }\n }\n expect(subPixelCuts, 'sweep reached the sub-pixel truncation window').to.be.greaterThan(0);\n });\n\n it('TT2. chips at their natural width get no tooltip', async () => {\n const el = await mount(900, 400);\n for (const { chip, tipOn } of chipsAndTips(el)) {\n expect(visiblyCut(chip).cut).to.be.false;\n expect(tipOn).to.be.false;\n }\n });\n});\n\n\n/**\n * enableVirtualScroll: the two value/data paths.\n *\n * - without `showTooltip` the wrapper behaves as it did before 2.0.9: the inner select owns the\n * selection, the wrapper `value` is not written back, and `.data` is re-applied as before;\n * - with `showTooltip` the inner value is synced up, `.data` is only re-applied when its reference\n * changes, and an external `value` change recomputes an open \"Selected\" view.\n *\n * These tests drive the rendered DOM (option mouseup, footer checkbox, search input, chip remove button)\n * rather than the inner select's methods.\n */\ntype VsInner = HTMLElement & {\n value: string | string[];\n data: Array<{ value: string; label: string }>;\n showSelected: boolean;\n searchValue: string;\n maxOptionsVisible: number;\n updateComplete: Promise<boolean>;\n};\n\nconst vsMounted: VsInner[] = [];\n\nconst VS_OPTIONS = Array.from({ length: 300 }, (_, i) => ({ value: `option-${i + 1}`, label: `Option ${i + 1}` }));\n\nfunction vsRoots(inner: VsInner): ParentNode[] {\n const portal = document.body.querySelector('.nile-virtual-select-portal-append');\n return [inner.shadowRoot!, ...(portal ? [portal] : [])];\n}\n\nfunction vsAll(inner: VsInner, selector: string): HTMLElement[] {\n return vsRoots(inner).flatMap(root => Array.from(root.querySelectorAll<HTMLElement>(selector)));\n}\n\nasync function vsMount({\n showTooltip = false,\n multiple = true,\n search = false,\n portal = false,\n value = undefined as string | string[] | undefined,\n data = VS_OPTIONS,\n} = {}) {\n const initial = value ?? (multiple ? [] : '');\n const el = await fixture<NileSelect>(html`<nile-select\n ?multiple=${multiple}\n ?searchEnabled=${search}\n ?showTooltip=${showTooltip}\n .enableVirtualScroll=${true}\n .portal=${portal}\n .data=${data}\n .value=${initial}\n ></nile-select>`);\n await el.updateComplete;\n const inner = el.shadowRoot!.querySelector('nile-virtual-select') as unknown as VsInner;\n await inner.updateComplete;\n vsMounted.push(inner);\n let updates = 0;\n const update = (el as any).update;\n (el as any).update = function (this: NileSelect, changed: Map<string, unknown>) {\n updates++;\n return update.call(this, changed);\n };\n return { el, inner, updates: () => updates, resetUpdates: () => (updates = 0) };\n}\n\nasync function vsSettle(el: NileSelect, inner: VsInner) {\n await inner.updateComplete;\n await el.updateComplete;\n await inner.updateComplete;\n await aTimeout(30);\n}\n\nasync function vsOpen(inner: VsInner) {\n const shown = oneEvent(inner, 'nile-after-show');\n (inner.shadowRoot!.querySelector('[part=\"combobox\"]') as HTMLElement).dispatchEvent(\n new MouseEvent('mousedown', { bubbles: true, composed: true, button: 0 })\n );\n await shown;\n await aTimeout(50);\n}\n\nasync function vsPick(el: NileSelect, inner: VsInner, value: string) {\n await waitUntil(\n () => vsAll(inner, 'nile-option').find(o => (o as any).value === value),\n `option ${value} was not rendered`\n );\n const option = vsAll(inner, 'nile-option').find(o => (o as any).value === value)!;\n option.dispatchEvent(new MouseEvent('mouseup', { bubbles: true, composed: true, button: 0 }));\n await vsSettle(el, inner);\n}\n\nasync function vsToggleSelected(el: NileSelect, inner: VsInner) {\n (vsAll(inner, '.select__footer nile-checkbox')[0] as HTMLElement).click();\n await vsSettle(el, inner);\n}\n\nasync function vsType(el: NileSelect, inner: VsInner, text: string) {\n const input = vsAll(inner, '.select__search nile-input')[0].shadowRoot!.querySelector('input') as HTMLInputElement;\n input.value = text;\n input.dispatchEvent(new Event('input', { bubbles: true, composed: true }));\n await vsSettle(el, inner);\n}\n\nasync function vsRemoveChip(el: NileSelect, inner: VsInner, index = 0) {\n const tag = inner.shadowRoot!.querySelectorAll('nile-tag')[index] as HTMLElement;\n const remove = tag.shadowRoot!.querySelector('[part=\"remove-button\"], nile-icon-button, button') as HTMLElement;\n ((remove.shadowRoot?.querySelector('button') as HTMLElement | null) ?? remove).click();\n await vsSettle(el, inner);\n}\n\nconst VS_SEARCH = 'Option 99';\nconst VS_SEARCH_HITS = VS_OPTIONS.filter(o => o.label.includes(VS_SEARCH)).length;\nconst vsDataValues = (inner: VsInner) => inner.data.map(item => item.value);\n\n// Known, pre-existing noise from @lit-labs/virtualizer, unrelated to these tests: a \"ResizeObserver loop\" notice\n// while a list is laid out, and a detached-list error when the visible list swaps between a short and a long data\n// set (for example leaving the Selected view). The browser raises them as window errors, which would fail\n// whichever test happens to be running. Only the new virtual-scroll describes below install this filter; their\n// assertions still decide pass or fail.\n// The virtualizer-only errors are matched on message AND on a `virtualizer` frame in the stack, so the same message\n// thrown from anywhere else still fails the test. \"ResizeObserver loop\" is a browser notice with no stack.\nconst VS_VIRTUALIZER_ERRORS = ['ChildPart` has no `parentNode`', \"reading 'insertBefore'\"];\n\nfunction vsIsKnownVirtualizerNoise(message: unknown, error?: Error | null): boolean {\n if (typeof message !== 'string') return false;\n if (message.includes('ResizeObserver loop')) return true;\n return (\n VS_VIRTUALIZER_ERRORS.some(known => message.includes(known)) &&\n !!error?.stack &&\n error.stack.toLowerCase().includes('virtualizer')\n );\n}\n\nfunction vsIgnoreKnownVirtualizerErrors(): () => void {\n const previous = window.onerror;\n window.onerror = (message, source, lineno, colno, error) => {\n if (vsIsKnownVirtualizerNoise(message, error)) return true;\n return previous ? previous.call(window, message, source, lineno, colno, error) : false;\n };\n return () => {\n window.onerror = previous;\n };\n}\n\n// Close every dropdown and let it finish hiding before its fixture goes away, so the virtualizer is not\n// still laying out a list that has already been detached. Registered per describe below, not file-wide.\nasync function vsCloseDropdowns() {\n const mounted = vsMounted.splice(0);\n for (const inner of mounted) {\n if (!(inner as any).open) continue;\n const hidden = oneEvent(inner, 'nile-after-hide');\n (inner as any).open = false;\n await Promise.race([hidden, aTimeout(1500)]);\n }\n if (mounted.length) {\n await nextFrame();\n await nextFrame();\n await aTimeout(250);\n }\n document.body.querySelectorAll('.nile-virtual-select-portal-append').forEach(n => n.remove());\n}\n\ndescribe('NileSelect enableVirtualScroll without showTooltip keeps the pre-2.0.9 behaviour', () => {\n let restoreOnError: () => void;\n before(() => {\n restoreOnError = vsIgnoreKnownVirtualizerErrors();\n });\n after(() => {\n restoreOnError();\n });\n afterEach(vsCloseDropdowns);\n\n it('L1. a pick does not write the outer value', async () => {\n const { el, inner } = await vsMount();\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n\n expect(inner.value).to.deep.equal(['option-1']);\n expect(el.value).to.deep.equal([]);\n });\n\n it('L2. a normal pick, uncheck and chip removal cause no outer update', async () => {\n const { el, inner, updates, resetUpdates } = await vsMount({ value: ['option-9'] });\n await vsOpen(inner);\n resetUpdates();\n\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-1');\n await vsRemoveChip(el, inner, 0);\n\n expect(updates()).to.equal(0);\n });\n\n it('L3. a parent re-render pushes the stale outer value back over the selection', async () => {\n const { el, inner } = await vsMount();\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n expect(inner.value).to.deep.equal(['option-1']);\n\n el.requestUpdate();\n await vsSettle(el, inner);\n\n expect(inner.value).to.deep.equal([]);\n });\n\n it('L4. nile-input / nile-change from the inner select are not synced (no sync listeners)', async () => {\n const { el, inner } = await vsMount({ value: ['option-1'] });\n const fire = (name: string, value: unknown) =>\n inner.dispatchEvent(new CustomEvent(name, { detail: { value }, bubbles: true, composed: true }));\n\n fire('nile-input', ['option-2']);\n fire('nile-change', ['option-3']);\n await vsSettle(el, inner);\n\n expect(el.value).to.deep.equal(['option-1']);\n });\n\n it('L5. a direct syncValueFromVirtualSelect call does not change the outer value', async () => {\n const { el, inner } = await vsMount({ value: ['option-1'] });\n const event = new CustomEvent('nile-change', { detail: { value: ['option-2'] } });\n Object.defineProperty(event, 'currentTarget', { value: inner });\n Object.defineProperty(event, 'composedPath', { value: () => [inner] });\n\n el.syncValueFromVirtualSelect(event as any);\n await vsSettle(el, inner);\n\n expect(el.value).to.deep.equal(['option-1']);\n });\n\n it('L6. Selected stays filtered through a normal uncheck', async () => {\n const { el, inner } = await vsMount();\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-2');\n await vsPick(el, inner, 'option-3');\n await vsToggleSelected(el, inner);\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2', 'option-3']);\n\n await vsPick(el, inner, 'option-2');\n\n expect(inner.showSelected).to.be.true;\n expect(inner.value).to.deep.equal(['option-1', 'option-3']);\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2', 'option-3']);\n });\n\n it('L7. search stays filtered through a pick and an unpick', async () => {\n const { el, inner } = await vsMount({ search: true });\n await vsOpen(inner);\n await vsType(el, inner, VS_SEARCH);\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n\n await vsPick(el, inner, 'option-99');\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n expect(inner.searchValue).to.equal(VS_SEARCH);\n\n await vsPick(el, inner, 'option-99');\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n expect(inner.value).to.deep.equal([]);\n });\n\n it('L9. the wrapper pushes maxOptionsVisible to the inner select (pre-2.0.9 binding)', async () => {\n const { el, inner } = await vsMount({ value: ['option-1'] });\n const writes: number[] = [];\n const descriptor = Object.getOwnPropertyDescriptor(Object.getPrototypeOf(inner), 'maxOptionsVisible')!;\n Object.defineProperty(inner, 'maxOptionsVisible', {\n configurable: true,\n get() {\n return descriptor.get!.call(this);\n },\n set(value: number) {\n writes.push(value);\n descriptor.set!.call(this, value);\n },\n });\n\n el.maxOptionsVisible = 5;\n await vsSettle(el, inner);\n\n expect(writes).to.include(5);\n });\n\n it('L10. the untouched default maxOptionsVisible is not pushed, so the inner select is not pinned as explicit', async () => {\n const { inner } = await vsMount();\n\n expect((inner as any).maxOptionsVisibleExplicit).to.be.false;\n });\n\n it('L8. data is re-applied on every wrapper render (plain binding, pre-2.0.9)', async () => {\n const { el, inner } = await vsMount({ value: ['option-1'] });\n await vsOpen(inner);\n // After opening, the inner select holds its own copy of the list.\n expect(inner.data).to.not.equal(el.data);\n\n el.requestUpdate();\n await vsSettle(el, inner);\n\n expect(inner.data).to.equal(el.data);\n });\n});\n\ndescribe('NileSelect enableVirtualScroll with showTooltip: guarded data and external value updates', () => {\n let restoreOnError: () => void;\n before(() => {\n restoreOnError = vsIgnoreKnownVirtualizerErrors();\n });\n after(() => {\n restoreOnError();\n });\n afterEach(vsCloseDropdowns);\n\n it('T1. Selected + uncheck stays filtered', async () => {\n const { el, inner } = await vsMount({ showTooltip: true });\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-2');\n await vsPick(el, inner, 'option-3');\n await vsToggleSelected(el, inner);\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2', 'option-3']);\n\n await vsPick(el, inner, 'option-2');\n\n expect(inner.showSelected).to.be.true;\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2', 'option-3']);\n expect(el.value).to.deep.equal(['option-1', 'option-3']);\n });\n\n it('T2. search + pick/unpick stays filtered', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, search: true });\n await vsOpen(inner);\n await vsType(el, inner, VS_SEARCH);\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n\n await vsPick(el, inner, 'option-99');\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n expect(inner.searchValue).to.equal(VS_SEARCH);\n expect(el.value).to.deep.equal(['option-99']);\n\n await vsPick(el, inner, 'option-99');\n expect(inner.data.length).to.equal(VS_SEARCH_HITS);\n expect(el.value).to.deep.equal([]);\n });\n\n it('T3. chip removal while Selected stays filtered', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2', 'option-3'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n expect(inner.data.length).to.equal(3);\n\n await vsRemoveChip(el, inner, 0);\n\n expect(inner.showSelected).to.be.true;\n expect(inner.data.length).to.equal(3);\n expect(el.value).to.deep.equal(['option-2', 'option-3']);\n });\n\n it('T4. portal: Selected + uncheck stays filtered', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, portal: true });\n await vsOpen(inner);\n await waitUntil(() => document.body.querySelector('.nile-virtual-select-portal-append #listbox'), 'listbox never portalled');\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-2');\n await vsToggleSelected(el, inner);\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2']);\n\n await vsPick(el, inner, 'option-2');\n\n expect(inner.showSelected).to.be.true;\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2']);\n expect(el.value).to.deep.equal(['option-1']);\n });\n\n it('T5. picking, removing a chip and clearing sync the outer value; nile-change listeners see it', async () => {\n const { el, inner } = await vsMount({ showTooltip: true });\n const seen: unknown[] = [];\n el.addEventListener('nile-change', () => seen.push(el.value));\n await vsOpen(inner);\n\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-2');\n expect(el.value).to.deep.equal(['option-1', 'option-2']);\n expect(seen[0]).to.deep.equal(['option-1']);\n\n await vsRemoveChip(el, inner, 0);\n expect(el.value).to.deep.equal(['option-2']);\n\n (vsAll(inner, '.select__clear')[0] as HTMLElement).click();\n await vsSettle(el, inner);\n expect(el.value).to.deep.equal([]);\n });\n\n it('T6. an external value replace while Selected recomputes the list', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n\n el.value = ['option-5'];\n await vsSettle(el, inner);\n\n expect(inner.showSelected).to.be.true;\n expect(vsDataValues(inner)).to.deep.equal(['option-5']);\n });\n\n it('T7. an external value that adds an item while Selected shows the new item', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n\n el.value = ['option-1', 'option-2', 'option-7'];\n await vsSettle(el, inner);\n\n expect(vsDataValues(inner)).to.deep.equal(['option-1', 'option-2', 'option-7']);\n });\n\n it('T8. an external value that removes an item while Selected drops it from the list', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n\n el.value = ['option-1'];\n await vsSettle(el, inner);\n\n expect(vsDataValues(inner)).to.deep.equal(['option-1']);\n });\n\n it('T9. an external empty value leaves the Selected view', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n\n el.value = [];\n await vsSettle(el, inner);\n\n expect(inner.showSelected).to.be.false;\n expect(inner.data.length).to.equal(VS_OPTIONS.length);\n });\n\n it('T10. a normal pick after an external value update still keeps the item listed', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n el.value = ['option-5', 'option-6'];\n await vsSettle(el, inner);\n\n await vsPick(el, inner, 'option-5');\n\n expect(inner.value).to.deep.equal(['option-6']);\n expect(el.value).to.deep.equal(['option-6']);\n expect(inner.showSelected).to.be.true;\n expect(vsDataValues(inner)).to.deep.equal(['option-5', 'option-6']);\n });\n\n it('T11. a normal pick does not re-send the data array', async () => {\n const { el, inner } = await vsMount({ showTooltip: true, value: ['option-1', 'option-2'] });\n await vsOpen(inner);\n await vsToggleSelected(el, inner);\n const before = inner.data;\n\n await vsPick(el, inner, 'option-2');\n\n expect(inner.data).to.equal(before);\n });\n\n it('T12. turning showTooltip on at runtime keeps the selection', async () => {\n const { el, inner } = await vsMount({ showTooltip: false });\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n await vsPick(el, inner, 'option-2');\n expect(el.value).to.deep.equal([]);\n expect(inner.value).to.deep.equal(['option-1', 'option-2']);\n\n el.showTooltip = true;\n await vsSettle(el, inner);\n\n expect(el.value).to.deep.equal(['option-1', 'option-2']);\n expect(inner.value).to.deep.equal(['option-1', 'option-2']);\n });\n\n it('T15. turning showTooltip on at runtime engages the fitted chip row', async () => {\n const { el, inner } = await vsMount({\n showTooltip: false,\n value: ['option-1', 'option-2', 'option-3', 'option-4', 'option-5'],\n });\n const fitted = () => !!inner.shadowRoot!.querySelector('.select__tags--fitted');\n expect(fitted()).to.be.false;\n\n el.showTooltip = true;\n await vsSettle(el, inner);\n\n await waitUntil(fitted, 'the fitted chip row never engaged');\n expect(el.value).to.deep.equal(['option-1', 'option-2', 'option-3', 'option-4', 'option-5']);\n });\n\n it('T16. changing showTooltip and value in the same update keeps the consumer value', async () => {\n const { el, inner } = await vsMount({ showTooltip: false });\n await vsOpen(inner);\n await vsPick(el, inner, 'option-1');\n expect(inner.value).to.deep.equal(['option-1']);\n expect(el.value).to.deep.equal([]);\n\n el.value = ['option-7'];\n el.showTooltip = true;\n await vsSettle(el, inner);\n\n expect(el.value).to.deep.equal(['option-7']);\n expect(inner.value).to.deep.equal(['option-7']);\n });\n\n it('T13. assigning a new data array propagates', async () => {\n const { el, inner } = await vsMount({ showTooltip: true });\n await vsOpen(inner);\n\n el.data = [...VS_OPTIONS.slice(0, 10), { value: 'extra', label: 'Extra' }];\n await vsSettle(el, inner);\n\n expect(inner.data.length).to.equal(11);\n expect(vsDataValues(inner)).to.include('extra');\n });\n\n it('T14. mutating data in place (data.push) is not propagated; assign a new array instead', async () => {\n const data = VS_OPTIONS.slice(0, 20);\n const { el, inner } = await vsMount({ showTooltip: true, data });\n await vsOpen(inner);\n\n data.push({ value: 'extra', label: 'Extra' });\n el.requestUpdate();\n await vsSettle(el, inner);\n\n expect(inner.data.length).to.equal(20);\n expect(vsDataValues(inner)).to.not.include('extra');\n });\n});\n"]}
|