angular-perfect-select 2.1.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/README.md +220 -1
- package/dist/README.md +220 -1
- package/dist/fesm2022/angular-perfect-select.mjs +514 -27
- package/dist/fesm2022/angular-perfect-select.mjs.map +1 -1
- package/dist/index.d.ts +164 -6
- package/package.json +1 -1
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;
|
|
@@ -172,6 +233,36 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
172
233
|
maxPinnedOptions: number | null;
|
|
173
234
|
pinnedOptionsLabel: string;
|
|
174
235
|
persistPinnedOptions: boolean;
|
|
236
|
+
enableSearchHighlight: boolean;
|
|
237
|
+
searchHighlightColor: string;
|
|
238
|
+
searchHighlightTextColor: string;
|
|
239
|
+
maxVisibleTags: number | null;
|
|
240
|
+
showMoreTagsText: string;
|
|
241
|
+
collapsibleTags: boolean;
|
|
242
|
+
showAllTagsText: string;
|
|
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;
|
|
175
266
|
name: string;
|
|
176
267
|
id: string;
|
|
177
268
|
autoFocus: boolean;
|
|
@@ -197,12 +288,14 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
197
288
|
scrollEnd: EventEmitter<SelectScrollEndEvent>;
|
|
198
289
|
reorder: EventEmitter<SelectReorderEvent>;
|
|
199
290
|
pin: EventEmitter<SelectPinEvent>;
|
|
291
|
+
bulkActionSelected: EventEmitter<SelectBulkActionEvent>;
|
|
200
292
|
selectContainerRef: ElementRef;
|
|
201
293
|
searchInputRef: ElementRef;
|
|
202
294
|
menuElementRef: ElementRef;
|
|
203
295
|
virtualScrollViewport?: CdkVirtualScrollViewport;
|
|
204
296
|
optionTemplate?: TemplateRef<any>;
|
|
205
297
|
selectedOptionTemplate?: TemplateRef<any>;
|
|
298
|
+
tagTemplate?: TemplateRef<any>;
|
|
206
299
|
isOpen: _angular_core.WritableSignal<boolean>;
|
|
207
300
|
searchTerm: _angular_core.WritableSignal<string>;
|
|
208
301
|
highlightedIndex: _angular_core.WritableSignal<number>;
|
|
@@ -222,6 +315,9 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
222
315
|
pinnedOptions: _angular_core.WritableSignal<SelectOption[]>;
|
|
223
316
|
isDragging: _angular_core.WritableSignal<boolean>;
|
|
224
317
|
private pinnedOptionsStorageKey;
|
|
318
|
+
tagsExpanded: _angular_core.WritableSignal<boolean>;
|
|
319
|
+
isDarkMode: _angular_core.WritableSignal<boolean>;
|
|
320
|
+
recentlyUsedIds: _angular_core.WritableSignal<Set<any>>;
|
|
225
321
|
currentTheme: _angular_core.Signal<angular_perfect_select.ThemeColors>;
|
|
226
322
|
filteredOptions: _angular_core.Signal<SelectOption[]>;
|
|
227
323
|
selectedOptions: _angular_core.Signal<(SelectOption | {
|
|
@@ -230,6 +326,14 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
230
326
|
value: any;
|
|
231
327
|
})[]>;
|
|
232
328
|
displayText: _angular_core.Signal<string>;
|
|
329
|
+
visibleTags: _angular_core.Signal<(SelectOption | {
|
|
330
|
+
id: any;
|
|
331
|
+
label: string;
|
|
332
|
+
value: any;
|
|
333
|
+
})[]>;
|
|
334
|
+
hiddenTagsCount: _angular_core.Signal<number>;
|
|
335
|
+
resolvedTheme: _angular_core.Signal<ThemeName>;
|
|
336
|
+
hasBulkActions: _angular_core.Signal<boolean>;
|
|
233
337
|
groupedOptions: _angular_core.Signal<Record<string, SelectOption[]> | null>;
|
|
234
338
|
displayOptions: _angular_core.Signal<SelectOption[]>;
|
|
235
339
|
allOptionsSelected: _angular_core.Signal<boolean>;
|
|
@@ -237,11 +341,11 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
237
341
|
isMaxSelectionReached: _angular_core.Signal<boolean>;
|
|
238
342
|
showMinSearchMessage: _angular_core.Signal<boolean>;
|
|
239
343
|
displayOptionsWithRecent: _angular_core.Signal<SelectOption[]>;
|
|
240
|
-
validationIconName: _angular_core.Signal<"
|
|
344
|
+
validationIconName: _angular_core.Signal<"" | "error" | "warning" | "check_circle" | "info">;
|
|
241
345
|
getEnabledOptionsCount(): number;
|
|
242
346
|
private onChange;
|
|
243
347
|
private onTouched;
|
|
244
|
-
constructor(sanitizer: DomSanitizer);
|
|
348
|
+
constructor(sanitizer: DomSanitizer, darkModeProvider: DarkModeProvider);
|
|
245
349
|
ngOnChanges(changes: SimpleChanges): void;
|
|
246
350
|
writeValue(value: any): void;
|
|
247
351
|
registerOnChange(fn: any): void;
|
|
@@ -281,14 +385,21 @@ declare class PerfectSelectComponent implements ControlValueAccessor, OnInit, On
|
|
|
281
385
|
isPinned(option: SelectOption): boolean;
|
|
282
386
|
loadPinnedOptions(): void;
|
|
283
387
|
savePinnedOptions(): void;
|
|
388
|
+
highlightSearchTerm(text: string): SafeHtml;
|
|
389
|
+
toggleTagsExpanded(): void;
|
|
390
|
+
getMoreTagsText(): string;
|
|
284
391
|
onOptionsScroll(event: Event): void;
|
|
285
392
|
onVirtualScrollIndexChange(index: number): void;
|
|
286
393
|
showTooltip(option: SelectOption, index: number): void;
|
|
287
394
|
hideTooltip(): void;
|
|
288
395
|
getTooltipContent(option: SelectOption): string;
|
|
289
396
|
getValidationClass(): string;
|
|
397
|
+
trackRecentlyUsed(option: SelectOption): void;
|
|
398
|
+
isOptionSelected(option: SelectOption): boolean;
|
|
399
|
+
executeBulkAction(action: BulkAction): void;
|
|
400
|
+
getSkeletonItems(): number[];
|
|
290
401
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PerfectSelectComponent, never>;
|
|
291
|
-
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; }; "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>;
|
|
292
403
|
}
|
|
293
404
|
|
|
294
405
|
declare const dropdownAnimation: AnimationTriggerMetadata;
|
|
@@ -305,5 +416,52 @@ declare class ClickOutsideDirective {
|
|
|
305
416
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<ClickOutsideDirective, "[clickOutside]", never, {}, { "clickOutside": "clickOutside"; }, never, never, true, never>;
|
|
306
417
|
}
|
|
307
418
|
|
|
308
|
-
|
|
309
|
-
|
|
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