@ruc-lib/multi-select 3.1.0 → 3.1.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ruc-lib-multi-select.mjs","sources":["../../src/lib/model/ruc-multi-select.model.ts","../../src/lib/pipes/filter.pipe.ts","../../src/lib/pipes/sort.pipe.ts","../../src/lib/animations/animations.ts","../../src/lib/directives/clickOutside.directive.ts","../../src/lib/ruclib-multi-select/ruclib-multi-select.component.ts","../../src/lib/ruclib-multi-select/ruclib-multi-select.component.html","../../src/lib/ruclib-multi-select.module.ts","../../src/ruc-lib-multi-select.ts"],"sourcesContent":["export class ListItem {\r\n id: string | number;\r\n text: string;\r\n isDisabled?: boolean;\r\n icon? : string;\r\n childItem? : any;\r\n grouped? : any;\r\n public constructor (data: any){\r\n this.id = data.id;\r\n this.text = data.text;\r\n this.isDisabled = data.isDisabled;\r\n this.icon = data.icon;\r\n this.childItem = data.childItem;\r\n this.grouped = data.grouped;\r\n }\r\n }","import { Pipe, PipeTransform } from '@angular/core';\r\n@Pipe({\r\n name: 'filter'\r\n})\r\nexport class FilterPipe implements PipeTransform {\r\n transform(items: any[], searchText: string, key?:string): any[] {\r\n if (!items) return [];\r\n if (!searchText) return items;\r\n searchText = searchText.toLowerCase();\r\n return items.filter(it => {\r\n if(!key){\r\n return it.toLowerCase().includes(searchText);\r\n } else {\r\n return it[key].toLowerCase().includes(searchText);\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable, Pipe, PipeTransform } from '@angular/core';\r\n\r\nexport type SortOrder = 'asc' | 'desc';\r\n\r\n@Injectable()\r\n@Pipe({\r\n name: 'sort',\r\n})\r\nexport class SortPipe implements PipeTransform {\r\n transform(\r\n value: any[],\r\n sortOrder: SortOrder | string = 'asc',\r\n sortKey = 'text'\r\n ): any {\r\n sortOrder = sortOrder && (sortOrder.toLowerCase() as any);\r\n\r\n if (!value || (sortOrder !== 'asc' && sortOrder !== 'desc')) return value;\r\n\r\n let numberArray = [];\r\n let stringArray = [];\r\n numberArray = value\r\n .filter((item) => typeof item[sortKey] === 'number')\r\n .sort((a, b) => a[sortKey] - b[sortKey]);\r\n stringArray = value\r\n .filter((item) => typeof item[sortKey] === 'string')\r\n .sort((a, b) => {\r\n if (a[sortKey] < b[sortKey]) return -1;\r\n else if (a[sortKey] > b[sortKey]) return 1;\r\n else return 0;\r\n });\r\n\r\n const sorted = numberArray.concat(stringArray);\r\n return sortOrder === 'asc' ? sorted : sorted.reverse();\r\n }\r\n}\r\n","import {\r\n animate,\r\n query,\r\n sequence,\r\n stagger,\r\n style,\r\n transition,\r\n trigger\r\n } from \"@angular/animations\";\r\n \r\n export const DropDownAnimation = trigger(\"dropDownMenu\", [\r\n transition(\":enter\", [\r\n style({ height: 0, overflow: \"hidden\" }),\r\n query(\".option\", [\r\n style({ opacity: 0, transform: \"translateY(-50px)\" })\r\n ]),\r\n sequence([\r\n animate(\"400ms\", style({ height: \"*\" })),\r\n query(\".option\", [\r\n stagger(50, [\r\n animate(\"200ms ease\", style({ opacity: 1, transform: \"none\" }))\r\n ])\r\n ])\r\n ])\r\n ]),\r\n \r\n transition(\":leave\", [\r\n style({ height: \"*\", overflow: \"hidden\" }),\r\n query(\".option\", [style({ opacity: 1, transform: \"none\" })]),\r\n sequence([\r\n query(\".option\", [\r\n stagger(-10, [\r\n animate(\r\n \"400ms ease\",\r\n style({ opacity: 0, transform: \"translateY(-50px)\" })\r\n )\r\n ])\r\n ]),\r\n animate(\"400ms\", style({ height: 0 }))\r\n ])\r\n ])\r\n ]);\r\n ","import {Directive, ElementRef, Output, EventEmitter, HostListener} from '@angular/core';\r\n \r\n@Directive({\r\n selector: '[clickOutside]'\r\n})\r\nexport class ClickOutsideDirective {\r\n constructor(private _elementRef: ElementRef) {\r\n }\r\n\r\n @Output()\r\n public clickOutside = new EventEmitter<MouseEvent>();\r\n\r\n @HostListener('document:click', ['$event', '$event.target'])\r\n public onClick(event: MouseEvent, targetElement: HTMLElement): void {\r\n if (!targetElement) {\r\n return;\r\n }\r\n\r\n const clickedInside = this._elementRef.nativeElement.contains(targetElement);\r\n if (!clickedInside) {\r\n this.clickOutside.emit(event);\r\n }\r\n }\r\n}","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnInit,\r\n OnChanges,\r\n SimpleChanges,\r\n ViewChild,\r\n ElementRef,\r\n} from '@angular/core';\r\nimport { FormControl } from '@angular/forms';\r\nimport { COMMA, ENTER } from '@angular/cdk/keycodes';\r\nimport { MatFormFieldAppearance } from '@angular/material/form-field';\r\nimport { MatPaginator } from '@angular/material/paginator';\r\nimport { MatTable } from '@angular/material/table';\r\nimport { MatSort } from '@angular/material/sort';\r\nimport { ListItem } from '../model/ruc-multi-select.model';\r\nimport { FilterPipe } from '../pipes/filter.pipe';\r\nimport { SortPipe } from '../pipes/sort.pipe';\r\nimport { DropDownAnimation } from '../animations/animations';\r\nimport { DefaultConfig } from '../interfaces/multiSelectDefault';\r\n\r\n@Component({\r\n selector: 'uxp-ruclib-multi-select',\r\n templateUrl: './ruclib-multi-select.component.html',\r\n styleUrls: ['./ruclib-multi-select.component.scss'],\r\n animations: [DropDownAnimation],\r\n providers: [FilterPipe, SortPipe],\r\n})\r\nexport class RuclibMultiSelectComponent implements OnInit, OnChanges {\r\n public selectedItems!: Array<ListItem>;\r\n public filteredItem!: Array<ListItem>;\r\n readonly separatorKeysCodes = [ENTER, COMMA] as const;\r\n\r\n //local variables\r\n public sortToggle!: boolean;\r\n public multiSelectList!: FormControl;\r\n public addOnBlur!: boolean;\r\n public showdropdown!: boolean;\r\n public searchText!: string;\r\n public theme!: string;\r\n public isAllCheckboxSelected!: boolean;\r\n public isShowSelectedFilter!: boolean;\r\n public showSelectAll!: boolean;\r\n public showSelected!: boolean;\r\n\r\n sortObj: any;\r\n limitSelection: any;\r\n\r\n /* configurable fields */\r\n //public width: number; // width should be in % for responsive design.\r\n public height!: number; // max-height should be in px.\r\n public appearance!: string;\r\n public label!: string;\r\n public singleSelection!: boolean;\r\n public scroll!: boolean;\r\n public disabled!: boolean;\r\n public placeholder!: string;\r\n public maxDropdownHeight!: string;\r\n\r\n constructor(public filterPipe: FilterPipe, private sortPipe: SortPipe) {}\r\n\r\n @Output() rucEvent = new EventEmitter<any>();\r\n\r\n @Input() rucInputData!: DefaultConfig; /** config ruc input */\r\n @Input() customTheme!: string; /** custom theme */\r\n @Input() dataSource: Array<ListItem> = []; /** dropdwon data source */\r\n @ViewChild(MatPaginator) paginator!: MatPaginator;\r\n @ViewChild('matTable') matTable!: MatTable<any>;\r\n @ViewChild('matTable') matTableElementRef!: ElementRef;\r\n @ViewChild(MatSort) sort!: MatSort;\r\n\r\n /** getApperrance method to define appearance */\r\n getApperance(): MatFormFieldAppearance {\r\n if (this.appearance === 'fill') {\r\n return 'fill';\r\n }\r\n return 'outline';\r\n }\r\n\r\n ngOnInit(): void {\r\n this.filteredItem = [];\r\n this.selectedItems = [];\r\n this.sortToggle = false;\r\n this.addOnBlur = true;\r\n this.showdropdown = false;\r\n this.theme = 'primary';\r\n this.isAllCheckboxSelected = false;\r\n this.isShowSelectedFilter = false;\r\n this.limitSelection = null;\r\n this.scroll = false;\r\n this.disabled = false;\r\n this.limitSelection = null;\r\n\r\n this.dataSource = this.dataSource.map(\r\n (item: any) =>\r\n new ListItem({\r\n text: item.text,\r\n id: item.id,\r\n isDisabled: item.isDisable ? item.isDisable : false,\r\n childItem:\r\n item.childItem && item.childItem.length ? item.childItem : [],\r\n grouped: item.grouped ? true : false,\r\n icon: item.icon ? item.icon : '',\r\n })\r\n );\r\n this.filteredItem = this.dataSource;\r\n // this.width = this.rucInputData.width === \"\" || this.rucInputData.width === undefined ? 100: this.rucInputData.width; /** width in % */\r\n this.height =\r\n this.rucInputData.maxHeight === undefined\r\n ? 150\r\n : this.rucInputData.maxHeight; /** width in px */\r\n this.singleSelection =\r\n this.rucInputData.singleSelection === undefined\r\n ? false\r\n : this.rucInputData.singleSelection;\r\n this.label =\r\n this.rucInputData.label === '' || this.rucInputData.label === undefined\r\n ? 'Cities'\r\n : this.rucInputData.label;\r\n this.appearance =\r\n this.rucInputData.appearance === '' ||\r\n this.rucInputData.appearance === undefined\r\n ? 'outline'\r\n : this.rucInputData.appearance;\r\n this.limitSelection =\r\n this.rucInputData.limit === undefined ? null : this.rucInputData.limit;\r\n this.multiSelectList = new FormControl({\r\n value: '',\r\n disabled: !!this.rucInputData.disabled,\r\n });\r\n this.scroll =\r\n this.rucInputData.scroll === undefined ? true : this.rucInputData.scroll;\r\n this.placeholder =\r\n this.rucInputData.placeholder === '' ||\r\n this.rucInputData.placeholder === undefined\r\n ? ''\r\n : this.rucInputData.placeholder;\r\n this.maxDropdownHeight =\r\n this.rucInputData.maxDropdownHeight === undefined\r\n ? ''\r\n : this.rucInputData.maxDropdownHeight;\r\n this.sortObj = {\r\n sortBy:\r\n this.rucInputData.sortBy === undefined ? '' : this.rucInputData.sortBy,\r\n sortOrder:\r\n this.rucInputData.sortOrder === undefined\r\n ? ''\r\n : this.rucInputData.sortOrder,\r\n };\r\n this.showSelectAll =\r\n this.rucInputData.showSelectAll === undefined\r\n ? true\r\n : this.rucInputData.showSelectAll;\r\n this.showSelected =\r\n this.rucInputData.showSelected === undefined\r\n ? true\r\n : this.rucInputData.showSelected;\r\n }\r\n\r\n /**\r\n * Dynamic data change\r\n * @param changes input provide change detection\r\n * @return none\r\n */\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['dataSource'] && changes['dataSource'].currentValue) {\r\n this.dataSource = changes['dataSource'].currentValue.map(\r\n (item: any) =>\r\n new ListItem({\r\n id: item.id,\r\n text: item.text,\r\n isDisabled: item.isDisable,\r\n childItem:\r\n item.childItem && item.childItem.length ? item.childItem : [],\r\n grouped: item.grouped ? true : false,\r\n icon: item.icon ? item.icon : '',\r\n })\r\n );\r\n }\r\n this.filteredItem = this.dataSource;\r\n }\r\n /**\r\n * Select options checkbox\r\n * @param ListItem input provide whole list of data\r\n * @return none\r\n */\r\n onSelection(item: ListItem) {\r\n this.searchText = '';\r\n if (this.singleSelection === true) {\r\n if (this.selectedItems.length >= 0) {\r\n this.selectedItems = [];\r\n this.selectedItems.push(item);\r\n }\r\n } else {\r\n if (this.selectedItems.indexOf(item) > -1) {\r\n this.selectedItems = this.selectedItems.filter(\r\n (data) => data.id != item.id\r\n );\r\n } else {\r\n this.selectedItems.push(item);\r\n }\r\n this.rucEvent.emit({ eventName: 'onSelection', eventOutput: item });\r\n this.isAllSelected();\r\n if (this.selectedItems.length === 0) {\r\n this.isShowSelectedFilter = false;\r\n this.filteredItem = this.dataSource;\r\n }\r\n }\r\n }\r\n\r\n // disable other items as limit selection is there\r\n checkSelectedStatus(obj: any) {\r\n const index = this.selectedItems.findIndex((res) => res.id === obj.id);\r\n if (index === -1) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * clear selected Menu\r\n * @return none\r\n */\r\n clearSelectedMenu() {\r\n this.selectedItems = [];\r\n }\r\n\r\n /**\r\n * select all Checkbox options at once\r\n * @param ListItem input provide whole list of data\r\n * @return none\r\n */\r\n onAllSelection() {\r\n this.searchText = '';\r\n if (!this.isAllCheckboxSelected) {\r\n this.selectedItems = this.dataSource.filter((res) => {\r\n if (res.childItem && res.childItem.length > 0) {\r\n return res.childItem.filter((res1: any) => {\r\n return res1.isDisable != true;\r\n });\r\n } else {\r\n return res.isDisabled != true;\r\n }\r\n });\r\n } else {\r\n this.selectedItems = [];\r\n }\r\n this.rucEvent.emit({\r\n eventName: 'onAllSelection',\r\n eventOutput: this.selectedItems,\r\n });\r\n this.isAllCheckboxSelected = !this.isAllCheckboxSelected;\r\n if (\r\n this.isAllCheckboxSelected === false &&\r\n this.isShowSelectedFilter === true\r\n ) {\r\n this.filteredItem = this.dataSource;\r\n this.isShowSelectedFilter = false;\r\n }\r\n if (\r\n this.isAllCheckboxSelected === true &&\r\n this.isShowSelectedFilter === true\r\n ) {\r\n this.filteredItem = this.dataSource;\r\n }\r\n }\r\n\r\n /**\r\n * toggle dropdown\r\n */\r\n toggleDropdown() {\r\n this.showdropdown = !this.showdropdown;\r\n if (this.showdropdown) {\r\n this.rucEvent.emit({ eventName: 'onInputClick', eventOutput: null });\r\n }\r\n }\r\n\r\n /**\r\n * Remove the data based on the select input\r\n * @param ListItem input provide whole list of data\r\n * @return none\r\n */\r\n removeItem(item: ListItem) {\r\n if (this.selectedItems.indexOf(item) > -1) {\r\n this.selectedItems = this.selectedItems.filter(\r\n (data) => data.id != item.id\r\n );\r\n }\r\n this.rucEvent.emit({ eventName: 'onDeSelection', eventOutput: item });\r\n }\r\n\r\n /**\r\n * Filter the data based on the provided input\r\n * @param searchvalue input label provided in search box\r\n * @return none\r\n */\r\n filterData(searchvalue: any): any {\r\n /*Filter the data using filter pipe*/\r\n if (!this.showdropdown) {\r\n this.showdropdown = true;\r\n }\r\n\r\n this.filteredItem = this.filterPipe.transform(\r\n this.dataSource,\r\n searchvalue,\r\n 'text'\r\n );\r\n }\r\n\r\n /**\r\n * add and remove checked item\r\n * @param ListItem input provide whole list of data\r\n * @return boolean\r\n */\r\n isSelected(checkedItem: ListItem) {\r\n let found = false;\r\n this.selectedItems.forEach((item) => {\r\n if (item.childItem && item.childItem.length > 0) {\r\n item.childItem.forEach((item1: any) => {\r\n if (checkedItem.id === item1.id) {\r\n found = true;\r\n }\r\n });\r\n } else {\r\n if (checkedItem.id === item.id) {\r\n found = true;\r\n }\r\n }\r\n });\r\n return found;\r\n }\r\n\r\n /**\r\n * check if all checkbox selected or not\r\n * @return boolean\r\n */\r\n isAllSelected() {\r\n const totalLength = this.dataSource.filter(\r\n (data) => data.isDisabled != true\r\n );\r\n if (this.selectedItems.length === totalLength.length) {\r\n this.isAllCheckboxSelected = true;\r\n } else {\r\n this.isAllCheckboxSelected = false;\r\n }\r\n return this.isAllCheckboxSelected;\r\n }\r\n\r\n /**\r\n * check if show checkbox selected or not\r\n * @return boolean\r\n */\r\n isShowSelected() {\r\n return this.isShowSelectedFilter;\r\n }\r\n\r\n /**\r\n * check if show checkbox selected or not\r\n * @return boolean\r\n */\r\n onShowSelection() {\r\n this.isShowSelectedFilter = !this.isShowSelectedFilter;\r\n if (this.isShowSelectedFilter) {\r\n if (this.sortToggle) {\r\n const sortedArr = this.sortPipe.transform(\r\n this.selectedItems,\r\n this.rucInputData.sortOrder,\r\n this.rucInputData.sortBy\r\n );\r\n this.filteredItem = sortedArr;\r\n } else {\r\n this.filteredItem = this.selectedItems;\r\n }\r\n } else {\r\n this.isShowSelectedFilter = false;\r\n if (this.sortToggle) {\r\n const sortedArr = this.sortPipe.transform(\r\n this.dataSource,\r\n this.rucInputData.sortOrder,\r\n this.rucInputData.sortBy\r\n );\r\n this.filteredItem = sortedArr;\r\n } else {\r\n this.filteredItem = this.dataSource;\r\n }\r\n }\r\n }\r\n\r\n // pipe to toggle sort\r\n onSortToggle() {\r\n this.sortToggle = !this.sortToggle;\r\n if (this.sortToggle) {\r\n const sortedArr = this.sortPipe.transform(\r\n this.filteredItem,\r\n this.rucInputData.sortOrder,\r\n this.rucInputData.sortBy\r\n );\r\n this.filteredItem = sortedArr;\r\n } else {\r\n if (this.isShowSelectedFilter) {\r\n this.filteredItem = this.selectedItems;\r\n } else {\r\n this.filteredItem = this.dataSource;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * close popup when click outside of container\r\n */\r\n close() {\r\n this.showdropdown = false;\r\n }\r\n}\r\n","<div class=\"main\">\r\n<div class=\"{{ customTheme }}\" (clickOutside)=\"close()\">\r\n <mat-form-field\r\n class=\"chip-list\"\r\n [ngStyle]=\"{ 'max-height.px': height, 'width.%': 100 }\"\r\n [appearance]=\"getApperance()\"\r\n >\r\n <mat-label>{{ label }}</mat-label>\r\n <mat-chip-grid\r\n matInput\r\n [formControl]=\"multiSelectList\"\r\n #chipGrid\r\n aria-label=\"Cities\"\r\n >\r\n <mat-chip-row *ngFor=\"let item of selectedItems\" (removed)=\"removeItem(item)\">\r\n {{ item.text }}\r\n <button matChipRemove>\r\n <mat-icon>cancel</mat-icon>\r\n </button>\r\n </mat-chip-row>\r\n <input\r\n (click)=\"toggleDropdown()\"\r\n [placeholder]=\"placeholder\"\r\n [matChipInputFor]=\"chipGrid\"\r\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\r\n (keyup)=\"filterData(searchText)\"\r\n [(ngModel)]=\"searchText\"\r\n />\r\n </mat-chip-grid>\r\n <mat-icon\r\n *ngIf=\"selectedItems.length\"\r\n (click)=\"clearSelectedMenu()\"\r\n matSuffix\r\n >clear</mat-icon\r\n >\r\n <mat-icon *ngIf=\"!selectedItems.length && !showdropdown\" matSuffix\r\n >expand_more</mat-icon\r\n >\r\n <mat-icon *ngIf=\"!selectedItems.length && showdropdown\" matSuffix\r\n >expand_less</mat-icon\r\n >\r\n </mat-form-field>\r\n\r\n <div\r\n *ngIf=\"searchText && filteredItem.length < 1\"\r\n class=\"margin-2-top-bottom\"\r\n >\r\n <div>No option found</div>\r\n </div>\r\n\r\n <div class=\"box-border-option\">\r\n <div\r\n *ngIf=\"showdropdown\"\r\n class=\"option-header\"\r\n role=\"options\"\r\n tabindex=\"-1\"\r\n [@dropDownMenu]\r\n >\r\n <ng-container *ngIf=\"!singleSelection\">\r\n <div *ngIf=\"showSelectAll\">\r\n <div *ngIf=\"limitSelection === null\">\r\n <mat-checkbox\r\n class=\"option mat-primary\"\r\n role=\"option\"\r\n color=\"{{ theme }}\"\r\n [checked]=\"isAllSelected()\"\r\n (change)=\"onAllSelection()\"\r\n value=\"select-all\"\r\n >Select All\r\n </mat-checkbox>\r\n </div>\r\n </div>\r\n <mat-checkbox\r\n *ngIf=\"showSelected\"\r\n class=\"option mat-primary\"\r\n role=\"option\"\r\n color=\"{{ theme }}\"\r\n [checked]=\"isShowSelected()\"\r\n (change)=\"onShowSelection()\"\r\n value=\"select-all\"\r\n >Show Selected\r\n </mat-checkbox>\r\n <mat-slide-toggle\r\n *ngIf=\"sortObj['sortBy']\"\r\n class=\"option mat-primary\"\r\n (click)=\"onSortToggle()\"\r\n >Sort\r\n </mat-slide-toggle>\r\n <mat-divider></mat-divider>\r\n </ng-container>\r\n </div>\r\n\r\n <div\r\n *ngIf=\"showdropdown\"\r\n [ngClass]=\"{\r\n 'scroll-option-container': scroll,\r\n 'option-container': '!scroll'\r\n }\"\r\n role=\"options\"\r\n [ngStyle]=\"{ 'max-height.px': maxDropdownHeight, 'width.%': 100 }\"\r\n tabindex=\"-1\"\r\n >\r\n <ng-container>\r\n <div *ngIf=\"!singleSelection\" [@dropDownMenu]>\r\n <!-- for grouped -->\r\n <div *ngFor=\"let item of filteredItem\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n (item.childItem && item.childItem.length > 0) || item.grouped\r\n ? multipleGroupedCase\r\n : multipleNonGroupedCase\r\n \"\r\n [ngTemplateOutletContext]=\"{ item: item }\"\r\n >\r\n </ng-container>\r\n </div>\r\n </div>\r\n <!-- for single selection case -->\r\n <div *ngIf=\"singleSelection\">\r\n <div *ngFor=\"let item of filteredItem\">\r\n <ng-container\r\n [ngTemplateOutlet]=\"\r\n item.childItem && item.childItem.length > 0\r\n ? singleGroupedCase\r\n : singleNonGroupedCase\r\n \"\r\n [ngTemplateOutletContext]=\"{ item: item }\"\r\n >\r\n </ng-container>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n\r\n <!-- for multiple selected group case -->\r\n <ng-template #multipleGroupedCase let-item=\"item\">\r\n <mat-optgroup [label]=\"item.text\" [disabled]=\"item.isDisabled\">\r\n <mat-option\r\n *ngFor=\"let itemObj of item.childItem\"\r\n [value]=\"itemObj.id\"\r\n disabled=\"{{\r\n itemObj.isDisable ||\r\n (limitSelection != null &&\r\n selectedItems.length >= limitSelection &&\r\n checkSelectedStatus(itemObj))\r\n }}\"\r\n >\r\n <mat-checkbox\r\n class=\"mat-primary\"\r\n role=\"option\"\r\n color=\"{{ theme }}\"\r\n [checked]=\"isSelected(itemObj)\"\r\n (change)=\"onSelection(itemObj)\"\r\n value=\"{{ itemObj.id }}\"\r\n disabled=\"{{\r\n itemObj.isDisable ||\r\n (limitSelection != null &&\r\n selectedItems.length >= limitSelection &&\r\n checkSelectedStatus(itemObj))\r\n }}\"\r\n >\r\n </mat-checkbox>\r\n <mat-icon *ngIf=\"itemObj.icon\">{{ itemObj.icon }}</mat-icon>\r\n {{ itemObj.text }}\r\n </mat-option>\r\n </mat-optgroup>\r\n </ng-template>\r\n\r\n <!-- for multiple selected non grouped case -->\r\n <ng-template #multipleNonGroupedCase let-item=\"item\">\r\n <mat-checkbox\r\n class=\"option mat-primary\"\r\n role=\"option\"\r\n color=\"{{ theme }}\"\r\n [checked]=\"isSelected(item)\"\r\n (change)=\"onSelection(item)\"\r\n value=\"{{ item.id }}\"\r\n disabled=\"{{\r\n item.isDisabled ||\r\n (limitSelection != null &&\r\n selectedItems.length >= limitSelection &&\r\n checkSelectedStatus(item))\r\n }}\"\r\n >\r\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\r\n {{ item.text }}\r\n </mat-checkbox>\r\n </ng-template>\r\n\r\n <!-- for single selection group case -->\r\n <ng-template #singleGroupedCase let-item=\"item\">\r\n <mat-optgroup\r\n *ngFor=\"let item of filteredItem\"\r\n [label]=\"item.text\"\r\n [disabled]=\"item.isDisabled\"\r\n >\r\n <mat-option\r\n *ngFor=\"let itemObj of item.childItem\"\r\n [value]=\"itemObj.id\"\r\n disabled=\"{{ itemObj.isDisable }}\"\r\n (click)=\"onSelection(itemObj)\"\r\n >\r\n <mat-icon *ngIf=\"itemObj.icon\">{{ itemObj.icon }}</mat-icon>\r\n {{ itemObj.text }}\r\n </mat-option>\r\n </mat-optgroup>\r\n </ng-template>\r\n\r\n <!-- for single selection non group case -->\r\n <ng-template #singleNonGroupedCase let-item=\"item\">\r\n <span\r\n class=\"option mat-primary\"\r\n (click)=\"onSelection(item)\"\r\n *ngFor=\"let item of filteredItem; let index = index\"\r\n >\r\n <mat-icon *ngIf=\"item.icon\">{{ item.icon }}</mat-icon>\r\n {{ item.text }}\r\n </span>\r\n </ng-template>\r\n </div>\r\n</div>\r\n</div>","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RuclibMultiSelectComponent } from './ruclib-multi-select/ruclib-multi-select.component';\r\n\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { FilterPipe } from './pipes/filter.pipe';\r\nimport { MatChipsModule } from '@angular/material/chips';\r\nimport { ClickOutsideDirective } from './directives/clickOutside.directive';\r\nimport { MatDividerModule } from '@angular/material/divider';\r\nimport { SortPipe } from './pipes/sort.pipe';\r\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatIconModule,\r\n MatFormFieldModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatCheckboxModule,\r\n MatChipsModule,\r\n MatDividerModule,\r\n MatSlideToggleModule\r\n ],\r\n declarations: [\r\n RuclibMultiSelectComponent,\r\n FilterPipe,\r\n SortPipe,\r\n ClickOutsideDirective\r\n ],\r\n exports: [\r\n RuclibMultiSelectComponent\r\n ]\r\n})\r\nexport class RuclibMultiSelectModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1.FilterPipe","i2.SortPipe","i12.ClickOutsideDirective"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,207 +1,4 @@
1
- import * as i0 from '@angular/core';
2
- import { PipeTransform, OnInit, OnChanges, EventEmitter, ElementRef, SimpleChanges } from '@angular/core';
3
- import { MatPaginator } from '@angular/material/paginator';
4
- import { MatTable } from '@angular/material/table';
5
- import { MatSort } from '@angular/material/sort';
6
- import { FormControl } from '@angular/forms';
7
- import { MatFormFieldAppearance } from '@angular/material/form-field';
8
-
9
- declare class ListItem {
10
- id: string | number;
11
- text: string;
12
- isDisabled?: boolean;
13
- icon?: string;
14
- childItem?: any;
15
- grouped?: any;
16
- constructor(data: any);
17
- }
18
-
19
- declare class FilterPipe implements PipeTransform {
20
- transform(items: any[], searchText: string, key?: string): any[];
21
- static ɵfac: i0.ɵɵFactoryDeclaration<FilterPipe, never>;
22
- static ɵpipe: i0.ɵɵPipeDeclaration<FilterPipe, "filter", true>;
23
- }
24
-
25
- type SortOrder = 'asc' | 'desc';
26
- declare class SortPipe implements PipeTransform {
27
- transform(value: any[], sortOrder?: SortOrder | string, sortKey?: string): any;
28
- static ɵfac: i0.ɵɵFactoryDeclaration<SortPipe, never>;
29
- static ɵpipe: i0.ɵɵPipeDeclaration<SortPipe, "sort", true>;
30
- static ɵprov: i0.ɵɵInjectableDeclaration<SortPipe>;
31
- }
32
-
33
- interface DefaultConfig {
34
- /**
35
- * OPtional
36
- * Values :- true , false
37
- */
38
- singleSelection: boolean;
39
- /**
40
- * Mandatory,
41
- * value: any string
42
- */
43
- label?: string;
44
- /**
45
- * Optional
46
- * value :true false
47
- */
48
- showSelectAll?: boolean;
49
- /**
50
- * Optional
51
- * value :true false
52
- */
53
- showSelected?: boolean;
54
- /**
55
- * Optional
56
- *
57
- */
58
- appearance?: string;
59
- /**
60
- * Optional
61
- *
62
- */
63
- scroll?: boolean;
64
- /**
65
- * Optional
66
- *
67
- */
68
- placeholder?: string;
69
- /**
70
- * Optional
71
- *
72
- */
73
- limit?: string;
74
- /**
75
- * Optional
76
- *
77
- */
78
- maxDropdownHeight?: string;
79
- /**
80
- * Optional
81
- *
82
- */
83
- sortBy?: string;
84
- /**
85
- * Optional
86
- */
87
- sortOrder?: string;
88
- /**
89
- * Optional
90
- */
91
- maxHeight?: number;
92
- /**
93
- * Optional
94
- */
95
- disabled?: boolean;
96
- }
97
-
98
- declare class RuclibMultiSelectComponent implements OnInit, OnChanges {
99
- filterPipe: FilterPipe;
100
- private sortPipe;
101
- selectedItems: Array<ListItem>;
102
- filteredItem: Array<ListItem>;
103
- readonly separatorKeysCodes: readonly [13, 188];
104
- sortToggle: boolean;
105
- multiSelectList: FormControl;
106
- addOnBlur: boolean;
107
- showdropdown: boolean;
108
- searchText: string;
109
- theme: string;
110
- isAllCheckboxSelected: boolean;
111
- isShowSelectedFilter: boolean;
112
- showSelectAll: boolean;
113
- showSelected: boolean;
114
- sortObj: any;
115
- limitSelection: any;
116
- height: number;
117
- appearance: string;
118
- label: string;
119
- singleSelection: boolean;
120
- scroll: boolean;
121
- disabled: boolean;
122
- placeholder: string;
123
- maxDropdownHeight: string;
124
- constructor(filterPipe: FilterPipe, sortPipe: SortPipe);
125
- rucEvent: EventEmitter<any>;
126
- rucInputData: DefaultConfig; /** config ruc input */
127
- customTheme: string; /** custom theme */
128
- dataSource: Array<ListItem>; /** dropdwon data source */
129
- paginator: MatPaginator;
130
- matTable: MatTable<any>;
131
- matTableElementRef: ElementRef;
132
- sort: MatSort;
133
- /** getApperrance method to define appearance */
134
- getApperance(): MatFormFieldAppearance;
135
- ngOnInit(): void;
136
- /**
137
- * Dynamic data change
138
- * @param changes input provide change detection
139
- * @return none
140
- */
141
- ngOnChanges(changes: SimpleChanges): void;
142
- /**
143
- * Select options checkbox
144
- * @param ListItem input provide whole list of data
145
- * @return none
146
- */
147
- onSelection(item: ListItem): void;
148
- checkSelectedStatus(obj: any): boolean;
149
- /**
150
- * clear selected Menu
151
- * @return none
152
- */
153
- clearSelectedMenu(): void;
154
- /**
155
- * select all Checkbox options at once
156
- * @param ListItem input provide whole list of data
157
- * @return none
158
- */
159
- onAllSelection(): void;
160
- /**
161
- * toggle dropdown
162
- */
163
- toggleDropdown(): void;
164
- /**
165
- * Remove the data based on the select input
166
- * @param ListItem input provide whole list of data
167
- * @return none
168
- */
169
- removeItem(item: ListItem): void;
170
- /**
171
- * Filter the data based on the provided input
172
- * @param searchvalue input label provided in search box
173
- * @return none
174
- */
175
- filterData(searchvalue: any): any;
176
- /**
177
- * add and remove checked item
178
- * @param ListItem input provide whole list of data
179
- * @return boolean
180
- */
181
- isSelected(checkedItem: ListItem): boolean;
182
- /**
183
- * check if all checkbox selected or not
184
- * @return boolean
185
- */
186
- isAllSelected(): boolean;
187
- /**
188
- * check if show checkbox selected or not
189
- * @return boolean
190
- */
191
- isShowSelected(): boolean;
192
- /**
193
- * check if show checkbox selected or not
194
- * @return boolean
195
- */
196
- onShowSelection(): void;
197
- onSortToggle(): void;
198
- /**
199
- * close popup when click outside of container
200
- */
201
- close(): void;
202
- static ɵfac: i0.ɵɵFactoryDeclaration<RuclibMultiSelectComponent, never>;
203
- static ɵcmp: i0.ɵɵComponentDeclaration<RuclibMultiSelectComponent, "uxp-ruclib-multi-select", never, { "rucInputData": { "alias": "rucInputData"; "required": false; }; "customTheme": { "alias": "customTheme"; "required": false; }; "dataSource": { "alias": "dataSource"; "required": false; }; }, { "rucEvent": "rucEvent"; }, never, never, true, never>;
204
- }
205
-
206
- export { ListItem, RuclibMultiSelectComponent };
207
- export type { DefaultConfig };
1
+ export * from './lib/ruclib-multi-select.module';
2
+ export * from './lib/ruclib-multi-select/ruclib-multi-select.component';
3
+ export * from './lib/model/ruc-multi-select.model';
4
+ export * from './lib/interfaces/multiSelectDefault';
@@ -0,0 +1 @@
1
+ export declare const DropDownAnimation: import("@angular/animations").AnimationTriggerMetadata;
@@ -0,0 +1,10 @@
1
+ import { ElementRef, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ClickOutsideDirective {
4
+ private _elementRef;
5
+ constructor(_elementRef: ElementRef);
6
+ clickOutside: EventEmitter<MouseEvent>;
7
+ onClick(event: MouseEvent, targetElement: HTMLElement): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClickOutsideDirective, never>;
9
+ static ɵdir: i0.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[clickOutside]", never, {}, { "clickOutside": "clickOutside"; }, never, never, false, never>;
10
+ }
@@ -0,0 +1,64 @@
1
+ export interface DefaultConfig {
2
+ /**
3
+ * OPtional
4
+ * Values :- true , false
5
+ */
6
+ singleSelection: boolean;
7
+ /**
8
+ * Mandatory,
9
+ * value: any string
10
+ */
11
+ label?: string;
12
+ /**
13
+ * Optional
14
+ * value :true false
15
+ */
16
+ showSelectAll?: boolean;
17
+ /**
18
+ * Optional
19
+ * value :true false
20
+ */
21
+ showSelected?: boolean;
22
+ /**
23
+ * Optional
24
+ *
25
+ */
26
+ appearance?: string;
27
+ /**
28
+ * Optional
29
+ *
30
+ */
31
+ scroll?: boolean;
32
+ /**
33
+ * Optional
34
+ *
35
+ */
36
+ placeholder?: string;
37
+ /**
38
+ * Optional
39
+ *
40
+ */
41
+ limit?: string;
42
+ /**
43
+ * Optional
44
+ *
45
+ */
46
+ maxDropdownHeight?: string;
47
+ /**
48
+ * Optional
49
+ *
50
+ */
51
+ sortBy?: string;
52
+ /**
53
+ * Optional
54
+ */
55
+ sortOrder?: string;
56
+ /**
57
+ * Optional
58
+ */
59
+ maxHeight?: number;
60
+ /**
61
+ * Optional
62
+ */
63
+ disabled?: boolean;
64
+ }
@@ -0,0 +1,9 @@
1
+ export declare class ListItem {
2
+ id: string | number;
3
+ text: string;
4
+ isDisabled?: boolean;
5
+ icon?: string;
6
+ childItem?: any;
7
+ grouped?: any;
8
+ constructor(data: any);
9
+ }
@@ -0,0 +1,7 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class FilterPipe implements PipeTransform {
4
+ transform(items: any[], searchText: string, key?: string): any[];
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterPipe, never>;
6
+ static ɵpipe: i0.ɵɵPipeDeclaration<FilterPipe, "filter", false>;
7
+ }
@@ -0,0 +1,9 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export type SortOrder = 'asc' | 'desc';
4
+ export declare class SortPipe implements PipeTransform {
5
+ transform(value: any[], sortOrder?: SortOrder | string, sortKey?: string): any;
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<SortPipe, never>;
7
+ static ɵpipe: i0.ɵɵPipeDeclaration<SortPipe, "sort", false>;
8
+ static ɵprov: i0.ɵɵInjectableDeclaration<SortPipe>;
9
+ }
@@ -0,0 +1,118 @@
1
+ import { EventEmitter, OnInit, OnChanges, SimpleChanges, ElementRef } from '@angular/core';
2
+ import { FormControl } from '@angular/forms';
3
+ import { MatFormFieldAppearance } from '@angular/material/form-field';
4
+ import { MatPaginator } from '@angular/material/paginator';
5
+ import { MatTable } from '@angular/material/table';
6
+ import { MatSort } from '@angular/material/sort';
7
+ import { ListItem } from '../model/ruc-multi-select.model';
8
+ import { FilterPipe } from '../pipes/filter.pipe';
9
+ import { SortPipe } from '../pipes/sort.pipe';
10
+ import { DefaultConfig } from '../interfaces/multiSelectDefault';
11
+ import * as i0 from "@angular/core";
12
+ export declare class RuclibMultiSelectComponent implements OnInit, OnChanges {
13
+ filterPipe: FilterPipe;
14
+ private sortPipe;
15
+ selectedItems: Array<ListItem>;
16
+ filteredItem: Array<ListItem>;
17
+ readonly separatorKeysCodes: readonly [13, 188];
18
+ sortToggle: boolean;
19
+ multiSelectList: FormControl;
20
+ addOnBlur: boolean;
21
+ showdropdown: boolean;
22
+ searchText: string;
23
+ theme: string;
24
+ isAllCheckboxSelected: boolean;
25
+ isShowSelectedFilter: boolean;
26
+ showSelectAll: boolean;
27
+ showSelected: boolean;
28
+ sortObj: any;
29
+ limitSelection: any;
30
+ height: number;
31
+ appearance: string;
32
+ label: string;
33
+ singleSelection: boolean;
34
+ scroll: boolean;
35
+ disabled: boolean;
36
+ placeholder: string;
37
+ maxDropdownHeight: string;
38
+ constructor(filterPipe: FilterPipe, sortPipe: SortPipe);
39
+ rucEvent: EventEmitter<any>;
40
+ rucInputData: DefaultConfig; /** config ruc input */
41
+ customTheme: string; /** custom theme */
42
+ dataSource: Array<ListItem>; /** dropdwon data source */
43
+ paginator: MatPaginator;
44
+ matTable: MatTable<any>;
45
+ matTableElementRef: ElementRef;
46
+ sort: MatSort;
47
+ /** getApperrance method to define appearance */
48
+ getApperance(): MatFormFieldAppearance;
49
+ ngOnInit(): void;
50
+ /**
51
+ * Dynamic data change
52
+ * @param changes input provide change detection
53
+ * @return none
54
+ */
55
+ ngOnChanges(changes: SimpleChanges): void;
56
+ /**
57
+ * Select options checkbox
58
+ * @param ListItem input provide whole list of data
59
+ * @return none
60
+ */
61
+ onSelection(item: ListItem): void;
62
+ checkSelectedStatus(obj: any): boolean;
63
+ /**
64
+ * clear selected Menu
65
+ * @return none
66
+ */
67
+ clearSelectedMenu(): void;
68
+ /**
69
+ * select all Checkbox options at once
70
+ * @param ListItem input provide whole list of data
71
+ * @return none
72
+ */
73
+ onAllSelection(): void;
74
+ /**
75
+ * toggle dropdown
76
+ */
77
+ toggleDropdown(): void;
78
+ /**
79
+ * Remove the data based on the select input
80
+ * @param ListItem input provide whole list of data
81
+ * @return none
82
+ */
83
+ removeItem(item: ListItem): void;
84
+ /**
85
+ * Filter the data based on the provided input
86
+ * @param searchvalue input label provided in search box
87
+ * @return none
88
+ */
89
+ filterData(searchvalue: any): any;
90
+ /**
91
+ * add and remove checked item
92
+ * @param ListItem input provide whole list of data
93
+ * @return boolean
94
+ */
95
+ isSelected(checkedItem: ListItem): boolean;
96
+ /**
97
+ * check if all checkbox selected or not
98
+ * @return boolean
99
+ */
100
+ isAllSelected(): boolean;
101
+ /**
102
+ * check if show checkbox selected or not
103
+ * @return boolean
104
+ */
105
+ isShowSelected(): boolean;
106
+ /**
107
+ * check if show checkbox selected or not
108
+ * @return boolean
109
+ */
110
+ onShowSelection(): void;
111
+ onSortToggle(): void;
112
+ /**
113
+ * close popup when click outside of container
114
+ */
115
+ close(): void;
116
+ static ɵfac: i0.ɵɵFactoryDeclaration<RuclibMultiSelectComponent, never>;
117
+ static ɵcmp: i0.ɵɵComponentDeclaration<RuclibMultiSelectComponent, "uxp-ruclib-multi-select", never, { "rucInputData": "rucInputData"; "customTheme": "customTheme"; "dataSource": "dataSource"; }, { "rucEvent": "rucEvent"; }, never, never, false, never>;
118
+ }
@@ -0,0 +1,20 @@
1
+ import * as i0 from "@angular/core";
2
+ import * as i1 from "./ruclib-multi-select/ruclib-multi-select.component";
3
+ import * as i2 from "./pipes/filter.pipe";
4
+ import * as i3 from "./pipes/sort.pipe";
5
+ import * as i4 from "./directives/clickOutside.directive";
6
+ import * as i5 from "@angular/common";
7
+ import * as i6 from "@angular/forms";
8
+ import * as i7 from "@angular/material/icon";
9
+ import * as i8 from "@angular/material/form-field";
10
+ import * as i9 from "@angular/material/input";
11
+ import * as i10 from "@angular/material/select";
12
+ import * as i11 from "@angular/material/checkbox";
13
+ import * as i12 from "@angular/material/chips";
14
+ import * as i13 from "@angular/material/divider";
15
+ import * as i14 from "@angular/material/slide-toggle";
16
+ export declare class RuclibMultiSelectModule {
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<RuclibMultiSelectModule, never>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<RuclibMultiSelectModule, [typeof i1.RuclibMultiSelectComponent, typeof i2.FilterPipe, typeof i3.SortPipe, typeof i4.ClickOutsideDirective], [typeof i5.CommonModule, typeof i6.FormsModule, typeof i6.ReactiveFormsModule, typeof i7.MatIconModule, typeof i8.MatFormFieldModule, typeof i9.MatInputModule, typeof i10.MatSelectModule, typeof i11.MatCheckboxModule, typeof i12.MatChipsModule, typeof i13.MatDividerModule, typeof i14.MatSlideToggleModule], [typeof i1.RuclibMultiSelectComponent]>;
19
+ static ɵinj: i0.ɵɵInjectorDeclaration<RuclibMultiSelectModule>;
20
+ }
package/package.json CHANGED
@@ -1,22 +1,31 @@
1
1
  {
2
2
  "name": "@ruc-lib/multi-select",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
+ "license": "MIT",
4
5
  "peerDependencies": {
5
- "@angular/common": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
6
- "@angular/core": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
7
- "@angular/material": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
8
- "@angular/platform-browser": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
9
- "@angular/animations": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
10
- "@angular/forms": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0",
11
- "ngx-pagination": "^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0",
12
- "rxjs": ">=7.5.0 <8.0.0",
13
- "zone.js": "^0.13.0 || ^0.14.0"
6
+ "@angular/material": "^15.2.0",
7
+ "@angular/animations": ">=15.0.0 <18.0.0",
8
+ "@angular/core": ">=15.0.0 <18.0.0",
9
+ "@angular/common": ">=15.0.0 <18.0.0",
10
+ "@angular/forms": ">=15.0.0 <18.0.0",
11
+ "@angular/platform-browser": ">=15.0.0 <18.0.0",
12
+ "ngx-pagination": "^6.0.3",
13
+ "rxjs": ">=6.5.0 <8.0.0",
14
+ "zone.js": ">=0.11.4 <0.14.0",
15
+ "@angular/cdk": "^15.2.9"
14
16
  },
15
17
  "dependencies": {
16
18
  "tslib": "^2.3.0"
17
19
  },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
18
23
  "sideEffects": false,
19
- "module": "fesm2022/ruc-lib-multi-select.mjs",
24
+ "module": "fesm2015/ruc-lib-multi-select.mjs",
25
+ "es2020": "fesm2020/ruc-lib-multi-select.mjs",
26
+ "esm2020": "esm2020/ruc-lib-multi-select.mjs",
27
+ "fesm2020": "fesm2020/ruc-lib-multi-select.mjs",
28
+ "fesm2015": "fesm2015/ruc-lib-multi-select.mjs",
20
29
  "typings": "index.d.ts",
21
30
  "exports": {
22
31
  "./package.json": {
@@ -24,7 +33,11 @@
24
33
  },
25
34
  ".": {
26
35
  "types": "./index.d.ts",
27
- "default": "./fesm2022/ruc-lib-multi-select.mjs"
36
+ "esm2020": "./esm2020/ruc-lib-multi-select.mjs",
37
+ "es2020": "./fesm2020/ruc-lib-multi-select.mjs",
38
+ "es2015": "./fesm2015/ruc-lib-multi-select.mjs",
39
+ "node": "./fesm2015/ruc-lib-multi-select.mjs",
40
+ "default": "./fesm2020/ruc-lib-multi-select.mjs"
28
41
  }
29
42
  }
30
- }
43
+ }