@aquera/nile-elements 0.1.46 → 0.1.47-beta-1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -3
- package/demo/index.html +50 -34
- package/dist/index.cjs.js +1 -1
- package/dist/index.esm.js +1 -1
- package/dist/internal/form.cjs.js +1 -1
- package/dist/internal/form.cjs.js.map +1 -1
- package/dist/internal/form.esm.js +1 -1
- package/dist/nile-accordion/nile-accordian.test.cjs.js +1 -1
- package/dist/nile-auto-complete/index.cjs.js +1 -1
- package/dist/nile-auto-complete/index.esm.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js +1 -17
- package/dist/nile-auto-complete/nile-auto-complete.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.esm.js +8 -29
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.cjs.js.map +1 -1
- package/dist/nile-auto-complete/nile-auto-complete.test.esm.js +1 -1
- package/dist/nile-avatar/nile-avatar.test.cjs.js +1 -1
- package/dist/nile-badge/nile-badge.test.cjs.js +1 -1
- package/dist/nile-button/nile-button.test.cjs.js +1 -1
- package/dist/nile-button-toggle-group/nile-button-toggle-group.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js +1 -1
- package/dist/nile-calendar/nile-calendar.test.cjs.js.map +1 -1
- package/dist/nile-calendar/nile-calendar.test.esm.js +1 -1
- package/dist/nile-card/nile-card.test.cjs.js +1 -1
- package/dist/nile-checkbox/nile-checkbox.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js +1 -1
- package/dist/nile-chip/nile-chip.test.cjs.js.map +1 -1
- package/dist/nile-chip/nile-chip.test.esm.js +1 -1
- package/dist/nile-dialog/nile-dialog.test.cjs.js +1 -1
- package/dist/nile-drawer/nile-drawer.test.cjs.js +1 -1
- package/dist/nile-dropdown/nile-dropdown.test.cjs.js +1 -1
- package/dist/nile-empty-state/nile-empty-state.test.cjs.js +1 -1
- package/dist/nile-error-message/nile-error-message.test.cjs.js +1 -1
- package/dist/nile-filter-chip/nile-filter-chip.test.cjs.js +1 -1
- package/dist/nile-form-group/nile-form-group.test.cjs.js +1 -1
- package/dist/nile-form-help-text/nile-form-help-text.test.cjs.js +1 -1
- package/dist/nile-hero/nile-hero.test.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/agent.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/agent.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/agent.esm.js +1 -1
- package/dist/nile-icon/icons/svg/api.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/api.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/api.esm.js +1 -1
- package/dist/nile-icon/icons/svg/apply-filter.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/apply-filter.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/apply-filter.esm.js +1 -1
- package/dist/nile-icon/icons/svg/arrowdropdown.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/arrowdropdown.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/arrowdropdown.esm.js +1 -1
- package/dist/nile-icon/icons/svg/arrowdropup.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/arrowdropup.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/arrowdropup.esm.js +1 -1
- package/dist/nile-icon/icons/svg/database.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/database.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/database.esm.js +1 -1
- package/dist/nile-icon/icons/svg/done.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/done.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/done.esm.js +1 -1
- package/dist/nile-icon/icons/svg/dontmap.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/dontmap.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/dontmap.esm.js +1 -1
- package/dist/nile-icon/icons/svg/doublearrowleft.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/doublearrowleft.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/doublearrowleft.esm.js +1 -1
- package/dist/nile-icon/icons/svg/doublearrowright.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/doublearrowright.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/doublearrowright.esm.js +1 -1
- package/dist/nile-icon/icons/svg/drag.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/drag.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/drag.esm.js +1 -1
- package/dist/nile-icon/icons/svg/expand-06.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/expand-06.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/expand-06.esm.js +1 -1
- package/dist/nile-icon/icons/svg/expand.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/expand.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/expand.esm.js +1 -1
- package/dist/nile-icon/icons/svg/integer.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/integer.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/integer.esm.js +1 -1
- package/dist/nile-icon/icons/svg/pluscircle.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/pluscircle.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/pluscircle.esm.js +1 -1
- package/dist/nile-icon/icons/svg/question.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/question.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/question.esm.js +1 -1
- package/dist/nile-icon/icons/svg/resource.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/resource.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/resource.esm.js +1 -1
- package/dist/nile-icon/icons/svg/sendescalation.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/sendescalation.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/sendescalation.esm.js +1 -1
- package/dist/nile-icon/icons/svg/sendreminder.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/sendreminder.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/sendreminder.esm.js +1 -1
- package/dist/nile-icon/icons/svg/timezone.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/timezone.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/timezone.esm.js +1 -1
- package/dist/nile-icon/icons/svg/unmute.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/unmute.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/unmute.esm.js +1 -1
- package/dist/nile-icon/icons/svg/upgrade.cjs.js +1 -1
- package/dist/nile-icon/icons/svg/upgrade.cjs.js.map +1 -1
- package/dist/nile-icon/icons/svg/upgrade.esm.js +1 -1
- package/dist/nile-icon/nile-icon.test.cjs.js +1 -1
- package/dist/nile-input/nile-input.test.cjs.js +1 -1
- package/dist/nile-link/nile-link.test.cjs.js +1 -1
- package/dist/nile-loader/nile-loader.test.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js +1 -1
- package/dist/nile-option/nile-option.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.cjs.js +1 -1
- package/dist/nile-option/nile-option.css.cjs.js.map +1 -1
- package/dist/nile-option/nile-option.css.esm.js +1 -1
- package/dist/nile-option/nile-option.esm.js +2 -2
- package/dist/nile-popover/nile-popover.test.cjs.js +1 -1
- package/dist/nile-popup/nile-popup.test.cjs.js +1 -1
- package/dist/nile-progress-bar/nile-progress-bar.test.cjs.js +1 -1
- package/dist/nile-radio/nile-radio.test.cjs.js +1 -1
- package/dist/nile-radio-group/nile-radio-group.test.cjs.js +1 -1
- package/dist/nile-select/index.cjs.js +1 -1
- package/dist/nile-select/index.esm.js +1 -1
- package/dist/nile-select/nile-select.cjs.js +1 -1
- package/dist/nile-select/nile-select.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.esm.js +2 -2
- package/dist/nile-select/nile-select.test.cjs.js +1 -1
- package/dist/nile-select/nile-select.test.cjs.js.map +1 -1
- package/dist/nile-select/nile-select.test.esm.js +2 -2
- package/dist/nile-select/virtual-scroll-helper.cjs.js +2 -0
- package/dist/nile-select/virtual-scroll-helper.cjs.js.map +1 -0
- package/dist/nile-select/virtual-scroll-helper.esm.js +37 -0
- package/dist/nile-slide-toggle/nile-slide-toggle.test.cjs.js +1 -1
- package/dist/nile-tab-group/nile-tab-group.test.cjs.js +1 -1
- package/dist/nile-textarea/nile-textarea.test.cjs.js +1 -1
- package/dist/nile-virtual-select/index.cjs.js +2 -0
- package/dist/nile-virtual-select/index.cjs.js.map +1 -0
- package/dist/nile-virtual-select/index.esm.js +1 -0
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js +2 -0
- package/dist/nile-virtual-select/nile-virtual-select.cjs.js.map +1 -0
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js +2 -0
- package/dist/nile-virtual-select/nile-virtual-select.css.cjs.js.map +1 -0
- package/dist/nile-virtual-select/nile-virtual-select.css.esm.js +468 -0
- package/dist/nile-virtual-select/nile-virtual-select.esm.js +227 -0
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js +2 -0
- package/dist/nile-virtual-select/nile-virtual-select.test.cjs.js.map +1 -0
- package/dist/nile-virtual-select/nile-virtual-select.test.esm.js +49 -0
- package/dist/nile-virtual-select/renderer.cjs.js +2 -0
- package/dist/nile-virtual-select/renderer.cjs.js.map +1 -0
- package/dist/nile-virtual-select/renderer.esm.js +16 -0
- package/dist/nile-virtual-select/search-manager.cjs.js +2 -0
- package/dist/nile-virtual-select/search-manager.cjs.js.map +1 -0
- package/dist/nile-virtual-select/search-manager.esm.js +1 -0
- package/dist/nile-virtual-select/selection-manager.cjs.js +2 -0
- package/dist/nile-virtual-select/selection-manager.cjs.js.map +1 -0
- package/dist/nile-virtual-select/selection-manager.esm.js +1 -0
- package/dist/nile-virtual-select/types.cjs.js +2 -0
- package/dist/nile-virtual-select/types.cjs.js.map +1 -0
- package/dist/nile-virtual-select/types.esm.js +1 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/internal/form.js +2 -2
- package/dist/src/internal/form.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/agent.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/agent.js +1 -1
- package/dist/src/nile-icon/icons/svg/agent.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/api.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/api.js +1 -1
- package/dist/src/nile-icon/icons/svg/api.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/apply-filter.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/apply-filter.js +1 -1
- package/dist/src/nile-icon/icons/svg/apply-filter.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropdown.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropdown.js +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropdown.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropup.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropup.js +1 -1
- package/dist/src/nile-icon/icons/svg/arrowdropup.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/database.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/database.js +1 -1
- package/dist/src/nile-icon/icons/svg/database.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/done.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/done.js +1 -1
- package/dist/src/nile-icon/icons/svg/done.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/dontmap.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/dontmap.js +1 -1
- package/dist/src/nile-icon/icons/svg/dontmap.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowleft.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowleft.js +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowleft.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowright.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowright.js +1 -1
- package/dist/src/nile-icon/icons/svg/doublearrowright.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/drag.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/drag.js +1 -1
- package/dist/src/nile-icon/icons/svg/drag.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/expand-06.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/expand-06.js +1 -1
- package/dist/src/nile-icon/icons/svg/expand-06.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/expand.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/expand.js +1 -1
- package/dist/src/nile-icon/icons/svg/expand.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/integer.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/integer.js +1 -1
- package/dist/src/nile-icon/icons/svg/integer.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/pluscircle.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/pluscircle.js +1 -1
- package/dist/src/nile-icon/icons/svg/pluscircle.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/question.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/question.js +1 -1
- package/dist/src/nile-icon/icons/svg/question.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/resource.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/resource.js +1 -1
- package/dist/src/nile-icon/icons/svg/resource.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/sendescalation.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/sendescalation.js +1 -1
- package/dist/src/nile-icon/icons/svg/sendescalation.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/sendreminder.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/sendreminder.js +1 -1
- package/dist/src/nile-icon/icons/svg/sendreminder.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/timezone.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/timezone.js +1 -1
- package/dist/src/nile-icon/icons/svg/timezone.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/unmute.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/unmute.js +1 -1
- package/dist/src/nile-icon/icons/svg/unmute.js.map +1 -1
- package/dist/src/nile-icon/icons/svg/upgrade.d.ts +1 -1
- package/dist/src/nile-icon/icons/svg/upgrade.js +1 -1
- package/dist/src/nile-icon/icons/svg/upgrade.js.map +1 -1
- package/dist/src/nile-option/nile-option.css.js +1 -1
- package/dist/src/nile-option/nile-option.css.js.map +1 -1
- package/dist/src/nile-option/nile-option.d.ts +5 -1
- package/dist/src/nile-option/nile-option.js +21 -6
- package/dist/src/nile-option/nile-option.js.map +1 -1
- package/dist/src/nile-select/nile-select.d.ts +9 -2
- package/dist/src/nile-select/nile-select.js +38 -18
- package/dist/src/nile-select/nile-select.js.map +1 -1
- package/dist/src/nile-select/virtual-scroll-helper.d.ts +9 -0
- package/dist/src/nile-select/virtual-scroll-helper.js +50 -0
- package/dist/src/nile-select/virtual-scroll-helper.js.map +1 -0
- package/dist/src/nile-virtual-select/index.d.ts +1 -0
- package/dist/src/nile-virtual-select/index.js +2 -0
- package/dist/src/nile-virtual-select/index.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.d.ts +12 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js +480 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.css.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.d.ts +251 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js +1159 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.js.map +1 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.d.ts +7 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js +317 -0
- package/dist/src/nile-virtual-select/nile-virtual-select.test.js.map +1 -0
- package/dist/src/nile-virtual-select/renderer.d.ts +11 -0
- package/dist/src/nile-virtual-select/renderer.js +45 -0
- package/dist/src/nile-virtual-select/renderer.js.map +1 -0
- package/dist/src/nile-virtual-select/search-manager.d.ts +12 -0
- package/dist/src/nile-virtual-select/search-manager.js +39 -0
- package/dist/src/nile-virtual-select/search-manager.js.map +1 -0
- package/dist/src/nile-virtual-select/selection-manager.d.ts +12 -0
- package/dist/src/nile-virtual-select/selection-manager.js +49 -0
- package/dist/src/nile-virtual-select/selection-manager.js.map +1 -0
- package/dist/src/nile-virtual-select/types.d.ts +45 -0
- package/dist/src/nile-virtual-select/types.js +8 -0
- package/dist/src/nile-virtual-select/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/virtualize-a4a40d96.esm.js +22 -0
- package/dist/virtualize-b6a2fbe0.cjs.js +18 -0
- package/dist/virtualize-b6a2fbe0.cjs.js.map +1 -0
- package/package.json +1 -2
- package/src/index.ts +3 -1
- package/src/internal/form.ts +2 -2
- package/src/nile-icon/icons/svg/agent.ts +1 -1
- package/src/nile-icon/icons/svg/api.ts +1 -1
- package/src/nile-icon/icons/svg/apply-filter.ts +1 -1
- package/src/nile-icon/icons/svg/arrowdropdown.ts +1 -1
- package/src/nile-icon/icons/svg/arrowdropup.ts +1 -1
- package/src/nile-icon/icons/svg/database.ts +1 -1
- package/src/nile-icon/icons/svg/done.ts +1 -1
- package/src/nile-icon/icons/svg/dontmap.ts +1 -1
- package/src/nile-icon/icons/svg/doublearrowleft.ts +1 -1
- package/src/nile-icon/icons/svg/doublearrowright.ts +1 -1
- package/src/nile-icon/icons/svg/drag.ts +1 -1
- package/src/nile-icon/icons/svg/expand-06.ts +1 -1
- package/src/nile-icon/icons/svg/expand.ts +1 -1
- package/src/nile-icon/icons/svg/integer.ts +1 -1
- package/src/nile-icon/icons/svg/pluscircle.ts +1 -1
- package/src/nile-icon/icons/svg/question.ts +1 -1
- package/src/nile-icon/icons/svg/resource.ts +1 -1
- package/src/nile-icon/icons/svg/sendescalation.ts +1 -1
- package/src/nile-icon/icons/svg/sendreminder.ts +1 -1
- package/src/nile-icon/icons/svg/timezone.ts +1 -1
- package/src/nile-icon/icons/svg/unmute.ts +1 -1
- package/src/nile-icon/icons/svg/upgrade.ts +1 -1
- package/src/nile-option/nile-option.css.ts +1 -1
- package/src/nile-option/nile-option.ts +17 -3
- package/src/nile-select/nile-select.ts +33 -9
- package/src/nile-select/virtual-scroll-helper.ts +55 -0
- package/src/nile-virtual-select/index.ts +1 -0
- package/src/nile-virtual-select/nile-virtual-select.css.ts +482 -0
- package/src/nile-virtual-select/nile-virtual-select.test.ts +390 -0
- package/src/nile-virtual-select/nile-virtual-select.ts +1235 -0
- package/src/nile-virtual-select/renderer.ts +62 -0
- package/src/nile-virtual-select/search-manager.ts +48 -0
- package/src/nile-virtual-select/selection-manager.ts +56 -0
- package/src/nile-virtual-select/types.ts +48 -0
- package/vscode-html-custom-data.json +229 -2
@@ -0,0 +1,390 @@
|
|
1
|
+
/**
|
2
|
+
* Copyright Aquera Inc 2023
|
3
|
+
*
|
4
|
+
* This source code is licensed under the BSD-3-Clause license found in the
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
6
|
+
*/
|
7
|
+
|
8
|
+
import { expect, fixture, html } from '@open-wc/testing';
|
9
|
+
import type NileVirtualSelect from './nile-virtual-select';
|
10
|
+
|
11
|
+
describe('<nile-virtual-select>', () => {
|
12
|
+
describe('maxOptionsVisible functionality', () => {
|
13
|
+
it('should show "+n More" when more options are selected than maxOptionsVisible', async () => {
|
14
|
+
const el = await fixture<NileVirtualSelect>(html`
|
15
|
+
<nile-virtual-select multiple max-options-visible="2">
|
16
|
+
<div slot="label">Test Select</div>
|
17
|
+
</nile-virtual-select>
|
18
|
+
`);
|
19
|
+
|
20
|
+
// Set up test data
|
21
|
+
el.allOptionItems = [
|
22
|
+
{ value: 'option-1', label: 'Option 1' },
|
23
|
+
{ value: 'option-2', label: 'Option 2' },
|
24
|
+
{ value: 'option-3', label: 'Option 3' },
|
25
|
+
{ value: 'option-4', label: 'Option 4' }
|
26
|
+
];
|
27
|
+
el.renderItemFunction = (item: any) => item.label;
|
28
|
+
|
29
|
+
// Set multiple values
|
30
|
+
el.value = ['option-1', 'option-2', 'option-3'];
|
31
|
+
|
32
|
+
await el.updateComplete;
|
33
|
+
|
34
|
+
// Check that the tags count element exists
|
35
|
+
const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');
|
36
|
+
expect(tagsCount).to.exist;
|
37
|
+
expect(tagsCount?.textContent?.trim()).to.equal('+1 More');
|
38
|
+
});
|
39
|
+
|
40
|
+
it('should not show "+n More" when selected options are within maxOptionsVisible limit', async () => {
|
41
|
+
const el = await fixture<NileVirtualSelect>(html`
|
42
|
+
<nile-virtual-select multiple max-options-visible="3">
|
43
|
+
<div slot="label">Test Select</div>
|
44
|
+
</nile-virtual-select>
|
45
|
+
`);
|
46
|
+
|
47
|
+
// Set up test data
|
48
|
+
el.allOptionItems = [
|
49
|
+
{ value: 'option-1', label: 'Option 1' },
|
50
|
+
{ value: 'option-2', label: 'Option 2' },
|
51
|
+
{ value: 'option-3', label: 'Option 3' }
|
52
|
+
];
|
53
|
+
el.renderItemFunction = (item: any) => item.label;
|
54
|
+
|
55
|
+
// Set values within limit
|
56
|
+
el.value = ['option-1', 'option-2'];
|
57
|
+
|
58
|
+
await el.updateComplete;
|
59
|
+
|
60
|
+
// Check that the tags count element does not exist
|
61
|
+
const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');
|
62
|
+
expect(tagsCount).to.not.exist;
|
63
|
+
});
|
64
|
+
|
65
|
+
it('should show all tags when maxOptionsVisible is 0', async () => {
|
66
|
+
const el = await fixture<NileVirtualSelect>(html`
|
67
|
+
<nile-virtual-select multiple max-options-visible="0">
|
68
|
+
<div slot="label">Test Select</div>
|
69
|
+
</nile-virtual-select>
|
70
|
+
`);
|
71
|
+
|
72
|
+
// Set up test data
|
73
|
+
el.allOptionItems = [
|
74
|
+
{ value: 'option-1', label: 'Option 1' },
|
75
|
+
{ value: 'option-2', label: 'Option 2' },
|
76
|
+
{ value: 'option-3', label: 'Option 3' },
|
77
|
+
{ value: 'option-4', label: 'Option 4' }
|
78
|
+
];
|
79
|
+
el.renderItemFunction = (item: any) => item.label;
|
80
|
+
|
81
|
+
// Set multiple values
|
82
|
+
el.value = ['option-1', 'option-2', 'option-3', 'option-4'];
|
83
|
+
|
84
|
+
await el.updateComplete;
|
85
|
+
|
86
|
+
// Check that the tags count element does not exist
|
87
|
+
const tagsCount = el.shadowRoot?.querySelector('.select__tags-count');
|
88
|
+
expect(tagsCount).to.not.exist;
|
89
|
+
|
90
|
+
// Check that all tags are rendered
|
91
|
+
const tags = el.shadowRoot?.querySelectorAll('nile-tag');
|
92
|
+
expect(tags?.length).to.equal(4);
|
93
|
+
});
|
94
|
+
});
|
95
|
+
|
96
|
+
describe('option width functionality', () => {
|
97
|
+
it('should render options with full width', async () => {
|
98
|
+
const el = await fixture<NileVirtualSelect>(html`
|
99
|
+
<nile-virtual-select>
|
100
|
+
<div slot="label">Test Select</div>
|
101
|
+
</nile-virtual-select>
|
102
|
+
`);
|
103
|
+
|
104
|
+
// Set up test data
|
105
|
+
el.allOptionItems = [
|
106
|
+
{ value: 'option-1', label: 'Option 1' },
|
107
|
+
{ value: 'option-2', label: 'Option 2' },
|
108
|
+
{ value: 'option-3', label: 'Option 3' }
|
109
|
+
];
|
110
|
+
el.renderItemFunction = (item: any) => item.label;
|
111
|
+
|
112
|
+
// Open the select to render options
|
113
|
+
el.open = true;
|
114
|
+
await el.updateComplete;
|
115
|
+
|
116
|
+
// Get the virtualized content
|
117
|
+
const virtualizedContent = el.shadowRoot?.querySelector('.virtualized');
|
118
|
+
expect(virtualizedContent).to.exist;
|
119
|
+
|
120
|
+
// Check that the select__options wrapper exists
|
121
|
+
const selectOptions = el.shadowRoot?.querySelector('.select__options');
|
122
|
+
expect(selectOptions).to.exist;
|
123
|
+
|
124
|
+
// Verify the structure matches the regular select
|
125
|
+
const listbox = el.shadowRoot?.querySelector('.select__listbox');
|
126
|
+
expect(listbox).to.exist;
|
127
|
+
expect(listbox?.querySelector('.select__options')).to.exist;
|
128
|
+
});
|
129
|
+
|
130
|
+
it('should render options with proper CSS classes for width', async () => {
|
131
|
+
const el = await fixture<NileVirtualSelect>(html`
|
132
|
+
<nile-virtual-select>
|
133
|
+
<div slot="label">Test Select</div>
|
134
|
+
</nile-virtual-select>
|
135
|
+
`);
|
136
|
+
|
137
|
+
// Set up test data
|
138
|
+
el.allOptionItems = [
|
139
|
+
{ value: 'option-1', label: 'Option 1' },
|
140
|
+
{ value: 'option-2', label: 'Option 2' }
|
141
|
+
];
|
142
|
+
el.renderItemFunction = (item: any) => item.label;
|
143
|
+
|
144
|
+
// Open the select to render options
|
145
|
+
el.open = true;
|
146
|
+
await el.updateComplete;
|
147
|
+
|
148
|
+
// Check that the virtualized container has the proper class
|
149
|
+
const virtualized = el.shadowRoot?.querySelector('.virtualized');
|
150
|
+
expect(virtualized).to.exist;
|
151
|
+
|
152
|
+
// Check that the select__options container exists and has proper styling
|
153
|
+
const selectOptions = el.shadowRoot?.querySelector('.select__options');
|
154
|
+
expect(selectOptions).to.exist;
|
155
|
+
|
156
|
+
// Check that the virtualizer element exists and has proper width styling
|
157
|
+
const virtualizer = el.shadowRoot?.querySelector('lit-virtualizer');
|
158
|
+
expect(virtualizer).to.exist;
|
159
|
+
});
|
160
|
+
|
161
|
+
it('should render virtualized options with full width structure', async () => {
|
162
|
+
const el = await fixture<NileVirtualSelect>(html`
|
163
|
+
<nile-virtual-select>
|
164
|
+
<div slot="label">Test Select</div>
|
165
|
+
</nile-virtual-select>
|
166
|
+
`);
|
167
|
+
|
168
|
+
// Set up test data
|
169
|
+
el.allOptionItems = [
|
170
|
+
{ value: 'option-1', label: 'Option 1' },
|
171
|
+
{ value: 'option-2', label: 'Option 2' },
|
172
|
+
{ value: 'option-3', label: 'Option 3' }
|
173
|
+
];
|
174
|
+
el.renderItemFunction = (item: any) => item.label;
|
175
|
+
|
176
|
+
// Open the select to render options
|
177
|
+
el.open = true;
|
178
|
+
await el.updateComplete;
|
179
|
+
|
180
|
+
// Verify the complete structure matches the regular select
|
181
|
+
const listbox = el.shadowRoot?.querySelector('.select__listbox');
|
182
|
+
expect(listbox).to.exist;
|
183
|
+
|
184
|
+
const selectOptions = listbox?.querySelector('.select__options');
|
185
|
+
expect(selectOptions).to.exist;
|
186
|
+
|
187
|
+
const virtualized = selectOptions?.querySelector('.virtualized');
|
188
|
+
expect(virtualized).to.exist;
|
189
|
+
|
190
|
+
// Check that the structure is properly nested
|
191
|
+
expect(listbox?.contains(selectOptions || null)).to.be.true;
|
192
|
+
expect(selectOptions?.contains(virtualized || null)).to.be.true;
|
193
|
+
});
|
194
|
+
});
|
195
|
+
|
196
|
+
describe('selected options highlighting', () => {
|
197
|
+
it('should highlight selected options with red border in single select mode', async () => {
|
198
|
+
const el = await fixture<NileVirtualSelect>(html`
|
199
|
+
<nile-virtual-select>
|
200
|
+
<div slot="label">Test Select</div>
|
201
|
+
</nile-virtual-select>
|
202
|
+
`);
|
203
|
+
|
204
|
+
// Set up test data
|
205
|
+
el.allOptionItems = [
|
206
|
+
{ value: 'option-1', label: 'Option 1' },
|
207
|
+
{ value: 'option-2', label: 'Option 2' },
|
208
|
+
{ value: 'option-3', label: 'Option 3' }
|
209
|
+
];
|
210
|
+
el.renderItemFunction = (item: any) => item.label;
|
211
|
+
|
212
|
+
// Set a selected value
|
213
|
+
el.value = 'option-2';
|
214
|
+
|
215
|
+
// Open the select to render options
|
216
|
+
el.open = true;
|
217
|
+
await el.updateComplete;
|
218
|
+
|
219
|
+
// Check that the selected option has the selected attribute
|
220
|
+
const selectedOption = el.shadowRoot?.querySelector('nile-option[selected]');
|
221
|
+
expect(selectedOption).to.exist;
|
222
|
+
expect(selectedOption?.getAttribute('value')).to.equal('option-2');
|
223
|
+
});
|
224
|
+
|
225
|
+
it('should highlight selected options with red border in multiple select mode', async () => {
|
226
|
+
const el = await fixture<NileVirtualSelect>(html`
|
227
|
+
<nile-virtual-select multiple>
|
228
|
+
<div slot="label">Test Select</div>
|
229
|
+
</nile-virtual-select>
|
230
|
+
`);
|
231
|
+
|
232
|
+
// Set up test data
|
233
|
+
el.allOptionItems = [
|
234
|
+
{ value: 'option-1', label: 'Option 1' },
|
235
|
+
{ value: 'option-2', label: 'Option 2' },
|
236
|
+
{ value: 'option-3', label: 'Option 3' }
|
237
|
+
];
|
238
|
+
el.renderItemFunction = (item: any) => item.label;
|
239
|
+
|
240
|
+
// Set multiple selected values
|
241
|
+
el.value = ['option-1', 'option-3'];
|
242
|
+
|
243
|
+
// Open the select to render options
|
244
|
+
el.open = true;
|
245
|
+
await el.updateComplete;
|
246
|
+
|
247
|
+
// Check that the selected options have the selected attribute
|
248
|
+
const selectedOptions = el.shadowRoot?.querySelectorAll('nile-option[selected]');
|
249
|
+
expect(selectedOptions?.length).to.equal(2);
|
250
|
+
|
251
|
+
const selectedValues = Array.from(selectedOptions || []).map(option => option.getAttribute('value'));
|
252
|
+
expect(selectedValues).to.include('option-1');
|
253
|
+
expect(selectedValues).to.include('option-3');
|
254
|
+
});
|
255
|
+
|
256
|
+
it('should not highlight unselected options', async () => {
|
257
|
+
const el = await fixture<NileVirtualSelect>(html`
|
258
|
+
<nile-virtual-select>
|
259
|
+
<div slot="label">Test Select</div>
|
260
|
+
</nile-virtual-select>
|
261
|
+
`);
|
262
|
+
|
263
|
+
// Set up test data
|
264
|
+
el.allOptionItems = [
|
265
|
+
{ value: 'option-1', label: 'Option 1' },
|
266
|
+
{ value: 'option-2', label: 'Option 2' },
|
267
|
+
{ value: 'option-3', label: 'Option 3' }
|
268
|
+
];
|
269
|
+
el.renderItemFunction = (item: any) => item.label;
|
270
|
+
|
271
|
+
// Set a selected value
|
272
|
+
el.value = 'option-2';
|
273
|
+
|
274
|
+
// Open the select to render options
|
275
|
+
el.open = true;
|
276
|
+
await el.updateComplete;
|
277
|
+
|
278
|
+
// Check that unselected options don't have the selected attribute
|
279
|
+
const unselectedOption = el.shadowRoot?.querySelector('nile-option[value="option-1"]');
|
280
|
+
expect(unselectedOption).to.exist;
|
281
|
+
expect(unselectedOption?.hasAttribute('selected')).to.be.false;
|
282
|
+
});
|
283
|
+
|
284
|
+
it('should show tags for pre-selected values when allOptionItems is set after value', async () => {
|
285
|
+
const el = await fixture<NileVirtualSelect>(html`
|
286
|
+
<nile-virtual-select multiple>
|
287
|
+
<div slot="label">Test Select</div>
|
288
|
+
</nile-virtual-select>
|
289
|
+
`);
|
290
|
+
|
291
|
+
// Set renderItemFunction first
|
292
|
+
el.renderItemFunction = (item: any) => item.label;
|
293
|
+
|
294
|
+
// Set value before allOptionItems
|
295
|
+
el.value = ['option-1', 'option-3'];
|
296
|
+
|
297
|
+
await el.updateComplete;
|
298
|
+
|
299
|
+
// Initially, no tags should be shown because allOptionItems is empty
|
300
|
+
const initialTags = el.shadowRoot?.querySelectorAll('nile-tag');
|
301
|
+
expect(initialTags?.length).to.equal(0);
|
302
|
+
|
303
|
+
// Now set allOptionItems
|
304
|
+
el.allOptionItems = [
|
305
|
+
{ value: 'option-1', label: 'Option 1' },
|
306
|
+
{ value: 'option-2', label: 'Option 2' },
|
307
|
+
{ value: 'option-3', label: 'Option 3' }
|
308
|
+
];
|
309
|
+
|
310
|
+
await el.updateComplete;
|
311
|
+
|
312
|
+
// Now tags should be shown
|
313
|
+
const tags = el.shadowRoot?.querySelectorAll('nile-tag');
|
314
|
+
expect(tags?.length).to.equal(2);
|
315
|
+
|
316
|
+
const tagTexts = Array.from(tags || []).map(tag => tag.textContent?.trim());
|
317
|
+
expect(tagTexts).to.include('Option 1');
|
318
|
+
expect(tagTexts).to.include('Option 3');
|
319
|
+
});
|
320
|
+
|
321
|
+
it('should show tags immediately without opening dropdown', async () => {
|
322
|
+
const el = await fixture<NileVirtualSelect>(html`
|
323
|
+
<nile-virtual-select multiple>
|
324
|
+
<div slot="label">Test Select</div>
|
325
|
+
</nile-virtual-select>
|
326
|
+
`);
|
327
|
+
|
328
|
+
// Set up test data
|
329
|
+
el.renderItemFunction = (item: any) => item.label;
|
330
|
+
el.allOptionItems = [
|
331
|
+
{ value: 'option-1', label: 'Option 1' },
|
332
|
+
{ value: 'option-2', label: 'Option 2' },
|
333
|
+
{ value: 'option-3', label: 'Option 3' }
|
334
|
+
];
|
335
|
+
el.value = ['option-1', 'option-3'];
|
336
|
+
|
337
|
+
await el.updateComplete;
|
338
|
+
|
339
|
+
// Ensure dropdown is closed
|
340
|
+
el.open = false;
|
341
|
+
await el.updateComplete;
|
342
|
+
|
343
|
+
// Check that tags are shown even when dropdown is closed
|
344
|
+
const tags = el.shadowRoot?.querySelectorAll('nile-tag');
|
345
|
+
expect(tags?.length).to.equal(2);
|
346
|
+
|
347
|
+
const tagTexts = Array.from(tags || []).map(tag => tag.textContent?.trim());
|
348
|
+
expect(tagTexts).to.include('Option 1');
|
349
|
+
expect(tagTexts).to.include('Option 3');
|
350
|
+
});
|
351
|
+
|
352
|
+
it('should show checkbox as checked for selected options in multiple mode', async () => {
|
353
|
+
const el = await fixture<NileVirtualSelect>(html`
|
354
|
+
<nile-virtual-select multiple>
|
355
|
+
<div slot="label">Test Select</div>
|
356
|
+
</nile-virtual-select>
|
357
|
+
`);
|
358
|
+
|
359
|
+
// Set up test data
|
360
|
+
el.renderItemFunction = (item: any) => item.label;
|
361
|
+
el.allOptionItems = [
|
362
|
+
{ value: 'option-1', label: 'Option 1' },
|
363
|
+
{ value: 'option-2', label: 'Option 2' },
|
364
|
+
{ value: 'option-3', label: 'Option 3' }
|
365
|
+
];
|
366
|
+
el.value = ['option-1', 'option-3'];
|
367
|
+
|
368
|
+
// Open the select to render options
|
369
|
+
el.open = true;
|
370
|
+
await el.updateComplete;
|
371
|
+
|
372
|
+
// Check that selected options have checked checkboxes
|
373
|
+
const selectedOptions = el.shadowRoot?.querySelectorAll('nile-option[selected]');
|
374
|
+
expect(selectedOptions?.length).to.equal(2);
|
375
|
+
|
376
|
+
selectedOptions?.forEach(option => {
|
377
|
+
const checkbox = option.shadowRoot?.querySelector('nile-checkbox');
|
378
|
+
expect(checkbox).to.exist;
|
379
|
+
expect(checkbox?.checked).to.be.true;
|
380
|
+
});
|
381
|
+
|
382
|
+
// Check that unselected options have unchecked checkboxes
|
383
|
+
const unselectedOption = el.shadowRoot?.querySelector('nile-option[value="option-2"]');
|
384
|
+
expect(unselectedOption).to.exist;
|
385
|
+
const unselectedCheckbox = unselectedOption?.shadowRoot?.querySelector('nile-checkbox');
|
386
|
+
expect(unselectedCheckbox).to.exist;
|
387
|
+
expect(unselectedCheckbox?.checked).to.be.false;
|
388
|
+
});
|
389
|
+
});
|
390
|
+
});
|