@aquera/nile-elements 2.0.11 → 2.0.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +7 -0
  2. package/demo/app-shell.html +21 -21
  3. package/dist/index.js +170 -167
  4. package/dist/nile-app-shell/nile-app-shell.cjs.js +1 -1
  5. package/dist/nile-app-shell/nile-app-shell.cjs.js.map +1 -1
  6. package/dist/nile-app-shell/nile-app-shell.css.cjs.js +1 -1
  7. package/dist/nile-app-shell/nile-app-shell.css.cjs.js.map +1 -1
  8. package/dist/nile-app-shell/nile-app-shell.css.esm.js +35 -32
  9. package/dist/nile-app-shell/nile-app-shell.esm.js +39 -34
  10. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js +1 -1
  11. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.cjs.js.map +1 -1
  12. package/dist/nile-app-shell-panel/nile-app-shell-panel.css.esm.js +3 -1
  13. package/dist/nile-select/nile-select.cjs.js +2 -2
  14. package/dist/nile-select/nile-select.cjs.js.map +1 -1
  15. package/dist/nile-select/nile-select.css.cjs.js +1 -1
  16. package/dist/nile-select/nile-select.css.cjs.js.map +1 -1
  17. package/dist/nile-select/nile-select.css.esm.js +12 -17
  18. package/dist/nile-select/nile-select.esm.js +43 -42
  19. package/dist/nile-select/virtual-scroll-helper.cjs.js +1 -1
  20. package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -1
  21. package/dist/nile-select/virtual-scroll-helper.esm.js +2 -0
  22. package/dist/nile-virtual-select/nile-virtual-select.cjs.js +4 -4
  23. package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -1
  24. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +1 -1
  25. package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -1
  26. package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +12 -17
  27. package/dist/nile-virtual-select/nile-virtual-select.esm.js +26 -26
  28. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js +9 -5
  29. package/dist/src/nile-app-shell/nile-app-shell-regions.test.js.map +1 -1
  30. package/dist/src/nile-app-shell/nile-app-shell.css.js +33 -30
  31. package/dist/src/nile-app-shell/nile-app-shell.css.js.map +1 -1
  32. package/dist/src/nile-app-shell/nile-app-shell.d.ts +22 -22
  33. package/dist/src/nile-app-shell/nile-app-shell.js +86 -76
  34. package/dist/src/nile-app-shell/nile-app-shell.js.map +1 -1
  35. package/dist/src/nile-app-shell/nile-app-shell.test.d.ts +1 -0
  36. package/dist/src/nile-app-shell/nile-app-shell.test.js +307 -89
  37. package/dist/src/nile-app-shell/nile-app-shell.test.js.map +1 -1
  38. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js +3 -1
  39. package/dist/src/nile-app-shell-panel/nile-app-shell-panel.css.js.map +1 -1
  40. package/dist/src/nile-select/nile-select.css.js +12 -17
  41. package/dist/src/nile-select/nile-select.css.js.map +1 -1
  42. package/dist/src/nile-select/nile-select.d.ts +18 -2
  43. package/dist/src/nile-select/nile-select.js +226 -64
  44. package/dist/src/nile-select/nile-select.js.map +1 -1
  45. package/dist/src/nile-select/nile-select.test.d.ts +1 -0
  46. package/dist/src/nile-select/nile-select.test.js +896 -17
  47. package/dist/src/nile-select/nile-select.test.js.map +1 -1
  48. package/dist/src/nile-select/virtual-scroll-helper.js +2 -0
  49. package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -1
  50. package/dist/src/nile-virtual-select/nile-virtual-select.css.js +12 -17
  51. package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -1
  52. package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +10 -2
  53. package/dist/src/nile-virtual-select/nile-virtual-select.js +142 -30
  54. package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -1
  55. package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +1 -0
  56. package/dist/src/nile-virtual-select/nile-virtual-select.test.js +331 -16
  57. package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -1
  58. package/dist/src/version.js +1 -1
  59. package/dist/src/version.js.map +1 -1
  60. package/dist/tsconfig.tsbuildinfo +1 -1
  61. package/package.json +1 -1
  62. package/src/nile-app-shell/nile-app-shell-regions.test.ts +9 -5
  63. package/src/nile-app-shell/nile-app-shell.css.ts +33 -30
  64. package/src/nile-app-shell/nile-app-shell.test.ts +348 -105
  65. package/src/nile-app-shell/nile-app-shell.ts +89 -82
  66. package/src/nile-app-shell-panel/nile-app-shell-panel.css.ts +3 -1
  67. package/src/nile-select/nile-select.css.ts +12 -17
  68. package/src/nile-select/nile-select.test.ts +1112 -17
  69. package/src/nile-select/nile-select.ts +237 -67
  70. package/src/nile-select/virtual-scroll-helper.ts +2 -0
  71. package/src/nile-virtual-select/nile-virtual-select.css.ts +12 -17
  72. package/src/nile-virtual-select/nile-virtual-select.test.ts +404 -16
  73. package/src/nile-virtual-select/nile-virtual-select.ts +200 -79
  74. package/vscode-html-custom-data.json +36 -41
@@ -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 } from '@open-wc/testing';\nimport './nile-select';\nimport '../nile-option/nile-option';\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 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 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 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 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 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\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.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\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 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 hides the chip tooltip', 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.be.greaterThan(0);\n expect(liveTips(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 a fitted chip is never truncated', 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\n expect(el.showTooltip).to.be.false;\n expect(clippedChipCount(el)).to.equal(0);\n // The chips that could not fit went into the +N button, not into an ellipsis.\n expect(hiddenChips(el).length).to.be.greaterThan(0);\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 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"]}
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"]}
@@ -54,6 +54,8 @@ export class VirtualScrollHelper {
54
54
  .enableDescription=${component.enableDescription}
55
55
  .tickOnSelect=${component.tickOnSelect}
56
56
  .legacy=${component.legacy}
57
+ @nile-input=${(e) => component.syncValueFromVirtualSelect(e)}
58
+ @nile-change=${(e) => component.syncValueFromVirtualSelect(e)}
57
59
  exportparts="
58
60
  select-options,
59
61
  select-no-results,