mis-crystal-design-system 18.1.4 → 18.1.5
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/async-search-dropdown/async-dropdown.component.d.ts +44 -3
- package/esm2022/async-search-dropdown/async-dropdown.component.mjs +147 -37
- package/esm2022/table/sort-icons.directive.mjs +24 -5
- package/esm2022/table/table.component.mjs +71 -25
- package/esm2022/timepicker/timepicker.component.mjs +26 -5
- package/esm2022/timerangepicker/timerangepicker.component.mjs +22 -16
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs +146 -36
- package/fesm2022/mis-crystal-design-system-async-search-dropdown.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-table.mjs +92 -27
- package/fesm2022/mis-crystal-design-system-table.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timepicker.mjs +25 -4
- package/fesm2022/mis-crystal-design-system-timepicker.mjs.map +1 -1
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs +21 -15
- package/fesm2022/mis-crystal-design-system-timerangepicker.mjs.map +1 -1
- package/package.json +18 -18
- package/table/table.component.d.ts +2 -0
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, output, signal,
|
|
2
|
+
import { input, output, signal, Component, ViewChild, ContentChild, HostListener, NgModule } from '@angular/core';
|
|
3
3
|
import * as i3 from '@angular/forms';
|
|
4
4
|
import { UntypedFormControl, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
5
5
|
import * as i1 from '@angular/cdk/overlay';
|
|
6
6
|
import { ConnectionPositionPair, OverlayConfig, OverlayModule } from '@angular/cdk/overlay';
|
|
7
7
|
import { TemplatePortal } from '@angular/cdk/portal';
|
|
8
|
-
import { tap, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
8
|
+
import { tap, debounceTime, distinctUntilChanged, filter } from 'rxjs/operators';
|
|
9
9
|
import { Subject, merge } from 'rxjs';
|
|
10
10
|
import * as i2 from '@angular/common';
|
|
11
11
|
import { CommonModule } from '@angular/common';
|
|
@@ -230,34 +230,20 @@ class AsyncDropdownComponent {
|
|
|
230
230
|
this.error = signal(false);
|
|
231
231
|
this.openPopUpOnTab = signal(false);
|
|
232
232
|
this.data = signal([]);
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
}
|
|
248
|
-
// Call HTTP stream
|
|
249
|
-
this.httpStream()(q).subscribe({
|
|
250
|
-
next: (list) => {
|
|
251
|
-
this.loading.set(false);
|
|
252
|
-
this.data.set(list);
|
|
253
|
-
},
|
|
254
|
-
error: () => {
|
|
255
|
-
this.loading.set(false);
|
|
256
|
-
this.error.set(true);
|
|
257
|
-
},
|
|
258
|
-
});
|
|
259
|
-
});
|
|
260
|
-
});
|
|
233
|
+
/**
|
|
234
|
+
* Tracks the last selected value to prevent dropdown from reopening when:
|
|
235
|
+
* - Input regains focus after selection (showing selected value)
|
|
236
|
+
* - Parent component re-renders and triggers change detection
|
|
237
|
+
* - User hasn't actually typed a new search query
|
|
238
|
+
*
|
|
239
|
+
* This is necessary because the input serves dual purposes:
|
|
240
|
+
* 1. Search input (user types, triggers API calls)
|
|
241
|
+
* 2. Display selected value (shows what was selected)
|
|
242
|
+
*
|
|
243
|
+
* Without this, setting the input value after selection would trigger
|
|
244
|
+
* the search subscription, causing unwanted API calls and dropdown reopening.
|
|
245
|
+
*/
|
|
246
|
+
this.lastSelectedValue = signal(null);
|
|
261
247
|
this.handleControlChanges = (values) => {
|
|
262
248
|
values.forEach((el) => this.selectData(el, true));
|
|
263
249
|
};
|
|
@@ -267,17 +253,92 @@ class AsyncDropdownComponent {
|
|
|
267
253
|
if (this.multi() && !this.uniqueKey()) {
|
|
268
254
|
throw new Error('[uniqueKey] required in multi mode.');
|
|
269
255
|
}
|
|
270
|
-
if (this.disabled())
|
|
256
|
+
if (this.disabled()) {
|
|
271
257
|
this.searchInput.disable();
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Search observable pipeline with RxJS operators to filter at the source.
|
|
261
|
+
* This declarative approach prevents unwanted searches by filtering:
|
|
262
|
+
* 1. Empty queries or queries below minInputLength
|
|
263
|
+
* 2. Queries that match the last selected value (prevents reopening after selection)
|
|
264
|
+
*
|
|
265
|
+
* Filtering at the source is preferred over checking flags in subscribe()
|
|
266
|
+
* because it's more declarative, testable, and follows RxJS best practices.
|
|
267
|
+
*/
|
|
268
|
+
const searchObservable = this.searchInput.valueChanges.pipe(tap((val) => this.searchQueryChange.emit(val)), debounceTime(this.debounceTime()), distinctUntilChanged(),
|
|
269
|
+
// Filter: Only process non-empty queries that meet minInputLength requirement
|
|
270
|
+
filter((query) => {
|
|
271
|
+
const q = query?.trim() ?? '';
|
|
272
|
+
if (!q || q.length < this.minInputLength()) {
|
|
273
|
+
// Close dropdown if query is too short
|
|
274
|
+
this.closeDropdown();
|
|
275
|
+
return false;
|
|
276
|
+
}
|
|
277
|
+
return true;
|
|
278
|
+
}),
|
|
279
|
+
// Filter: Ignore queries that match the last selected value
|
|
280
|
+
// This prevents dropdown from reopening when input shows selected value
|
|
281
|
+
filter((query) => {
|
|
282
|
+
const q = query?.trim() ?? '';
|
|
283
|
+
const lastSelected = this.lastSelectedValue();
|
|
284
|
+
// Allow search if no previous selection OR query is different from selected value
|
|
285
|
+
return !lastSelected || q !== lastSelected;
|
|
286
|
+
}));
|
|
287
|
+
/**
|
|
288
|
+
* Subscribe to search queries and trigger HTTP stream.
|
|
289
|
+
* All filtering is done in the pipe chain above, so this callback
|
|
290
|
+
* only handles the actual search execution.
|
|
291
|
+
*/
|
|
292
|
+
this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)
|
|
293
|
+
.pipe(
|
|
294
|
+
// Additional filter for httpStreamTrigger (manual refresh)
|
|
295
|
+
filter((query) => {
|
|
296
|
+
const q = query?.trim() ?? '';
|
|
297
|
+
// For manual triggers, still respect minInputLength and lastSelectedValue
|
|
298
|
+
if (!q || q.length < this.minInputLength()) {
|
|
299
|
+
return false;
|
|
300
|
+
}
|
|
301
|
+
const lastSelected = this.lastSelectedValue();
|
|
302
|
+
return !lastSelected || q !== lastSelected;
|
|
303
|
+
}))
|
|
304
|
+
.subscribe((query) => {
|
|
305
|
+
const q = query?.trim() ?? '';
|
|
306
|
+
this.loading.set(true);
|
|
307
|
+
this.error.set(false);
|
|
308
|
+
// Open overlay if not yet open
|
|
309
|
+
if (!this.overlayRef?.hasAttached()) {
|
|
310
|
+
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
311
|
+
}
|
|
312
|
+
// Call HTTP stream
|
|
313
|
+
this.httpStream()(q).subscribe({
|
|
314
|
+
next: (list) => {
|
|
315
|
+
this.loading.set(false);
|
|
316
|
+
this.data.set(list);
|
|
317
|
+
if (!this.overlayRef?.hasAttached() && list.length > 0) {
|
|
318
|
+
this.openDropdown(this.dd, this.origin.nativeElement);
|
|
319
|
+
}
|
|
320
|
+
},
|
|
321
|
+
error: () => {
|
|
322
|
+
this.loading.set(false);
|
|
323
|
+
this.error.set(true);
|
|
324
|
+
},
|
|
325
|
+
});
|
|
326
|
+
});
|
|
272
327
|
if (this.control()?.value) {
|
|
273
328
|
this.handleControlChanges(this.control().value);
|
|
274
329
|
}
|
|
275
|
-
this.control()?.valueChanges.subscribe(this.handleControlChanges);
|
|
330
|
+
this.controlSubscription = this.control()?.valueChanges.subscribe(this.handleControlChanges);
|
|
331
|
+
// Handle searchValue input changes
|
|
332
|
+
if (this.searchValue()) {
|
|
333
|
+
this.searchInput.patchValue(this.searchValue(), { emitEvent: false });
|
|
334
|
+
}
|
|
276
335
|
}
|
|
277
336
|
ngOnChanges() {
|
|
278
|
-
|
|
279
|
-
|
|
337
|
+
// Handle searchValue changes
|
|
338
|
+
if (this.searchValue() !== undefined) {
|
|
339
|
+
this.searchInput.patchValue(this.searchValue(), { emitEvent: false });
|
|
280
340
|
}
|
|
341
|
+
// Handle disabled changes
|
|
281
342
|
if (this.disabled()) {
|
|
282
343
|
this.searchInput.disable();
|
|
283
344
|
}
|
|
@@ -286,6 +347,9 @@ class AsyncDropdownComponent {
|
|
|
286
347
|
}
|
|
287
348
|
}
|
|
288
349
|
ngOnDestroy() {
|
|
350
|
+
this.searchSubscription?.unsubscribe();
|
|
351
|
+
this.controlSubscription?.unsubscribe();
|
|
352
|
+
this.httpStreamTrigger.complete();
|
|
289
353
|
this.overlayRef?.dispose();
|
|
290
354
|
}
|
|
291
355
|
// === Methods ===
|
|
@@ -317,10 +381,12 @@ class AsyncDropdownComponent {
|
|
|
317
381
|
width: origin.clientWidth,
|
|
318
382
|
});
|
|
319
383
|
this.overlayRef = this.overlay.create(configs);
|
|
320
|
-
if (this.dropdownListWidth())
|
|
384
|
+
if (this.dropdownListWidth()) {
|
|
321
385
|
this.overlayRef.updateSize({ width: this.dropdownListWidth() });
|
|
386
|
+
}
|
|
322
387
|
this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));
|
|
323
388
|
this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());
|
|
389
|
+
this.opened.set(true);
|
|
324
390
|
}
|
|
325
391
|
closeDropdown() {
|
|
326
392
|
this.opened.set(false);
|
|
@@ -337,12 +403,29 @@ class AsyncDropdownComponent {
|
|
|
337
403
|
this.closeDropdown();
|
|
338
404
|
}
|
|
339
405
|
}
|
|
406
|
+
/**
|
|
407
|
+
* Handles item selection from dropdown.
|
|
408
|
+
*
|
|
409
|
+
* For single-select mode:
|
|
410
|
+
* - Sets input value to display selected item (standard UX pattern)
|
|
411
|
+
* - Stores selected value to prevent reopening dropdown on focus/change detection
|
|
412
|
+
* - Blurs input to prevent immediate focus-triggered searches
|
|
413
|
+
*
|
|
414
|
+
* For multi-select mode:
|
|
415
|
+
* - Clears input for next selection
|
|
416
|
+
* - Maintains focus for continuous selection
|
|
417
|
+
*/
|
|
340
418
|
selectData(item, effectedFromOutside = true) {
|
|
341
419
|
if (item.disabled)
|
|
342
420
|
return;
|
|
343
421
|
this.itemSelected.emit(item);
|
|
344
422
|
if (!this.multi()) {
|
|
345
|
-
|
|
423
|
+
const selectedValue = item[this.displayKey()];
|
|
424
|
+
// Set input value to show selected item (standard UX - like Angular Material, etc.)
|
|
425
|
+
// Use emitEvent: false to prevent triggering valueChanges subscription
|
|
426
|
+
this.searchInput.patchValue(selectedValue, { emitEvent: false });
|
|
427
|
+
// Store selected value - RxJS filter will prevent reopening with same value
|
|
428
|
+
this.lastSelectedValue.set(selectedValue);
|
|
346
429
|
this.setControlValue(item);
|
|
347
430
|
}
|
|
348
431
|
else {
|
|
@@ -360,6 +443,11 @@ class AsyncDropdownComponent {
|
|
|
360
443
|
this.data.set([]);
|
|
361
444
|
}
|
|
362
445
|
this.closeDropdown();
|
|
446
|
+
// Blur input to prevent focus events from immediately triggering search
|
|
447
|
+
// The lastSelectedValue filter will also prevent reopening if focus occurs
|
|
448
|
+
if (this.inputRef?.nativeElement) {
|
|
449
|
+
this.inputRef.nativeElement.blur();
|
|
450
|
+
}
|
|
363
451
|
}
|
|
364
452
|
removeItem(item) {
|
|
365
453
|
this.itemRemoved.emit(item);
|
|
@@ -374,12 +462,34 @@ class AsyncDropdownComponent {
|
|
|
374
462
|
get selectedItems() {
|
|
375
463
|
return Array.from(this.selections().values());
|
|
376
464
|
}
|
|
465
|
+
/**
|
|
466
|
+
* Clears the input and resets selection state.
|
|
467
|
+
* Clearing lastSelectedValue allows new searches to proceed normally.
|
|
468
|
+
*/
|
|
377
469
|
removeInputValue() {
|
|
378
470
|
this.searchInput.reset();
|
|
379
471
|
this.data.set([]);
|
|
472
|
+
this.lastSelectedValue.set(null);
|
|
380
473
|
this.clear.emit(true);
|
|
381
474
|
}
|
|
475
|
+
/**
|
|
476
|
+
* Called when input receives focus.
|
|
477
|
+
* Only opens dropdown if:
|
|
478
|
+
* 1. minInputLength allows it (-1 or 0 means open on focus)
|
|
479
|
+
* 2. Input value doesn't match last selected value (prevents reopening after selection)
|
|
480
|
+
*
|
|
481
|
+
* This handles the case where input regains focus after selection.
|
|
482
|
+
* The RxJS filter in searchObservable handles valueChanges, but focus events
|
|
483
|
+
* need separate handling since they bypass valueChanges.
|
|
484
|
+
*/
|
|
382
485
|
defaultCall() {
|
|
486
|
+
const currentValue = this.searchInput.value?.trim() || '';
|
|
487
|
+
const lastSelected = this.lastSelectedValue();
|
|
488
|
+
// Don't open if value matches last selected (user hasn't typed new query)
|
|
489
|
+
if (lastSelected && currentValue === lastSelected) {
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
// Only open on focus if minInputLength allows it
|
|
383
493
|
if (this.minInputLength() === -1) {
|
|
384
494
|
this.loading.set(true);
|
|
385
495
|
this.httpStream()(this.searchInput.value || '').subscribe({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\"\n [ngClass]=\"{ opened: opened(), disabled: disabled(), readonly: readonly() }\"\n [style.width]=\"width()\"\n #ddBtn>\n \n <!-- Selected chips for multi-select -->\n <div class=\"selected-list\" *ngIf=\"multi() && selectedItems.length > 0\">\n <div class=\"chip\"\n [ngClass]=\"{ 'chip-md': size() === 'md', 'chip-sm': size() === 'sm' }\"\n *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{ 'h6': size() === 'md', 'h8-b': size() === 'sm' }\"\n style=\"margin-right: 4px;\">\n {{ item[displayKey()] }}\n </span>\n <span class=\"icon-ic-navigation-cancel-24\"\n [ngStyle]=\"{ cursor: 'pointer', 'font-size': size() === 'sm' ? '12px' : '14px' }\"\n tabindex=\"0\"\n (click)=\"removeItem(item)\"\n (keyup.enter)=\"removeItem(item)\">\n </span>\n </div>\n </div>\n\n <!-- Search input -->\n <div class=\"search-input\">\n <!-- Placeholder icon -->\n <div *ngIf=\"customPlaceholderIcon(); else defaultSearchIcon\" class=\"custom-icon\">\n <img [src]=\"customPlaceholderIcon()\" alt=\"customIcon\" />\n </div>\n <ng-template #defaultSearchIcon>\n <span class=\"icon-ic-action-search-24\"></span>\n </ng-template>\n\n <!-- Input field -->\n <input [ngClass]=\"{ 'ip-md': size() === 'md', 'ip-sm': size() === 'sm' }\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"searchInput\"\n [attr.tabindex]=\"0\"\n type=\"text\"\n class=\"black-text h6\"\n #input\n (focus)=\"defaultCall()\"\n (keyup.enter)=\"enablePopUpOnTab()\"\n (copy)=\"disableCopyPaste() ? false : true\"\n (paste)=\"disableCopyPaste() ? false : true\"\n (cut)=\"disableCopyPaste() ? false : true\"/>\n\n <!-- Clear input -->\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\"\n *ngIf=\"searchInput.value?.length\"\n tabindex=\"0\"\n (click)=\"removeInputValue()\"\n (keyup.enter)=\"removeInputValue()\">\n </div>\n </div>\n</div>\n\n<!-- Dropdown template -->\n<ng-template #dd>\n <div class=\"dd-list\"\n [ngStyle]=\"{ 'max-height': height(), 'width': dropdownListWidth() }\"\n [ngClass]=\"{ 'dd-list-pd': data().length === 0 }\"\n tabindex=\"0\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"openPopUpOnTab()\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"loading()\">\n <ng-container *ngIf=\"customLoader; else defaultLoader\" [ngTemplateOutlet]=\"customLoader\"></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading() && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngIf=\"error()\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br/> Please try again later.</p>\n </div>\n </ng-container>\n\n <!-- Data list -->\n <div *ngIf=\"!loading() && !error() && data().length > 0\">\n <ng-container *ngFor=\"let item of data()\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n\n <!-- Custom item -->\n <ng-container *ngIf=\"customItem; else standardItem\">\n <ng-container [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-container>\n\n <!-- Standard item -->\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"item\"\n [tabindex]=\"openPopUpOnTab() ? 0 : -1\"\n (click)=\"selectData(item, false)\"\n (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">{{ item[displayKey()] }}</div>\n <div class=\"secondary\">{{ item[secondaryDisplayKey()] }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- No data -->\n <div *ngIf=\"!loading() && !error() && data().length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import {\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormControl } from '@angular/forms';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { signal, effect, input, output } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, tap } from 'rxjs/operators';\nimport { merge, Subject } from 'rxjs';\n\ntype IListData = any;\n\n@Component({\n selector: 'mis-async-search-dropdown',\n templateUrl: './async-dropdown.component.html',\n styleUrls: ['./async-dropdown.component.scss'],\n})\nexport class AsyncDropdownComponent {\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n private injector: Injector\n ) {}\n\n // === Inputs ===\n height = input<string>();\n width = input<string>();\n size = input<'md' | 'sm'>('md');\n httpStream = input.required<(searchKey: string) => any>();\n displayKey = input<any>();\n secondaryDisplayKey = input<string>('');\n placeholder = input('Select');\n debounceTime = input(400);\n minInputLength = input(2);\n multi = input(false);\n uniqueKey = input<string>();\n control = input<AbstractControl | null>(null);\n disabled = input(false);\n readonly = input(false);\n disableCopyPaste = input(false);\n dropdownListWidth = input<string>();\n dropdownListPosition = input<'Left' | 'Right'>('Left');\n customPlaceholderIcon = input<string>('');\n selections = input<Map<string, any>>(new Map());\n searchValue = input<any>();\n\n // === Outputs ===\n onSelect = output<IListData | IListData[]>();\n searchQueryChange = output<string>();\n clear = output<boolean>();\n itemSelected = output<IListData>();\n itemRemoved = output<IListData>();\n\n // === Template Refs ===\n @ViewChild('ddBtn', { static: false }) origin!: ElementRef;\n @ViewChild('input', { static: false }) inputRef!: ElementRef;\n @ViewChild('dd', { static: false }) dd!: TemplateRef<Element>;\n @ContentChild('misCustomItem', { static: false }) customItem!: TemplateRef<Element>;\n @ContentChild('asyncCustomLoader', { static: false }) customLoader!: TemplateRef<Element>;\n\n // === Internal state ===\n searchInput: UntypedFormControl = new UntypedFormControl();\n private httpStreamTrigger = new Subject<string>();\n private overlayRef?: OverlayRef;\n\n // === Signals ===\n opened = signal(false);\n loading = signal(false);\n error = signal(false);\n openPopUpOnTab = signal(false);\n data = signal<IListData[]>([]);\n\n // === Effect to handle search ===\n private searchEffect = effect(() => {\n // Merge form control changes and manual triggers\n merge(\n this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime()),\n distinctUntilChanged()\n ),\n this.httpStreamTrigger\n ).subscribe((query: string) => {\n const q = query?.trim() ?? '';\n if (!q || q.length < this.minInputLength()) {\n this.closeDropdown();\n return;\n }\n\n this.loading.set(true);\n this.error.set(false);\n\n // Open overlay if not yet open\n if (!this.overlayRef?.hasAttached()) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n\n // Call HTTP stream\n this.httpStream()(q).subscribe({\n next: (list: IListData[]) => {\n this.loading.set(false);\n this.data.set(list);\n },\n error: () => {\n this.loading.set(false);\n this.error.set(true);\n },\n });\n });\n });\n\n // === Lifecycle ===\n ngOnInit() {\n if (this.multi() && !this.uniqueKey()) {\n throw new Error('[uniqueKey] required in multi mode.');\n }\n\n if (this.disabled()) this.searchInput.disable();\n\n if (this.control()?.value) {\n this.handleControlChanges(this.control()!.value);\n }\n\n this.control()?.valueChanges.subscribe(this.handleControlChanges);\n }\n\n ngOnChanges() {\n if (this.searchValue()) {\n this.searchInput.patchValue(this.searchValue());\n }\n if (this.disabled()) {\n this.searchInput.disable();\n } else {\n this.searchInput.enable();\n }\n }\n\n ngOnDestroy() {\n this.overlayRef?.dispose();\n }\n\n // === Methods ===\n refreshHttpStream(query: string) {\n this.httpStreamTrigger.next(query);\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach((el) => this.selectData(el, true));\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement) {\n const positionsBottom = [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n 0,\n 4\n ),\n new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'top' },\n 0,\n 4\n ),\n ];\n const positionsTop = [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n 0,\n -4\n ),\n new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'end', overlayY: 'bottom' },\n 0,\n -4\n ),\n ];\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop),\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth,\n });\n\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth()) this.overlayRef.updateSize({ width: this.dropdownListWidth() });\n\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\n }\n\n closeDropdown() {\n this.opened.set(false);\n this.openPopUpOnTab.set(false);\n this.overlayRef?.detach();\n this.data.set([]);\n }\n\n enablePopUpOnTab() {\n this.openPopUpOnTab.set(true);\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.searchInput.reset();\n this.closeDropdown();\n }\n }\n\n selectData(item: IListData, effectedFromOutside = true) {\n if (item.disabled) return;\n\n this.itemSelected.emit(item);\n\n if (!this.multi()) {\n this.searchInput.patchValue(item[this.displayKey()], { emitEvent: false });\n this.setControlValue(item);\n } else {\n if (!this.selections().has(item[this.uniqueKey()])) {\n this.selections().set(item[this.uniqueKey()], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.inputRef.nativeElement.focus();\n this.inputRef.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue('');\n this.data.set([]);\n }\n this.closeDropdown();\n }\n\n removeItem(item: IListData) {\n this.itemRemoved.emit(item);\n this.selections().delete(item[this.uniqueKey()]);\n this.setControlValue(this.selectedItems);\n this.inputRef.nativeElement.focus();\n }\n\n private setControlValue(value: IListData | IListData[]) {\n this.onSelect.emit(value);\n this.control()?.patchValue(value, { emitEvent: false });\n }\n\n get selectedItems() {\n return Array.from(this.selections().values());\n }\n\n removeInputValue() {\n this.searchInput.reset();\n this.data.set([]);\n this.clear.emit(true);\n }\n\n defaultCall() {\n if (this.minInputLength() === -1) {\n this.loading.set(true);\n this.httpStream()(this.searchInput.value || '').subscribe({\n next: (list: IListData[]) => {\n this.loading.set(false);\n this.data.set(list);\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n },\n error: () => {\n this.loading.set(false);\n this.error.set(true);\n },\n });\n }\n }\n}\n","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mis-crystal-design-system-async-search-dropdown.mjs","sources":["../../../projects/mis-components/async-search-dropdown/async-dropdown.component.html","../../../projects/mis-components/async-search-dropdown/async-dropdown.component.ts","../../../projects/mis-components/async-search-dropdown/async-dropdown.module.ts","../../../projects/mis-components/async-search-dropdown/mis-crystal-design-system-async-search-dropdown.ts"],"sourcesContent":["<div class=\"dd-wrapper\"\n [ngClass]=\"{ opened: opened(), disabled: disabled(), readonly: readonly() }\"\n [style.width]=\"width()\"\n #ddBtn>\n \n <!-- Selected chips for multi-select -->\n <div class=\"selected-list\" *ngIf=\"multi() && selectedItems.length > 0\">\n <div class=\"chip\"\n [ngClass]=\"{ 'chip-md': size() === 'md', 'chip-sm': size() === 'sm' }\"\n *ngFor=\"let item of selectedItems\">\n <span [ngClass]=\"{ 'h6': size() === 'md', 'h8-b': size() === 'sm' }\"\n style=\"margin-right: 4px;\">\n {{ item[displayKey()] }}\n </span>\n <span class=\"icon-ic-navigation-cancel-24\"\n [ngStyle]=\"{ cursor: 'pointer', 'font-size': size() === 'sm' ? '12px' : '14px' }\"\n tabindex=\"0\"\n (click)=\"removeItem(item)\"\n (keyup.enter)=\"removeItem(item)\">\n </span>\n </div>\n </div>\n\n <!-- Search input -->\n <div class=\"search-input\">\n <!-- Placeholder icon -->\n <div *ngIf=\"customPlaceholderIcon(); else defaultSearchIcon\" class=\"custom-icon\">\n <img [src]=\"customPlaceholderIcon()\" alt=\"customIcon\" />\n </div>\n <ng-template #defaultSearchIcon>\n <span class=\"icon-ic-action-search-24\"></span>\n </ng-template>\n\n <!-- Input field -->\n <input [ngClass]=\"{ 'ip-md': size() === 'md', 'ip-sm': size() === 'sm' }\"\n [placeholder]=\"placeholder()\"\n [formControl]=\"searchInput\"\n [attr.tabindex]=\"0\"\n type=\"text\"\n class=\"black-text h6\"\n #input\n (focus)=\"defaultCall()\"\n (keyup.enter)=\"enablePopUpOnTab()\"\n (copy)=\"disableCopyPaste() ? false : true\"\n (paste)=\"disableCopyPaste() ? false : true\"\n (cut)=\"disableCopyPaste() ? false : true\"/>\n\n <!-- Clear input -->\n <div class=\"icon-ic-navigation-cancel-24 croos-icon\"\n *ngIf=\"searchInput.value?.length\"\n tabindex=\"0\"\n (click)=\"removeInputValue()\"\n (keyup.enter)=\"removeInputValue()\">\n </div>\n </div>\n</div>\n\n<!-- Dropdown template -->\n<ng-template #dd>\n <div class=\"dd-list\"\n [ngStyle]=\"{ 'max-height': height(), 'width': dropdownListWidth() }\"\n [ngClass]=\"{ 'dd-list-pd': data().length === 0 }\"\n tabindex=\"0\"\n cdkTrapFocus\n [cdkTrapFocusAutoCapture]=\"openPopUpOnTab()\">\n\n <!-- Loader -->\n <ng-container *ngIf=\"loading()\">\n <ng-container *ngIf=\"customLoader; else defaultLoader\" [ngTemplateOutlet]=\"customLoader\"></ng-container>\n <ng-template #defaultLoader>\n <div class=\"status-container\" *ngIf=\"loading() && !customLoader\">\n <mis-loader [mobileView]=\"true\"></mis-loader>\n </div>\n </ng-template>\n </ng-container>\n\n <!-- Error -->\n <ng-container *ngIf=\"error()\">\n <div class=\"status-container\">\n <p>Unknown error has occurred, <br/> Please try again later.</p>\n </div>\n </ng-container>\n\n <!-- Data list -->\n <div *ngIf=\"!loading() && !error() && data().length > 0\">\n <ng-container *ngFor=\"let item of data()\">\n <div (click)=\"selectData(item, false)\" (keyup.enter)=\"selectData(item, false)\">\n <div tabindex=\"-1\" cdkFocusInitial></div>\n\n <!-- Custom item -->\n <ng-container *ngIf=\"customItem; else standardItem\">\n <ng-container [ngTemplateOutlet]=\"customItem\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\"></ng-container>\n </ng-container>\n\n <!-- Standard item -->\n <ng-template #standardItem>\n <div tabindex=\"-1\" cdkFocusInitial></div>\n <div class=\"item\"\n [tabindex]=\"openPopUpOnTab() ? 0 : -1\"\n (click)=\"selectData(item, false)\"\n (keyup.enter)=\"selectData(item, false)\">\n <div class=\"value\">\n <div class=\"primary\">{{ item[displayKey()] }}</div>\n <div class=\"secondary\">{{ item[secondaryDisplayKey()] }}</div>\n </div>\n </div>\n </ng-template>\n </div>\n </ng-container>\n </div>\n\n <!-- No data -->\n <div *ngIf=\"!loading() && !error() && data().length === 0 && searchInput.value\">\n <div class=\"data-not-found\">No Data Available</div>\n </div>\n </div>\n</ng-template>\n","import {\n Component,\n ContentChild,\n ElementRef,\n HostListener,\n Injector,\n NgZone,\n OnInit,\n OnDestroy,\n TemplateRef,\n ViewChild,\n ViewContainerRef,\n} from '@angular/core';\nimport { AbstractControl, UntypedFormControl } from '@angular/forms';\nimport {\n Overlay,\n OverlayConfig,\n OverlayRef,\n ConnectionPositionPair,\n} from '@angular/cdk/overlay';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { signal, input, output } from '@angular/core';\nimport { debounceTime, distinctUntilChanged, tap, filter } from 'rxjs/operators';\nimport { merge, Subject, Subscription } from 'rxjs';\n\ntype IListData = any;\n\n@Component({\n selector: 'mis-async-search-dropdown',\n templateUrl: './async-dropdown.component.html',\n styleUrls: ['./async-dropdown.component.scss'],\n})\nexport class AsyncDropdownComponent implements OnInit, OnDestroy {\n constructor(\n private overlay: Overlay,\n private viewContainerRef: ViewContainerRef,\n private _ngZone: NgZone,\n private injector: Injector\n ) {}\n\n // === Inputs ===\n height = input<string>();\n width = input<string>();\n size = input<'md' | 'sm'>('md');\n httpStream = input.required<(searchKey: string) => any>();\n displayKey = input<any>();\n secondaryDisplayKey = input<string>('');\n placeholder = input('Select');\n debounceTime = input(400);\n minInputLength = input(2);\n multi = input(false);\n uniqueKey = input<string>();\n control = input<AbstractControl | null>(null);\n disabled = input(false);\n readonly = input(false);\n disableCopyPaste = input(false);\n dropdownListWidth = input<string>();\n dropdownListPosition = input<'Left' | 'Right'>('Left');\n customPlaceholderIcon = input<string>('');\n selections = input<Map<string, any>>(new Map());\n searchValue = input<any>();\n\n // === Outputs ===\n onSelect = output<IListData | IListData[]>();\n searchQueryChange = output<string>();\n clear = output<boolean>();\n itemSelected = output<IListData>();\n itemRemoved = output<IListData>();\n\n // === Template Refs ===\n @ViewChild('ddBtn', { static: false }) origin!: ElementRef;\n @ViewChild('input', { static: false }) inputRef!: ElementRef;\n @ViewChild('dd', { static: false }) dd!: TemplateRef<Element>;\n @ContentChild('misCustomItem', { static: false }) customItem!: TemplateRef<Element>;\n @ContentChild('asyncCustomLoader', { static: false }) customLoader!: TemplateRef<Element>;\n\n // === Internal state ===\n searchInput: UntypedFormControl = new UntypedFormControl();\n private httpStreamTrigger = new Subject<string>();\n private overlayRef?: OverlayRef;\n private searchSubscription?: Subscription;\n private controlSubscription?: Subscription;\n\n // === Signals ===\n opened = signal(false);\n loading = signal(false);\n error = signal(false);\n openPopUpOnTab = signal(false);\n data = signal<IListData[]>([]);\n \n /**\n * Tracks the last selected value to prevent dropdown from reopening when:\n * - Input regains focus after selection (showing selected value)\n * - Parent component re-renders and triggers change detection\n * - User hasn't actually typed a new search query\n * \n * This is necessary because the input serves dual purposes:\n * 1. Search input (user types, triggers API calls)\n * 2. Display selected value (shows what was selected)\n * \n * Without this, setting the input value after selection would trigger\n * the search subscription, causing unwanted API calls and dropdown reopening.\n */\n private lastSelectedValue = signal<string | null>(null);\n\n // === Lifecycle ===\n ngOnInit() {\n if (this.multi() && !this.uniqueKey()) {\n throw new Error('[uniqueKey] required in multi mode.');\n }\n\n if (this.disabled()) {\n this.searchInput.disable();\n }\n\n /**\n * Search observable pipeline with RxJS operators to filter at the source.\n * This declarative approach prevents unwanted searches by filtering:\n * 1. Empty queries or queries below minInputLength\n * 2. Queries that match the last selected value (prevents reopening after selection)\n * \n * Filtering at the source is preferred over checking flags in subscribe()\n * because it's more declarative, testable, and follows RxJS best practices.\n */\n const searchObservable = this.searchInput.valueChanges.pipe(\n tap((val) => this.searchQueryChange.emit(val)),\n debounceTime(this.debounceTime()),\n distinctUntilChanged(),\n // Filter: Only process non-empty queries that meet minInputLength requirement\n filter((query: string) => {\n const q = query?.trim() ?? '';\n if (!q || q.length < this.minInputLength()) {\n // Close dropdown if query is too short\n this.closeDropdown();\n return false;\n }\n return true;\n }),\n // Filter: Ignore queries that match the last selected value\n // This prevents dropdown from reopening when input shows selected value\n filter((query: string) => {\n const q = query?.trim() ?? '';\n const lastSelected = this.lastSelectedValue();\n // Allow search if no previous selection OR query is different from selected value\n return !lastSelected || q !== lastSelected;\n })\n );\n\n /**\n * Subscribe to search queries and trigger HTTP stream.\n * All filtering is done in the pipe chain above, so this callback\n * only handles the actual search execution.\n */\n this.searchSubscription = merge(searchObservable, this.httpStreamTrigger)\n .pipe(\n // Additional filter for httpStreamTrigger (manual refresh)\n filter((query: string) => {\n const q = query?.trim() ?? '';\n // For manual triggers, still respect minInputLength and lastSelectedValue\n if (!q || q.length < this.minInputLength()) {\n return false;\n }\n const lastSelected = this.lastSelectedValue();\n return !lastSelected || q !== lastSelected;\n })\n )\n .subscribe((query: string) => {\n const q = query?.trim() ?? '';\n \n this.loading.set(true);\n this.error.set(false);\n\n // Open overlay if not yet open\n if (!this.overlayRef?.hasAttached()) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n\n // Call HTTP stream\n this.httpStream()(q).subscribe({\n next: (list: IListData[]) => {\n this.loading.set(false);\n this.data.set(list);\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n },\n error: () => {\n this.loading.set(false);\n this.error.set(true);\n },\n });\n });\n\n if (this.control()?.value) {\n this.handleControlChanges(this.control()!.value);\n }\n\n this.controlSubscription = this.control()?.valueChanges.subscribe(\n this.handleControlChanges\n );\n\n // Handle searchValue input changes\n if (this.searchValue()) {\n this.searchInput.patchValue(this.searchValue(), { emitEvent: false });\n }\n }\n\n ngOnChanges() {\n // Handle searchValue changes\n if (this.searchValue() !== undefined) {\n this.searchInput.patchValue(this.searchValue(), { emitEvent: false });\n }\n\n // Handle disabled changes\n if (this.disabled()) {\n this.searchInput.disable();\n } else {\n this.searchInput.enable();\n }\n }\n\n ngOnDestroy() {\n this.searchSubscription?.unsubscribe();\n this.controlSubscription?.unsubscribe();\n this.httpStreamTrigger.complete();\n this.overlayRef?.dispose();\n }\n\n // === Methods ===\n refreshHttpStream(query: string) {\n this.httpStreamTrigger.next(query);\n }\n\n private handleControlChanges = (values: IListData[]) => {\n values.forEach((el) => this.selectData(el, true));\n };\n\n private openDropdown(template: TemplateRef<Element>, origin: HTMLElement) {\n const positionsBottom = [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'bottom' },\n { overlayX: 'start', overlayY: 'top' },\n 0,\n 4\n ),\n new ConnectionPositionPair(\n { originX: 'end', originY: 'bottom' },\n { overlayX: 'end', overlayY: 'top' },\n 0,\n 4\n ),\n ];\n const positionsTop = [\n new ConnectionPositionPair(\n { originX: 'start', originY: 'top' },\n { overlayX: 'start', overlayY: 'bottom' },\n 0,\n -4\n ),\n new ConnectionPositionPair(\n { originX: 'end', originY: 'top' },\n { overlayX: 'end', overlayY: 'bottom' },\n 0,\n -4\n ),\n ];\n\n const positionStrategy = this.overlay\n .position()\n .flexibleConnectedTo(origin)\n .withPositions([\n ...(this.dropdownListPosition() === 'Right' ? positionsBottom.reverse() : positionsBottom),\n ...(this.dropdownListPosition() === 'Right' ? positionsTop.reverse() : positionsTop),\n ])\n .withPush(true);\n\n const configs = new OverlayConfig({\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.reposition(),\n positionStrategy,\n width: origin.clientWidth,\n });\n\n this.overlayRef = this.overlay.create(configs);\n if (this.dropdownListWidth()) {\n this.overlayRef.updateSize({ width: this.dropdownListWidth() });\n }\n\n this.overlayRef.attach(new TemplatePortal(template, this.viewContainerRef));\n this.overlayRef.backdropClick().subscribe(() => this.closeDropdown());\n this.opened.set(true);\n }\n\n closeDropdown() {\n this.opened.set(false);\n this.openPopUpOnTab.set(false);\n this.overlayRef?.detach();\n this.data.set([]);\n }\n\n enablePopUpOnTab() {\n this.openPopUpOnTab.set(true);\n }\n\n @HostListener('document:keydown', ['$event'])\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Escape') {\n this.searchInput.reset();\n this.closeDropdown();\n }\n }\n\n /**\n * Handles item selection from dropdown.\n * \n * For single-select mode:\n * - Sets input value to display selected item (standard UX pattern)\n * - Stores selected value to prevent reopening dropdown on focus/change detection\n * - Blurs input to prevent immediate focus-triggered searches\n * \n * For multi-select mode:\n * - Clears input for next selection\n * - Maintains focus for continuous selection\n */\n selectData(item: IListData, effectedFromOutside = true) {\n if (item.disabled) return;\n\n this.itemSelected.emit(item);\n\n if (!this.multi()) {\n const selectedValue = item[this.displayKey()];\n // Set input value to show selected item (standard UX - like Angular Material, etc.)\n // Use emitEvent: false to prevent triggering valueChanges subscription\n this.searchInput.patchValue(selectedValue, { emitEvent: false });\n \n // Store selected value - RxJS filter will prevent reopening with same value\n this.lastSelectedValue.set(selectedValue);\n this.setControlValue(item);\n } else {\n if (!this.selections().has(item[this.uniqueKey()!])) {\n this.selections().set(item[this.uniqueKey()!], item);\n }\n this.setControlValue(this.selectedItems);\n if (!effectedFromOutside) {\n setTimeout(() => {\n this.inputRef.nativeElement.focus();\n this.inputRef.nativeElement.scrollIntoView();\n }, 10);\n }\n this.searchInput.patchValue('');\n this.data.set([]);\n }\n\n this.closeDropdown();\n\n // Blur input to prevent focus events from immediately triggering search\n // The lastSelectedValue filter will also prevent reopening if focus occurs\n if (this.inputRef?.nativeElement) {\n this.inputRef.nativeElement.blur();\n }\n }\n\n removeItem(item: IListData) {\n this.itemRemoved.emit(item);\n this.selections().delete(item[this.uniqueKey()!]);\n this.setControlValue(this.selectedItems);\n this.inputRef.nativeElement.focus();\n }\n\n private setControlValue(value: IListData | IListData[]) {\n this.onSelect.emit(value);\n this.control()?.patchValue(value, { emitEvent: false });\n }\n\n get selectedItems() {\n return Array.from(this.selections().values());\n }\n\n /**\n * Clears the input and resets selection state.\n * Clearing lastSelectedValue allows new searches to proceed normally.\n */\n removeInputValue() {\n this.searchInput.reset();\n this.data.set([]);\n this.lastSelectedValue.set(null);\n this.clear.emit(true);\n }\n\n /**\n * Called when input receives focus.\n * Only opens dropdown if:\n * 1. minInputLength allows it (-1 or 0 means open on focus)\n * 2. Input value doesn't match last selected value (prevents reopening after selection)\n * \n * This handles the case where input regains focus after selection.\n * The RxJS filter in searchObservable handles valueChanges, but focus events\n * need separate handling since they bypass valueChanges.\n */\n defaultCall() {\n const currentValue = this.searchInput.value?.trim() || '';\n const lastSelected = this.lastSelectedValue();\n \n // Don't open if value matches last selected (user hasn't typed new query)\n if (lastSelected && currentValue === lastSelected) {\n return;\n }\n \n // Only open on focus if minInputLength allows it\n if (this.minInputLength() === -1) {\n this.loading.set(true);\n this.httpStream()(this.searchInput.value || '').subscribe({\n next: (list: IListData[]) => {\n this.loading.set(false);\n this.data.set(list);\n if (!this.overlayRef?.hasAttached() && list.length > 0) {\n this.openDropdown(this.dd, this.origin.nativeElement);\n }\n },\n error: () => {\n this.loading.set(false);\n this.error.set(true);\n },\n });\n }\n }\n}","import { OverlayModule } from \"@angular/cdk/overlay\";\nimport { CommonModule } from \"@angular/common\";\nimport { NgModule } from \"@angular/core\";\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\nimport { LoaderModule } from \"mis-crystal-design-system/loader\";\nimport { AsyncDropdownComponent } from \"./async-dropdown.component\";\nimport { A11yModule } from \"@angular/cdk/a11y\";\n\n@NgModule({\n declarations: [AsyncDropdownComponent],\n imports: [CommonModule, OverlayModule, ReactiveFormsModule, FormsModule, LoaderModule, A11yModule],\n exports: [AsyncDropdownComponent]\n})\nexport class AsyncDropdownModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|