feat: Add MaxItems Option To Limit Multi-Select HSSelect #124
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
MaxItems Feature for HSSelect
Overview
This feature adds the ability to limit the number of selections in a multi-select HSSelect component. When the maximum number of items is reached, the dropdown automatically filters to show only the selected items, providing a better user experience for limited selection scenarios.
Changes Made
1. Interface Updates (
src/js/plugins/select/interfaces.ts)maxItems?: numberproperty toISelectOptionsinterface2. HSSelect Class Updates (
src/js/plugins/select/index.ts)New Properties
private readonly maxItems: number | null- Stores the maximum number of items that can be selectedConstructor Updates
maxItemsfrom options or data attributesmaxItemspropertyNew Methods
isMaxItemsReached(): booleantrueonly for multiple select with items at or above the maxfalsefor single select or when no limit is setfilterOptionsToSelected(): voidshowAllOptions(): voidhiddenclass from all optionssearchWithinSelected(val: string): voidModified Methods
buildDropdown()searchOptions(val: string)searchWithinSelectedwhen max items is reachedonSelectOption(val: string)remoteSearch(val: string)searchWithinSelectedwhen max items is reachedUsage
Via JavaScript Options
Via Data Attributes
Via data-max-items Attribute
Features
Core Functionality
tagsmode and default modeUser Experience
When max items is reached:
When below max items:
Edge Cases Handled
Compatibility
Works With
mode: 'tags')hasSearch: true)apiUrl)apiLoadMore)Does Not Affect