angular-perfect-select 2.2.0 → 2.3.0

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/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import * as angular_perfect_select from 'angular-perfect-select';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnInit, OnChanges, OnDestroy, EventEmitter, ElementRef, TemplateRef, SimpleChanges } from '@angular/core';
3
+ import { OnInit, OnChanges, OnDestroy, EventEmitter, ElementRef, TemplateRef, SimpleChanges, EnvironmentProviders } from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
6
6
  import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
@@ -85,8 +85,69 @@ interface SelectPinEvent {
85
85
  pinned: boolean;
86
86
  }
87
87
 
88
+ /**
89
+ * Utility functions for sorting select options
90
+ */
91
+
92
+ type SortMode = 'none' | 'alphabetical-asc' | 'alphabetical-desc' | 'recently-used' | 'custom';
93
+ interface SortConfig {
94
+ mode: SortMode;
95
+ customComparator?: (a: SelectOption, b: SelectOption) => number;
96
+ getLabel?: (option: SelectOption) => string;
97
+ recentlyUsedIds?: Set<any>;
98
+ }
99
+ /**
100
+ * Sorts options based on the specified mode
101
+ */
102
+ declare function sortOptions(options: SelectOption[], config: SortConfig): SelectOption[];
103
+
104
+ type ColorScheme = 'light' | 'dark' | 'auto';
105
+ declare class DarkModeProvider {
106
+ private platformId;
107
+ private isBrowser;
108
+ private preferredScheme;
109
+ private systemPrefersDark;
110
+ isDarkMode: _angular_core.Signal<boolean>;
111
+ constructor();
112
+ /**
113
+ * Initialize system dark mode detection
114
+ */
115
+ private initDarkModeDetection;
116
+ /**
117
+ * Set user's color scheme preference
118
+ */
119
+ setColorScheme(scheme: ColorScheme): void;
120
+ /**
121
+ * Get current color scheme preference
122
+ */
123
+ getColorScheme(): ColorScheme;
124
+ /**
125
+ * Toggle between light and dark mode
126
+ */
127
+ toggleDarkMode(): void;
128
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<DarkModeProvider, never>;
129
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<DarkModeProvider>;
130
+ }
131
+
132
+ /**
133
+ * Bulk actions for multi-select mode
134
+ */
135
+
136
+ interface BulkAction {
137
+ id: string;
138
+ label: string;
139
+ icon?: string;
140
+ disabled?: boolean;
141
+ action: (selectedOptions: SelectOption[]) => void;
142
+ }
143
+ interface SelectBulkActionEvent {
144
+ action: BulkAction;
145
+ selectedOptions: SelectOption[];
146
+ }
147
+
88
148
  declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, OnChanges, OnDestroy {
89
149
  private sanitizer;
150
+ private darkModeProvider;
90
151
  options: SelectOption[];
91
152
  placeholder: string;
92
153
  isMulti: boolean;
@@ -180,6 +241,28 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
180
241
  collapsibleTags: boolean;
181
242
  showAllTagsText: string;
182
243
  showLessTagsText: string;
244
+ enableFuzzySearch: boolean;
245
+ fuzzySearchThreshold: number;
246
+ fuzzySearchCaseSensitive: boolean;
247
+ enableAutoThemeDetection: boolean;
248
+ colorScheme: ColorScheme;
249
+ darkModeTheme: ThemeName;
250
+ lightModeTheme: ThemeName;
251
+ enableLoadingSkeleton: boolean;
252
+ skeletonItemCount: number;
253
+ skeletonItemHeight: number;
254
+ skeletonAnimationDelay: number;
255
+ compactMode: boolean;
256
+ showOptionCheckboxes: boolean;
257
+ checkboxPosition: 'left' | 'right';
258
+ checkboxStyle: 'default' | 'filled' | 'outlined';
259
+ bulkActions: BulkAction[];
260
+ enableBulkActions: boolean;
261
+ bulkActionsPosition: 'above' | 'below' | 'float';
262
+ bulkActionsLabel: string;
263
+ sortMode: SortMode;
264
+ customSortComparator: ((a: SelectOption, b: SelectOption) => number) | null;
265
+ recentlyUsedLimit: number;
183
266
  name: string;
184
267
  id: string;
185
268
  autoFocus: boolean;
@@ -205,12 +288,14 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
205
288
  scrollEnd: EventEmitter<SelectScrollEndEvent>;
206
289
  reorder: EventEmitter<SelectReorderEvent>;
207
290
  pin: EventEmitter<SelectPinEvent>;
291
+ bulkActionSelected: EventEmitter<SelectBulkActionEvent>;
208
292
  selectContainerRef: ElementRef;
209
293
  searchInputRef: ElementRef;
210
294
  menuElementRef: ElementRef;
211
295
  virtualScrollViewport?: CdkVirtualScrollViewport;
212
296
  optionTemplate?: TemplateRef<any>;
213
297
  selectedOptionTemplate?: TemplateRef<any>;
298
+ tagTemplate?: TemplateRef<any>;
214
299
  isOpen: _angular_core.WritableSignal<boolean>;
215
300
  searchTerm: _angular_core.WritableSignal<string>;
216
301
  highlightedIndex: _angular_core.WritableSignal<number>;
@@ -231,6 +316,8 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
231
316
  isDragging: _angular_core.WritableSignal<boolean>;
232
317
  private pinnedOptionsStorageKey;
233
318
  tagsExpanded: _angular_core.WritableSignal<boolean>;
319
+ isDarkMode: _angular_core.WritableSignal<boolean>;
320
+ recentlyUsedIds: _angular_core.WritableSignal<Set<any>>;
234
321
  currentTheme: _angular_core.Signal<angular_perfect_select.ThemeColors>;
235
322
  filteredOptions: _angular_core.Signal<SelectOption[]>;
236
323
  selectedOptions: _angular_core.Signal<(SelectOption | {
@@ -245,6 +332,8 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
245
332
  value: any;
246
333
  })[]>;
247
334
  hiddenTagsCount: _angular_core.Signal<number>;
335
+ resolvedTheme: _angular_core.Signal<ThemeName>;
336
+ hasBulkActions: _angular_core.Signal<boolean>;
248
337
  groupedOptions: _angular_core.Signal<Record<string, SelectOption[]> | null>;
249
338
  displayOptions: _angular_core.Signal<SelectOption[]>;
250
339
  allOptionsSelected: _angular_core.Signal<boolean>;
@@ -252,11 +341,11 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
252
341
  isMaxSelectionReached: _angular_core.Signal<boolean>;
253
342
  showMinSearchMessage: _angular_core.Signal<boolean>;
254
343
  displayOptionsWithRecent: _angular_core.Signal<SelectOption[]>;
255
- validationIconName: _angular_core.Signal<"error" | "warning" | "info" | "" | "check_circle">;
344
+ validationIconName: _angular_core.Signal<"" | "error" | "warning" | "check_circle" | "info">;
256
345
  getEnabledOptionsCount(): number;
257
346
  private onChange;
258
347
  private onTouched;
259
- constructor(sanitizer: DomSanitizer);
348
+ constructor(sanitizer: DomSanitizer, darkModeProvider: DarkModeProvider);
260
349
  ngOnChanges(changes: SimpleChanges): void;
261
350
  writeValue(value: any): void;
262
351
  registerOnChange(fn: any): void;
@@ -305,8 +394,12 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
305
394
  hideTooltip(): void;
306
395
  getTooltipContent(option: SelectOption): string;
307
396
  getValidationClass(): string;
397
+ trackRecentlyUsed(option: SelectOption): void;
398
+ isOptionSelected(option: SelectOption): boolean;
399
+ executeBulkAction(action: BulkAction): void;
400
+ getSkeletonItems(): number[];
308
401
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<PerfectSelectComponent, never>;
309
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<PerfectSelectComponent, "ng-perfect-select", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "isMulti": { "alias": "isMulti"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isSearchable": { "alias": "isSearchable"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "isClearable": { "alias": "isClearable"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "isRtl": { "alias": "isRtl"; "required": false; }; "closeMenuOnSelect": { "alias": "closeMenuOnSelect"; "required": false; }; "hideSelectedOptions": { "alias": "hideSelectedOptions"; "required": false; }; "isCreatable": { "alias": "isCreatable"; "required": false; }; "allowCreateWhileLoading": { "alias": "allowCreateWhileLoading"; "required": false; }; "createOptionPosition": { "alias": "createOptionPosition"; "required": false; }; "formatCreateLabel": { "alias": "formatCreateLabel"; "required": false; }; "loadOptions": { "alias": "loadOptions"; "required": false; }; "cacheOptions": { "alias": "cacheOptions"; "required": false; }; "defaultOptions": { "alias": "defaultOptions"; "required": false; }; "selectSize": { "alias": "selectSize"; "required": false; }; "containerSize": { "alias": "containerSize"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "customStyles": { "alias": "customStyles"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "menuPlacement": { "alias": "menuPlacement"; "required": false; }; "menuPosition": { "alias": "menuPosition"; "required": false; }; "getOptionLabel": { "alias": "getOptionLabel"; "required": false; }; "getOptionValue": { "alias": "getOptionValue"; "required": false; }; "isOptionDisabled": { "alias": "isOptionDisabled"; "required": false; }; "filterOption": { "alias": "filterOption"; "required": false; }; "isGrouped": { "alias": "isGrouped"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; }; "selectAllText": { "alias": "selectAllText"; "required": false; }; "deselectAllText": { "alias": "deselectAllText"; "required": false; }; "showOptionIcons": { "alias": "showOptionIcons"; "required": false; }; "showOptionBadges": { "alias": "showOptionBadges"; "required": false; }; "maxOptionsDisplay": { "alias": "maxOptionsDisplay"; "required": false; }; "optionHeight": { "alias": "optionHeight"; "required": false; }; "emptyStateText": { "alias": "emptyStateText"; "required": false; }; "emptySearchText": { "alias": "emptySearchText"; "required": false; }; "maxSelectedOptions": { "alias": "maxSelectedOptions"; "required": false; }; "maxSelectedMessage": { "alias": "maxSelectedMessage"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "minSearchLength": { "alias": "minSearchLength"; "required": false; }; "minSearchMessage": { "alias": "minSearchMessage"; "required": false; }; "enableVirtualScroll": { "alias": "enableVirtualScroll"; "required": false; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; }; "virtualScrollMinBufferPx": { "alias": "virtualScrollMinBufferPx"; "required": false; }; "virtualScrollMaxBufferPx": { "alias": "virtualScrollMaxBufferPx"; "required": false; }; "validationState": { "alias": "validationState"; "required": false; }; "validationMessage": { "alias": "validationMessage"; "required": false; }; "showValidationIcon": { "alias": "showValidationIcon"; "required": false; }; "showTooltips": { "alias": "showTooltips"; "required": false; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; }; "getOptionTooltip": { "alias": "getOptionTooltip"; "required": false; }; "showRecentSelections": { "alias": "showRecentSelections"; "required": false; }; "recentSelectionsLimit": { "alias": "recentSelectionsLimit"; "required": false; }; "recentSelectionsLabel": { "alias": "recentSelectionsLabel"; "required": false; }; "enableRecentSelectionsPersistence": { "alias": "enableRecentSelectionsPersistence"; "required": false; }; "enableInfiniteScroll": { "alias": "enableInfiniteScroll"; "required": false; }; "infiniteScrollThreshold": { "alias": "infiniteScrollThreshold"; "required": false; }; "totalOptionsCount": { "alias": "totalOptionsCount"; "required": false; }; "enableAdvancedKeyboard": { "alias": "enableAdvancedKeyboard"; "required": false; }; "typeAheadDelay": { "alias": "typeAheadDelay"; "required": false; }; "enableCopyPaste": { "alias": "enableCopyPaste"; "required": false; }; "copyDelimiter": { "alias": "copyDelimiter"; "required": false; }; "pasteDelimiter": { "alias": "pasteDelimiter"; "required": false; }; "enableDragDrop": { "alias": "enableDragDrop"; "required": false; }; "dragDropPlaceholder": { "alias": "dragDropPlaceholder"; "required": false; }; "dragDropAnimation": { "alias": "dragDropAnimation"; "required": false; }; "enablePinning": { "alias": "enablePinning"; "required": false; }; "maxPinnedOptions": { "alias": "maxPinnedOptions"; "required": false; }; "pinnedOptionsLabel": { "alias": "pinnedOptionsLabel"; "required": false; }; "persistPinnedOptions": { "alias": "persistPinnedOptions"; "required": false; }; "enableSearchHighlight": { "alias": "enableSearchHighlight"; "required": false; }; "searchHighlightColor": { "alias": "searchHighlightColor"; "required": false; }; "searchHighlightTextColor": { "alias": "searchHighlightTextColor"; "required": false; }; "maxVisibleTags": { "alias": "maxVisibleTags"; "required": false; }; "showMoreTagsText": { "alias": "showMoreTagsText"; "required": false; }; "collapsibleTags": { "alias": "collapsibleTags"; "required": false; }; "showAllTagsText": { "alias": "showAllTagsText"; "required": false; }; "showLessTagsText": { "alias": "showLessTagsText"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "openMenuOnFocus": { "alias": "openMenuOnFocus"; "required": false; }; "openMenuOnClick": { "alias": "openMenuOnClick"; "required": false; }; "tabSelectsValue": { "alias": "tabSelectsValue"; "required": false; }; "backspaceRemovesValue": { "alias": "backspaceRemovesValue"; "required": false; }; "escapeClearsValue": { "alias": "escapeClearsValue"; "required": false; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; }, { "change": "change"; "clear": "clear"; "focus": "focus"; "blur": "blur"; "menuOpen": "menuOpen"; "menuClose": "menuClose"; "inputChange": "inputChange"; "createOption": "createOption"; "optionsLoaded": "optionsLoaded"; "loadError": "loadError"; "copy": "copy"; "paste": "paste"; "scrollEnd": "scrollEnd"; "reorder": "reorder"; "pin": "pin"; }, ["optionTemplate", "selectedOptionTemplate"], never, true, never>;
402
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<PerfectSelectComponent, "ng-perfect-select", never, { "options": { "alias": "options"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "isMulti": { "alias": "isMulti"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "isSearchable": { "alias": "isSearchable"; "required": false; }; "searchable": { "alias": "searchable"; "required": false; }; "isClearable": { "alias": "isClearable"; "required": false; }; "clearable": { "alias": "clearable"; "required": false; }; "isDisabled": { "alias": "isDisabled"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "loading": { "alias": "loading"; "required": false; }; "isRtl": { "alias": "isRtl"; "required": false; }; "closeMenuOnSelect": { "alias": "closeMenuOnSelect"; "required": false; }; "hideSelectedOptions": { "alias": "hideSelectedOptions"; "required": false; }; "isCreatable": { "alias": "isCreatable"; "required": false; }; "allowCreateWhileLoading": { "alias": "allowCreateWhileLoading"; "required": false; }; "createOptionPosition": { "alias": "createOptionPosition"; "required": false; }; "formatCreateLabel": { "alias": "formatCreateLabel"; "required": false; }; "loadOptions": { "alias": "loadOptions"; "required": false; }; "cacheOptions": { "alias": "cacheOptions"; "required": false; }; "defaultOptions": { "alias": "defaultOptions"; "required": false; }; "selectSize": { "alias": "selectSize"; "required": false; }; "containerSize": { "alias": "containerSize"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "borderRadius": { "alias": "borderRadius"; "required": false; }; "customStyles": { "alias": "customStyles"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "menuPlacement": { "alias": "menuPlacement"; "required": false; }; "menuPosition": { "alias": "menuPosition"; "required": false; }; "getOptionLabel": { "alias": "getOptionLabel"; "required": false; }; "getOptionValue": { "alias": "getOptionValue"; "required": false; }; "isOptionDisabled": { "alias": "isOptionDisabled"; "required": false; }; "filterOption": { "alias": "filterOption"; "required": false; }; "isGrouped": { "alias": "isGrouped"; "required": false; }; "groupBy": { "alias": "groupBy"; "required": false; }; "showSelectAll": { "alias": "showSelectAll"; "required": false; }; "selectAllText": { "alias": "selectAllText"; "required": false; }; "deselectAllText": { "alias": "deselectAllText"; "required": false; }; "showOptionIcons": { "alias": "showOptionIcons"; "required": false; }; "showOptionBadges": { "alias": "showOptionBadges"; "required": false; }; "maxOptionsDisplay": { "alias": "maxOptionsDisplay"; "required": false; }; "optionHeight": { "alias": "optionHeight"; "required": false; }; "emptyStateText": { "alias": "emptyStateText"; "required": false; }; "emptySearchText": { "alias": "emptySearchText"; "required": false; }; "maxSelectedOptions": { "alias": "maxSelectedOptions"; "required": false; }; "maxSelectedMessage": { "alias": "maxSelectedMessage"; "required": false; }; "debounceTime": { "alias": "debounceTime"; "required": false; }; "minSearchLength": { "alias": "minSearchLength"; "required": false; }; "minSearchMessage": { "alias": "minSearchMessage"; "required": false; }; "enableVirtualScroll": { "alias": "enableVirtualScroll"; "required": false; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; }; "virtualScrollMinBufferPx": { "alias": "virtualScrollMinBufferPx"; "required": false; }; "virtualScrollMaxBufferPx": { "alias": "virtualScrollMaxBufferPx"; "required": false; }; "validationState": { "alias": "validationState"; "required": false; }; "validationMessage": { "alias": "validationMessage"; "required": false; }; "showValidationIcon": { "alias": "showValidationIcon"; "required": false; }; "showTooltips": { "alias": "showTooltips"; "required": false; }; "tooltipDelay": { "alias": "tooltipDelay"; "required": false; }; "getOptionTooltip": { "alias": "getOptionTooltip"; "required": false; }; "showRecentSelections": { "alias": "showRecentSelections"; "required": false; }; "recentSelectionsLimit": { "alias": "recentSelectionsLimit"; "required": false; }; "recentSelectionsLabel": { "alias": "recentSelectionsLabel"; "required": false; }; "enableRecentSelectionsPersistence": { "alias": "enableRecentSelectionsPersistence"; "required": false; }; "enableInfiniteScroll": { "alias": "enableInfiniteScroll"; "required": false; }; "infiniteScrollThreshold": { "alias": "infiniteScrollThreshold"; "required": false; }; "totalOptionsCount": { "alias": "totalOptionsCount"; "required": false; }; "enableAdvancedKeyboard": { "alias": "enableAdvancedKeyboard"; "required": false; }; "typeAheadDelay": { "alias": "typeAheadDelay"; "required": false; }; "enableCopyPaste": { "alias": "enableCopyPaste"; "required": false; }; "copyDelimiter": { "alias": "copyDelimiter"; "required": false; }; "pasteDelimiter": { "alias": "pasteDelimiter"; "required": false; }; "enableDragDrop": { "alias": "enableDragDrop"; "required": false; }; "dragDropPlaceholder": { "alias": "dragDropPlaceholder"; "required": false; }; "dragDropAnimation": { "alias": "dragDropAnimation"; "required": false; }; "enablePinning": { "alias": "enablePinning"; "required": false; }; "maxPinnedOptions": { "alias": "maxPinnedOptions"; "required": false; }; "pinnedOptionsLabel": { "alias": "pinnedOptionsLabel"; "required": false; }; "persistPinnedOptions": { "alias": "persistPinnedOptions"; "required": false; }; "enableSearchHighlight": { "alias": "enableSearchHighlight"; "required": false; }; "searchHighlightColor": { "alias": "searchHighlightColor"; "required": false; }; "searchHighlightTextColor": { "alias": "searchHighlightTextColor"; "required": false; }; "maxVisibleTags": { "alias": "maxVisibleTags"; "required": false; }; "showMoreTagsText": { "alias": "showMoreTagsText"; "required": false; }; "collapsibleTags": { "alias": "collapsibleTags"; "required": false; }; "showAllTagsText": { "alias": "showAllTagsText"; "required": false; }; "showLessTagsText": { "alias": "showLessTagsText"; "required": false; }; "enableFuzzySearch": { "alias": "enableFuzzySearch"; "required": false; }; "fuzzySearchThreshold": { "alias": "fuzzySearchThreshold"; "required": false; }; "fuzzySearchCaseSensitive": { "alias": "fuzzySearchCaseSensitive"; "required": false; }; "enableAutoThemeDetection": { "alias": "enableAutoThemeDetection"; "required": false; }; "colorScheme": { "alias": "colorScheme"; "required": false; }; "darkModeTheme": { "alias": "darkModeTheme"; "required": false; }; "lightModeTheme": { "alias": "lightModeTheme"; "required": false; }; "enableLoadingSkeleton": { "alias": "enableLoadingSkeleton"; "required": false; }; "skeletonItemCount": { "alias": "skeletonItemCount"; "required": false; }; "skeletonItemHeight": { "alias": "skeletonItemHeight"; "required": false; }; "skeletonAnimationDelay": { "alias": "skeletonAnimationDelay"; "required": false; }; "compactMode": { "alias": "compactMode"; "required": false; }; "showOptionCheckboxes": { "alias": "showOptionCheckboxes"; "required": false; }; "checkboxPosition": { "alias": "checkboxPosition"; "required": false; }; "checkboxStyle": { "alias": "checkboxStyle"; "required": false; }; "bulkActions": { "alias": "bulkActions"; "required": false; }; "enableBulkActions": { "alias": "enableBulkActions"; "required": false; }; "bulkActionsPosition": { "alias": "bulkActionsPosition"; "required": false; }; "bulkActionsLabel": { "alias": "bulkActionsLabel"; "required": false; }; "sortMode": { "alias": "sortMode"; "required": false; }; "customSortComparator": { "alias": "customSortComparator"; "required": false; }; "recentlyUsedLimit": { "alias": "recentlyUsedLimit"; "required": false; }; "name": { "alias": "name"; "required": false; }; "id": { "alias": "id"; "required": false; }; "autoFocus": { "alias": "autoFocus"; "required": false; }; "openMenuOnFocus": { "alias": "openMenuOnFocus"; "required": false; }; "openMenuOnClick": { "alias": "openMenuOnClick"; "required": false; }; "tabSelectsValue": { "alias": "tabSelectsValue"; "required": false; }; "backspaceRemovesValue": { "alias": "backspaceRemovesValue"; "required": false; }; "escapeClearsValue": { "alias": "escapeClearsValue"; "required": false; }; "noOptionsMessage": { "alias": "noOptionsMessage"; "required": false; }; "loadingMessage": { "alias": "loadingMessage"; "required": false; }; }, { "change": "change"; "clear": "clear"; "focus": "focus"; "blur": "blur"; "menuOpen": "menuOpen"; "menuClose": "menuClose"; "inputChange": "inputChange"; "createOption": "createOption"; "optionsLoaded": "optionsLoaded"; "loadError": "loadError"; "copy": "copy"; "paste": "paste"; "scrollEnd": "scrollEnd"; "reorder": "reorder"; "pin": "pin"; "bulkActionSelected": "bulkActionSelected"; }, ["optionTemplate", "selectedOptionTemplate", "tagTemplate"], never, true, never>;
310
403
  }
311
404
 
312
405
  declare const dropdownAnimation: AnimationTriggerMetadata;
@@ -323,5 +416,52 @@ declare class ClickOutsideDirective {
323
416
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[clickOutside]", never, {}, { "clickOutside": "clickOutside"; }, never, never, true, never>;
324
417
  }
325
418
 
326
- export { ClickOutsideDirective, PerfectSelectComponent, THEMES, dropdownAnimation, optionListAnimation, selectAnimations, tagAnimation };
327
- export type { InputChangeAction, SelectChangeAction, SelectChangeEvent, SelectCopyEvent, SelectCreateOptionEvent, SelectInputChangeEvent, SelectLoadErrorEvent, SelectOption, SelectOptionsLoadedEvent, SelectPasteEvent, SelectPinEvent, SelectReorderEvent, SelectScrollEndEvent, ThemeColors, ThemeName, ValidationConfig, ValidationState };
419
+ /**
420
+ * Provides necessary CDK modules for PerfectSelectComponent.
421
+ * Import this in your app configuration if you encounter production build issues.
422
+ *
423
+ * @example
424
+ * ```typescript
425
+ * import { providePerfectSelect } from 'angular-perfect-select';
426
+ *
427
+ * bootstrapApplication(AppComponent, {
428
+ * providers: [
429
+ * // ... other providers
430
+ * providePerfectSelect()
431
+ * ]
432
+ * });
433
+ * ```
434
+ */
435
+ declare function providePerfectSelect(): EnvironmentProviders;
436
+
437
+ /**
438
+ * Fuzzy search utility for flexible string matching
439
+ * Supports acronym-style matching (e.g., 'fb' matches 'Facebook')
440
+ * and partial substring matching with scoring
441
+ */
442
+ interface FuzzyMatchResult {
443
+ matches: boolean;
444
+ score: number;
445
+ matchedIndices: number[];
446
+ }
447
+ /**
448
+ * Performs fuzzy search matching
449
+ * @param searchTerm The search query
450
+ * @param targetString The string to search in
451
+ * @param options Configuration options
452
+ * @returns Match result with score and matched character indices
453
+ */
454
+ declare function fuzzyMatch(searchTerm: string, targetString: string, options?: {
455
+ caseSensitive?: boolean;
456
+ threshold?: number;
457
+ }): FuzzyMatchResult;
458
+ /**
459
+ * Sorts options by fuzzy match score
460
+ */
461
+ declare function sortByFuzzyScore<T>(items: T[], searchTerm: string, getLabel: (item: T) => string, options?: {
462
+ caseSensitive?: boolean;
463
+ threshold?: number;
464
+ }): T[];
465
+
466
+ export { ClickOutsideDirective, DarkModeProvider, PerfectSelectComponent, THEMES, dropdownAnimation, fuzzyMatch, optionListAnimation, providePerfectSelect, selectAnimations, sortByFuzzyScore, sortOptions, tagAnimation };
467
+ export type { BulkAction, ColorScheme, FuzzyMatchResult, InputChangeAction, SelectBulkActionEvent, SelectChangeAction, SelectChangeEvent, SelectCopyEvent, SelectCreateOptionEvent, SelectInputChangeEvent, SelectLoadErrorEvent, SelectOption, SelectOptionsLoadedEvent, SelectPasteEvent, SelectPinEvent, SelectReorderEvent, SelectScrollEndEvent, SortConfig, SortMode, ThemeColors, ThemeName, ValidationConfig, ValidationState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "angular-perfect-select",
3
- "version": "2.2.0",
3
+ "version": "2.3.0",
4
4
  "description": "A modern, feature-rich select component for Angular with react-select API compatibility",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",